Query classifier ignored implicit commits in cases of write commands. Fixed it.
Added more tests for transaction support. Mostly different cases where some command triggers implicit commit in the middle of transaction.
This commit is contained in:
@ -30,7 +30,7 @@ runtests:
|
||||
@echo $(shell date) >> $(TESTLOG)
|
||||
@echo "Test MaxScale R/W Split" >> $(TESTLOG)
|
||||
@echo "-------------------------------" >> $(TESTLOG)
|
||||
./rwsplit.sh $(TESTLOG) $(THOST) $(TPORT_RW) $(TMASTER_ID) $(TUSER) $(TPWD)
|
||||
./rwsplit.sh $(TESTLOG) $(THOST) $(TPORT_RW) $(TMASTER_ID) $(TUSER) $(TPWD)
|
||||
@echo "" >> $(TESTLOG)
|
||||
|
||||
|
||||
|
@ -49,3 +49,67 @@ if [ "$a" != "$TRETVAL" ]; then
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit1.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit2.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit3.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit4.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" != "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when $TRETVAL was expected">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit5.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit6.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
||||
TINPUT=test_implicit_commit7.sql
|
||||
TRETVAL=$TMASTER_ID
|
||||
a=`$RUNCMD < ./$TINPUT`
|
||||
if [ "$a" == "$TRETVAL" ]; then
|
||||
echo "$TINPUT FAILED, return value $a when it was not accetable">>$TLOG;
|
||||
else
|
||||
echo "$TINPUT PASSED">>$TLOG ;
|
||||
fi
|
||||
|
@ -0,0 +1,8 @@
|
||||
DROP DATABASE If EXISTS FOO;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE DATABASE FOO; -- implicit commit
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP DATABASE If EXISTS FOO;
|
||||
COMMIT;
|
@ -0,0 +1,15 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS T1;
|
||||
DROP EVENT IF EXISTS myevent;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE TABLE T1 (id integer);
|
||||
CREATE EVENT myevent
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
|
||||
DO
|
||||
UPDATE t1 SET id = id + 1;
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP TABLE IF EXISTS T1;
|
||||
DROP EVENT IF EXISTS myevent;
|
||||
COMMIT;
|
@ -0,0 +1,9 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS T1;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE TABLE T1 (id integer); -- implicit commit
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP TABLE IF EXISTS T1;
|
||||
COMMIT;
|
@ -0,0 +1,9 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS T1;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE TEMPORARY TABLE T1 (id integer); -- NO implicit commit
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from master
|
||||
DROP TABLE IF EXISTS T1;
|
||||
COMMIT;
|
@ -0,0 +1,14 @@
|
||||
USE test;
|
||||
DROP PROCEDURE IF EXISTS simpleproc;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE simpleproc (OUT param1 INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO param1 FROM t;
|
||||
END //
|
||||
DELIMITER ;
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP PROCEDURE IF EXISTS simpleproc;
|
||||
COMMIT;
|
@ -0,0 +1,11 @@
|
||||
USE test;
|
||||
DROP FUNCTION IF EXISTS hello;
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE FUNCTION hello (s CHAR(20))
|
||||
RETURNS CHAR(50) DETERMINISTIC
|
||||
RETURN CONCAT('Hello, ',s,'!'); -- implicit COMMIT
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP FUNCTION IF EXISTS hello;
|
||||
COMMIT;
|
@ -0,0 +1,10 @@
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS T1;
|
||||
CREATE TABLE T1 (id integer); -- implicit commit
|
||||
SET autocommit=0;
|
||||
BEGIN;
|
||||
CREATE INDEX foo_t1 on T1 (id); -- implicit commit
|
||||
SELECT (@@server_id) INTO @a;
|
||||
SELECT @a; --should read from slave
|
||||
DROP TABLE IF EXISTS T1;
|
||||
COMMIT;
|
Reference in New Issue
Block a user