implemented in the client library and server.
Warning: this makes the new client library and server incompatible with all
previous versions and 5.0.
libmysql/libmysql.c:
Make client library compatible with future extensions: types of placeholders,
names of named parameters, cursors and array execution.
sql/sql_prepare.cc:
Alpha server side support for future extensions: types of placeholders and names of
named parameters are sent to client (virtually), cursor flags and execution
count received in COM_EXECUTE packet are ignored.
No need to check for result existence any more, store_result functions
now are shorter.
cli_read_binary_rows rewritten to handle MYSQL_DATA directly.
include/mysql.h:
MYSQL_RES * pointer replaced with MYSQL_DATA: it saves us at least 2 mallocs
per store_result and simplifies stored result handling.
Plus it's done with cursor fetch in mind: cursor fetch will use this
structure to buffer fetched rows.
libmysql/client_settings.h:
signature of cli_read_binary_rows changed
libmysql/libmysql.c:
MYSQL_DATA is now used to handle result.
cli_read_binary_rows rewritten to use MYSQL_DATA directly.
libmysql/libmysql.def:
declarations of new calls in the library
libmysqld/lib_sql.cc:
MYSQL_DATA is now used to handle result.
cli_read_binary_rows rewritten to use MYSQL_DATA directly.
include/mysql.h:
cleanup of load data infile patch
libmysql/libmysql.c:
cleanup of load data infile patch
myisam/mi_search.c:
Added missing assert.h
mysql-test/r/func_time.result:
Make test more secure
mysql-test/t/func_time.test:
Make test more secure
sql/item.cc:
restore to use str_value in item::save_in_field
sql/item.h:
Simple cleanup
sql/item_cmpfunc.cc:
Safety fix
sql/item_cmpfunc.h:
Simple optimization
sql/item_func.cc:
Updated comment
sql/sql_base.cc:
Simple optimization
sql/sql_select.cc:
Simple optimization
sql/sql_union.cc:
safey fixes
client/mysqltest.c:
Auto merged
include/errmsg.h:
Auto merged
include/mysql_version.h.in:
Auto merged
innobase/que/que0que.c:
Auto merged
mysql-test/t/rpl000009.test:
Auto merged
sql/set_var.cc:
Auto merged
libmysql/errmsg.c:
merge with 4.0
libmysql/libmysql.c:
merge with 4.0
mysql-test/mysql-test-run.sh:
merge with 4.0
mysql-test/r/rpl000009.result:
merge with 4.0
scripts/mysql_fix_privilege_tables.sh:
merge with 4.0
sql/repl_failsafe.cc:
merge with 4.0
client library:
- implemented 'check_license' function
include/errmsg.h:
WL #1510: new error code
include/mysql_version.h.in:
WL #1510: fallback define for LICENSE
libmysql/errmsg.c:
WL #1510: error message to print in case when client and server license
mismatch.
libmysql/libmysql.c:
WL#1510: implementation of 'check_license' function
sql/set_var.cc:
removed unused variable 'license'
flaws list)
TODO:
* verify that no sequence of API calls produces SIGSEGV.
That is, verify that mysql_stmt_init -> mysql_stmt_fetch is OK,
or mysql_stmt_prepare -> mysql_stmt_fetch_column is OK and sets
meaningful error.
* remove alloc_stmt_fields call
* revise stmt->state codes and statement states.
* there are other items in prepared statements 'to fix' document.
Done:
- cleanups and comments
- revision of prepared statement error codes.
- mysql_stmt_prepare is now can always be called (that is, you can reprepare
a statement)
- new implementation of mysql_stmt_close and fetch cancellation
include/errmsg.h:
- CR_NOT_ALL_PARAMS_BOUND - this error code wasn't used until now.
Apparently it was added in advance, but then interface of
mysql_stmt_bind_param changed. Now it's not possible to bind only some
parameters - either all or none of parameters are bound.
This error code is renamed to CR_PARAMS_NOT_BOUND
- CR_FETCH_CANCELLED - error code set on server side when fetch from
MYSQL_RES or MYSQL_STMT (in blocking mode) was cancelled because of
intercepting call to mysql_stmt_close
- CR_NO_DATA - this is proposed error code to return from
mysql_stmt_fetch_column if no row was fetched (by any type of fetch).
We always can fall back to CR_COMMANDS_OUT_OF_SYNC though.
Need reviewer's opinion on this one.
include/mysql.h:
- added unbuffered_fetch_owner member to MYSQL to point to MYSQL_RES
or MYSQL_STMT which is used to fetch result at the moment.
This is to be able to set CR_FETCH_CANCELLED error without fantoms.
- added unbuffered_fetch_cancelled boolean variable to MYSQL_STMT and
MYSQL_RES structures
- rename PREP_STMT_STATE -> enum enum_mysql_stmt_state
- members of MYSQL_STMT ordered by size.
- removed members of MYSQL_STMT: current_row, result_buffered,
last_fetched_column, last_fetched_buffer, query
- renamed members of MYSQL_STMT: param_buffers -> bind_param_done,
res_buffers -> bind_result_done
- now mysql_stmt_fetch calls stmt->read_row_func to read row either from
buffer or from network.
include/sql_common.h:
declaration for flush_use_result
libmysql/client_settings.h:
stmt_close declaration removed
libmysql/errmsg.c:
Error messages for changed and added error codes.
libmysql/libmysql.c:
Many changes:
- some unused variables removed
- cleanups
- better error reporting
- some function calls commented
- alloc_stmt_fields is now called right after execute, to not read
mysql->fields of some other statement
- new implementation of mysql_stmt_fetch - this is also with cursor
fetch in mind (to implement cursor fetch I'll just need to write
special read_row function for it, so this change will be local)
- implementation of fetch cancellation, including complete rewrite of
mysql_stmt_close
- now mysql_stmt_free_result doesn't free results of other statements.
sql-common/client.c:
- implementation of flush_use_result
- implementation of fetch cancellation
- changed behaviour of mysql_close in regard to mysql_stmt_close - now
mysql_close just set stmt->mysql to 0
set_mysql_error is deployed
libmysql/client_settings.h:
declaration for set_mysql_error
libmysql/libmysql.c:
- set_mysql_error moved to client.c
- st_stmt_errmsg -> set_stmt_error
sql-common/client.c:
deployment of set_mysql_error
BitKeeper/etc/logging_ok:
auto-union
myisam/mi_check.c:
Auto merged
mysql-test/r/func_math.result:
Auto merged
mysql-test/t/func_math.test:
Auto merged
sql/item_func.cc:
Auto merged
into mashka.mysql.fi:/home/my/mysql-4.1
innobase/rem/rem0cmp.c:
Auto merged
libmysql/libmysql.c:
Auto merged
sql-common/client.c:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/sql_base.cc:
Auto merged
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
BitKeeper/deleted/.del-mini_client.cc~8677895ec8169183:
Auto merged
VC++Files/mysql.dsw:
Auto merged
VC++Files/mysys/mysys.dsp:
Auto merged
innobase/buf/buf0buf.c:
Auto merged
innobase/include/srv0start.h:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/mem/mem0dbg.c:
Auto merged
innobase/que/que0que.c:
Auto merged
innobase/srv/srv0start.c:
Auto merged
innobase/sync/sync0rw.c:
Auto merged
innobase/sync/sync0sync.c:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
libmysql/manager.c:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/unireg.cc:
Auto merged
VC++Files/sql/mysqld.dsp:
Removed wrong define USE_SYMLINK
include/config-win.h:
Use original code
innobase/srv/srv0srv.c:
merge
innobase/usr/usr0sess.c:
merge
libmysql/libmysql.c:
merge
mysql-test/r/func_test.result:
merge
mysql-test/t/func_test.test:
merge
sql/log.cc:
merge
sql/mysqld.cc:
merge
Problem was that we checked for existing connection in stmt_close
and did not free(stmt) if it's closed (that didn't work well with
embedded)
I just added new flag to the stmt_close and now we check it instead
of connection
libmysql/client_settings.h:
declaration changed
libmysql/libmysql.c:
stmt_close and it's calls modified
sql-common/client.c:
stmt_close call modified
This ensures that my_file_info takes this the max number of files into account and one can now use --open-files-limit on windows to increase number of used files up to 2048
client/client_priv.h:
Added --open-files-limit to mysqlbinlog
client/mysqlbinlog.cc:
Added --open-files-limit to mysqlbinlog
include/config-win.h:
Define that you can have up to 2048 files open on windows
include/my_global.h:
Allow override of OS_FILE_LIMIT
include/my_sys.h:
Cleanup
Added prototypes for my_set_max_open_files() and my_free_open_files()
libmysql/Makefile.shared:
Added my_file.c
myisam/myisamlog.c:
Use my_set_max_open_files()
mysys/Makefile.am:
Use my_file.c (for mysqlbinlog)
mysys/my_alloc.c:
Remove compiler warning
mysys/my_div.c:
MY_NFILE -> my_file_limit
mysys/my_dup.c:
MY_NFILE -> my_file_limit
mysys/my_fopen.c:
MY_NFILE -> my_file_limit
mysys/my_open.c:
MY_NFILE -> my_file_limit
mysys/my_static.c:
Allow changing of open files limit
mysys/my_static.h:
Allow changing of open files limit
sql/mysqld.cc:
Max open files handling moved to my_set_max_open_files()
Fixed that blobs >16M can be inserted/updated
Fixed bug when doing CREATE TEMPORARY TABLE ... LIKE
include/m_ctype.h:
Changed wellformedlen to well_formed_len
include/mysql.h:
Fixed comment
libmysql/libmysql.c:
Fixed indentation
libmysqld/lib_sql.cc:
Fixed indentation
mysql-test/r/ctype_utf8.result:
updated warning numbers
mysql-test/r/innodb.result:
Moved test to right place
mysql-test/r/myisam-blob.result:
More test for blobs
mysql-test/r/rpl000002.result:
Move test to better place
mysql-test/r/rpl_log.result:
Move test to better place
mysql-test/r/union.result:
Move test to better place
mysql-test/t/innodb.test:
Moved test to right place
mysql-test/t/myisam-blob.test:
More test of blobs
mysql-test/t/rpl000002.test:
Move test to better place
mysql-test/t/rpl_log.test:
Move test to better place
mysql-test/t/union.test:
Move test to better place
sql/field.cc:
Changed wellformedlen to well_formed_len.
Fixed that blobs >16M can be inserted/updated (new bug)
sql/field.h:
Code optimization
sql/sql_lex.cc:
Changed short variable names
sql/sql_show.cc:
Optimized quote handling
sql/sql_table.cc:
Fixed bug when doing CREATE TEMPORARY TABLE ... LIKE
sql/sql_union.cc:
Added comment
strings/ctype-big5.c:
Changed wellformedlen to well_formed_len
strings/ctype-bin.c:
Changed wellformedlen to well_formed_len
strings/ctype-euc_kr.c:
Changed wellformedlen to well_formed_len
strings/ctype-gb2312.c:
Changed wellformedlen to well_formed_len
strings/ctype-gbk.c:
Changed wellformedlen to well_formed_len
strings/ctype-latin1.c:
Changed wellformedlen to well_formed_len
strings/ctype-mb.c:
Changed wellformedlen to well_formed_len
strings/ctype-simple.c:
Changed wellformedlen to well_formed_len
strings/ctype-sjis.c:
Changed wellformedlen to well_formed_len
strings/ctype-tis620.c:
Changed wellformedlen to well_formed_len
strings/ctype-ucs2.c:
Changed wellformedlen to well_formed_len
Indentation changes
strings/ctype-ujis.c:
Changed wellformedlen to well_formed_len
strings/ctype-utf8.c:
Changed wellformedlen to well_formed_len
client/mysqldump.c:
Auto merged
configure.in:
Auto merged
include/m_ctype.h:
Auto merged
include/m_string.h:
Auto merged
include/my_global.h:
Auto merged
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
mysql-test/t/grant.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/union.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_string.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype-mb.c:
Auto merged
strings/ctype-simple.c:
Auto merged
mysql-test/r/warnings.result:
Fix error numbers after merge
sql/share/czech/errmsg.txt:
Add missing ',' and fix typo
sql/share/danish/errmsg.txt:
Add missing ',' and fix typo
sql/share/dutch/errmsg.txt:
Add missing ',' and fix typo
sql/share/estonian/errmsg.txt:
Add missing ',' and fix typo
sql/share/french/errmsg.txt:
Add missing ',' and fix typo
sql/share/german/errmsg.txt:
Add missing ',' and fix typo
sql/share/greek/errmsg.txt:
Add missing ',' and fix typo
sql/share/hungarian/errmsg.txt:
Add missing ',' and fix typo
sql/share/italian/errmsg.txt:
Add missing ',' and fix typo
sql/share/japanese/errmsg.txt:
Add missing ',' and fix typo
sql/share/korean/errmsg.txt:
Add missing ',' and fix typo
sql/share/norwegian-ny/errmsg.txt:
Add missing ',' and fix typo
sql/share/norwegian/errmsg.txt:
Add missing ',' and fix typo
sql/share/polish/errmsg.txt:
Add missing ',' and fix typo
sql/share/portuguese/errmsg.txt:
Add missing ',' and fix typo
sql/share/romanian/errmsg.txt:
Add missing ',' and fix typo
sql/share/russian/errmsg.txt:
Add missing ',' and fix typo
sql/share/slovak/errmsg.txt:
Add missing ',' and fix typo
sql/share/spanish/errmsg.txt:
Add missing ',' and fix typo
sql/share/swedish/errmsg.txt:
Add missing ',' and fix typo
sql/share/ukrainian/errmsg.txt:
Add missing ',' and fix typo
now it's working
include/mysql.h:
read_change_user_result 'virtual' method added
libmysql/client_settings.h:
cli_read_change_user_result interface
libmysql/libmysql.c:
cli_read_change_user_result implementation
libmysqld/lib_sql.cc:
emb_read_change_user_result implementation
sql-common/client.c:
cli_read_change_user_result added to the method's table
sql/sql_parse.cc:
fixes to make mysql_change_user working in embedded library
into serg.mylan:/usr/home/serg/Abk/mysql-4.1
configure.in:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/sql_string.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype-simple.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
strtod from mit-threads is restored and cleaned up
BitKeeper/deleted/.del-atof.c~d3edf47a9884080:
Delete: strings/atof.c
configure.in:
atod() is no longer used in MySQL
isinf() now is
include/m_string.h:
my_strtod, my_atof
include/my_global.h:
my_atof is deleted
define isinf()
libmysql/Makefile.shared:
use internal strtod
sql/gstream.cc:
use internal strtod
sql/init.cc:
my_atof is deleted
sql/item.h:
use internal strtod
sql/item_func.cc:
use internal strtod
sql/item_sum.h:
use internal strtod
sql/sql_analyse.cc:
use internal strtod
strings/Makefile.am:
use internal strtod
strings/ctype-simple.c:
use internal strtod
strings/ctype-ucs2.c:
use internal strtod
strings/strtod.c:
cleanup
stricter input checks (e.g. ".E10" is no longer a number)
don't return an "inf"
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
mysql-test/r/ctype_tis620.result-old:
Merge rename: mysql-test/r/ctype_tis620.result -> mysql-test/r/ctype_tis620.result-old
BUILD/compile-pentium-max:
Auto merged
BitKeeper/etc/config:
Auto merged
Build-tools/Bootstrap:
Auto merged
Build-tools/Do-compile:
Auto merged
configure.in:
Auto merged
mysql-test/t/ctype_tis620.test-old:
Merge rename: mysql-test/t/ctype_tis620.test -> mysql-test/t/ctype_tis620.test-old
Docs/Makefile.am:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
include/my_global.h:
Auto merged
include/my_pthread.h:
Auto merged
include/my_sys.h:
Auto merged
include/myisam.h:
Auto merged
innobase/btr/btr0cur.c:
Auto merged
innobase/ibuf/ibuf0ibuf.c:
Auto merged
innobase/include/dict0dict.h:
Auto merged
innobase/include/srv0srv.h:
Auto merged
innobase/include/ut0mem.h:
Auto merged
innobase/log/log0log.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0sel.c:
Auto merged
innobase/srv/srv0start.c:
Auto merged
innobase/ut/ut0mem.c:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/mi_dynrec.c:
Auto merged
myisam/mi_key.c:
Auto merged
myisam/myisam_ftdump.c:
Auto merged
myisam/myisamdef.h:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/alter_table.result:
Auto merged
mysql-test/r/bdb.result:
Auto merged
mysql-test/r/bigint.result:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
Done clean-up in prep stmt API functions:
1) Removed some checks that were performed only in debug version
were making debug version more tolerable to user errors than
production (and thus caused problems for example masking some
bugs).
2) Also removed some other checks to make prep stmt API
consistent with the rest of C API (this also in line with
general politics - make checks in only those places where
errors are very common and hard to spot).
include/mysql.h:
Removed CHECK_EXTRA_ARGUMENTS define since it is no longer used
anywhere.
libmysql/libmysql.c:
Added check that will cause mysql_fetch() to bark then it is
used without calling mysql_execute() before.
Removed checks that were performed only in debug version and
caused problems since they were making debug version more
tolerable to user errors than production. Also removed some
other checks to make prep stmt API consistent in this regard
with the rest of C API (this also in line with general politics -
make checks in only those places where errors are very common
and hard to spot).
tests/client_test.c:
Updated tests to reflect removal of some checks in prep stmt API.
Removed lines that caused bug #2473 to pop up, should be added
as separate test with the fix for this bug.
Added test for bug#2248 "mysql_fetch without prior mysql_execute
hangs"
now we execute only one first select during mysql_real_query
others - during 'mysql_next_result'
include/mysql.h:
'virtual' next_result added
libmysql/client_settings.h:
cli_next_result declaration added
libmysql/libmysql.c:
mysql_next_result now works in embedded library as well
libmysqld/lib_sql.cc:
emb_next_result implemented
sql/sql_class.h:
fields to store the rest of the query added
sql/sql_parse.cc:
Saving the rest of the query added for embedded case
last command"
include/mysql.h:
Fix for bug #2247:
added affected_rows variable to MYSQL_STMT
libmysql/libmysql.c:
Fix for bug #2247:
save mysql->affected_rows in stmt->affected_rows
after mysql_execute() and mysql_stmt_store_result().
tests/client_test.c:
Fix for bug #2247: test added
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
include/my_global.h:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
mysql-test/r/warnings.result:
Auto merged
mysql-test/t/type_enum.test:
Auto merged
sql/field.cc:
Auto merged
sql/lex.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
additional changes (after discussion with Monty)
libmysql/libmysql.c:
it's good to check my_thread_init() result as well
sql/client_settings.h:
0 is more relevant here
now mysql_server_init is called from mysql_init with fake parameters
mysql_once_init code included to mysql_server_init.
embedded-specific initialization is in init_embedded_server function
include/errmsg.h:
this error won't happen
include/mysql.h:
declarations removed
libmysql/client_settings.h:
declaration of init_embedded_server/end_embedded_server added
libmysql/errmsg.c:
this error won't happen
libmysql/libmysql.c:
mysql_once_init -> mysql_server_init transformations
libmysqld/embedded_priv.h:
declaration deleted
libmysqld/lib_sql.cc:
mysql_server_init -> init_embedded_server
mysql_server_end -> end_embedded_server
libmysqld/libmysqld.c:
check for server_inited not needed now
sql-common/client.c:
mysql_server_init now called from mysql_init
sql/client_settings.h:
fake mysql_server_init for server code
sql/net_serv.cc:
we need MYSQL_CLIENT defined in embedded server
sql/sql_client.cc:
not needed now