Added support for multi-statement packets.
This is an intermediate commit to save work. Code is not cleaned and there are debug prints and prototypes to be removed.
At service startup service->rate_limit.last is set back to
USERS_REFRESH_TIME
This allows reloading users’ table as soon as possible
Fixed mysql_users_alloc instead of users_alloc in replace_mysql_users()
and added MYSQL_USER_MAXLEN where missing
Session commands are identified by query clasisfier, and added to the session command property list in router client session object.
Session commands are then executed in existing backend servers but only one of them will reply to client.
Every test/makefile have the following targets:
cleantests - clean local and subdirectories' tests
buildtests - build all local and subdirectories' tests
runtests - run all local tests
testall - clean, build and run local and subdirectories' tests
Tests for directory random_dir are always in its subdirectory, in this case in random_dir/test . If random_dir has subdirectories with tests, random_dir/child_dir, for example, tests of child_dir can be started from random_dir/test/makefile where make -C child_dir/test <test target> is called.
See MAXSCALE_HOME/test/README for further information.
dcb.c:dcb_write accept also dcb state DCB_STATE_NOPOLLING since it only means that dcb has been removed from epoll set but it is still possible to write to it.
Bug #384http://bugs.skysql.com/show_bug.cgi?id=384
session.h:added new state for SESSION, SESSION_STATE_ROUTER_READY which follows SESSION_STATE_READY. The difference is that ROUTER_READY is set only after router session is successfully created while READY means that session still lacks router.
session.c:set SESSION_STATE_ROUTER_READY when router is created.
mysql_backend.c:gw_read_backend_event, added SESSION_STATE_ROUTER_READY check before router session is closed. Changed chec kso that it doesn't block in infinite loop (although it shouldn't be possible anyway).
mysql_backend.c:gw_error_backend_event, added similar check before session is closed.
If backend authentication fails, wait until session has created router_client_session before reading the session->router_session pointer value. There should only be one case where this situation occurs : when session is being initialized concurrently with authentication. Only consequence is to close router_client_session immediately after session initialization is completed.
With the routines for key/value copy and free it is possible to
duplicate or free different data types in the hash tables.
The user_alloc() routine is the first example.