List:Commits« Previous MessageNext Message »
From:monty Date:July 30 2007 3:22am
Subject:bk commit into 5.1 tree (monty:1.2555)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of monty. When monty does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-07-30 06:22:25+03:00, monty@stripped +3 -0
  Add 'extension' field to all client library structures to make them extensible
  Reorder structure elements to make structures smaller and faster on 64 bit systems
  This is a first step in cleaning up the client include files (but should be enough to allow us to do future fixes without breaking the library)
  This change is part of WL#2872,  Make client library extensible.

  configure.in@stripped, 2007-07-30 06:22:15+03:00, monty@stripped +4 -3
    Increased shared library version of client library
    Detect gethrtime (for future)

  include/mysql.h@stripped, 2007-07-30 06:22:15+03:00, monty@stripped +32 -23
    Add 'extension' field to all structures to make them extensible
    Reorder structure elements to make structures smaller and faster on 64 bit systems
    Removed an old define that is not needed for MySQL 5.1

  include/mysql_com.h@stripped, 2007-07-30 06:22:15+03:00, monty@stripped +15 -12
    Add 'extension' field to all structures to make them extensible
    Reorder structure elements to make structures smaller and faster on 64 bit systems

diff -Nrup a/configure.in b/configure.in
--- a/configure.in	2007-07-20 12:41:22 +03:00
+++ b/configure.in	2007-07-30 06:22:15 +03:00
@@ -16,7 +16,7 @@ AM_CONFIG_HEADER(config.h)
 PROTOCOL_VERSION=10
 DOT_FRM_VERSION=6
 # See the libtool docs for information on how to do shared lib versions.
-SHARED_LIB_MAJOR_VERSION=15
+SHARED_LIB_MAJOR_VERSION=16
 SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
 NDB_SHARED_LIB_MAJOR_VERSION=3
 NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
@@ -1920,8 +1920,9 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bs
   chsize cuserid fchmod fcntl \
   fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \
   getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \
-  getpwuid getrlimit getrusage getwd gmtime_r index initgroups isnan \
-  localtime_r locking longjmp lrand48 madvise mallinfo memcpy memmove \
+  getpwuid getrlimit getrusage getwd index initgroups isnan \
+  localtime_r gethrtime gmtime_r \
+  locking longjmp lrand48 madvise mallinfo memcpy memmove \
   mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
   pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
   pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
diff -Nrup a/include/mysql.h b/include/mysql.h
--- a/include/mysql.h	2007-05-24 01:39:16 +03:00
+++ b/include/mysql.h	2007-07-30 06:22:15 +03:00
@@ -109,6 +109,7 @@ typedef struct st_mysql_field {
   unsigned int decimals;      /* Number of decimals in field */
   unsigned int charsetnr;     /* Character set */
   enum enum_field_types type; /* Type of field. See mysql_com.h for types */
+  void *extension;
 } MYSQL_FIELD;
 
 typedef char **MYSQL_ROW;		/* return data as array of strings */
@@ -143,12 +144,13 @@ typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;	/*
 
 typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
 typedef struct st_mysql_data {
-  my_ulonglong rows;
-  unsigned int fields;
   MYSQL_ROWS *data;
+  struct embedded_query_result *embedded_info;
   MEM_ROOT alloc;
+  my_ulonglong rows;
+  unsigned int fields;
   /* extra info for embedded library */
-  struct embedded_query_result *embedded_info;
+  void *extension;
 } MYSQL_DATA;
 
 enum mysql_option 
@@ -211,6 +213,7 @@ struct st_mysql_options {
   void (*local_infile_end)(void *);
   int (*local_infile_error)(void *, char *, unsigned int);
   void *local_infile_userdata;
+  void *extension;
 };
 
 enum mysql_status 
@@ -300,27 +303,28 @@ typedef struct st_mysql
     from mysql_stmt_close if close had to cancel result set of this object.
   */
   my_bool *unbuffered_fetch_owner;
-#if defined(EMBEDDED_LIBRARY) || defined(EMBEDDED_LIBRARY_COMPATIBLE) || MYSQL_VERSION_ID >= 50100
   /* needed for embedded server - no net buffer to store the 'info' */
   char *info_buffer;
-#endif
+  void *extension;
 } MYSQL;
 
