From c94123ab3ab87c78483c134f6fd3fbe6e3df05c4 Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Fri, 17 Feb 2023 17:06:20 +0900 Subject: [PATCH] Test: fix 001.loadbalance test failure. Since this commit: https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=f8c3d7b49a1c6496eca2203e95248b86c204bbfa 001.loadbalance test fails on pre PostgreSQL 15, because of the change in psql. PostgreSQL 15's psql now prints the whole query results in a multi-statement query. Consider following example: SELECT \BEGIN\;SELECT 1;ROLLBACK; In 15, the result of SELECT will be printed by psql, while pre-15 will not. This causes some test results not to match with expected results. To fix this, I added expected7-r-pre15 etc. for pre-15. test.sh now recognizes "-pre15" suffix. If the server version is pre-15 and an expected file with suffix "pre-15" exists, the file will be used. --- .../expected/expected7-r-pre15 | 94 +++++++++++++++++++ .../expected/expected7-s-pre15 | 83 ++++++++++++++++ .../expected/expected8-s-pre15 | 83 ++++++++++++++++ .../regression/tests/001.load_balance/test.sh | 16 +++- 4 files changed, 274 insertions(+), 2 deletions(-) create mode 100644 src/test/regression/tests/001.load_balance/expected/expected7-r-pre15 create mode 100644 src/test/regression/tests/001.load_balance/expected/expected7-s-pre15 create mode 100644 src/test/regression/tests/001.load_balance/expected/expected8-s-pre15 diff --git a/src/test/regression/tests/001.load_balance/expected/expected7-r-pre15 b/src/test/regression/tests/001.load_balance/expected/expected7-r-pre15 new file mode 100644 index 000000000..bf28fb19d --- /dev/null +++ b/src/test/regression/tests/001.load_balance/expected/expected7-r-pre15 @@ -0,0 +1,94 @@ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- ordinary read only SELECT: load balance expected +SELECT 2; +NOTICE: DB node id: 1 statement: SELECT 2; + ?column? +---------- + 2 +(1 row) + +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 1 statement: END; +NOTICE: DB node id: 0 statement: END; +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- SAVEPOINT +SAVEPOINT a; +NOTICE: DB node id: 0 statement: SAVEPOINT a; +NOTICE: DB node id: 1 statement: SAVEPOINT a; +-- PREPARE +PREPARE foo AS SELECT 2; +NOTICE: DB node id: 0 statement: PREPARE foo AS SELECT 2; +NOTICE: DB node id: 1 statement: PREPARE foo AS SELECT 2; +-- EXECUTE +EXECUTE foo; +NOTICE: DB node id: 0 statement: EXECUTE foo; +NOTICE: DB node id: 1 statement: EXECUTE foo; + ?column? +---------- + 2 +(1 row) + +-- DEALLOCATE +DEALLOCATE foo; +NOTICE: DB node id: 0 statement: DEALLOCATE foo; +NOTICE: DB node id: 1 statement: DEALLOCATE foo; +-- ROLLBACK TO +ROLLBACK TO a; +NOTICE: DB node id: 1 statement: ROLLBACK TO a; +NOTICE: DB node id: 0 statement: ROLLBACK TO a; +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 1 statement: END; +NOTICE: DB node id: 0 statement: END; +-- multi-statement query including BEGIN and ROLLBACK +BEGIN\;SELECT 1\;ROLLBACK; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1;ROLLBACK; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1;ROLLBACK; +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN and invalid query +BEGIN\;SELECT 1\;FOO; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1;FOO; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1;FOO; +ERROR: syntax error at or near "FOO" +LINE 1: BEGIN;SELECT 1;FOO; + ^ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + diff --git a/src/test/regression/tests/001.load_balance/expected/expected7-s-pre15 b/src/test/regression/tests/001.load_balance/expected/expected7-s-pre15 new file mode 100644 index 000000000..66f47f9d1 --- /dev/null +++ b/src/test/regression/tests/001.load_balance/expected/expected7-s-pre15 @@ -0,0 +1,83 @@ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- ordinary read only SELECT: load balance expected +SELECT 2; +NOTICE: DB node id: 1 statement: SELECT 2; + ?column? +---------- + 2 +(1 row) + +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 0 statement: END; +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- SAVEPOINT +SAVEPOINT a; +NOTICE: DB node id: 0 statement: SAVEPOINT a; +-- PREPARE +PREPARE foo AS SELECT 2; +NOTICE: DB node id: 0 statement: PREPARE foo AS SELECT 2; +-- EXECUTE +EXECUTE foo; +NOTICE: DB node id: 0 statement: EXECUTE foo; + ?column? +---------- + 2 +(1 row) + +-- DEALLOCATE +DEALLOCATE foo; +NOTICE: DB node id: 0 statement: DEALLOCATE foo; +-- ROLLBACK TO +ROLLBACK TO a; +NOTICE: DB node id: 0 statement: ROLLBACK TO a; +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 0 statement: END; +-- multi-statement query including BEGIN and ROLLBACK +BEGIN\;SELECT 1\;ROLLBACK; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1;ROLLBACK; +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN and invalid query +BEGIN\;SELECT 1\;FOO; +NOTICE: DB node id: 0 statement: BEGIN;SELECT 1;FOO; +ERROR: syntax error at or near "FOO" +LINE 1: BEGIN;SELECT 1;FOO; + ^ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 1 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + diff --git a/src/test/regression/tests/001.load_balance/expected/expected8-s-pre15 b/src/test/regression/tests/001.load_balance/expected/expected8-s-pre15 new file mode 100644 index 000000000..d128cf8f1 --- /dev/null +++ b/src/test/regression/tests/001.load_balance/expected/expected8-s-pre15 @@ -0,0 +1,83 @@ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 0 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- ordinary read only SELECT: load balance expected +SELECT 2; +NOTICE: DB node id: 0 statement: SELECT 2; + ?column? +---------- + 2 +(1 row) + +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 1 statement: END; +-- multi-statement query including BEGIN +BEGIN\;SELECT 1; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- SAVEPOINT +SAVEPOINT a; +NOTICE: DB node id: 1 statement: SAVEPOINT a; +-- PREPARE +PREPARE foo AS SELECT 2; +NOTICE: DB node id: 1 statement: PREPARE foo AS SELECT 2; +-- EXECUTE +EXECUTE foo; +NOTICE: DB node id: 1 statement: EXECUTE foo; + ?column? +---------- + 2 +(1 row) + +-- DEALLOCATE +DEALLOCATE foo; +NOTICE: DB node id: 1 statement: DEALLOCATE foo; +-- ROLLBACK TO +ROLLBACK TO a; +NOTICE: DB node id: 1 statement: ROLLBACK TO a; +-- tx started by multi-statement query ends +END; +NOTICE: DB node id: 1 statement: END; +-- multi-statement query including BEGIN and ROLLBACK +BEGIN\;SELECT 1\;ROLLBACK; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1;ROLLBACK; +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 0 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + +-- multi-statement query including BEGIN and invalid query +BEGIN\;SELECT 1\;FOO; +NOTICE: DB node id: 1 statement: BEGIN;SELECT 1;FOO; +ERROR: syntax error at or near "FOO" +LINE 1: BEGIN;SELECT 1;FOO; + ^ +-- ordinary read only SELECT: load balance expected +SELECT 1; +NOTICE: DB node id: 0 statement: SELECT 1; + ?column? +---------- + 1 +(1 row) + diff --git a/src/test/regression/tests/001.load_balance/test.sh b/src/test/regression/tests/001.load_balance/test.sh index 29b0a5c05..6f1e334d0 100755 --- a/src/test/regression/tests/001.load_balance/test.sh +++ b/src/test/regression/tests/001.load_balance/test.sh @@ -12,11 +12,23 @@ export PGDATABASE=test # sleep time after reload in seconds st=10 +# Get psql version +PSQLVERSION=`$PSQL --version|awk '{print $3}'|sed 's/\..*//'` + # function to check the result # argument is test case number. function check_result { - diff -c ../expected/expected$1$suffix result$1 + if [ $PSQLVERSION -lt 15 ];then + expected=../expected/expected$1$suffix-pre15 + if [ -f $expected ];then + diff -c $expected result$1 + else + diff -c ../expected/expected$1$suffix result$1 + fi + else + diff -c ../expected/expected$1$suffix result$1 + fi if [ $? = 0 ];then echo "test$1 succeeded." else @@ -181,7 +193,7 @@ EOF SELECT f1(1); SELECT public.f2(1); EOF - check_result 6 + check_result 6 $PSQLVERSION echo "=== test7 started ===" # ------------------------------------------------------------------------------- -- 2.39.5