there was an error about sendind prepared parameters to the server
libmysqld/lib_sql.cc:
parameter's length added as a parameter
sql/ha_berkeley.cc:
these lines sometimes crashes in embedded library
so i #ifdef-ed it
sql/item.h:
add the data_len parameter in the embedded case
sql/sql_prepare.cc:
i added macroses to make headers of store_param_xxx functions
they have different number of parameters in standalone an embedded servers
also get_param_length now is implemented differently in embedded server
handling of init-file option added to embedded library
main problem was killing of output (resulting recordsets etc)
i added checks for empty output in Protocol:: methods
better solution could be special Protocol_nul class to redirect
results to nowhere
libmysqld/lib_sql.cc:
code was added to call read_init_file
Protocol methods now can support output to nowhere
sql/mysqld.cc:
bootstrap function extended to work in embedded library
sql/sql_parse.cc:
handle_bootstrap modified to work in embedded library
I made libmysqld not to do freopen(stdout...)
I think we need better solution here so i added it as a worklog entry #1247
sql/mysqld.cc:
freopen #ifdef-ed
Not a perfect solution though
Don't free the client's selected db (thd->db) when it has been DROPped,
if this is a slave thread; the x_free() was causing a lot
of various bugs in rpl_loaddata_rule_m (garbage characters, segfault, hangs in
other threads).
A small post-merge fix (rli->inside_transaction exists in 4.0 only).
sql/log_event.cc:
Post-merge fix (rli->inside_transaction existed in 4.0 only)
sql/sql_db.cc:
Don't free the client's selected db (thd->db) when it has been DROPped,
if this is a slave thread; the x_free() was causing a lot
of various bugs in rpl_loaddata_rule_m which does a DROP DATABASE
(garbage characters, segfault, hangs in other threads).
include/mysql.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_derived.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_show.cc:
Auto merged
libmysqld/lib_sql.cc:
SCCS merged
libmysqld/libmysqld.c:
SCCS merged
sql/sql_parse.cc:
SCCS merged
WL#604 Privileges in embedded library
code added to check privileges in embedded library
NO_EMBEDDED_ACCESS_CHECKS macros inserted in code so we can exclude
access-checking parts. Actually we now can exclude these parts from
standalone server as well. Do we need it?
Access checks are disabled in embedded server by default. One should
edit libmysqld/Makefile manually to get this working.
We definitely need the separate configure for embedded server
include/mysql.h:
options added so user of embedded library can set the client host
it will work as if the usual client connects from this host
libmysqld/Makefile.am:
Usually one doesn't need access checking in embedded library
we definitely should separate configure for embedded server
libmysqld/lib_sql.cc:
necessary code for getting passwords and access checks added
libmysqld/libmysqld.c:
code #ifdef-ed - we use this only when we check permissions
sql-common/client.c:
one mysql_close left now
sql/item_strfunc.cc:
#ifndef-s added
sql/log.cc:
#ifndef-s added
sql/mysql_priv.h:
#ifndef-s added
also i removed default parameters from check_access and check_table_access
definitions to set definitions working
sql/mysqld.cc:
#ifndef-s added
localhost renamed to my_localhost
sql/repl_failsafe.cc:
parameters added
sql/set_var.cc:
#ifndef-s added
sql/sql_acl.cc:
#ifndef-s added
sql/sql_acl.h:
#ifndef-s added
sql/sql_base.cc:
#ifndef-s added
sql/sql_cache.cc:
#ifndef-s added
sql/sql_class.cc:
#ifndef-s added
sql/sql_db.cc:
#ifndef-s added
sql/sql_derived.cc:
#ifndef-s added
sql/sql_insert.cc:
#ifndef-s added
sql/sql_parse.cc:
a horde of #ifndef-s added
sql/sql_prepare.cc:
#ifndef-s added
sql/sql_repl.cc:
parameters added
sql/sql_show.cc:
#ifndef-s added
sql/sql_update.cc:
#ifndef-s added
null_string wasn't known in libmysqld/lib_sql.cc, that caused compiler's error
i put the declaration of the null_string in mysql_priv.h and renamed it
to my_null_string to reduce the probability of name's intersections
libmysqld/lib_sql.cc:
null_string -> my_null_string
sql/mysql_priv.h:
my_null_string was made known
sql/sql_prepare.cc:
null_string -> my_null_string
sql/item_strfunc.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
sql/net_serv.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
.c files (the IBM Visual Age C compiler aborts with a syntax error
on these)
libmysql/dll.c:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
libmysql/libmysql.c:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
mysys/my_getopt.c:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
sql/net_serv.cc:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
strings/ctype-bin.c:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
tests/client_test.c:
- replaced C++-style comment with the proper syntax for .c files
(the IBM Visual Age C compiler aborts with a syntax error on these)
cmd-line-utils/readline from the commercial distribution
- fixed some copyright headers so mysql-copyright can process them
Build-tools/mysql-copyright:
- remove the cmd-line-utils/readline directory from the commercial
distribution
- make use of more builtin Perl functions instead of forking
subprocesses
include/my_pthread.h:
- fixed copyright header
sql/filesort.cc:
- fixed copyright header
sql/gen_lex_hash.cc:
- fixed copyright header
sql/item.h:
- fixed copyright header
sql/item_cmpfunc.cc:
- fixed copyright header
sql/records.cc:
- fixed copyright header
sequence boundaries in functions LIKE and LOCATE in
the case of "binary" collation. Comparison was done
like if the strings were just a binary strings without
character set assumption.
prepared statements in embedded library.
some fixes after testing
include/mysql.h:
virtual method added
libmysql/client_settings.h:
declaration added
libmysql/libmysql.c:
implementation added
mysql_fetch changed to work in both libraries
libmysqld/lib_sql.cc:
implementation added
sql-common/client.c:
added items in methods table
sql/client_settings.h:
decided to remove such defines - i placed single #ifdef in client.c
mysql-test/r/func_compress.result:
Test for the bug #1333: COMPRESS(NULL) segfaults.
mysql-test/t/func_compress.test:
Test for the bug #1333: COMPRESS(NULL) segfaults.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
embedded library
some dirty places cleaned:
uint removed from mysql.h as Miguel suggested
empty_string renamed as my_empty_string to get rid of name's intersections
using embedded library
include/mysql.h:
uint -> unsigned int
include/mysql_com.h:
this caused warnings when not in expression
libmysqld/lib_sql.cc:
uint -> unsigned int
sql-common/client.c:
uint -> unsigned int
sql/item_strfunc.cc:
empty_string -> my_empty_string
sql/mysql_priv.h:
empty_string -> my_empty_string
sql/set_var.cc:
empty_string -> my_empty_string
sql/sql_class.cc:
empty_string -> my_empty_string
sql/sql_prepare.cc:
net_flush ifdef-ed
prepared statements in embedded library
include/mysql_com.h:
to make net_flush() working in expressions
libmysqld/lib_sql.cc:
some bugs fixed
libmysqld/libmysqld.c:
we already have the define in client_settings.h
sql/protocol.cc:
net_store_data should work that way in Protocol_prep (embedded server)
sql/protocol.h:
definition for net_store_data
sql/sql_prepare.cc:
now it works in embedded library
prepared statements in embedded library
include/mysql.h:
Another 'virtual' method
libmysql/client_settings.h:
client implementation declared
libmysql/libmysql.c:
mysql_execute edited to work with embedded implementation
libmysqld/lib_sql.cc:
one error fixed (we do need parameter's buffer in embedded library)
embedded recordset transfer methods implementations added
sql-common/client.c:
method added to the table
sql/client_settings.h:
no prepared statements in mimiclient
sql/mysql_priv.h:
these functions became global
sql/protocol.cc:
the stub added
sql/protocol.h:
had to change Protocol's interface for embedded library
sql/sql_class.h:
i changed this only for embedded case, but i think it's better to do the
same for remote server also
sql/sql_prepare.cc:
parts of code #ifndef-ed
prepared statements in embedded library
include/mysql.h:
stmt_execute 'virtual' method added
include/sql_common.h:
two functions became global
libmysql/client_settings.h:
declaration for cli_stmt_execute
libmysql/libmysql.c:
some functions changed to be usable from embedded library
libmysqld/lib_sql.cc:
code for embedded stmt_execute added
sql-common/client.c:
cli_stmt_execute added to the methods table
sql/client_settings.h:
no need for prepared statements in miniclient
Prepared statements in embedded server
Several changes in library code with two goals:
to make mysql_prepare_stmt working in embedded server
to get rid of #define mysql_interface_func mysql->methods->interface_func
in user's interface
include/mysql.h:
modifications of interface
two goals: to implement prepared statements and to get rid
of #define mysql_proc (mysql->smth) in interface
include/sql_common.h:
read_rows function got 'virtual'
libmysql/client_settings.h:
interface of some functions declared in client.c moved here
libmysql/libmysql.c:
several functions changed with declared goals
libmysqld/embedded_priv.h:
libmysqld.c <--> lib_sql.cc interface moved here
libmysqld/lib_sql.cc:
all embedded 'virtual' functions moved here so they can be static
libmysqld/libmysqld.c:
embedded 'virtual' function was moved out of here
sql-common/client.c:
several changes with the declared goal
sql/sql_class.h:
place to store statement data added to THD
sql/sql_prepare.cc:
storing of prepare_statement result for embedded server added