+
 typedef struct st_mysql_res {
-  my_ulonglong row_count;
+  my_ulonglong  row_count;
   MYSQL_FIELD	*fields;
   MYSQL_DATA	*data;
   MYSQL_ROWS	*data_cursor;
   unsigned long *lengths;		/* column lengths of current row */
   MYSQL		*handle;		/* for unbuffered reads */
-  MEM_ROOT	field_alloc;
-  unsigned int	field_count, current_field;
+  const struct st_mysql_methods *methods;
   MYSQL_ROW	row;			/* If unbuffered read */
   MYSQL_ROW	current_row;		/* buffer to current row */
+  MEM_ROOT	field_alloc;
+  unsigned int	field_count, current_field;
   my_bool	eof;			/* Used by mysql_fetch_row */
   /* mysql_stmt_close() had to cancel this result */
   my_bool       unbuffered_fetch_cancelled;  
-  const struct st_mysql_methods *methods;
+  void *extension;
 } MYSQL_RES;
 
 #define MAX_MYSQL_MANAGER_ERR 256  
@@ -340,21 +344,23 @@ typedef struct st_mysql_res {
 typedef struct st_mysql_manager
 {
   NET net;
-  char *host,*user,*passwd;
+  char *host, *user, *passwd;
+  char *net_buf, *net_buf_pos, *net_data_end;
   unsigned int port;
-  my_bool free_me;
-  my_bool eof;
   int cmd_status;
   int last_errno;
-  char* net_buf,*net_buf_pos,*net_data_end;
   int net_buf_size;
+  my_bool free_me;
+  my_bool eof;
   char last_error[MAX_MYSQL_MANAGER_ERR];
+  void *extension;
 } MYSQL_MANAGER;
 
 typedef struct st_mysql_parameters
 {
   unsigned long *p_max_allowed_packet;
   unsigned long *p_net_buffer_length;
+  void *extension;
 } MYSQL_PARAMETERS;
 
 #if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
@@ -369,6 +375,7 @@ typedef struct st_mysql_parameters
 */
 int STDCALL mysql_server_init(int argc, char **argv, char **groups);
 void STDCALL mysql_server_end(void);
+
 /*
   mysql_server_init/end need to be called when using libmysqld or
   libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
@@ -657,23 +664,24 @@ typedef struct st_mysql_bind
   void		*buffer;	  /* buffer to get/put data */
   /* set this if you want to track data truncations happened during fetch */
   my_bool       *error;
-  enum enum_field_types buffer_type;	/* buffer type */
+  unsigned char *row_ptr;         /* for the current data position */
+  void (*store_param_func)(NET *net, struct st_mysql_bind *param);
+  void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
+                       unsigned char **row);
+  void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
+		      unsigned char **row);
   /* output buffer length, must be set when fetching str/binary */
   unsigned long buffer_length;
-  unsigned char *row_ptr;         /* for the current data position */
   unsigned long offset;           /* offset position for char/binary fetch */
   unsigned long	length_value;     /* Used if length is 0 */
   unsigned int	param_number;	  /* For null count and error messages */
   unsigned int  pack_length;	  /* Internal length for packed data */
+  enum enum_field_types buffer_type;	/* buffer type */
   my_bool       error_value;      /* used if error is 0 */
   my_bool       is_unsigned;      /* set if integer type is unsigned */
   my_bool	long_data_used;	  /* If used with mysql_send_long_data */
   my_bool	is_null_value;    /* Used if is_null is 0 */
-  void (*store_param_func)(NET *net, struct st_mysql_bind *param);
-  void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
-                       unsigned char **row);
-  void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
-		      unsigned char **row);
+  void *extension;
 } MYSQL_BIND;
 
 
@@ -688,15 +696,15 @@ typedef struct st_mysql_stmt
   MYSQL_FIELD    *fields;              /* result set metadata */
   MYSQL_DATA     result;               /* cached result set */
   MYSQL_ROWS     *data_cursor;         /* current row in cached result */
-  /* copy of mysql->affected_rows after statement execution */
-  my_ulonglong   affected_rows;
-  my_ulonglong   insert_id;            /* copy of mysql->insert_id */
   /*
     mysql_stmt_fetch() calls this function to fetch one row (it's different
     for buffered, unbuffered and cursor fetch).
   */
   int            (*read_row_func)(struct st_mysql_stmt *stmt, 
                                   unsigned char **row);
