├── THANKS ├── m4 └── Makefile.am ├── tests ├── suite │ ├── bugs │ │ ├── r │ │ │ ├── bug_29494.result │ │ │ └── Makefile.am │ │ ├── Makefile.am │ │ └── t │ │ │ ├── Makefile.am │ │ │ ├── bug_29494.test │ │ │ ├── bug_select_local.test │ │ │ └── bug_select_local.lua │ ├── base │ │ ├── r │ │ │ ├── bug_41991.result │ │ │ ├── bug_46141.result │ │ │ ├── no_backend.result │ │ │ ├── change_user.result │ │ │ ├── select_null.result │ │ │ ├── constants.result │ │ │ ├── client_address_socket.result │ │ │ ├── bug_45167.result │ │ │ ├── bug_55459.result │ │ │ ├── bug_35729.result │ │ │ ├── mysql-40.result │ │ │ ├── ignore-resultset.result │ │ │ ├── chain1.result │ │ │ ├── lineno.result │ │ │ ├── load-data-infile.result │ │ │ ├── select_affected_rows.result │ │ │ ├── bug_30867.result │ │ │ ├── bug_35669.result │ │ │ ├── overlong.result │ │ │ ├── raw_packets.result │ │ │ ├── client_address.result │ │ │ ├── failover.result │ │ │ ├── bug_43078.result │ │ │ ├── pooling.result │ │ │ ├── error_struct.result │ │ │ ├── tokens-normalize.result │ │ │ ├── tokens1.result │ │ │ ├── Makefile.am │ │ │ ├── tokens2.result │ │ │ ├── load_multi.result │ │ │ ├── resultset.result │ │ │ └── xtab1.result │ │ ├── t │ │ │ ├── change_user.test │ │ │ ├── bug_45167-test.lua │ │ │ ├── change_user.options │ │ │ ├── change_user.lua │ │ │ ├── bug_55459-test.lua │ │ │ ├── xtab2.lua │ │ │ ├── pooling-test.lua │ │ │ ├── xtab1-test.lua │ │ │ ├── bug_30867.lua │ │ │ ├── load_multi-test.lua │ │ │ ├── no_backend.test │ │ │ ├── bug_41991.test │ │ │ ├── bug_46141.test │ │ │ ├── bug_35729.test │ │ │ ├── select_null.test │ │ │ ├── chain1.options │ │ │ ├── constants.test │ │ │ ├── xtab1.options │ │ │ ├── overlong.options │ │ │ ├── pooling.options │ │ │ ├── bug_35729.options │ │ │ ├── bug_43078.options │ │ │ ├── bug_45167.options │ │ │ ├── bug_55459.options │ │ │ ├── constants.options │ │ │ ├── default.options │ │ │ ├── resultset.options │ │ │ ├── load_multi.options │ │ │ ├── client_address.options │ │ │ ├── ignore-resultset.options │ │ │ ├── load-data-infile.options │ │ │ ├── ignore-resultset.test │ │ │ ├── failover-test.lua │ │ │ ├── xtab1.test │ │ │ ├── client_address_socket.test │ │ │ ├── select_affected_rows.test │ │ │ ├── failover.options │ │ │ ├── bug_45167.test │ │ │ ├── bug_41991.options │ │ │ ├── bug_46141.options │ │ │ ├── bug_35669.options │ │ │ ├── bug_55459.test │ │ │ ├── chain1.test │ │ │ ├── bug_43078.test │ │ │ ├── raw_packets.test │ │ │ ├── bug_35669-mock.lua │ │ │ ├── client_address_socket.options │ │ │ ├── mysql-40.test │ │ │ ├── lineno.test │ │ │ ├── load-data-infile-test.lua │ │ │ ├── client_address-mock.lua │ │ │ ├── tokens2.test │ │ │ ├── resultset.test │ │ │ ├── lm3.lua │ │ │ ├── bug_30867.test │ │ │ ├── tokens1.test │ │ │ ├── error_struct.test │ │ │ ├── chain1b.lua │ │ │ ├── load-data-infile.test │ │ │ ├── xtab1-mock.lua │ │ │ ├── bug_43078-test.lua │ │ │ ├── bug_41991-mock.lua │ │ │ ├── tokens-normalize.test │ │ │ ├── select_affected_rows.lua │ │ │ ├── bug_55459-mock.lua │ │ │ ├── lm2.lua │ │ │ ├── bug_35669.test │ │ │ ├── pooling.test │ │ │ ├── bug_41991-test.lua │ │ │ ├── bug_35729-test.lua │ │ │ ├── bug_35729-mock.lua │ │ │ ├── ignore-resultset-mock.lua │ │ │ ├── bug_45167-mock.lua │ │ │ ├── bug_46141-mock.lua │ │ │ ├── bug_43078-mock.lua │ │ │ ├── client_address-test.lua │ │ │ ├── failover.test │ │ │ └── constants-mock.lua │ │ └── Makefile.am │ ├── testenv │ │ ├── Makefile.am │ │ └── processmanager.lua │ ├── CMakeLists.txt │ ├── lua_runner.c │ ├── Makefile.am │ └── lua-tests-wrapper.sh.in ├── CMakeLists.txt ├── Makefile.am └── unit │ └── lua │ ├── lua_runner.c │ ├── Makefile.am │ ├── chassis.lua │ ├── mysql-table.lua │ ├── lua-tests-wrapper.sh.in │ ├── CMakeLists.txt │ └── proxy-parser.lua ├── AUTHORS ├── deps ├── CMakeLists.txt ├── libevent.config.h.cmake ├── libevent.event-config.h.cmake ├── libevent.def └── libevent.cmake ├── lib ├── lfs.def ├── lpeg.def ├── posix.def ├── glib2.def ├── chassis.def ├── mysql.def ├── sql-tokenizer-keywords.h ├── proxy │ ├── CMakeLists.txt │ └── Makefile.am ├── commit-obfuscator.msc ├── sql-tokenizer-gen.c └── commit-obfuscator.lua ├── README ├── cmake ├── Makefile.am ├── ChassisPlugin.cmake └── Tar.cmake ├── doc ├── log-domains.rst ├── Makefile.am └── index.rst ├── doxygen-scripts ├── doxygen_version.sh ├── project_number_bzr.sh └── footer.html ├── src ├── chassis_log_error.c ├── network-debug.h ├── network_mysqld_proto_binary.h ├── chassis_log_error.h ├── mysql-proxy.mc ├── lua-registry-keys.h ├── chassis-unix-daemon.h ├── chassis-filemode.h ├── network-socket-lua.h ├── network-backend-lua.h ├── chassis-path.h ├── network-address-lua.h ├── lua-load-factory.h ├── string-len.h ├── proxy-dtrace-provider.d ├── chassis-exports.h ├── lua-env.h ├── chassis_log_domain.c ├── my_timer_cycles.il ├── chassis-limits.h ├── network-exports.h ├── sys-pedantic.h ├── network-conn-pool-lua.h ├── network-injection-lua.h ├── chassis-win32-service.h ├── chassis-keyfile.h ├── network-mysqld-table-lua.h ├── glib-ext-ref.h ├── chassis-gtimeval.h ├── network-mysqld-binlog-lua.h ├── chassis-gtimeval.c ├── network-queue.h ├── chassis-shutdown-hooks.h ├── lua-scope.h └── disable-dtrace.h ├── scripts └── Makefile.am ├── mysql-chassis.pc.in ├── plugins ├── CMakeLists.txt ├── master │ └── Makefile.am ├── admin │ ├── Makefile.am │ └── CMakeLists.txt ├── cli │ ├── Makefile.am │ └── CMakeLists.txt ├── debug │ ├── Makefile.am │ └── CMakeLists.txt ├── proxy │ ├── Makefile.am │ ├── CMakeLists.txt │ └── proxy-plugin.h ├── replicant │ ├── Makefile.am │ ├── CMakeLists.txt │ └── replicant.lua └── Makefile.am ├── .bzrignore ├── mysql-proxy.pc.in ├── mysql-chassis.pc.cmake ├── mysql-proxy.pc.cmake ├── examples ├── CMakeLists.txt ├── Makefile.am ├── tutorial-basic.lua ├── tutorial-constants.lua ├── tutorial-tokenize.lua └── tutorial-union.lua ├── config.h.cmake ├── mysql-proxy.spec.in └── Makefile.am /THANKS: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /m4/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=sed.m4 2 | -------------------------------------------------------------------------------- /tests/suite/bugs/r/bug_29494.result: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_41991.result: -------------------------------------------------------------------------------- 1 | REFRESH; 2 | -------------------------------------------------------------------------------- /tests/suite/bugs/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS=r t 2 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | If you have questions about 2 | 3 | jan 4 | -------------------------------------------------------------------------------- /tests/suite/base/t/change_user.test: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | -------------------------------------------------------------------------------- /deps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # INCLUDE(deps/libevent.cmake) 2 | -------------------------------------------------------------------------------- /lib/lfs.def: -------------------------------------------------------------------------------- 1 | LIBRARY lfs.dll 2 | EXPORTS 3 | luaopen_lfs 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_46141.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | 1 3 | 2 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/no_backend.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | 1 3 | 1 4 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cwarden/mysql-proxy/HEAD/README -------------------------------------------------------------------------------- /lib/lpeg.def: -------------------------------------------------------------------------------- 1 | LIBRARY lpeg.dll 2 | EXPORTS 3 | luaopen_lpeg 4 | -------------------------------------------------------------------------------- /lib/posix.def: -------------------------------------------------------------------------------- 1 | LIBRARY posix.dll 2 | EXPORTS 3 | luaopen_posix 4 | -------------------------------------------------------------------------------- /lib/glib2.def: -------------------------------------------------------------------------------- 1 | LIBRARY glib2.dll 2 | EXPORTS 3 | luaopen_glib2 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/change_user.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | user 3 | _mysql 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/select_null.result: -------------------------------------------------------------------------------- 1 | SELECT NULL; 2 | NULL 3 | NULL 4 | -------------------------------------------------------------------------------- /lib/chassis.def: -------------------------------------------------------------------------------- 1 | LIBRARY chassis.dll 2 | EXPORTS 3 | luaopen_chassis 4 | -------------------------------------------------------------------------------- /lib/mysql.def: -------------------------------------------------------------------------------- 1 | LIBRARY mysql.dll 2 | EXPORTS 3 | luaopen_mysql_proto 4 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(unit) 2 | ADD_SUBDIRECTORY(suite) 3 | -------------------------------------------------------------------------------- /tests/suite/bugs/r/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | bug_29494.result 3 | -------------------------------------------------------------------------------- /tests/suite/base/r/constants.result: -------------------------------------------------------------------------------- 1 | do constants work ?; 2 | Result 3 | passed 4 | -------------------------------------------------------------------------------- /tests/suite/base/t/bug_45167-test.lua: -------------------------------------------------------------------------------- 1 | --- 2 | -- just do nothing 3 | -- 4 | 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/client_address_socket.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | client 3 | not-nil 4 | -------------------------------------------------------------------------------- /tests/suite/base/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS=t r 2 | EXTRA_DIST = \ 3 | tests_to_skip.lua 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_45167.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | Name Value 3 | 1 1 4 | 2 2 5 | 3 3 6 | 4 4 7 | -------------------------------------------------------------------------------- /tests/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = unit suite 2 | 3 | EXTRA_DIST = CMakeLists.txt gtester-to-junit.xslt 4 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_55459.result: -------------------------------------------------------------------------------- 1 | SELECT x; 2 | ERROR 42S22: Unknown column 'x' in 'field list' 3 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_35729.result: -------------------------------------------------------------------------------- 1 | SELECT key, value; 2 | Name Value 3 | 1 1 4 | 2 2 5 | 3 3 6 | 4 4 7 | -------------------------------------------------------------------------------- /cmake/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=\ 2 | Tar.cmake \ 3 | ChassisPlugin.cmake \ 4 | ChassisInstall.cmake 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/mysql-40.result: -------------------------------------------------------------------------------- 1 | SELECT thread_id(); 2 | thread_id 3 | 0 4 | Got one of the listed errors 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/ignore-resultset.result: -------------------------------------------------------------------------------- 1 | ignore_and_default; 2 | 1 3 | 1 4 | ignore_and_replace; 5 | 1 6 | 2 7 | -------------------------------------------------------------------------------- /doc/log-domains.rst: -------------------------------------------------------------------------------- 1 | log domains 2 | ----------- 3 | 4 | right now we support these log-domains: 5 | 6 | * default 7 | * lua 8 | 9 | -------------------------------------------------------------------------------- /tests/suite/bugs/t/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = \ 2 | bug_29494.lua \ 3 | bug_29494.test \ 4 | bug_select_local.lua \ 5 | bug_select_local.test 6 | -------------------------------------------------------------------------------- /doxygen-scripts/doxygen_version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $%BEGINLICENSE%$ 3 | # $%ENDLICENSE%$ 4 | 5 | bzr log --limit 1 --line $1 | sed -n 's/^\([0-9]*\):.*$/\1/p' 6 | -------------------------------------------------------------------------------- /tests/suite/base/r/chain1.result: -------------------------------------------------------------------------------- 1 | # this should return "1 ADDITION SECOND ADDITION" 2 | SELECT 1; 3 | 1 ADDITION SECOND ADDITION 4 | 1 ADDITION SECOND ADDITION 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/lineno.result: -------------------------------------------------------------------------------- 1 | SELECT backtrace; 2 | backtrace 3 | stack traceback: 4 | [string "lineno.lua"]:48: in function <[string "lineno.lua"]:32> 5 | -------------------------------------------------------------------------------- /tests/suite/testenv/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=\ 2 | fileutils.lua \ 3 | shellutils.lua \ 4 | testutils.lua \ 5 | process.lua \ 6 | processmanager.lua 7 | 8 | -------------------------------------------------------------------------------- /tests/suite/base/r/load-data-infile.result: -------------------------------------------------------------------------------- 1 | load data local infile 'testfile' into table foo.bar; 2 | load data local infile 'testfile' into table foo.bar; 3 | SELECT 1; 4 | 1 5 | 1 6 | -------------------------------------------------------------------------------- /tests/suite/base/r/select_affected_rows.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | 1 3 | 1 4 | SELECT affected_rows; 5 | rows 6 | NULL 7 | SET @a = 1; 8 | SELECT affected_rows; 9 | rows 10 | 0 11 | -------------------------------------------------------------------------------- /lib/sql-tokenizer-keywords.h: -------------------------------------------------------------------------------- 1 | #ifndef __SQL_TOKENIZER_KEYWORDS_H__ 2 | #define __SQL_TOKENIZER_KEYWORDS_H__ 3 | 4 | int *sql_keywords_get(void); 5 | int sql_keywords_get_count(void); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /src/chassis_log_error.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "chassis_log_error.h" 4 | 5 | GQuark chassis_log_error(void) { 6 | return g_quark_from_static_string("chassis_log_error"); 7 | } 8 | 9 | -------------------------------------------------------------------------------- /lib/proxy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INSTALL(FILES 2 | auto-config.lua 3 | balance.lua 4 | commands.lua 5 | parser.lua 6 | tokenizer.lua 7 | test.lua 8 | 9 | DESTINATION lib/mysql-proxy/lua/proxy/ 10 | ) 11 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_30867.result: -------------------------------------------------------------------------------- 1 | select count(*) from test.t1; 2 | count(*) 3 | 0 4 | insert into test.t1 values (1); 5 | drop table test.t1; 6 | drop user user1@localhost; 7 | drop user user2@localhost; 8 | -------------------------------------------------------------------------------- /doxygen-scripts/project_number_bzr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $%BEGINLICENSE%$ 3 | # $%ENDLICENSE%$ 4 | 5 | VERSION_INFO=`bzr version-info --custom --template="{branch_nick} Revision {revno} from {date}"` 6 | echo "\"$1 - $VERSION_INFO\"" 7 | -------------------------------------------------------------------------------- /scripts/Makefile.am: -------------------------------------------------------------------------------- 1 | if USE_WRAPPER_SCRIPT 2 | ## create wrappers for all the binaries defined in src/Makefile 3 | bin_SCRIPTS = mysql-binlog-dump mysql-myisam-dump mysql-proxy 4 | 5 | CLEANFILES = $(bin_SCRIPTS) 6 | endif 7 | -------------------------------------------------------------------------------- /lib/commit-obfuscator.msc: -------------------------------------------------------------------------------- 1 | msc { 2 | client, proxy, server; 3 | 4 | client->proxy [ label = "COMMIT" ]; 5 | proxy->server [ label = "ROLLBACK" ]; 6 | server->proxy [ label = "OK" ]; 7 | proxy->client [ label = "ERR: deadlock" ]; 8 | } 9 | -------------------------------------------------------------------------------- /doxygen-scripts/footer.html: -------------------------------------------------------------------------------- 1 |
2 | Generated on $datetime for $projectname version $projectnumber.
3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_35669.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | ERROR 07000: (bug_35669-mock) >SELECT 1< 3 | ERROR HY000: #07000MySQL Proxy Lua script failed to load. Check the error log. 4 | ERROR HY000: #07000MySQL Proxy Lua script failed to load. Check the error log. 5 | -------------------------------------------------------------------------------- /tests/suite/base/r/overlong.result: -------------------------------------------------------------------------------- 1 | SELECT 16777233; 2 | length 3 | 16777233 4 | SELECT 21; 5 | length 6 | 21 7 | SELECT 16777233; 8 | length 9 | 16777233 10 | SELECT 16777233; 11 | length 12 | 16777233 13 | SELECT PASSED; 14 | length 15 | PASSED 16 | SELECT PASSED; 17 | length 18 | PASSED 19 | -------------------------------------------------------------------------------- /lib/proxy/Makefile.am: -------------------------------------------------------------------------------- 1 | luaextdir = ${pkglibdir}/lua/ 2 | 3 | pkglib_proxydir = $(luaextdir)/proxy 4 | dist_pkglib_proxy_DATA = \ 5 | auto-config.lua \ 6 | balance.lua \ 7 | commands.lua \ 8 | parser.lua \ 9 | tokenizer.lua \ 10 | test.lua 11 | 12 | EXTRA_DIST=CMakeLists.txt 13 | -------------------------------------------------------------------------------- /tests/suite/base/r/raw_packets.result: -------------------------------------------------------------------------------- 1 | SELECT 1; 2 | 1 3 | 1 4 | SELECT errmsg empty; 5 | ERROR 07000: (lua) proxy.response.errmsg is nil 6 | SELECT invalid type; 7 | ERROR 07000: (lua) handling proxy.response failed, check error-log 8 | SELECT errmsg; 9 | ERROR 07000: I'm a error 10 | SELECT errcode; 11 | ERROR 07000: I'm a error 12 | -------------------------------------------------------------------------------- /tests/suite/base/t/change_user.options: -------------------------------------------------------------------------------- 1 | local change_user_proxy_options = default_proxy_options 2 | change_user_proxy_options["user"] = "_mysql" 3 | -- this doesn't work becuase run-tests.lua doesn't call mysqltest with 4 | -- the correct port 5 | -- change_user_proxy_options["proxy-address"] = "127.0.0.1:800" 6 | start_proxy('change_user', change_user_proxy_options) 7 | -------------------------------------------------------------------------------- /tests/suite/base/r/client_address.result: -------------------------------------------------------------------------------- 1 | value 2 | NULL 3 | value 4 | NULL 5 | value 6 | NULL 7 | value 8 | NULL 9 | value 10 | NULL 11 | value 12 | NULL 13 | value 14 | NULL 15 | value 16 | NULL 17 | value 18 | NULL 19 | value 20 | NULL 21 | value 22 | NULL 23 | value 24 | NULL 25 | value 26 | NULL 27 | value 28 | NULL 29 | value 30 | NULL 31 | value 32 | NULL 33 | -------------------------------------------------------------------------------- /tests/suite/base/r/failover.result: -------------------------------------------------------------------------------- 1 | SET ID 1; 2 | id 3 | 1 4 | GET ID; 5 | id 6 | 1 7 | SET ID 2; 8 | id 9 | 2 10 | GET ID; 11 | id 12 | 2 13 | GET ID; 14 | id 15 | 1 16 | KILL BACKEND; 17 | ERROR HY000: Lost connection to MySQL server during query 18 | GET ID; 19 | ERROR HY000: MySQL server has gone away 20 | GET ID; 21 | id 22 | 2 23 | GET ID; 24 | id 25 | 2 26 | -------------------------------------------------------------------------------- /mysql-chassis.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: mysql-chassis 7 | Version: @VERSION@ 8 | Description: the Chassis of the MySQL Proxy 9 | URL: http://forge.mysql.com/wiki/MySQL_Proxy 10 | Requires: glib-2.0 >= 2.16, gthread-2.0 >= 2.16 11 | Libs: -L${libdir} -lmysql-chassis 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /tests/suite/base/r/bug_43078.result: -------------------------------------------------------------------------------- 1 | SELECT 249 fields; 2 | fields 3 | 249 4 | SELECT 250 fields; 5 | fields 6 | 250 7 | SELECT 251 fields; 8 | fields 9 | 251 10 | SELECT 252 fields; 11 | fields 12 | 252 13 | SELECT 253 fields; 14 | fields 15 | 253 16 | SELECT 254 fields; 17 | fields 18 | 254 19 | SELECT 255 fields; 20 | fields 21 | 255 22 | SELECT 256 fields; 23 | fields 24 | 256 25 | -------------------------------------------------------------------------------- /tests/suite/base/r/pooling.result: -------------------------------------------------------------------------------- 1 | SELECT conn_id, stmt_id; 2 | conn_id stmt_id 3 | 2 1 4 | SELECT conn_id, stmt_id; 5 | conn_id stmt_id 6 | 2 2 7 | SELECT conn_id, stmt_id; 8 | conn_id stmt_id 9 | 3 1 10 | SELECT conn_id, stmt_id; 11 | conn_id stmt_id 12 | 2 3 13 | SELECT conn_id, stmt_id; 14 | conn_id stmt_id 15 | 4 1 16 | SELECT conn_id, stmt_id; 17 | conn_id stmt_id 18 | 5 1 19 | -------------------------------------------------------------------------------- /tests/suite/base/r/error_struct.result: -------------------------------------------------------------------------------- 1 | select error 3306 xyz12 "My first fake error message"; 2 | ERROR xyz12: my first fake error message 3 | select error 2222 123ab "My second fake error message"; 4 | ERROR 123ab: my second fake error message 5 | select error 0000 xxxxx ""; 6 | ERROR xxxxx: 7 | select error 1111 54321 "fake message with numeric SQL state"; 8 | ERROR 54321: fake message with numeric sql state 9 | -------------------------------------------------------------------------------- /plugins/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF(WIN32) 2 | ## make sure we only use the smallest set of 3 | ## headers on win32. Otherwise we get clashes 4 | ## between winsock2.h and winsock.h 5 | ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN) 6 | ENDIF(WIN32) 7 | ADD_SUBDIRECTORY(debug) 8 | ADD_SUBDIRECTORY(proxy) 9 | ADD_SUBDIRECTORY(admin) 10 | ADD_SUBDIRECTORY(replicant) 11 | ## needs readline 12 | # ADD_SUBDIRECTORY(cli) 13 | -------------------------------------------------------------------------------- /.bzrignore: -------------------------------------------------------------------------------- 1 | *.lo 2 | Makefile 3 | Makefile.in 4 | .deps 5 | .libs 6 | *.la 7 | trunk/src/sql-tokenizer.c 8 | trunk/tests/unit/sql-tokenizer.c 9 | ./.cproject 10 | ./.project 11 | ./.settings 12 | ./build 13 | ./aclocal.m4 14 | ./autom4te.cache 15 | ./configure 16 | ./install-sh 17 | ./ylwrap 18 | ./ltmain.sh 19 | ./depcomp 20 | ./config.sub 21 | ./config.guess 22 | ./config.h.in 23 | ./compile 24 | ./missing 25 | -------------------------------------------------------------------------------- /mysql-proxy.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | pkglibdir=@libdir@/mysql-proxy 5 | lualibdir=${pkglibdir}/lua 6 | plugindir=${pkglibdir}/plugins 7 | 8 | Name: MySQL Proxy 9 | Version: @VERSION@ 10 | Description: MySQL Proxy 11 | URL: http://forge.mysql.com/wiki/MySQL_Proxy 12 | Requires: glib-2.0 >= 2.16, mysql-chassis >= @VERSION@ 13 | Libs: -L${libdir} -lmysql-proxy 14 | -------------------------------------------------------------------------------- /plugins/master/Makefile.am: -------------------------------------------------------------------------------- 1 | pkglib_LTLIBRARIES = libmaster.la 2 | libmaster_la_LDFLAGS = -export-dynamic -no-undefined -no-version -dynamic 3 | libmaster_la_SOURCES = master-plugin.c 4 | libmaster_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la 5 | libmaster_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 6 | 7 | # EXTRA_DIST=CMakeLists.txt 8 | 9 | -------------------------------------------------------------------------------- /plugins/admin/Makefile.am: -------------------------------------------------------------------------------- 1 | plugindir = ${pkglibdir}/plugins 2 | 3 | plugin_LTLIBRARIES = libadmin.la 4 | libadmin_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version -dynamic 5 | libadmin_la_SOURCES = admin-plugin.c 6 | libadmin_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la 7 | libadmin_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 8 | 9 | EXTRA_DIST=CMakeLists.txt 10 | 11 | -------------------------------------------------------------------------------- /plugins/cli/Makefile.am: -------------------------------------------------------------------------------- 1 | plugindir = ${pkglibdir}/plugins 2 | 3 | plugin_LTLIBRARIES = libcli.la 4 | libcli_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version -dynamic 5 | libcli_la_SOURCES = cli-plugin.c 6 | libcli_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la -lreadline 7 | libcli_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 8 | 9 | EXTRA_DIST=CMakeLists.txt 10 | 11 | -------------------------------------------------------------------------------- /plugins/debug/Makefile.am: -------------------------------------------------------------------------------- 1 | plugindir = ${pkglibdir}/plugins 2 | 3 | plugin_LTLIBRARIES = libdebug.la 4 | libdebug_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version -dynamic 5 | libdebug_la_SOURCES = debug-plugin.c 6 | libdebug_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la 7 | libdebug_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 8 | 9 | EXTRA_DIST=CMakeLists.txt 10 | 11 | -------------------------------------------------------------------------------- /mysql-chassis.pc.cmake: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=@CMAKE_INSTALL_PREFIX@ 3 | libdir=@CMAKE_INSTALL_PREFIX@/lib 4 | includedir=@CMAKE_INSTALL_PREFIX@/include 5 | 6 | Name: mysql-chassis 7 | Version: @PACKAGE_VERSION_STRING@ 8 | Description: the Chassis of the MySQL Proxy 9 | URL: http://forge.mysql.com/wiki/MySQL_Proxy 10 | Requires: glib-2.0 >= 2.16 11 | Libs: -L${libdir} -lmysql-chassis -lmysql-chassis-timing -lmysql-chassis-glibext 12 | Cflags: -I${includedir} 13 | -------------------------------------------------------------------------------- /mysql-proxy.pc.cmake: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=@CMAKE_INSTALL_PREFIX@ 3 | libdir=@CMAKE_INSTALL_PREFIX@/lib 4 | pkglibdir=${libdir}/mysql-proxy 5 | lualibdir=${pkglibdir}/lua 6 | plugindir=${pkglibdir}/plugins 7 | 8 | Name: MySQL Proxy 9 | Version: @PACKAGE_VERSION_STRING@ 10 | Description: MySQL Proxy 11 | URL: http://forge.mysql.com/wiki/MySQL_Proxy 12 | Requires: glib-2.0 >= 2.16, mysql-chassis >= @PACKAGE_VERSION_STRING@ 13 | Libs: -L${libdir} -lmysql-chassis-proxy 14 | -------------------------------------------------------------------------------- /src/network-debug.h: -------------------------------------------------------------------------------- 1 | #ifndef __NETWORK_DEBUG_H__ 2 | #define __NETWORK_DEBUG_H__ 3 | 4 | /** 5 | * if NETWORK_DEBUG_TRACE_IO is defined, the network layer will log the 6 | * raw MySQL packets as log-level "debug" 7 | * 8 | * #define NETWORK_DEBUG_TRACE_IO 1 9 | */ 10 | 11 | /** 12 | * if NETWORK_DEBUG_TRACE_STATE_CHANGES is defined the state engine for 13 | * the mysql protocol will log all state changes 14 | * 15 | * #define NETWORK_DEBUG_TRACE_STATE_CHANGES 1 16 | */ 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /src/network_mysqld_proto_binary.h: -------------------------------------------------------------------------------- 1 | #ifndef __NETWORK_MYSQLD_PROTO_BINARY_H__ 2 | #define __NETWORK_MYSQLD_PROTO_BINARY_H__ 3 | 4 | #include 5 | 6 | #include "network-socket.h" 7 | #include "network_mysqld_type.h" 8 | 9 | #include "network-exports.h" 10 | 11 | NETWORK_API int network_mysqld_proto_binary_get_type(network_packet *packet, network_mysqld_type_t *type); 12 | NETWORK_API int network_mysqld_proto_binary_append_type(GString *packet, network_mysqld_type_t *type); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /src/chassis_log_error.h: -------------------------------------------------------------------------------- 1 | #ifndef __CHASSIS_LOG_ERROR_H__ 2 | #define __CHASSIS_LOG_ERROR_H__ 3 | 4 | #include 5 | 6 | typedef enum { 7 | CHASSIS_LOG_ERROR_NO_GROUP, 8 | CHASSIS_LOG_ERROR_NO_BACKENDS, 9 | CHASSIS_LOG_ERROR_NO_LOGLEVEL, 10 | CHASSIS_LOG_ERROR_INVALID_LOGLEVEL, 11 | CHASSIS_LOG_ERROR_UNKNOWN_BACKEND, 12 | CHASSIS_LOG_ERROR_CHOWN, 13 | CHASSIS_LOG_ERROR_OPEN, 14 | CHASSIS_LOG_ERROR_CLOSE 15 | } chassis_log_error_t; 16 | 17 | GQuark chassis_log_error(void); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /plugins/proxy/Makefile.am: -------------------------------------------------------------------------------- 1 | plugindir = ${pkglibdir}/plugins 2 | 3 | plugin_LTLIBRARIES = libproxy.la 4 | libproxy_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version -dynamic 5 | libproxy_la_SOURCES = proxy-plugin.c 6 | libproxy_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la 7 | libproxy_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 8 | noinst_HEADERS = proxy-plugin.h 9 | 10 | EXTRA_DIST=CMakeLists.txt 11 | 12 | -------------------------------------------------------------------------------- /plugins/replicant/Makefile.am: -------------------------------------------------------------------------------- 1 | plugindir = ${pkglibdir}/plugins 2 | 3 | plugin_LTLIBRARIES = libreplicant.la 4 | libreplicant_la_LDFLAGS = -export-dynamic -no-undefined -avoid-version -dynamic 5 | libreplicant_la_SOURCES = replicant-plugin.c 6 | libreplicant_la_LIBADD = $(EVENT_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(top_builddir)/src/libmysql-proxy.la 7 | libreplicant_la_CPPFLAGS = $(MYSQL_CFLAGS) $(GLIB_CFLAGS) $(LUA_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)/src/ 8 | 9 | EXTRA_DIST=CMakeLists.txt \ 10 | replicant.lua 11 | 12 | -------------------------------------------------------------------------------- /tests/suite/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ## only run the tests if we have lua somewhere 2 | # 3 | # for now this is unix specific as we use env-vars and shell-scripts 4 | IF(LUA_EXECUTABLE AND UNIX ) 5 | CONFIGURE_FILE( 6 | ${CMAKE_CURRENT_SOURCE_DIR}/lua-tests-wrapper.sh.in 7 | ${CMAKE_CURRENT_BINARY_DIR}/lua-tests-wrapper.sh 8 | @ONLY) 9 | ADD_TEST(lua-tests/base 10 | sh -x ${CMAKE_CURRENT_BINARY_DIR}/lua-tests-wrapper.sh 11 | ${LUA_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run-tests.lua ${CMAKE_CURRENT_SOURCE_DIR}/base) 12 | ENDIF(LUA_EXECUTABLE AND UNIX ) 13 | -------------------------------------------------------------------------------- /examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ## automake uses 2 | ## 3 | ## docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} 4 | ## 5 | ## so do we 6 | INSTALL(FILES 7 | tutorial-basic.lua 8 | tutorial-constants.lua 9 | tutorial-inject.lua 10 | tutorial-keepalive.lua 11 | tutorial-monitor.lua 12 | tutorial-packets.lua 13 | tutorial-query-time.lua 14 | tutorial-resultset.lua 15 | tutorial-rewrite.lua 16 | tutorial-routing.lua 17 | tutorial-states.lua 18 | tutorial-tokenize.lua 19 | tutorial-union.lua 20 | tutorial-warnings.lua 21 | 22 | DESTINATION share/doc/mysql-proxy/ 23 | ) 24 | -------------------------------------------------------------------------------- /doc/Makefile.am: -------------------------------------------------------------------------------- 1 | CHAPTERS=\ 2 | architecture.rst \ 3 | core.rst \ 4 | chassis.rst \ 5 | log-domains.rst \ 6 | plugins.rst \ 7 | protocol.rst \ 8 | testing.rst \ 9 | scripting.rst 10 | 11 | EXTRA_DIST = \ 12 | lua-classes.dot \ 13 | architecture.dot \ 14 | architecture-overview.dot \ 15 | index.rst \ 16 | conf.py \ 17 | ${CHAPTERS} 18 | 19 | clean-local: 20 | rm -f *.html 21 | 22 | html-local: index.html 23 | 24 | index.html: index.rst conf.py $(CHAPTERS) 25 | ${SPHINXBUILD} -b html ${srcdir} ${builddir}/html 26 | 27 | 28 | -------------------------------------------------------------------------------- /plugins/cli/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/) 2 | INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # for config.h 3 | 4 | INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS}) 5 | INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIRS}) 6 | INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}) 7 | INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIRS}) 8 | 9 | LINK_DIRECTORIES(${LUA_LIBRARY_DIRS}) 10 | LINK_DIRECTORIES(${GLIB_LIBRARY_DIRS}) 11 | 12 | SET(_plugin_name cli) 13 | ADD_LIBRARY(${_plugin_name} SHARED "${_plugin_name}-plugin.c") 14 | TARGET_LINK_LIBRARIES(${_plugin_name} mysql-chassis-proxy) 15 | CHASSIS_PLUGIN_INSTALL(${_plugin_name}) 16 | 17 | -------------------------------------------------------------------------------- /plugins/admin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/) 2 | INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # for config.h 3 | 4 | INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS}) 5 | INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIRS}) 6 | INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}) 7 | INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIRS}) 8 | 9 | LINK_DIRECTORIES(${LUA_LIBRARY_DIRS}) 10 | LINK_DIRECTORIES(${GLIB_LIBRARY_DIRS}) 11 | 12 | SET(_plugin_name admin) 13 | ADD_LIBRARY(${_plugin_name} SHARED "${_plugin_name}-plugin.c") 14 | TARGET_LINK_LIBRARIES(${_plugin_name} mysql-chassis-proxy) 15 | CHASSIS_PLUGIN_INSTALL(${_plugin_name}) 16 | 17 | -------------------------------------------------------------------------------- /plugins/debug/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/) 2 | INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # for config.h 3 | 4 | INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS}) 5 | INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIRS}) 6 | INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}) 7 | INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIRS}) 8 | 9 | LINK_DIRECTORIES(${LUA_LIBRARY_DIRS}) 10 | LINK_DIRECTORIES(${GLIB_LIBRARY_DIRS}) 11 | 12 | SET(_plugin_name debug) 13 | ADD_LIBRARY(${_plugin_name} SHARED "${_plugin_name}-plugin.c") 14 | TARGET_LINK_LIBRARIES(${_plugin_name} mysql-chassis-proxy) 15 | CHASSIS_PLUGIN_INSTALL(${_plugin_name}) 16 | 17 | -------------------------------------------------------------------------------- /plugins/proxy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/) 2 | INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # for config.h 3 | 4 | INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS}) 5 | INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIRS}) 6 | INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}) 7 | INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIRS}) 8 | 9 | LINK_DIRECTORIES(${LUA_LIBRARY_DIRS}) 10 | LINK_DIRECTORIES(${GLIB_LIBRARY_DIRS}) 11 | 12 | SET(_plugin_name proxy) 13 | ADD_LIBRARY(${_plugin_name} SHARED "${_plugin_name}-plugin.c") 14 | TARGET_LINK_LIBRARIES(${_plugin_name} mysql-chassis-proxy) 15 | CHASSIS_PLUGIN_INSTALL(${_plugin_name}) 16 | 17 | -------------------------------------------------------------------------------- /cmake/ChassisPlugin.cmake: -------------------------------------------------------------------------------- 1 | # $%BEGINLICENSE%$ 2 | # $%ENDLICENSE%$ 3 | 4 | MACRO(CHASSIS_PLUGIN_INSTALL _plugin_name) 5 | IF(NOT WIN32) 6 | INSTALL(TARGETS ${_plugin_name} 7 | DESTINATION lib/mysql-proxy/plugins) 8 | ELSE(NOT WIN32) 9 | ## on win32 the lua module gets prefixed with lua- and end up in bin/ 10 | INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${CMAKE_SHARED_LIBRARY_PREFIX}${_plugin_name}${CMAKE_SHARED_LIBRARY_SUFFIX} 11 | DESTINATION bin/ 12 | RENAME plugin-${_plugin_name}${CMAKE_SHARED_LIBRARY_SUFFIX} 13 | ) 14 | ENDIF(NOT WIN32) 15 | ENDMACRO(CHASSIS_PLUGIN_INSTALL _plugin_name) 16 | 17 | -------------------------------------------------------------------------------- /plugins/replicant/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/) 2 | INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # for config.h 3 | 4 | INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS}) 5 | INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIRS}) 6 | INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}) 7 | INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIRS}) 8 | 9 | LINK_DIRECTORIES(${LUA_LIBRARY_DIRS}) 10 | LINK_DIRECTORIES(${GLIB_LIBRARY_DIRS}) 11 | 12 | SET(_plugin_name replicant) 13 | ADD_LIBRARY(${_plugin_name} SHARED "${_plugin_name}-plugin.c") 14 | TARGET_LINK_LIBRARIES(${_plugin_name} mysql-chassis-proxy) 15 | CHASSIS_PLUGIN_INSTALL(${_plugin_name}) 16 | 17 | -------------------------------------------------------------------------------- /tests/suite/lua_runner.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | 7 | int main(int argc, char *argv[]) { 8 | lua_State *L; 9 | int i; 10 | 11 | if (argc < 2) return -1; 12 | 13 | L = luaL_newstate(); 14 | luaL_openlibs(L); 15 | 16 | lua_newtable(L); 17 | for (i = 0; i + 1 < argc; i++) { 18 | lua_pushstring(L, argv[i + 1]); 19 | lua_rawseti(L, -2, i); 20 | } 21 | lua_setglobal(L, "arg"); 22 | 23 | if (luaL_dofile(L, argv[1])) { 24 | fprintf(stderr, "%s: %s", argv[0], lua_tostring(L, -1)); 25 | return -1; 26 | } 27 | 28 | 29 | lua_close(L); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /tests/unit/lua/lua_runner.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | 7 | int main(int argc, char *argv[]) { 8 | lua_State *L; 9 | int i; 10 | 11 | if (argc < 2) return -1; 12 | 13 | L = luaL_newstate(); 14 | luaL_openlibs(L); 15 | 16 | lua_newtable(L); 17 | for (i = 0; i + 1 < argc; i++) { 18 | lua_pushstring(L, argv[i + 1]); 19 | lua_rawseti(L, -2, i); 20 | } 21 | lua_setglobal(L, "arg"); 22 | 23 | if (luaL_dofile(L, argv[1])) { 24 | fprintf(stderr, "%s: %s", argv[0], lua_tostring(L, -1)); 25 | return -1; 26 | } 27 | 28 | 29 | lua_close(L); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /doc/index.rst: -------------------------------------------------------------------------------- 1 | .. mysql-proxy documentation master file, created by 2 | sphinx-quickstart on Thu Oct 21 10:14:15 2010. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to mysql-proxy's documentation! 7 | ======================================= 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | architecture 15 | chassis 16 | core 17 | plugins 18 | scripting 19 | log-domains 20 | testing 21 | protocol 22 | 23 | Indices and tables 24 | ================== 25 | 26 | * :ref:`genindex` 27 | * :ref:`modindex` 28 | * :ref:`search` 29 | 30 | -------------------------------------------------------------------------------- /plugins/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS=\ 2 | admin \ 3 | proxy \ 4 | replicant \ 5 | master \ 6 | debug 7 | # the cli plugin needs readline and we don't have it on all platforms 8 | # cli 9 | 10 | EXTRA_DIST=CMakeLists.txt 11 | 12 | check-local: 13 | mkdir -p $(top_builddir)/plugins/; 14 | for plugin in $(SUBDIRS); do \ 15 | for i in `cat $(top_builddir)/plugins/$$plugin/.libs/lib$$plugin.la | grep '^dlname' | sed "s/.*=//;s/'//g"`; do \ 16 | echo $$i; \ 17 | ln -fs $(top_builddir)/plugins/$$plugin/.libs/$$i $(top_builddir)/plugins/$$i; \ 18 | done; \ 19 | done; 20 | 21 | clean-local: 22 | ## remove left-overs from the check-local hack in the plugings 23 | -------------------------------------------------------------------------------- /tests/suite/base/t/change_user.lua: -------------------------------------------------------------------------------- 1 | require("posix") 2 | 3 | function read_query (packet) 4 | -- ack the packets 5 | if packet:byte() ~= proxy.COM_QUERY then 6 | proxy.response = { 7 | type = proxy.MYSQLD_PACKET_OK 8 | } 9 | return proxy.PROXY_SEND_RESULT 10 | end 11 | 12 | local pw = posix.getpwuid( posix.getuid() ) 13 | local user 14 | if pw then 15 | user = pw['name'] 16 | else 17 | user = "nil" 18 | end 19 | 20 | proxy.response.type = proxy.MYSQLD_PACKET_OK 21 | proxy.response.resultset = { 22 | fields = { 23 | { type = proxy.MYSQL_TYPE_STRING, name = "user", }, 24 | }, 25 | rows = { { user } } 26 | } 27 | return proxy.PROXY_SEND_RESULT 28 | end 29 | -------------------------------------------------------------------------------- /examples/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST= 2 | 3 | example_scripts = \ 4 | tutorial-basic.lua \ 5 | tutorial-constants.lua \ 6 | tutorial-inject.lua \ 7 | tutorial-keepalive.lua \ 8 | tutorial-monitor.lua \ 9 | tutorial-packets.lua \ 10 | tutorial-query-time.lua \ 11 | tutorial-prep-stmts.lua \ 12 | tutorial-resultset.lua \ 13 | tutorial-rewrite.lua \ 14 | tutorial-routing.lua \ 15 | tutorial-scramble.lua \ 16 | tutorial-states.lua \ 17 | tutorial-tokenize.lua \ 18 | tutorial-union.lua \ 19 | tutorial-warnings.lua 20 | 21 | if USE_WRAPPER_SCRIPT 22 | dist_doc_DATA = ${example_scripts} 23 | else 24 | EXTRA_DIST += ${example_scripts} 25 | endif 26 | 27 | EXTRA_DIST+=CMakeLists.txt 28 | -------------------------------------------------------------------------------- /tests/suite/base/r/tokens-normalize.result: -------------------------------------------------------------------------------- 1 | select 1; 2 | text 3 | 7 | create table t1 (id int) engine = myisam; 8 | text 9 | 10 | /* comment */select /*! 1 */; 11 | text 12 | 16 | SELECT @i := 1; 17 | text 18 |