From 093d62922b326cec1a05bd8baba2d9ed96137488 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 May 2004 02:03:49 +0400 Subject: Support for character set conversion in binary protocol: another go after Monty's review. - Item_param was rewritten. - it turns out that we can't convert string data to character set of connection on the fly, because they first should be written to the binary log. To support efficient conversion we need to rewrite prepared statements binlogging code first. include/my_global.h: Macro swap(a, b, c) was renamed to resolve name conflict with String::swap() method. include/my_sys.h: Added declaration of escape_string_for_mysql() include/mysql_com.h: Removed and moved back: a macro which is visible to libmysql user but has sence only in prepared statement protocol implementation. isam/_search.c: swap -> swap_variables isam/test2.c: swap -> swap_variables libmysql/libmysql.c: - sub_escape_string moved to mysys/charset.c to be visible in sql/ - few cleanups myisam/mi_test2.c: swap -> swap_variables mysys/charset.c: sub_escape_string was moved from libmysql.c to be able to use it in sql/ code. mysys/my_chsize.c: rename: swap -> swap_variables mysys/my_compress.c: swap -> swap_variables mysys/my_handler.c: swap -> swap_variables sql/field.cc: Field::store_time refactored to use TIME_to_string function from time.cc sql/item.cc: New implementation of Item_param class: added support for character sets conversion. sql/item.h: Item_param: - 'state' member introduced instead of many boolean variables. - put ltime, int_value and real_value into union to save space. - remove unimplemented members - set_value renamed to set_str sql/item_timefunc.cc: Refactored to use functions from time.cc sql/lock.cc: rename: swap -> swap_variables sql/mysql_priv.h: - added declarations for TIME_to_ulonglong_*, TIME_to_string functions - const specifiers for make_date, make_time, make_datetime arguments sql/opt_range.cc: rename: swap -> swap_variables sql/protocol.cc: - added character set conversion support to binary protocol. - Protocol::convert changed to point at shared buffer in THD. This lets us use one convert buffer for binary and simple protocol. The same buffer is used for client->server conversions in prepared statements code. - string conversion code refactored to Protocol::store_string_aux function. - few more comments sql/protocol.h: - Protocol::convert now points at THD::convert_buffer: we want to share one buffer between all protocol implementations. sql/sql_class.cc: - implementation of THD::convert_string using THD::convert_buffer (conversion of strings allocated in the system heap). sql/sql_class.h: - THD::convert_buffer is shared between THD and network Protocols and used for character set conversion of strings. - new function to convert String object from one charset to another using THD::convert_buffer sql/sql_insert.cc: A little fix in a comment. sql/sql_parse.cc: Shrink convert buffer in the end of each statement. sql/sql_prepare.cc: Many changes: - static specifier for set_param_* family of functions. - FIELD_TYPE -> MYSQL_TYPE - added set_param_binary as handler for BLOB types. - added character set support - added support for param typecode in mysql_stmt_get_longdata (mysql_stmt_send_long_data handler) - changes in Item_param deployed - few cleanups sql/sql_select.cc: rename: swap -> swap_variables sql/sql_string.cc: - String::append rewritten to support character set conversion for single-byte encodings. - added String::swap method to efficiently exchange two string objects. sql/sql_string.h: Declraration for String::swap(). sql/time.cc: - function TIME_to_string to convert TIME to String in default MySQL format - family of functions TIME_to_ulonglong_* tests/client_test.c: Test for support for character set conversions in prepared statements (binary and text data). --- include/my_global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/my_global.h') diff --git a/include/my_global.h b/include/my_global.h index e7d924eb0ca..6916ea61e19 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -382,7 +382,7 @@ typedef unsigned short ushort; #define CMP_NUM(a,b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1) #define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0) -#define swap(t,a,b) { register t dummy; dummy = a; a = b; b = dummy; } +#define swap_variables(t, a, b) { register t dummy; dummy= a; a= b; b= dummy; } #define test(a) ((a) ? 1 : 0) #define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0) #define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0) -- cgit v1.2.1 From da1623ddbb4dba3c4b2c56bcad52fd6bd5fb8836 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 May 2004 02:28:44 +0300 Subject: New MYSQL_SERVER_SUFFIX usage (for easier compilation) Update of VC++ project files. VC++Files/mysqlmanager/childfrm.cpp: Rename: VC++Files/mysqlmanager/CHILDFRM.CPP -> VC++Files/mysqlmanager/childfrm.cpp VC++Files/mysqlmanager/childfrm.h: Rename: VC++Files/mysqlmanager/CHILDFRM.H -> VC++Files/mysqlmanager/childfrm.h VC++Files/mysqlmanager/mainfrm.cpp: Rename: VC++Files/mysqlmanager/MAINFRM.CPP -> VC++Files/mysqlmanager/mainfrm.cpp VC++Files/mysqlmanager/mainfrm.h: Rename: VC++Files/mysqlmanager/MAINFRM.H -> VC++Files/mysqlmanager/mainfrm.h VC++Files/mysqlmanager/mysqlmanager.dsp: Rename: VC++Files/mysqlmanager/MySqlManager.dsp -> VC++Files/mysqlmanager/mysqlmanager.dsp VC++Files/mysqlmanager/mysqlmanager.mak: Rename: VC++Files/mysqlmanager/MySqlManager.mak -> VC++Files/mysqlmanager/mysqlmanager.mak VC++Files/mysqlmanager/resource.h: Rename: VC++Files/mysqlmanager/RESOURCE.H -> VC++Files/mysqlmanager/resource.h VC++Files/mysqlmanager/stdafx.cpp: Rename: VC++Files/mysqlmanager/STDAFX.CPP -> VC++Files/mysqlmanager/stdafx.cpp VC++Files/mysqlmanager/stdafx.h: Rename: VC++Files/mysqlmanager/STDAFX.H -> VC++Files/mysqlmanager/stdafx.h VC++Files/mysqlmanager/toolsql.cpp: Rename: VC++Files/mysqlmanager/TOOLSQL.CPP -> VC++Files/mysqlmanager/toolsql.cpp VC++Files/mysqlmanager/toolsql.h: Rename: VC++Files/mysqlmanager/TOOLSQL.H -> VC++Files/mysqlmanager/toolsql.h VC++Files/mysqlmanager/RES/bitmap1.bmp: Rename: VC++Files/mysqlmanager/RES/BITMAP1.BMP -> VC++Files/mysqlmanager/RES/bitmap1.bmp VC++Files/mysqlmanager/RES/bitmap3.bmp: Rename: VC++Files/mysqlmanager/RES/BITMAP3.BMP -> VC++Files/mysqlmanager/RES/bitmap3.bmp VC++Files/mysqlmanager/RES/bmp00001.bmp: Rename: VC++Files/mysqlmanager/RES/BMP00001.BMP -> VC++Files/mysqlmanager/RES/bmp00001.bmp VC++Files/mysqlmanager/RES/bmp00002.bmp: Rename: VC++Files/mysqlmanager/RES/BMP00002.BMP -> VC++Files/mysqlmanager/RES/bmp00002.bmp VC++Files/mysqlmanager/RES/database.bmp: Rename: VC++Files/mysqlmanager/RES/DATABASE.BMP -> VC++Files/mysqlmanager/RES/database.bmp VC++Files/mysqlmanager/RES/fontd.bmp: Rename: VC++Files/mysqlmanager/RES/FONTD.BMP -> VC++Files/mysqlmanager/RES/fontd.bmp VC++Files/mysqlmanager/RES/fontu.bmp: Rename: VC++Files/mysqlmanager/RES/FONTU.BMP -> VC++Files/mysqlmanager/RES/fontu.bmp VC++Files/mysqlmanager/RES/query_ex.bmp: Rename: VC++Files/mysqlmanager/RES/QUERY_EX.BMP -> VC++Files/mysqlmanager/RES/query_ex.bmp VC++Files/mysqlmanager/RES/toolbar.bmp: Rename: VC++Files/mysqlmanager/RES/TOOLBAR.BMP -> VC++Files/mysqlmanager/RES/toolbar.bmp BUILD/compile-pentium-valgrind-max: Use MYSQL_SERVER_SUFFIX VC++Files/bdb/bdb.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/client/mysql.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/client/mysqladmin.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/client/mysqldump.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/client/mysqlimport.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/client/mysqlshow.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/copy_mysql_files.bat: Assume we are in correct directory VC++Files/innobase/innobase.dsp: Use new version of MYSQL_SERVER_SUFFIX Remove old files VC++Files/isamchk/isamchk.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/libmysqld/libmysqld.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/my_print_defaults/my_print_defaults.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/myisamchk/myisamchk.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/myisamlog/myisamlog.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/myisampack/myisampack.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/mysql.dsw: Use new version of MYSQL_SERVER_SUFFIX VC++Files/mysqlbinlog/mysqlbinlog.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/mysqlcheck/mysqlcheck.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/mysys/mysys.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/pack_isam/pack_isam.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/perror/perror.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/replace/replace.dsp: Use new version of MYSQL_SERVER_SUFFIX VC++Files/sql/mysqld.dsp: Use new version of MYSQL_SERVER_SUFFIX include/my_global.h: Added QUOTE and STRINGIFY include/mysql_version.h.in: New MYSQL_SERVER_SUFFIX handling innobase/eval/eval0eval.c: Fixed compiler warning libmysql/libmysql.c: Use STRINGIFY() sql/mysqld.cc: New MYSQL_SERVER_SUFFIX handling sql/mysqld_suffix.h: New MYSQL_SERVER_SUFFIX handling sql/set_var.cc: Use STRINGIFY() zlib/contrib/asm386/zlibvc.dsp: Updated for 4.0 --- include/my_global.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include/my_global.h') diff --git a/include/my_global.h b/include/my_global.h index e4c0fb44337..58e97020ccb 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -318,6 +318,9 @@ C_MODE_END #define USE_BMOVE512 1 /* Use this unless system bmove is faster */ #endif +#define QUOTE_ARG(x) #x /* Quote argument (before cpp) */ +#define STRINGIFY_ARG(x) QUOTE_ARG(x) /* Quote argument, after cpp */ + /* Paranoid settings. Define I_AM_PARANOID if you are paranoid */ #ifdef I_AM_PARANOID #define DONT_ALLOW_USER_CHANGE 1 -- cgit v1.2.1 From b3851363ba8df0b3f55ecb358849a212db4b12a8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 May 2004 22:00:14 +0300 Subject: Added patches from Novell Build-tools/Do-compile: Fixed indentation configure.in: Added patches from Novell Added C_EXTRA_FLAGS as an easy way to pass flags to both CFLAGS and CXXFLAGS extra/perror.c: Fixed error number reporting to not report 'Unknown error' include/my_global.h: Defines to make NETWARE patches cleaner include/thr_alarm.h: Fixed wrong macro netware/mysql_install_db.c: Indentation fix --- include/my_global.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/my_global.h') diff --git a/include/my_global.h b/include/my_global.h index e4c0fb44337..30cd1800884 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -73,6 +73,12 @@ #endif #endif /* _WIN32... */ +/* Some defines to avoid ifdefs in the code */ +#ifndef NETWARE_YIELD +#define NETWARE_YIELD +#define NETWARE_SET_SCREEN_MODE(A) +#endif + /* The macros below are borrowed from include/linux/compiler.h in the Linux kernel. Use them to indicate the likelyhood of the truthfulness -- cgit v1.2.1