+  /* copy of mysql->affected_rows after statement execution */
+  my_ulonglong   affected_rows;
+  my_ulonglong   insert_id;            /* copy of mysql->insert_id */
   unsigned long	 stmt_id;	       /* Id for prepared statement */
   unsigned long  flags;                /* i.e. type of cursor to open */
   unsigned long  prefetch_rows;        /* number of rows per one COM_FETCH */
@@ -722,6 +730,7 @@ typedef struct st_mysql_stmt
     metadata fields when doing mysql_stmt_store_result.
   */
   my_bool       update_max_length;     
+  void *extension;
 } MYSQL_STMT;
 
 enum enum_stmt_attr_type
diff -Nrup a/include/mysql_com.h b/include/mysql_com.h
--- a/include/mysql_com.h	2007-06-05 18:31:37 +03:00
+++ b/include/mysql_com.h	2007-07-30 06:22:15 +03:00
@@ -186,25 +186,25 @@ typedef struct st_vio Vio;
 
 typedef struct st_net {
 #if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
-  Vio* vio;
+  Vio *vio;
   unsigned char *buff,*buff_end,*write_pos,*read_pos;
   my_socket fd;					/* For Perl DBI/dbd */
-  unsigned long max_packet,max_packet_size;
-  unsigned int pkt_nr,compress_pkt_nr;
-  unsigned int write_timeout, read_timeout, retry_count;
-  int fcntl;
-  my_bool compress;
   /*
     The following variable is set if we are doing several queries in one
     command ( as in LOAD TABLE ... FROM MASTER ),
     and do not want to confuse the client with OK at the wrong time
   */
   unsigned long remain_in_buf,length, buf_length, where_b;
+  unsigned long max_packet,max_packet_size;
+  unsigned int pkt_nr,compress_pkt_nr;
+  unsigned int write_timeout, read_timeout, retry_count;
+  int fcntl;
   unsigned int *return_status;
   unsigned char reading_or_writing;
   char save_char;
   my_bool no_send_ok;  /* For SPs and other things that do multiple stmts */
   my_bool no_send_eof; /* For SPs' first version read-only cursors */
+  my_bool compress;
   /*
     Set if OK packet is already sent, and we do not need to send error
     messages
@@ -215,20 +215,20 @@ typedef struct st_net {
     queries in cache that have not stored its results yet
   */
 #endif
-  char last_error[MYSQL_ERRMSG_SIZE], sqlstate[SQLSTATE_LENGTH+1];
-  unsigned int last_errno;
-  unsigned char error;
-
   /*
     'query_cache_query' should be accessed only via query cache
     functions and methods to maintain proper locking.
   */
   unsigned char *query_cache_query;
-
+  unsigned int last_errno;
+  unsigned char error;
   my_bool report_error; /* We should report error (we have unreported error) */
   my_bool return_errno;
+  char last_error[MYSQL_ERRMSG_SIZE], sqlstate[SQLSTATE_LENGTH+1];
+  void *extension;
 } NET;
 
+
 #define packet_error (~(unsigned long) 0)
 
 enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
@@ -389,6 +389,7 @@ typedef struct st_udf_args
   char *maybe_null;			/* Set to 1 for all maybe_null args */
   char **attributes;                    /* Pointer to attribute name */
   unsigned long *attribute_lengths;     /* Length of attribute arguments */
+  void *extension;
 } UDF_ARGS;
 
   /* This holds information about the result */
@@ -399,7 +400,9 @@ typedef struct st_udf_init
   unsigned int decimals;		/* for real functions */
   unsigned long max_length;		/* For string functions */
   char	  *ptr;				/* free pointer for function data */
-  my_bool const_item;			/* 0 if result is independent of arguments */
+  /* 0 if result is independent of arguments */
+  my_bool const_item;
+  void *extension;
 } UDF_INIT;
 
   /* Constants when using compression */
Thread
bk commit into 5.1 tree (monty:1.2555)monty30 Jul
  • Re: bk commit into 5.1 tree (monty:1.2555)Konstantin Osipov31 Jul