requested by Monty for Bug#1647 (No way to determine what size
blob/clob is being returned into bound buffer)
include/mysql.h:
Implementation of mysql_stmt_attr_get and mysql_stmt_attr_set
requested by Monty for Bug#1647.
libmysql/libmysql.c:
Implementation of mysql_stmt_attr_get and mysql_stmt_attr_set
requested by Monty for Bug#1647.
libmysql/libmysql.def:
Windows .defs added for new API calls
mysql_stmt_reset() now resets param->long_data_used
Abort if --defaults-file=path-name uses a non-existing file (Bug #3413)
Fixed problem with symlink test (bug in 4.1.2)
libmysql/libmysql.c:
Allow one to send empty strings with mysql_stmt_send_long_data()
mysql_stmt_reset() now resets param->long_data_used
mysys/default.c:
Abort if --defaults-file=path-name uses a non-existing file (Bug #3413)
sql/unireg.cc:
Fixed problem with symlink test: .frm table was not properly deleted if handler create failed
mysql_stmt_reset() now resets param->long_data_used
Abort if --defaults-file=path-name uses a non-existing file (Bug #3413)
Fixed problem with symlink test (bug in 4.1.2)
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
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
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
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
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
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