diff --git a/.circleci/config.yml b/.circleci/config.yml index 4905dfbc5..e5710fc4b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -298,7 +298,7 @@ jobs: find src/test/regress/tmp_citus_test/ -name "regression*.diffs" -exec cat {} + lines=$(find src/test/regress/tmp_citus_test/ -name "regression*.diffs" | wc -l) if [ $lines -ne 0 ]; then - exit 1 + exit 1 fi when: on_fail diff --git a/Makefile b/Makefile index 12b26cbbe..82a0b3b9b 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ extension_dir = $(shell $(PG_CONFIG) --sharedir)/extension # Hint that configure should be run first ifeq (,$(wildcard Makefile.global)) - $(error ./configure needs to be run before compiling Citus) + $(error ./configure needs to be run before compiling Citus) endif include Makefile.global diff --git a/Makefile.global.in b/Makefile.global.in index b3d2a7782..eb7f973fb 100644 --- a/Makefile.global.in +++ b/Makefile.global.in @@ -73,7 +73,7 @@ $(citus_abs_top_srcdir)/configure: $(citus_abs_top_srcdir)/configure.ac # be able to use a different one, especially when building against # distribution packages. ifneq (@CC@,) - override CC=@CC@ + override CC=@CC@ endif # If detected by our configure script, override the FLEX postgres @@ -81,14 +81,14 @@ endif # built without flex available (possible because generated files are # included) ifneq (@FLEX@,) - override FLEX=@FLEX@ + override FLEX=@FLEX@ endif # Add options passed to configure or computed therein, to CFLAGS/CPPFLAGS/... override CFLAGS += @CFLAGS@ @CITUS_CFLAGS@ override BITCODE_CFLAGS := $(BITCODE_CFLAGS) @CITUS_BITCODE_CFLAGS@ ifneq ($(GIT_VERSION),) - override CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" + override CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" endif override CPPFLAGS := @CPPFLAGS@ @CITUS_CPPFLAGS@ -I '${citus_abs_top_srcdir}/src/include' -I'${citus_top_builddir}/src/include' $(CPPFLAGS) override LDFLAGS += @LDFLAGS@ @CITUS_LDFLAGS@ diff --git a/cgmanifest.json b/cgmanifest.json index 9da9ae49a..25e026f70 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -20,9 +20,9 @@ }, "license": "PostgreSQL", "licenseDetail": [ - "Portions Copyright (c) 1996-2010, The PostgreSQL Global Development Group", - "", - "Portions Copyright (c) 1994, The Regents of the University of California", + "Portions Copyright (c) 1996-2010, The PostgreSQL Global Development Group", + "", + "Portions Copyright (c) 1994, The Regents of the University of California", "", "Permission to use, copy, modify, and distribute this software and its documentation for ", "any purpose, without fee, and without a written agreement is hereby granted, provided ", diff --git a/ci/build-citus.sh b/ci/build-citus.sh index 49f92e691..2e4bdc397 100755 --- a/ci/build-citus.sh +++ b/ci/build-citus.sh @@ -25,23 +25,23 @@ basedir="$(pwd)" rm -rf "${basedir}/.git" build_ext() { - pg_major="$1" + pg_major="$1" - builddir="${basedir}/build-${pg_major}" - echo "Beginning build of ${project} for PostgreSQL ${pg_major}..." >&2 + builddir="${basedir}/build-${pg_major}" + echo "Beginning build of ${project} for PostgreSQL ${pg_major}..." >&2 - # do everything in a subdirectory to avoid clutter in current directory - mkdir -p "${builddir}" && cd "${builddir}" + # do everything in a subdirectory to avoid clutter in current directory + mkdir -p "${builddir}" && cd "${builddir}" - CFLAGS=-Werror "${basedir}/configure" PG_CONFIG="/usr/lib/postgresql/${pg_major}/bin/pg_config" --enable-coverage --with-security-flags + CFLAGS=-Werror "${basedir}/configure" PG_CONFIG="/usr/lib/postgresql/${pg_major}/bin/pg_config" --enable-coverage --with-security-flags - installdir="${builddir}/install" - make -j$(nproc) && mkdir -p "${installdir}" && { make DESTDIR="${installdir}" install-all || make DESTDIR="${installdir}" install ; } + installdir="${builddir}/install" + make -j$(nproc) && mkdir -p "${installdir}" && { make DESTDIR="${installdir}" install-all || make DESTDIR="${installdir}" install ; } - cd "${installdir}" && find . -type f -print > "${builddir}/files.lst" - tar cvf "${basedir}/install-${pg_major}.tar" `cat ${builddir}/files.lst` + cd "${installdir}" && find . -type f -print > "${builddir}/files.lst" + tar cvf "${basedir}/install-${pg_major}.tar" `cat ${builddir}/files.lst` - cd "${builddir}" && rm -rf install files.lst && make clean + cd "${builddir}" && rm -rf install files.lst && make clean } build_ext "${PG_MAJOR}" diff --git a/ci/ci_helpers.sh b/ci/ci_helpers.sh index 9c0ab7a88..9a0a9f373 100644 --- a/ci/ci_helpers.sh +++ b/ci/ci_helpers.sh @@ -13,7 +13,7 @@ echo_and_restore() { builtin echo "$*" #shellcheck disable=SC2154 case "$save_flags" in - (*x*) set -x + (*x*) set -x esac } @@ -29,4 +29,3 @@ hint_on_fail() { exit $exit_code } trap hint_on_fail EXIT - diff --git a/ci/normalize_expected.sh b/ci/normalize_expected.sh index 0ff7f9c1c..d21356650 100755 --- a/ci/normalize_expected.sh +++ b/ci/normalize_expected.sh @@ -5,6 +5,6 @@ set -euo pipefail source ci/ci_helpers.sh for f in $(git ls-tree -r HEAD --name-only src/test/regress/expected/*.out); do - sed -Ef src/test/regress/bin/normalize.sed < "$f" > "$f.modified" - mv "$f.modified" "$f" + sed -Ef src/test/regress/bin/normalize.sed < "$f" > "$f.modified" + mv "$f.modified" "$f" done diff --git a/config/general.m4 b/config/general.m4 index f8fd48297..725a46512 100644 --- a/config/general.m4 +++ b/config/general.m4 @@ -16,7 +16,7 @@ # Convert type and name to shell variable name (e.g., "enable_long_strings") m4_define([pgac_arg_to_variable], - [$1[]_[]patsubst($2, -, _)]) + [$1[]_[]patsubst($2, -, _)]) # PGAC_ARG(TYPE, NAME, HELP-STRING-LHS-EXTRA, HELP-STRING-RHS, @@ -39,34 +39,34 @@ m4_case([$1], enable, [ AC_ARG_ENABLE([$2], [AS_HELP_STRING([--]m4_if($3, -, disable, enable)[-$2]m4_if($3, -, , $3), [$4])], [ - case [$]enableval in - yes) - m4_default([$5], :) - ;; - no) - m4_default([$6], :) - ;; - *) - $7 - ;; - esac + case [$]enableval in + yes) + m4_default([$5], :) + ;; + no) + m4_default([$6], :) + ;; + *) + $7 + ;; + esac ], [$8])[]dnl AC_ARG_ENABLE ], with, [ AC_ARG_WITH([$2], [AS_HELP_STRING([--]m4_if($3, -, without, with)[-$2]m4_if($3, -, , $3), [$4])], [ - case [$]withval in - yes) - m4_default([$5], :) - ;; - no) - m4_default([$6], :) - ;; - *) - $7 - ;; - esac + case [$]withval in + yes) + m4_default([$5], :) + ;; + no) + m4_default([$6], :) + ;; + *) + $7 + ;; + esac ], [$8])[]dnl AC_ARG_WITH ], @@ -93,13 +93,13 @@ dnl that by making the help string look the same, which is why we need to dnl save the default that was passed in previously. m4_define([_pgac_helpdefault], m4_ifdef([pgac_defined_$1_$2_bool], [m4_defn([pgac_defined_$1_$2_bool])], [$3]))dnl PGAC_ARG([$1], [$2], [m4_if(_pgac_helpdefault, yes, -)], [$4], [$5], [$6], - [AC_MSG_ERROR([no argument expected for --$1-$2 option])], - [m4_case([$3], - yes, [pgac_arg_to_variable([$1], [$2])=yes + [AC_MSG_ERROR([no argument expected for --$1-$2 option])], + [m4_case([$3], + yes, [pgac_arg_to_variable([$1], [$2])=yes $5], - no, [pgac_arg_to_variable([$1], [$2])=no + no, [pgac_arg_to_variable([$1], [$2])=no $6], - [m4_fatal([third argument of $0 must be 'yes' or 'no', not '$3'])])])[]dnl + [m4_fatal([third argument of $0 must be 'yes' or 'no', not '$3'])])])[]dnl m4_define([pgac_defined_$1_$2_bool], [$3])dnl ])# PGAC_ARG_BOOL @@ -112,10 +112,10 @@ m4_define([pgac_defined_$1_$2_bool], [$3])dnl AC_DEFUN([PGAC_ARG_REQ], [PGAC_ARG([$1], [$2], [=$3], [$4], - [AC_MSG_ERROR([argument required for --$1-$2 option])], - [AC_MSG_ERROR([argument required for --$1-$2 option])], - [$5], - [$6])])# PGAC_ARG_REQ + [AC_MSG_ERROR([argument required for --$1-$2 option])], + [AC_MSG_ERROR([argument required for --$1-$2 option])], + [$5], + [$6])])# PGAC_ARG_REQ # PGAC_ARG_OPTARG(TYPE, NAME, HELP-ARGNAME, HELP-STRING-RHS, @@ -134,17 +134,17 @@ AC_DEFUN([PGAC_ARG_REQ], AC_DEFUN([PGAC_ARG_OPTARG], [PGAC_ARG([$1], [$2], [@<:@=$3@:>@], [$4], [$5], [], - [pgac_arg_to_variable([$1], [$2])=yes + [pgac_arg_to_variable([$1], [$2])=yes $6], - [pgac_arg_to_variable([$1], [$2])=no]) + [pgac_arg_to_variable([$1], [$2])=no]) dnl Add this code only if there's a ACTION-ENABLED or ACTION-DISABLED. m4_ifval([$7[]$8], [ if test "[$]pgac_arg_to_variable([$1], [$2])" = yes; then - m4_default([$7], :) + m4_default([$7], :) m4_ifval([$8], [else - $8 + $8 ])[]dnl fi ])[]dnl diff --git a/prep_buildtree b/prep_buildtree index f39f36c90..9675f8c85 100644 --- a/prep_buildtree +++ b/prep_buildtree @@ -11,11 +11,11 @@ help="\ Usage: $me sourcetree [buildtree]" if test -z "$1"; then - echo "$help" 1>&2 - exit 1 + echo "$help" 1>&2 + exit 1 elif test x"$1" = x"--help"; then - echo "$help" - exit 0 + echo "$help" + exit 0 fi unset CDPATH @@ -29,19 +29,19 @@ buildtree=`cd ${2:-'.'} && pwd` # the source tree, if a VPATH build is done from a distribution tarball. # See bug #5595. for item in `find "$sourcetree" -type d \( \( -name CVS -prune \) -o \( -name .git -prune \) -o -print \) | grep -v "$sourcetree/doc/src/sgml/\+"`; do - subdir=`expr "$item" : "$sourcetree\(.*\)"` - if test ! -d "$buildtree/$subdir"; then - mkdir -p "$buildtree/$subdir" || exit 1 - fi + subdir=`expr "$item" : "$sourcetree\(.*\)"` + if test ! -d "$buildtree/$subdir"; then + mkdir -p "$buildtree/$subdir" || exit 1 + fi done for item in `find "$sourcetree" -not -path '*/.git/hg/*' \( -name Makefile -print -o -name GNUmakefile -print \)`; do - filename=`expr "$item" : "$sourcetree\(.*\)"` - if test ! -f "${item}.in"; then - if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ; else - ln -fs "$item" "$buildtree/$filename" || exit 1 - fi - fi + filename=`expr "$item" : "$sourcetree\(.*\)"` + if test ! -f "${item}.in"; then + if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ; else + ln -fs "$item" "$buildtree/$filename" || exit 1 + fi + fi done exit 0 diff --git a/src/backend/.gitignore b/src/backend/.gitignore index e69de29bb..8b1378917 100644 --- a/src/backend/.gitignore +++ b/src/backend/.gitignore @@ -0,0 +1 @@ + diff --git a/src/backend/columnar/.gitattributes b/src/backend/columnar/.gitattributes index b8e13a2ad..af2bd4d52 100644 --- a/src/backend/columnar/.gitattributes +++ b/src/backend/columnar/.gitattributes @@ -22,4 +22,3 @@ configure -whitespace # all C files (implementation and header) use our style... *.[ch] citus-style - diff --git a/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql b/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql index f7d318ae9..76c2dba57 100644 --- a/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql +++ b/src/backend/columnar/sql/citus_columnar--11.1-0--11.1-1.sql @@ -28,5 +28,3 @@ ALTER EXTENSION citus_columnar ADD VIEW columnar.chunk; ALTER FUNCTION citus_internal.upgrade_columnar_storage(regclass) SET SCHEMA columnar_internal; ALTER FUNCTION citus_internal.downgrade_columnar_storage(regclass) SET SCHEMA columnar_internal; ALTER FUNCTION citus_internal.columnar_ensure_am_depends_catalog() SET SCHEMA columnar_internal; - - diff --git a/src/backend/distributed/Makefile b/src/backend/distributed/Makefile index a51c2a1f5..1a24bd3bf 100644 --- a/src/backend/distributed/Makefile +++ b/src/backend/distributed/Makefile @@ -45,7 +45,7 @@ include $(citus_top_builddir)/Makefile.global CITUS_VERSION_INVALIDATE := $(filter-out utils/citus_version.o,$(OBJS)) CITUS_VERSION_INVALIDATE += $(generated_sql_files) ifneq ($(wildcard $(citus_top_builddir)/.git/.*),) - CITUS_VERSION_INVALIDATE += $(citus_top_builddir)/.git/index + CITUS_VERSION_INVALIDATE += $(citus_top_builddir)/.git/index endif utils/citus_version.o: $(CITUS_VERSION_INVALIDATE) diff --git a/src/test/columnar_freezing/Makefile b/src/test/columnar_freezing/Makefile index cd364cdbc..f7d6254f4 100644 --- a/src/test/columnar_freezing/Makefile +++ b/src/test/columnar_freezing/Makefile @@ -26,7 +26,7 @@ ifeq ($(pg_major_version),13) else ifeq ($(pg_major_version),14) test_path = t_pg13_pg14/*.pl else - test_path = t/*.pl + test_path = t/*.pl endif # copied from pgxs/Makefile.global to use postgres' abs build dir for pg_regress diff --git a/src/test/columnar_freezing/postgresql.conf b/src/test/columnar_freezing/postgresql.conf index 39521cc33..f3a7fc982 100644 --- a/src/test/columnar_freezing/postgresql.conf +++ b/src/test/columnar_freezing/postgresql.conf @@ -4,4 +4,3 @@ vacuum_freeze_min_age = 50000 vacuum_freeze_table_age = 50000 synchronous_commit = off fsync = off - diff --git a/src/test/columnar_freezing/t/001_columnar_freezing.pl b/src/test/columnar_freezing/t/001_columnar_freezing.pl index 01e8346cf..0ab5cf011 100644 --- a/src/test/columnar_freezing/t/001_columnar_freezing.pl +++ b/src/test/columnar_freezing/t/001_columnar_freezing.pl @@ -24,17 +24,17 @@ INSERT INTO test_columnar_freeze VALUES (1); my $ten_thousand_updates = ""; foreach (1..10000) { - $ten_thousand_updates .= "UPDATE test_row SET i = i + 1;\n"; + $ten_thousand_updates .= "UPDATE test_row SET i = i + 1;\n"; } # 70K updates foreach (1..7) { - $node_one->safe_psql('postgres', $ten_thousand_updates); + $node_one->safe_psql('postgres', $ten_thousand_updates); } my $result = $node_one->safe_psql('postgres', " select age(relfrozenxid) < 70000 as was_frozen - from pg_class where relname='test_columnar_freeze'; + from pg_class where relname='test_columnar_freeze'; "); print "node one count: $result\n"; is($result, qq(f), 'columnar table was not frozen'); @@ -43,10 +43,9 @@ $node_one->safe_psql('postgres', 'VACUUM FREEZE test_columnar_freeze;'); $result = $node_one->safe_psql('postgres', " select age(relfrozenxid) < 70000 as was_frozen - from pg_class where relname='test_columnar_freeze'; + from pg_class where relname='test_columnar_freeze'; "); print "node one count: $result\n"; is($result, qq(t), 'columnar table was frozen'); $node_one->stop('fast'); - diff --git a/src/test/columnar_freezing/t_pg13_pg14/001_columnar_freezing_pg13_pg14.pl b/src/test/columnar_freezing/t_pg13_pg14/001_columnar_freezing_pg13_pg14.pl index 1985da2a5..a51670f2a 100644 --- a/src/test/columnar_freezing/t_pg13_pg14/001_columnar_freezing_pg13_pg14.pl +++ b/src/test/columnar_freezing/t_pg13_pg14/001_columnar_freezing_pg13_pg14.pl @@ -24,17 +24,17 @@ INSERT INTO test_columnar_freeze VALUES (1); my $ten_thousand_updates = ""; foreach (1..10000) { - $ten_thousand_updates .= "UPDATE test_row SET i = i + 1;\n"; + $ten_thousand_updates .= "UPDATE test_row SET i = i + 1;\n"; } # 70K updates foreach (1..7) { - $node_one->safe_psql('postgres', $ten_thousand_updates); + $node_one->safe_psql('postgres', $ten_thousand_updates); } my $result = $node_one->safe_psql('postgres', " select age(relfrozenxid) < 70000 as was_frozen - from pg_class where relname='test_columnar_freeze'; + from pg_class where relname='test_columnar_freeze'; "); print "node one count: $result\n"; is($result, qq(f), 'columnar table was not frozen'); @@ -43,10 +43,9 @@ $node_one->safe_psql('postgres', 'VACUUM FREEZE test_columnar_freeze;'); $result = $node_one->safe_psql('postgres', " select age(relfrozenxid) < 70000 as was_frozen - from pg_class where relname='test_columnar_freeze'; + from pg_class where relname='test_columnar_freeze'; "); print "node one count: $result\n"; is($result, qq(t), 'columnar table was frozen'); $node_one->stop('fast'); - diff --git a/src/test/hammerdb/run_hammerdb.sh b/src/test/hammerdb/run_hammerdb.sh index 02464542b..f8c794bd9 100644 --- a/src/test/hammerdb/run_hammerdb.sh +++ b/src/test/hammerdb/run_hammerdb.sh @@ -67,5 +67,3 @@ fi # create cluster and run the hammerd benchmark ./create-run.sh - - diff --git a/src/test/recovery/Makefile b/src/test/recovery/Makefile index 03e18fa0c..44f066db6 100644 --- a/src/test/recovery/Makefile +++ b/src/test/recovery/Makefile @@ -28,7 +28,7 @@ ifeq ($(pg_major_version),13) else ifeq ($(pg_major_version),14) test_path = t_pg13_pg14/*.pl else - test_path = t/*.pl + test_path = t/*.pl endif # copied from pgxs/Makefile.global to use postgres' abs build dir for pg_regress diff --git a/src/test/regress/Makefile b/src/test/regress/Makefile index 368f8f8c5..8a9efa0da 100644 --- a/src/test/regress/Makefile +++ b/src/test/regress/Makefile @@ -292,4 +292,3 @@ clean distclean maintainer-clean: rm -rf input/ output/ rm -rf tmp_check/ rm -rf tmp_citus_test/ - diff --git a/src/test/regress/bin/diff b/src/test/regress/bin/diff index a0b40f328..0e3249645 100755 --- a/src/test/regress/bin/diff +++ b/src/test/regress/bin/diff @@ -51,4 +51,3 @@ then else exec "$DIFF" -w $args "$file1" "$file2" fi - diff --git a/src/test/regress/bin/normalize.sed b/src/test/regress/bin/normalize.sed index df343a077..fbda35ce7 100644 --- a/src/test/regress/bin/normalize.sed +++ b/src/test/regress/bin/normalize.sed @@ -214,9 +214,9 @@ s/^(ERROR: child table is missing constraint "\w+)_([0-9])+"/\1_xxxxxx"/g # session. Sometimes happens that deadlock detector cancels the session before # lock detection, so we normalize it by removing these two lines. /^ $/ { - N; /\nstep s1-update-2: <... completed>$/ { - s/.*//g - } + N; /\nstep s1-update-2: <... completed>$/ { + s/.*//g + } } # normalize long table shard name errors for alter_table_set_access_method and alter_distributed_table diff --git a/src/test/regress/citus_tests/__init__.py b/src/test/regress/citus_tests/__init__.py index e69de29bb..8b1378917 100644 --- a/src/test/regress/citus_tests/__init__.py +++ b/src/test/regress/citus_tests/__init__.py @@ -0,0 +1 @@ + diff --git a/src/test/regress/citus_tests/arbitrary_configs/__init__.py b/src/test/regress/citus_tests/arbitrary_configs/__init__.py index e69de29bb..8b1378917 100644 --- a/src/test/regress/citus_tests/arbitrary_configs/__init__.py +++ b/src/test/regress/citus_tests/arbitrary_configs/__init__.py @@ -0,0 +1 @@ + diff --git a/src/test/regress/citus_tests/config.py b/src/test/regress/citus_tests/config.py index 856b7d74d..35b569b9b 100644 --- a/src/test/regress/citus_tests/config.py +++ b/src/test/regress/citus_tests/config.py @@ -229,7 +229,7 @@ class CitusSmallSharedPoolSizeConfig(CitusDefaultClusterConfig): def __init__(self, arguments): super().__init__(arguments) self.new_settings = { - "citus.local_shared_pool_size": 5, + "citus.local_shared_pool_size": 5, "citus.max_shared_pool_size": 5, } @@ -308,7 +308,7 @@ class CitusUnusualQuerySettingsConfig(CitusDefaultClusterConfig): # As of c11, there is no way to do that through remote execution so this test # will fail "arbitrary_configs_truncate_cascade_create", "arbitrary_configs_truncate_cascade", - # Alter Table statement cannot be run from an arbitrary node so this test will fail + # Alter Table statement cannot be run from an arbitrary node so this test will fail "arbitrary_configs_alter_table_add_constraint_without_name_create", "arbitrary_configs_alter_table_add_constraint_without_name"] class CitusSingleNodeSingleShardClusterConfig(CitusDefaultClusterConfig): @@ -335,7 +335,7 @@ class CitusShardReplicationFactorClusterConfig(CitusDefaultClusterConfig): # citus does not support colocating functions with distributed tables when # citus.shard_replication_factor >= 2 "function_create", "functions", - # Alter Table statement cannot be run from an arbitrary node so this test will fail + # Alter Table statement cannot be run from an arbitrary node so this test will fail "arbitrary_configs_alter_table_add_constraint_without_name_create", "arbitrary_configs_alter_table_add_constraint_without_name"] diff --git a/src/test/regress/citus_tests/upgrade/__init__.py b/src/test/regress/citus_tests/upgrade/__init__.py index e69de29bb..8b1378917 100644 --- a/src/test/regress/citus_tests/upgrade/__init__.py +++ b/src/test/regress/citus_tests/upgrade/__init__.py @@ -0,0 +1 @@ + diff --git a/src/test/regress/pg_regress_multi.pl b/src/test/regress/pg_regress_multi.pl index 119e6a758..b9d1b9e1b 100755 --- a/src/test/regress/pg_regress_multi.pl +++ b/src/test/regress/pg_regress_multi.pl @@ -28,28 +28,28 @@ my $regressdir = (File::Spec->splitpath(__FILE__))[1]; sub Usage() { - print "pg_regress_multi - Citus test runner\n"; - print "\n"; - print "Usage:\n"; - print " pg_regress_multi [MULTI OPTIONS] -- [PG REGRESS OPTS]\n"; - print "\n"; - print "Multi Options:\n"; - print " --isolationtester Run isolationtester tests instead of plain tests\n"; - print " --vanillatest Run postgres tests with citus loaded as shared preload library\n"; - print " --bindir Path to postgres binary directory\n"; - print " --libdir Path to postgres library directory\n"; - print " --postgres-builddir Path to postgres build directory\n"; - print " --postgres-srcdir Path to postgres build directory\n"; - print " --pgxsdir Path to the PGXS directory\n"; - print " --load-extension Extensions to install in all nodes\n"; - print " --server-option Config option to pass to the server\n"; - print " --valgrind Run server via valgrind\n"; - print " --valgrind-path Path to the valgrind executable\n"; - print " --valgrind-log-file Path to the write valgrind logs\n"; - print " --pg_ctl-timeout Timeout for pg_ctl\n"; - print " --connection-timeout Timeout for connecting to worker nodes\n"; - print " --mitmproxy Start a mitmproxy for one of the workers\n"; - exit 1; + print "pg_regress_multi - Citus test runner\n"; + print "\n"; + print "Usage:\n"; + print " pg_regress_multi [MULTI OPTIONS] -- [PG REGRESS OPTS]\n"; + print "\n"; + print "Multi Options:\n"; + print " --isolationtester Run isolationtester tests instead of plain tests\n"; + print " --vanillatest Run postgres tests with citus loaded as shared preload library\n"; + print " --bindir Path to postgres binary directory\n"; + print " --libdir Path to postgres library directory\n"; + print " --postgres-builddir Path to postgres build directory\n"; + print " --postgres-srcdir Path to postgres build directory\n"; + print " --pgxsdir Path to the PGXS directory\n"; + print " --load-extension Extensions to install in all nodes\n"; + print " --server-option Config option to pass to the server\n"; + print " --valgrind Run server via valgrind\n"; + print " --valgrind-path Path to the valgrind executable\n"; + print " --valgrind-log-file Path to the write valgrind logs\n"; + print " --pg_ctl-timeout Timeout for pg_ctl\n"; + print " --connection-timeout Timeout for connecting to worker nodes\n"; + print " --mitmproxy Start a mitmproxy for one of the workers\n"; + exit 1; } my $TMP_CHECKDIR = 'tmp_check'; @@ -95,28 +95,28 @@ if ($Config{osname} eq "MSWin32") }; GetOptions( - 'isolationtester' => \$isolationtester, - 'vanillatest' => \$vanillatest, - 'follower-cluster' => \$followercluster, - 'bindir=s' => \$bindir, - 'libdir=s' => \$libdir, - 'pgxsdir=s' => \$pgxsdir, - 'postgres-builddir=s' => \$postgresBuilddir, - 'postgres-srcdir=s' => \$postgresSrcdir, - 'citus_abs_srcdir=s' => \$citusAbsSrcdir, - 'majorversion=s' => \$majorversion, - 'load-extension=s' => \@extensions, - 'server-option=s' => \@userPgOptions, - 'valgrind' => \$valgrind, - 'valgrind-path=s' => \$valgrindPath, - 'valgrind-log-file=s' => \$valgrindLogFile, - 'pg_ctl-timeout=s' => \$pgCtlTimeout, - 'connection-timeout=s' => \$connectionTimeout, - 'mitmproxy' => \$useMitmproxy, - 'conninfo=s' => \$conninfo, - 'worker-1-public-hostname=s' => \$publicWorker1Host, - 'worker-2-public-hostname=s' => \$publicWorker2Host, - 'help' => sub { Usage() }); + 'isolationtester' => \$isolationtester, + 'vanillatest' => \$vanillatest, + 'follower-cluster' => \$followercluster, + 'bindir=s' => \$bindir, + 'libdir=s' => \$libdir, + 'pgxsdir=s' => \$pgxsdir, + 'postgres-builddir=s' => \$postgresBuilddir, + 'postgres-srcdir=s' => \$postgresSrcdir, + 'citus_abs_srcdir=s' => \$citusAbsSrcdir, + 'majorversion=s' => \$majorversion, + 'load-extension=s' => \@extensions, + 'server-option=s' => \@userPgOptions, + 'valgrind' => \$valgrind, + 'valgrind-path=s' => \$valgrindPath, + 'valgrind-log-file=s' => \$valgrindLogFile, + 'pg_ctl-timeout=s' => \$pgCtlTimeout, + 'connection-timeout=s' => \$connectionTimeout, + 'mitmproxy' => \$useMitmproxy, + 'conninfo=s' => \$conninfo, + 'worker-1-public-hostname=s' => \$publicWorker1Host, + 'worker-2-public-hostname=s' => \$publicWorker2Host, + 'help' => sub { Usage() }); my $fixopen = "$bindir/postgres.fixopen"; my @pg_ctl_args = (); @@ -135,10 +135,10 @@ if (-e $fixopen) # known problem, present in postgres itself as well. if (defined $libdir) { - $ENV{LD_LIBRARY_PATH} = "$libdir:".($ENV{LD_LIBRARY_PATH} || ''); - $ENV{DYLD_LIBRARY_PATH} = "$libdir:".($ENV{DYLD_LIBRARY_PATH} || ''); - $ENV{LIBPATH} = "$libdir:".($ENV{LIBPATH} || ''); - $ENV{PATH} = "$libdir:".($ENV{PATH} || ''); + $ENV{LD_LIBRARY_PATH} = "$libdir:".($ENV{LD_LIBRARY_PATH} || ''); + $ENV{DYLD_LIBRARY_PATH} = "$libdir:".($ENV{DYLD_LIBRARY_PATH} || ''); + $ENV{LIBPATH} = "$libdir:".($ENV{LIBPATH} || ''); + $ENV{PATH} = "$libdir:".($ENV{PATH} || ''); } # Put $bindir to the end of PATH. We want to prefer system binaries by @@ -146,7 +146,7 @@ if (defined $libdir) # want to find binaries if they're not in PATH. if (defined $bindir) { - $ENV{PATH} = ($ENV{PATH} || '').":$bindir"; + $ENV{PATH} = ($ENV{PATH} || '').":$bindir"; } @@ -182,7 +182,7 @@ else if ($isolationtester && ! -f "$isolationRegress") { - die <<"MESSAGE"; + die <<"MESSAGE"; isolationtester not found at $isolationRegress. @@ -202,7 +202,7 @@ my $vanillaSchedule = catfile(dirname("${pgxsdir}"), "regress", "parallel_schedu if ($vanillatest && ! (-f "$vanillaRegress" or -f "$vanillaSchedule")) { - die <<"MESSAGE"; + die <<"MESSAGE"; pg_regress (for vanilla tests) not found at $vanillaRegress. @@ -214,7 +214,7 @@ MESSAGE if ($useMitmproxy) { - system("mitmdump --version") == 0 or die "make sure mitmdump is on PATH"; + system("mitmdump --version") == 0 or die "make sure mitmdump is on PATH"; } # If pgCtlTimeout is defined, we will set related environment variable. @@ -222,7 +222,7 @@ if ($useMitmproxy) # need to increase timeout. if (defined $pgCtlTimeout) { - $ENV{PGCTLTIMEOUT} = "$pgCtlTimeout"; + $ENV{PGCTLTIMEOUT} = "$pgCtlTimeout"; } # We don't want valgrind to run pg_ctl itself, as that'd trigger a lot @@ -232,72 +232,72 @@ if (defined $pgCtlTimeout) # only reliable way to do this. sub replace_postgres { - if (-e catfile("$bindir", "postgres.orig")) - { + if (-e catfile("$bindir", "postgres.orig")) + { print "wrapper exists\n"; - } - else - { + } + else + { print "moving $bindir/postgres to $bindir/postgres.orig\n"; rename catfile("$bindir", "postgres"), catfile("$bindir", "postgres.orig") - or die "Could not move postgres out of the way"; - } + or die "Could not move postgres out of the way"; + } - sysopen my $fh, catfile("$bindir", "postgres"), O_CREAT|O_TRUNC|O_RDWR, 0700 + sysopen my $fh, catfile("$bindir", "postgres"), O_CREAT|O_TRUNC|O_RDWR, 0700 or die "Could not create postgres wrapper at $bindir/postgres"; - print $fh <<"END"; + print $fh <<"END"; #!/bin/bash exec $valgrindPath \\ - --quiet \\ - --suppressions=${postgresSrcdir}/src/tools/valgrind.supp \\ - --trace-children=yes --track-origins=yes --read-var-info=no \\ - --leak-check=no \\ - --error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END \\ - --max-stackframe=16000000 \\ - --log-file=$valgrindLogFile \\ - --fullpath-after=/ \\ - $bindir/postgres.orig \\ - "\$@" + --quiet \\ + --suppressions=${postgresSrcdir}/src/tools/valgrind.supp \\ + --trace-children=yes --track-origins=yes --read-var-info=no \\ + --leak-check=no \\ + --error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END \\ + --max-stackframe=16000000 \\ + --log-file=$valgrindLogFile \\ + --fullpath-after=/ \\ + $bindir/postgres.orig \\ + "\$@" END - close $fh; + close $fh; } sub write_settings_to_postgres_conf { - my ($pgOptions, $pgConfigPath) = @_; - open(my $fd, ">>", $pgConfigPath); + my ($pgOptions, $pgConfigPath) = @_; + open(my $fd, ">>", $pgConfigPath); - foreach (@$pgOptions) - { - print $fd "$_\n"; - } + foreach (@$pgOptions) + { + print $fd "$_\n"; + } - close $fd; + close $fd; } # revert changes replace_postgres() performed sub revert_replace_postgres { - if (-e catfile("$bindir", "postgres.orig")) - { + if (-e catfile("$bindir", "postgres.orig")) + { print "wrapper exists, removing\n"; print "moving $bindir/postgres.orig to $bindir/postgres\n"; rename catfile("$bindir", "postgres.orig"), catfile("$bindir", "postgres") - or die "Could not move postgres back"; - } + or die "Could not move postgres back"; + } } sub generate_hba { - my $nodename = shift; + my $nodename = shift; - open(my $fh, ">", catfile($TMP_CHECKDIR, $nodename, "data", "pg_hba.conf")) - or die "could not open pg_hba.conf"; - print $fh "host all alice,bob localhost md5\n"; - print $fh "host all all 127.0.0.1/32 trust\n"; - print $fh "host all all ::1/128 trust\n"; - print $fh "host replication postgres localhost trust\n"; - close $fh; + open(my $fh, ">", catfile($TMP_CHECKDIR, $nodename, "data", "pg_hba.conf")) + or die "could not open pg_hba.conf"; + print $fh "host all alice,bob localhost md5\n"; + print $fh "host all all 127.0.0.1/32 trust\n"; + print $fh "host all all ::1/128 trust\n"; + print $fh "host replication postgres localhost trust\n"; + close $fh; } # always want to call initdb under normal postgres, so revert from a @@ -324,84 +324,84 @@ my @workerPorts = (); if ( $conninfo ) { - my %convals = split /=|\s/, $conninfo; - if (exists $convals{user}) - { - $user = $convals{user}; - } - if (exists $convals{host}) - { - $host = $convals{host}; - } - if (exists $convals{port}) - { - $masterPort = $convals{port}; - } - if (exists $convals{dbname}) - { - $dbname = $convals{dbname}; - } + my %convals = split /=|\s/, $conninfo; + if (exists $convals{user}) + { + $user = $convals{user}; + } + if (exists $convals{host}) + { + $host = $convals{host}; + } + if (exists $convals{port}) + { + $masterPort = $convals{port}; + } + if (exists $convals{dbname}) + { + $dbname = $convals{dbname}; + } - open my $in, '<', "bin/normalize.sed" or die "Cannot open normalize.sed file\n"; - open my $out, '>', "bin/normalize_modified.sed" or die "Cannot open normalize_modified.sed file\n"; + open my $in, '<', "bin/normalize.sed" or die "Cannot open normalize.sed file\n"; + open my $out, '>', "bin/normalize_modified.sed" or die "Cannot open normalize_modified.sed file\n"; - while ( <$in> ) - { - print $out $_; - } + while ( <$in> ) + { + print $out $_; + } - close $in; + close $in; - print $out "\n"; - print $out "s/\\bdbname=regression\\b/dbname=/g\n"; - print $out "s/\\bdbname=$dbname\\b/dbname=/g\n"; - print $out "s/\\b$user\\b//g\n"; - print $out "s/\\bpostgres\\b//g\n"; - print $out "s/\\blocalhost\\b//g\n"; - print $out "s/\\b$host\\b//g\n"; - print $out "s/\\b576[0-9][0-9]\\b/xxxxx/g\n"; - print $out "s/", substr("$masterPort", 0, length("$masterPort")-2), "[0-9][0-9]/xxxxx/g\n"; + print $out "\n"; + print $out "s/\\bdbname=regression\\b/dbname=/g\n"; + print $out "s/\\bdbname=$dbname\\b/dbname=/g\n"; + print $out "s/\\b$user\\b//g\n"; + print $out "s/\\bpostgres\\b//g\n"; + print $out "s/\\blocalhost\\b//g\n"; + print $out "s/\\b$host\\b//g\n"; + print $out "s/\\b576[0-9][0-9]\\b/xxxxx/g\n"; + print $out "s/", substr("$masterPort", 0, length("$masterPort")-2), "[0-9][0-9]/xxxxx/g\n"; - my $worker1host = `psql "$conninfo" -qtAX -c "SELECT nodename FROM pg_dist_node ORDER BY nodeid LIMIT 1;"`; - my $worker1port = `psql "$conninfo" -qtAX -c "SELECT nodeport FROM pg_dist_node ORDER BY nodeid LIMIT 1;"`; - my $worker2host = `psql "$conninfo" -qtAX -c "SELECT nodename FROM pg_dist_node ORDER BY nodeid OFFSET 1 LIMIT 1;"`; - my $worker2port = `psql "$conninfo" -qtAX -c "SELECT nodeport FROM pg_dist_node ORDER BY nodeid OFFSET 1 LIMIT 1;"`; + my $worker1host = `psql "$conninfo" -qtAX -c "SELECT nodename FROM pg_dist_node ORDER BY nodeid LIMIT 1;"`; + my $worker1port = `psql "$conninfo" -qtAX -c "SELECT nodeport FROM pg_dist_node ORDER BY nodeid LIMIT 1;"`; + my $worker2host = `psql "$conninfo" -qtAX -c "SELECT nodename FROM pg_dist_node ORDER BY nodeid OFFSET 1 LIMIT 1;"`; + my $worker2port = `psql "$conninfo" -qtAX -c "SELECT nodeport FROM pg_dist_node ORDER BY nodeid OFFSET 1 LIMIT 1;"`; - $worker1host =~ s/^\s+|\s+$//g; - $worker1port =~ s/^\s+|\s+$//g; - $worker2host =~ s/^\s+|\s+$//g; - $worker2port =~ s/^\s+|\s+$//g; + $worker1host =~ s/^\s+|\s+$//g; + $worker1port =~ s/^\s+|\s+$//g; + $worker2host =~ s/^\s+|\s+$//g; + $worker2port =~ s/^\s+|\s+$//g; - push(@workerPorts, $worker1port); - push(@workerPorts, $worker2port); - push(@workerHosts, $worker1host); - push(@workerHosts, $worker2host); + push(@workerPorts, $worker1port); + push(@workerPorts, $worker2port); + push(@workerHosts, $worker1host); + push(@workerHosts, $worker2host); - my $worker1hostReplaced = $worker1host; - my $worker2hostReplaced = $worker2host; + my $worker1hostReplaced = $worker1host; + my $worker2hostReplaced = $worker2host; - $worker1hostReplaced =~ s/\./\\\./g; - $worker2hostReplaced =~ s/\./\\\./g; + $worker1hostReplaced =~ s/\./\\\./g; + $worker2hostReplaced =~ s/\./\\\./g; - print $out "s/\\b$worker1hostReplaced\\b//g\n"; - print $out "s/\\b$worker2hostReplaced\\b//g\n"; + print $out "s/\\b$worker1hostReplaced\\b//g\n"; + print $out "s/\\b$worker2hostReplaced\\b//g\n"; } else { - for (my $workerIndex = 1; $workerIndex <= $workerCount; $workerIndex++) { - my $workerPort = $masterPort + $workerIndex; - push(@workerPorts, $workerPort); - push(@workerHosts, "localhost"); - } + for (my $workerIndex = 1; $workerIndex <= $workerCount; $workerIndex++) { + my $workerPort = $masterPort + $workerIndex; + push(@workerPorts, $workerPort); + push(@workerHosts, "localhost"); + } } my $followerCoordPort = 9070; my @followerWorkerPorts = (); for (my $workerIndex = 1; $workerIndex <= $workerCount; $workerIndex++) { - my $workerPort = $followerCoordPort + $workerIndex; - push(@followerWorkerPorts, $workerPort); + my $workerPort = $followerCoordPort + $workerIndex; + push(@followerWorkerPorts, $workerPort); } my @pgOptions = (); @@ -411,7 +411,7 @@ push(@pgOptions, "listen_addresses='${host}'"); push(@pgOptions, "fsync=off"); if (! $vanillatest) { - push(@pgOptions, "extra_float_digits=0"); + push(@pgOptions, "extra_float_digits=0"); } my $sharedPreloadLibraries = "citus"; @@ -431,16 +431,16 @@ if (-e $pg_stat_statements_control) my $hll_control = catfile($sharedir, "extension", "hll.control"); if (-e $hll_control) { - $sharedPreloadLibraries .= ',hll'; + $sharedPreloadLibraries .= ',hll'; } push(@pgOptions, "shared_preload_libraries='${sharedPreloadLibraries}'"); if ($vanillatest) { - # use the default used in vanilla tests - push(@pgOptions, "max_parallel_workers_per_gather=2"); + # use the default used in vanilla tests + push(@pgOptions, "max_parallel_workers_per_gather=2"); }else { - # Avoid parallelism to stabilize explain plans - push(@pgOptions, "max_parallel_workers_per_gather=0"); + # Avoid parallelism to stabilize explain plans + push(@pgOptions, "max_parallel_workers_per_gather=0"); } # Help with debugging @@ -463,14 +463,14 @@ push(@pgOptions, "max_wal_senders=50"); push(@pgOptions, "max_worker_processes=50"); if ($majorversion >= "14") { - # disable compute_query_id so that we don't get Query Identifiers - # in explain outputs - push(@pgOptions, "compute_query_id=off"); + # disable compute_query_id so that we don't get Query Identifiers + # in explain outputs + push(@pgOptions, "compute_query_id=off"); - # reduce test flappiness and different PG14 plans - if (!$vanillatest) { - push(@pgOptions, "enable_incremental_sort=off"); - } + # reduce test flappiness and different PG14 plans + if (!$vanillatest) { + push(@pgOptions, "enable_incremental_sort=off"); + } } # Citus options set for the tests @@ -495,47 +495,47 @@ push(@pgOptions, "citus.executor_slow_start_interval=0ms"); # we set some GUCs to not break postgres vanilla tests if($vanillatest) { - # we enable hiding the citus dependent objects from pg meta class queries to not break postgres vanilla test behaviour - push(@pgOptions, "citus.hide_citus_dependent_objects=true"); + # we enable hiding the citus dependent objects from pg meta class queries to not break postgres vanilla test behaviour + push(@pgOptions, "citus.hide_citus_dependent_objects=true"); - # we disable citus related unwanted messages to not break postgres vanilla test behaviour. - push(@pgOptions, "citus.enable_unsupported_feature_messages=false"); + # we disable citus related unwanted messages to not break postgres vanilla test behaviour. + push(@pgOptions, "citus.enable_unsupported_feature_messages=false"); - # we disable some restrictions for local objects like local views to not break postgres vanilla test behaviour. - push(@pgOptions, "citus.enforce_object_restrictions_for_local_objects=false"); + # we disable some restrictions for local objects like local views to not break postgres vanilla test behaviour. + push(@pgOptions, "citus.enforce_object_restrictions_for_local_objects=false"); } if ($useMitmproxy) { - # make tests reproducible by never trying to negotiate ssl - push(@pgOptions, "citus.node_conninfo='sslmode=disable'"); - # The commands that we intercept are based on the the text based protocol. - push(@pgOptions, "citus.enable_binary_protocol='false'"); + # make tests reproducible by never trying to negotiate ssl + push(@pgOptions, "citus.node_conninfo='sslmode=disable'"); + # The commands that we intercept are based on the the text based protocol. + push(@pgOptions, "citus.enable_binary_protocol='false'"); } elsif ($followercluster) { - # follower clusters don't work well when automatically generating certificates as the - # followers do not execute the extension creation sql scripts that trigger the creation - # of certificates - push(@pgOptions, "citus.node_conninfo='sslmode=prefer'"); + # follower clusters don't work well when automatically generating certificates as the + # followers do not execute the extension creation sql scripts that trigger the creation + # of certificates + push(@pgOptions, "citus.node_conninfo='sslmode=prefer'"); } if ($useMitmproxy) { - if (! -e $TMP_CHECKDIR) - { - make_path($TMP_CHECKDIR) or die "could not create $TMP_CHECKDIR directory"; - } - my $absoluteFifoPath = abs_path($mitmFifoPath); - die 'abs_path returned empty string' unless ($absoluteFifoPath ne ""); - push(@pgOptions, "citus.mitmfifo='$absoluteFifoPath'"); + if (! -e $TMP_CHECKDIR) + { + make_path($TMP_CHECKDIR) or die "could not create $TMP_CHECKDIR directory"; + } + my $absoluteFifoPath = abs_path($mitmFifoPath); + die 'abs_path returned empty string' unless ($absoluteFifoPath ne ""); + push(@pgOptions, "citus.mitmfifo='$absoluteFifoPath'"); } if ($followercluster) { - push(@pgOptions, "max_wal_senders=10"); - push(@pgOptions, "hot_standby=on"); - push(@pgOptions, "wal_level='replica'"); + push(@pgOptions, "max_wal_senders=10"); + push(@pgOptions, "hot_standby=on"); + push(@pgOptions, "wal_level='replica'"); } @@ -548,23 +548,23 @@ if ($followercluster) # shard_count to 4 to speed up the tests. if($isolationtester) { - push(@pgOptions, "citus.worker_min_messages='warning'"); - push(@pgOptions, "citus.log_distributed_deadlock_detection=on"); - push(@pgOptions, "citus.shard_count=4"); - push(@pgOptions, "citus.metadata_sync_interval=1000"); - push(@pgOptions, "citus.metadata_sync_retry_interval=100"); - push(@pgOptions, "client_min_messages='warning'"); # pg12 introduced notice showing during isolation tests - push(@pgOptions, "citus.running_under_isolation_test=true"); + push(@pgOptions, "citus.worker_min_messages='warning'"); + push(@pgOptions, "citus.log_distributed_deadlock_detection=on"); + push(@pgOptions, "citus.shard_count=4"); + push(@pgOptions, "citus.metadata_sync_interval=1000"); + push(@pgOptions, "citus.metadata_sync_retry_interval=100"); + push(@pgOptions, "client_min_messages='warning'"); # pg12 introduced notice showing during isolation tests + push(@pgOptions, "citus.running_under_isolation_test=true"); - # Disable all features of the maintenance daemon. Otherwise queries might - # randomly show temporarily as "waiting..." because they are waiting for the - # maintenance daemon. - push(@pgOptions, "citus.distributed_deadlock_detection_factor=-1"); - push(@pgOptions, "citus.recover_2pc_interval=-1"); - push(@pgOptions, "citus.enable_statistics_collection=false"); - push(@pgOptions, "citus.defer_shard_delete_interval=-1"); - push(@pgOptions, "citus.stat_statements_purge_interval=-1"); - push(@pgOptions, "citus.background_task_queue_interval=-1"); + # Disable all features of the maintenance daemon. Otherwise queries might + # randomly show temporarily as "waiting..." because they are waiting for the + # maintenance daemon. + push(@pgOptions, "citus.distributed_deadlock_detection_factor=-1"); + push(@pgOptions, "citus.recover_2pc_interval=-1"); + push(@pgOptions, "citus.enable_statistics_collection=false"); + push(@pgOptions, "citus.defer_shard_delete_interval=-1"); + push(@pgOptions, "citus.stat_statements_purge_interval=-1"); + push(@pgOptions, "citus.background_task_queue_interval=-1"); } # Add externally added options last, so they overwrite the default ones above @@ -577,13 +577,13 @@ for my $option (@userPgOptions) %functions = (); if (!$conninfo) { - %functions = ('fake_fdw_handler()', 'fdw_handler AS \'citus\' LANGUAGE C STRICT;'); + %functions = ('fake_fdw_handler()', 'fdw_handler AS \'citus\' LANGUAGE C STRICT;'); } else { - # when running the tests on a cluster these will be created with run_command_on_workers - # so extra single quotes are needed - %functions = ('fake_fdw_handler()', 'fdw_handler AS \'\'citus\'\' LANGUAGE C STRICT;'); + # when running the tests on a cluster these will be created with run_command_on_workers + # so extra single quotes are needed + %functions = ('fake_fdw_handler()', 'fdw_handler AS \'\'citus\'\' LANGUAGE C STRICT;'); } #define fdws as name->handler name @@ -607,7 +607,7 @@ for my $port (@workerPorts) { if (-e catfile($TMP_CHECKDIR, "worker.$port")) { - remove_tree(catfile($TMP_CHECKDIR, "worker.$port")) or die "Could not remove worker directory"; + remove_tree(catfile($TMP_CHECKDIR, "worker.$port")) or die "Could not remove worker directory"; } } @@ -620,7 +620,7 @@ for my $port (@followerWorkerPorts) { if (-e catfile($TMP_CHECKDIR, "follower.$port")) { - remove_tree(catfile($TMP_CHECKDIR, "follower.$port")) or die "Could not remove worker directory"; + remove_tree(catfile($TMP_CHECKDIR, "follower.$port")) or die "Could not remove worker directory"; } } @@ -628,10 +628,10 @@ for my $tablespace ("ts0", "ts1", "ts2") { if (-e catfile($TMP_CHECKDIR, $tablespace)) { - remove_tree(catfile($TMP_CHECKDIR, $tablespace)) or die "Could not remove tablespace directory"; + remove_tree(catfile($TMP_CHECKDIR, $tablespace)) or die "Could not remove tablespace directory"; } - system("mkdir", ("-p", catfile($TMP_CHECKDIR, $tablespace))) == 0 - or die "Could not create vanilla testtablespace dir."; + system("mkdir", ("-p", catfile($TMP_CHECKDIR, $tablespace))) == 0 + or die "Could not create vanilla testtablespace dir."; } @@ -648,7 +648,7 @@ sysopen my $fh, catfile($TMP_CHECKDIR, $TMP_BINDIR, $psql_name), O_CREAT|O_TRUNC or die "Could not create psql wrapper"; if ($usingWindows) { - print $fh "\@echo off\n"; + print $fh "\@echo off\n"; } print $fh catfile($bindir, "psql")." "; print $fh "--variable=master_port=$masterPort "; @@ -703,140 +703,140 @@ close $fh; if (!$conninfo) { - make_path(catfile($TMP_CHECKDIR, $MASTERDIR, 'log')) or die "Could not create $MASTERDIR directory"; - for my $port (@workerPorts) - { - make_path(catfile($TMP_CHECKDIR, "worker.$port", "log")) - or die "Could not create worker directory"; - } + make_path(catfile($TMP_CHECKDIR, $MASTERDIR, 'log')) or die "Could not create $MASTERDIR directory"; + for my $port (@workerPorts) + { + make_path(catfile($TMP_CHECKDIR, "worker.$port", "log")) + or die "Could not create worker directory"; + } - if ($followercluster) - { - make_path(catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'log')) or die "Could not create $MASTER_FOLLOWERDIR directory"; - for my $port (@followerWorkerPorts) - { - make_path(catfile($TMP_CHECKDIR, "follower.$port", "log")) - or die "Could not create worker directory"; - } - } + if ($followercluster) + { + make_path(catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'log')) or die "Could not create $MASTER_FOLLOWERDIR directory"; + for my $port (@followerWorkerPorts) + { + make_path(catfile($TMP_CHECKDIR, "follower.$port", "log")) + or die "Could not create worker directory"; + } + } - # Create new data directories, copy workers for speed - # --allow-group-access is used to ensure we set permissions on private keys - # correctly - system(catfile("$bindir", "initdb"), ("--no-sync", "--allow-group-access", "-U", $user, "--encoding", "UTF8", "--locale", "POSIX", catfile($TMP_CHECKDIR, $MASTERDIR, "data"))) == 0 - or die "Could not create $MASTERDIR data directory"; + # Create new data directories, copy workers for speed + # --allow-group-access is used to ensure we set permissions on private keys + # correctly + system(catfile("$bindir", "initdb"), ("--no-sync", "--allow-group-access", "-U", $user, "--encoding", "UTF8", "--locale", "POSIX", catfile($TMP_CHECKDIR, $MASTERDIR, "data"))) == 0 + or die "Could not create $MASTERDIR data directory"; generate_hba("master"); - if ($usingWindows) - { - for my $port (@workerPorts) - { - system(catfile("$bindir", "initdb"), ("--no-sync", "--allow-group-access", "-U", $user, "--encoding", "UTF8", catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 - or die "Could not create worker data directory"; + if ($usingWindows) + { + for my $port (@workerPorts) + { + system(catfile("$bindir", "initdb"), ("--no-sync", "--allow-group-access", "-U", $user, "--encoding", "UTF8", catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 + or die "Could not create worker data directory"; generate_hba("worker.$port"); - } - } - else - { - for my $port (@workerPorts) - { - system("cp", ("-a", catfile($TMP_CHECKDIR, $MASTERDIR, "data"), catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 - or die "Could not create worker data directory"; - } - } + } + } + else + { + for my $port (@workerPorts) + { + system("cp", ("-a", catfile($TMP_CHECKDIR, $MASTERDIR, "data"), catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 + or die "Could not create worker data directory"; + } + } } # Routine to shutdown servers at failure/exit sub ShutdownServers() { - if (!$conninfo && $serversAreShutdown eq "FALSE") - { - system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, $MASTERDIR, 'data'))) == 0 - or warn "Could not shutdown worker server"; + if (!$conninfo && $serversAreShutdown eq "FALSE") + { + system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, $MASTERDIR, 'data'))) == 0 + or warn "Could not shutdown worker server"; - for my $port (@workerPorts) - { - system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 - or warn "Could not shutdown worker server"; - } + for my $port (@workerPorts) + { + system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, "worker.$port", "data"))) == 0 + or warn "Could not shutdown worker server"; + } - if ($followercluster) - { - system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'data'))) == 0 - or warn "Could not shutdown worker server"; + if ($followercluster) + { + system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'data'))) == 0 + or warn "Could not shutdown worker server"; - for my $port (@followerWorkerPorts) - { - system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, "follower.$port", "data"))) == 0 - or warn "Could not shutdown worker server"; - } - } - if ($mitmPid != 0) - { - # '-' means signal the process group, 2 is SIGINT - kill(-2, $mitmPid) or warn "could not interrupt mitmdump"; - } - $serversAreShutdown = "TRUE"; - } + for my $port (@followerWorkerPorts) + { + system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'stop', '-w', '-D', catfile($TMP_CHECKDIR, "follower.$port", "data"))) == 0 + or warn "Could not shutdown worker server"; + } + } + if ($mitmPid != 0) + { + # '-' means signal the process group, 2 is SIGINT + kill(-2, $mitmPid) or warn "could not interrupt mitmdump"; + } + $serversAreShutdown = "TRUE"; + } } # setup the signal handler before we fork $SIG{CHLD} = sub { - # If, for some reason, mitmproxy dies before we do, we should also die! - while ((my $waitpid = waitpid(-1, WNOHANG)) > 0) { - if ($mitmPid != 0 && $mitmPid == $waitpid) { - die "aborting tests because mitmdump failed unexpectedly"; - } - } + # If, for some reason, mitmproxy dies before we do, we should also die! + while ((my $waitpid = waitpid(-1, WNOHANG)) > 0) { + if ($mitmPid != 0 && $mitmPid == $waitpid) { + die "aborting tests because mitmdump failed unexpectedly"; + } + } }; if ($useMitmproxy) { - if (! -e $mitmFifoPath) - { - mkfifo($mitmFifoPath, 0777) or die "could not create fifo"; - } + if (! -e $mitmFifoPath) + { + mkfifo($mitmFifoPath, 0777) or die "could not create fifo"; + } - if (! -p $mitmFifoPath) - { - die "a file already exists at $mitmFifoPath, delete it before trying again"; - } + if (! -p $mitmFifoPath) + { + die "a file already exists at $mitmFifoPath, delete it before trying again"; + } - if ($Config{osname} eq "linux") - { - system("netstat --tcp -n | grep :$mitmPort"); - } - else - { - system("netstat -p tcp -n | grep :$mitmPort"); - } + if ($Config{osname} eq "linux") + { + system("netstat --tcp -n | grep :$mitmPort"); + } + else + { + system("netstat -p tcp -n | grep :$mitmPort"); + } - if (system("lsof -i :$mitmPort") == 0) { - die "cannot start mitmproxy because a process already exists on port $mitmPort"; - } + if (system("lsof -i :$mitmPort") == 0) { + die "cannot start mitmproxy because a process already exists on port $mitmPort"; + } - my $childPid = fork(); + my $childPid = fork(); - die("Failed to fork\n") - unless (defined $childPid); + die("Failed to fork\n") + unless (defined $childPid); - die("No child process\n") - if ($childPid < 0); + die("No child process\n") + if ($childPid < 0); - $mitmPid = $childPid; + $mitmPid = $childPid; - if ($mitmPid eq 0) { - print("forked, about to exec mitmdump\n"); - setpgrp(0,0); # we're about to spawn both a shell and a mitmdump, kill them as a group - exec("mitmdump --rawtcp -p $mitmPort --mode reverse:localhost:57638 -s $regressdir/mitmscripts/fluent.py --set fifo=$mitmFifoPath --set flow_detail=0 --set termlog_verbosity=warn >proxy.output 2>&1"); - die 'could not start mitmdump'; - } + if ($mitmPid eq 0) { + print("forked, about to exec mitmdump\n"); + setpgrp(0,0); # we're about to spawn both a shell and a mitmdump, kill them as a group + exec("mitmdump --rawtcp -p $mitmPort --mode reverse:localhost:57638 -s $regressdir/mitmscripts/fluent.py --set fifo=$mitmFifoPath --set flow_detail=0 --set termlog_verbosity=warn >proxy.output 2>&1"); + die 'could not start mitmdump'; + } } # Set signals to shutdown servers @@ -848,22 +848,22 @@ $SIG{__DIE__} = \&ShutdownServers; # Shutdown servers on exit only if help option is not used END { - if ($? != 1) - { - ShutdownServers(); - } + if ($? != 1) + { + ShutdownServers(); + } - # At the end of a run, replace redirected binary with original again - if ($valgrind) - { - revert_replace_postgres(); - } + # At the end of a run, replace redirected binary with original again + if ($valgrind) + { + revert_replace_postgres(); + } } # want to use valgrind, replace binary before starting server if ($valgrind) { - replace_postgres(); + replace_postgres(); } @@ -873,78 +873,78 @@ $serversAreShutdown = "FALSE"; # enable synchronous replication if needed if ($followercluster) { - $synchronousReplication = "-c synchronous_standby_names='FIRST 1 (*)' -c synchronous_commit=remote_apply"; + $synchronousReplication = "-c synchronous_standby_names='FIRST 1 (*)' -c synchronous_commit=remote_apply"; } # Start servers if (!$conninfo) { - write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, $MASTERDIR, "data/postgresql.conf")); - if(system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'start', '-w', - '-o', " -c port=$masterPort $synchronousReplication", - '-D', catfile($TMP_CHECKDIR, $MASTERDIR, 'data'), '-l', catfile($TMP_CHECKDIR, $MASTERDIR, 'log', 'postmaster.log'))) != 0) - { - system("tail", ("-n20", catfile($TMP_CHECKDIR, $MASTERDIR, "log", "postmaster.log"))); - die "Could not start master server"; - } + write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, $MASTERDIR, "data/postgresql.conf")); + if(system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'start', '-w', + '-o', " -c port=$masterPort $synchronousReplication", + '-D', catfile($TMP_CHECKDIR, $MASTERDIR, 'data'), '-l', catfile($TMP_CHECKDIR, $MASTERDIR, 'log', 'postmaster.log'))) != 0) + { + system("tail", ("-n20", catfile($TMP_CHECKDIR, $MASTERDIR, "log", "postmaster.log"))); + die "Could not start master server"; + } - for my $port (@workerPorts) - { - write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, "worker.$port", "data/postgresql.conf")); - if(system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'start', '-w', - '-o', " -c port=$port $synchronousReplication", - '-D', catfile($TMP_CHECKDIR, "worker.$port", "data"), - '-l', catfile($TMP_CHECKDIR, "worker.$port", "log", "postmaster.log"))) != 0) - { - system("tail", ("-n20", catfile($TMP_CHECKDIR, "worker.$port", "log", "postmaster.log"))); - die "Could not start worker server"; - } - } + for my $port (@workerPorts) + { + write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, "worker.$port", "data/postgresql.conf")); + if(system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'start', '-w', + '-o', " -c port=$port $synchronousReplication", + '-D', catfile($TMP_CHECKDIR, "worker.$port", "data"), + '-l', catfile($TMP_CHECKDIR, "worker.$port", "log", "postmaster.log"))) != 0) + { + system("tail", ("-n20", catfile($TMP_CHECKDIR, "worker.$port", "log", "postmaster.log"))); + die "Could not start worker server"; + } + } } # Setup the follower nodes if ($followercluster) { - system(catfile("$bindir", "pg_basebackup"), - ("-D", catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "data"), "--host=$host", "--port=$masterPort", - "--username=$user", "-R", "-X", "stream", "--no-sync")) == 0 - or die 'could not take basebackup'; + system(catfile("$bindir", "pg_basebackup"), + ("-D", catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "data"), "--host=$host", "--port=$masterPort", + "--username=$user", "-R", "-X", "stream", "--no-sync")) == 0 + or die 'could not take basebackup'; - for my $offset (0 .. $#workerPorts) - { - my $workerPort = $workerPorts[$offset]; - my $followerPort = $followerWorkerPorts[$offset]; - system(catfile("$bindir", "pg_basebackup"), - ("-D", catfile($TMP_CHECKDIR, "follower.$followerPort", "data"), "--host=$host", "--port=$workerPort", - "--username=$user", "-R", "-X", "stream")) == 0 - or die "Could not take basebackup"; - } + for my $offset (0 .. $#workerPorts) + { + my $workerPort = $workerPorts[$offset]; + my $followerPort = $followerWorkerPorts[$offset]; + system(catfile("$bindir", "pg_basebackup"), + ("-D", catfile($TMP_CHECKDIR, "follower.$followerPort", "data"), "--host=$host", "--port=$workerPort", + "--username=$user", "-R", "-X", "stream")) == 0 + or die "Could not take basebackup"; + } - write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "data/postgresql.conf")); - if(system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'start', '-w', - '-o', " -c port=$followerCoordPort", - '-D', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'data'), '-l', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'log', 'postmaster.log'))) != 0) - { - system("tail", ("-n20", catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "log", "postmaster.log"))); - die "Could not start master follower server"; - } + write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "data/postgresql.conf")); + if(system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'start', '-w', + '-o', " -c port=$followerCoordPort", + '-D', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'data'), '-l', catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, 'log', 'postmaster.log'))) != 0) + { + system("tail", ("-n20", catfile($TMP_CHECKDIR, $MASTER_FOLLOWERDIR, "log", "postmaster.log"))); + die "Could not start master follower server"; + } - for my $port (@followerWorkerPorts) - { - write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, "follower.$port", "data/postgresql.conf")); - if(system(catfile("$bindir", "pg_ctl"), - (@pg_ctl_args, 'start', '-w', - '-o', " -c port=$port", - '-D', catfile($TMP_CHECKDIR, "follower.$port", "data"), - '-l', catfile($TMP_CHECKDIR, "follower.$port", "log", "postmaster.log"))) != 0) - { - system("tail", ("-n20", catfile($TMP_CHECKDIR, "follower.$port", "log", "postmaster.log"))); - die "Could not start follower server"; - } - } + for my $port (@followerWorkerPorts) + { + write_settings_to_postgres_conf(\@pgOptions, catfile($TMP_CHECKDIR, "follower.$port", "data/postgresql.conf")); + if(system(catfile("$bindir", "pg_ctl"), + (@pg_ctl_args, 'start', '-w', + '-o', " -c port=$port", + '-D', catfile($TMP_CHECKDIR, "follower.$port", "data"), + '-l', catfile($TMP_CHECKDIR, "follower.$port", "log", "postmaster.log"))) != 0) + { + system("tail", ("-n20", catfile($TMP_CHECKDIR, "follower.$port", "log", "postmaster.log"))); + die "Could not start follower server"; + } + } } ### @@ -953,87 +953,87 @@ if ($followercluster) ### if (!$conninfo) { - for my $port (@workerPorts) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "postgres", - '-c', "CREATE DATABASE regression;")) == 0 - or die "Could not create regression database on worker port $port."; + for my $port (@workerPorts) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "postgres", + '-c', "CREATE DATABASE regression;")) == 0 + or die "Could not create regression database on worker port $port."; - my $firstLib = `psql -h "$host" -p "$port" -U "$user" -d regression -AXqt \\ - -c "SHOW shared_preload_libraries;" | cut -d ',' -f1`; - ($firstLib =~ m/^citus$/) - or die "Could not find citus as first library in shared_preload_libraries on worker $port."; + my $firstLib = `psql -h "$host" -p "$port" -U "$user" -d regression -AXqt \\ + -c "SHOW shared_preload_libraries;" | cut -d ',' -f1`; + ($firstLib =~ m/^citus$/) + or die "Could not find citus as first library in shared_preload_libraries on worker $port."; - for my $extension (@extensions) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", - '-c', "CREATE EXTENSION IF NOT EXISTS $extension;")) == 0 - or die "Could not create extension $extension on worker port $port."; - } + for my $extension (@extensions) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", + '-c', "CREATE EXTENSION IF NOT EXISTS $extension;")) == 0 + or die "Could not create extension $extension on worker port $port."; + } - foreach my $function (keys %functions) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", - '-c', "CREATE FUNCTION $function RETURNS $functions{$function};")) == 0 - or die "Could not create function $function on worker port $port"; - } + foreach my $function (keys %functions) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", + '-c', "CREATE FUNCTION $function RETURNS $functions{$function};")) == 0 + or die "Could not create function $function on worker port $port"; + } - foreach my $fdw (keys %fdws) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", - '-c', "CREATE FOREIGN DATA WRAPPER $fdw HANDLER $fdws{$fdw};")) == 0 - or die "Could not create foreign data wrapper $fdw on worker port $port"; - } - } + foreach my $fdw (keys %fdws) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $port, '-U', $user, "-d", "regression", + '-c', "CREATE FOREIGN DATA WRAPPER $fdw HANDLER $fdws{$fdw};")) == 0 + or die "Could not create foreign data wrapper $fdw on worker port $port"; + } + } } else { - my $citusFirstLibCount = `psql -h "$host" -p "$masterPort" -U "$user" -d "$dbname" -AXqt \\ - -c "SELECT run_command_on_workers('SHOW shared_preload_libraries;');" \\ - | cut -d ',' -f4 | grep -e '\"citus' | wc -l`; - ($workerCount == $citusFirstLibCount) - or die "Could not find citus as first library in shared_preload_libraries on workers."; + my $citusFirstLibCount = `psql -h "$host" -p "$masterPort" -U "$user" -d "$dbname" -AXqt \\ + -c "SELECT run_command_on_workers('SHOW shared_preload_libraries;');" \\ + | cut -d ',' -f4 | grep -e '\"citus' | wc -l`; + ($workerCount == $citusFirstLibCount) + or die "Could not find citus as first library in shared_preload_libraries on workers."; - for my $extension (@extensions) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, - '-c', "SELECT run_command_on_workers('CREATE EXTENSION IF NOT EXISTS $extension;');")) == 0 - or die "Could not create extension $extension on workers"; - } - foreach my $function (keys %functions) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, - '-c', "SELECT run_command_on_workers('CREATE FUNCTION $function RETURNS $functions{$function};');")) == 0 - or die "Could not create function $function on workers."; - } + for my $extension (@extensions) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, + '-c', "SELECT run_command_on_workers('CREATE EXTENSION IF NOT EXISTS $extension;');")) == 0 + or die "Could not create extension $extension on workers"; + } + foreach my $function (keys %functions) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, + '-c', "SELECT run_command_on_workers('CREATE FUNCTION $function RETURNS $functions{$function};');")) == 0 + or die "Could not create function $function on workers."; + } - foreach my $fdw (keys %fdws) - { - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, - '-c', "SELECT run_command_on_workers('CREATE FOREIGN DATA WRAPPER $fdw HANDLER $fdws{$fdw};');")) == 0 - or die "Could not create foreign data wrapper $fdw on workers."; - } + foreach my $fdw (keys %fdws) + { + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbname, + '-c', "SELECT run_command_on_workers('CREATE FOREIGN DATA WRAPPER $fdw HANDLER $fdws{$fdw};');")) == 0 + or die "Could not create foreign data wrapper $fdw on workers."; + } } # Prepare pg_regress arguments my @arguments = ( - "--host", $host, - '--port', $masterPort, - '--user', $user, - '--bindir', catfile($TMP_CHECKDIR, $TMP_BINDIR) + "--host", $host, + '--port', $masterPort, + '--user', $user, + '--bindir', catfile($TMP_CHECKDIR, $TMP_BINDIR) ); # Add load extension parameters to the argument list for my $extension (@extensions) { - push(@arguments, "--load-extension=$extension"); + push(@arguments, "--load-extension=$extension"); } # Append remaining ARGV arguments to pg_regress arguments @@ -1045,117 +1045,117 @@ my $exitcode = 0; sub RunVanillaTests { - ### - # We want to add is_citus_depended_object function to the default db. - # But without use-existing flag, pg_regress recreates the default db - # after dropping it if exists. Thus, we set use-existing flag and - # manually create the default db, citus extension and is_citus_depended_object - # function. When use-existing flag is set, pg_regress does not drop - # default db. - ### + ### + # We want to add is_citus_depended_object function to the default db. + # But without use-existing flag, pg_regress recreates the default db + # after dropping it if exists. Thus, we set use-existing flag and + # manually create the default db, citus extension and is_citus_depended_object + # function. When use-existing flag is set, pg_regress does not drop + # default db. + ### - $ENV{VANILLATEST} = "1"; - my $dbName = "regression"; + $ENV{VANILLATEST} = "1"; + my $dbName = "regression"; - # create default db - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", "postgres", - '-c', "CREATE DATABASE $dbName;")) == 0 - or die "Could not create $dbName database on master"; + # create default db + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", "postgres", + '-c', "CREATE DATABASE $dbName;")) == 0 + or die "Could not create $dbName database on master"; - # alter default db's lc_monetary to C - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, - '-c', "ALTER DATABASE $dbName SET lc_monetary TO 'C';")) == 0 - or die "Could not create $dbName database on master"; + # alter default db's lc_monetary to C + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, + '-c', "ALTER DATABASE $dbName SET lc_monetary TO 'C';")) == 0 + or die "Could not create $dbName database on master"; - # create extension citus - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, - '-c', "CREATE EXTENSION citus;")) == 0 - or die "Could not create citus extension on master"; + # create extension citus + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, + '-c', "CREATE EXTENSION citus;")) == 0 + or die "Could not create citus extension on master"; - # we do not want to expose that udf other than vanilla tests - my $citus_depended_object_def = "CREATE OR REPLACE FUNCTION - pg_catalog.is_citus_depended_object(oid,oid) - RETURNS bool - LANGUAGE C - AS 'citus', \$\$is_citus_depended_object\$\$;"; - system(catfile($bindir, "psql"), - ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, - '-c', $citus_depended_object_def)) == 0 - or die "Could not create FUNCTION is_citus_depended_object on master"; + # we do not want to expose that udf other than vanilla tests + my $citus_depended_object_def = "CREATE OR REPLACE FUNCTION + pg_catalog.is_citus_depended_object(oid,oid) + RETURNS bool + LANGUAGE C + AS 'citus', \$\$is_citus_depended_object\$\$;"; + system(catfile($bindir, "psql"), + ('-X', '-h', $host, '-p', $masterPort, '-U', $user, "-d", $dbName, + '-c', $citus_depended_object_def)) == 0 + or die "Could not create FUNCTION is_citus_depended_object on master"; - # we need to set regress path to find test input files(sqls and schedule) - # we need to add regress.so path to dlpath because some tests need to find that lib - my $pgregressInputdir=""; - my $dlpath=""; - if (-f "$vanillaSchedule") + # we need to set regress path to find test input files(sqls and schedule) + # we need to add regress.so path to dlpath because some tests need to find that lib + my $pgregressInputdir=""; + my $dlpath=""; + if (-f "$vanillaSchedule") { - $pgregressInputdir=catfile(dirname("$pgxsdir"), "regress"); - $dlpath=dirname("$pgxsdir") + $pgregressInputdir=catfile(dirname("$pgxsdir"), "regress"); + $dlpath=dirname("$pgxsdir") } else { - $pgregressInputdir=catfile("$postgresSrcdir", "src", "test", "regress"); - $dlpath=$pgregressInputdir + $pgregressInputdir=catfile("$postgresSrcdir", "src", "test", "regress"); + $dlpath=$pgregressInputdir } - # output dir - my $pgregressOutputdir = "$citusAbsSrcdir/pg_vanilla_outputs/$majorversion"; + # output dir + my $pgregressOutputdir = "$citusAbsSrcdir/pg_vanilla_outputs/$majorversion"; - # prepare output and tablespace folder - system("rm", ("-rf", "$pgregressOutputdir")) == 0 - or die "Could not remove vanilla output dir."; - system("mkdir", ("-p", "$pgregressOutputdir/testtablespace")) == 0 - or die "Could not create vanilla testtablespace dir."; - system("mkdir", ("-p", "$pgregressOutputdir/expected")) == 0 - or die "Could not create vanilla expected dir."; - system("mkdir", ("-p", "$pgregressOutputdir/sql")) == 0 - or die "Could not create vanilla sql dir."; + # prepare output and tablespace folder + system("rm", ("-rf", "$pgregressOutputdir")) == 0 + or die "Could not remove vanilla output dir."; + system("mkdir", ("-p", "$pgregressOutputdir/testtablespace")) == 0 + or die "Could not create vanilla testtablespace dir."; + system("mkdir", ("-p", "$pgregressOutputdir/expected")) == 0 + or die "Could not create vanilla expected dir."; + system("mkdir", ("-p", "$pgregressOutputdir/sql")) == 0 + or die "Could not create vanilla sql dir."; - $exitcode = system("$plainRegress", - ("--dlpath", $dlpath), - ("--inputdir", $pgregressInputdir), - ("--outputdir", $pgregressOutputdir), - ("--schedule", catfile("$pgregressInputdir", "parallel_schedule")), - ("--use-existing"), - ("--host","$host"), - ("--port","$masterPort"), - ("--user","$user"), - ("--dbname", "$dbName")); + $exitcode = system("$plainRegress", + ("--dlpath", $dlpath), + ("--inputdir", $pgregressInputdir), + ("--outputdir", $pgregressOutputdir), + ("--schedule", catfile("$pgregressInputdir", "parallel_schedule")), + ("--use-existing"), + ("--host","$host"), + ("--port","$masterPort"), + ("--user","$user"), + ("--dbname", "$dbName")); } if ($useMitmproxy) { - my $tries = 0; - until(system("lsof -i :$mitmPort") == 0) { - if ($tries > 60) { - die("waited for 60 seconds to start the mitmproxy, but it failed") - } - print("waiting: mitmproxy was not started yet\n"); - sleep(1); - $tries++; - } + my $tries = 0; + until(system("lsof -i :$mitmPort") == 0) { + if ($tries > 60) { + die("waited for 60 seconds to start the mitmproxy, but it failed") + } + print("waiting: mitmproxy was not started yet\n"); + sleep(1); + $tries++; + } } # Finally run the tests if ($vanillatest) { - RunVanillaTests(); + RunVanillaTests(); } elsif ($isolationtester) { - push(@arguments, "--dbname=regression"); - $exitcode = system("$isolationRegress", @arguments) + push(@arguments, "--dbname=regression"); + $exitcode = system("$isolationRegress", @arguments) } else { - if ($conninfo) - { - push(@arguments, "--dbname=$dbname"); - push(@arguments, "--use-existing"); - } - $exitcode = system("$plainRegress", @arguments); + if ($conninfo) + { + push(@arguments, "--dbname=$dbname"); + push(@arguments, "--use-existing"); + } + $exitcode = system("$plainRegress", @arguments); } system ("copy_modified"); @@ -1167,6 +1167,4 @@ if ($exitcode == 0) { } else { die "Failed in ". ($endTime - $startTime)." seconds. \n"; - } - diff --git a/src/test/regress/spec/isolation_acquire_distributed_locks.spec b/src/test/regress/spec/isolation_acquire_distributed_locks.spec index ba2d0af7f..5d57c0020 100644 --- a/src/test/regress/spec/isolation_acquire_distributed_locks.spec +++ b/src/test/regress/spec/isolation_acquire_distributed_locks.spec @@ -2,55 +2,55 @@ setup { - SELECT citus_set_coordinator_host('localhost', 57636); + SELECT citus_set_coordinator_host('localhost', 57636); - CREATE TABLE dist_table(a int); - CREATE TABLE citus_local_table(a int); - CREATE TABLE local_table(a int); - CREATE TABLE ref_table(a int); + CREATE TABLE dist_table(a int); + CREATE TABLE citus_local_table(a int); + CREATE TABLE local_table(a int); + CREATE TABLE ref_table(a int); - CREATE TABLE partitioned_table(a int) - PARTITION BY RANGE(a); + CREATE TABLE partitioned_table(a int) + PARTITION BY RANGE(a); - CREATE TABLE partition_1 PARTITION OF partitioned_table - FOR VALUES FROM (1) TO (11); + CREATE TABLE partition_1 PARTITION OF partitioned_table + FOR VALUES FROM (1) TO (11); - CREATE TABLE partition_2 PARTITION OF partitioned_table - FOR VALUES FROM (11) TO (21); + CREATE TABLE partition_2 PARTITION OF partitioned_table + FOR VALUES FROM (11) TO (21); - SELECT create_distributed_table('dist_table', 'a'); - SELECT create_reference_table('ref_table'); - SELECT citus_add_local_table_to_metadata('citus_local_table'); - SELECT create_distributed_table('partitioned_table', 'a'); + SELECT create_distributed_table('dist_table', 'a'); + SELECT create_reference_table('ref_table'); + SELECT citus_add_local_table_to_metadata('citus_local_table'); + SELECT create_distributed_table('partitioned_table', 'a'); - CREATE VIEW sub_view(a) AS - SELECT 2 * a AS a - FROM ref_table; + CREATE VIEW sub_view(a) AS + SELECT 2 * a AS a + FROM ref_table; - CREATE VIEW main_view AS - SELECT t1.a a1, t2.a a2, t3.a a3 - FROM dist_table t1 - JOIN citus_local_table t2 ON t1.a = t2.a - JOIN sub_view t3 ON t2.a = t3.a; + CREATE VIEW main_view AS + SELECT t1.a a1, t2.a a2, t3.a a3 + FROM dist_table t1 + JOIN citus_local_table t2 ON t1.a = t2.a + JOIN sub_view t3 ON t2.a = t3.a; - INSERT INTO dist_table SELECT n FROM generate_series(1, 5) n; - INSERT INTO citus_local_table SELECT n FROM generate_series(1, 5) n; - INSERT INTO local_table SELECT n FROM generate_series(1, 5) n; - INSERT INTO ref_table SELECT n FROM generate_series(1, 5) n; - INSERT INTO partitioned_table SELECT n FROM generate_series(8, 12) n; + INSERT INTO dist_table SELECT n FROM generate_series(1, 5) n; + INSERT INTO citus_local_table SELECT n FROM generate_series(1, 5) n; + INSERT INTO local_table SELECT n FROM generate_series(1, 5) n; + INSERT INTO ref_table SELECT n FROM generate_series(1, 5) n; + INSERT INTO partitioned_table SELECT n FROM generate_series(8, 12) n; } teardown { - DROP VIEW main_view; - DROP VIEW sub_view; - DROP TABLE dist_table; - DROP TABLE citus_local_table; - DROP TABLE local_table; - DROP TABLE ref_table; - DROP TABLE partitioned_table; + DROP VIEW main_view; + DROP VIEW sub_view; + DROP TABLE dist_table; + DROP TABLE citus_local_table; + DROP TABLE local_table; + DROP TABLE ref_table; + DROP TABLE partitioned_table; - SELECT citus_remove_node('localhost', 57636); + SELECT citus_remove_node('localhost', 57636); } // coordinator session @@ -58,77 +58,77 @@ session "coor" step "coor-begin" { - BEGIN; + BEGIN; } step "coor-acquire-aggresive-lock-on-dist-table" { - LOCK dist_table IN ACCESS EXCLUSIVE MODE; + LOCK dist_table IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-dist-table-nowait" { - LOCK dist_table IN ACCESS EXCLUSIVE MODE NOWAIT; + LOCK dist_table IN ACCESS EXCLUSIVE MODE NOWAIT; } step "coor-acquire-weak-lock-on-dist-table" { - LOCK dist_table IN ACCESS SHARE MODE; + LOCK dist_table IN ACCESS SHARE MODE; } step "coor-acquire-aggresive-lock-on-view" { - LOCK main_view IN ACCESS EXCLUSIVE MODE; + LOCK main_view IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-only-view" { - LOCK ONLY main_view IN ACCESS EXCLUSIVE MODE; + LOCK ONLY main_view IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-view-nowait" { - LOCK main_view IN ACCESS EXCLUSIVE MODE NOWAIT; + LOCK main_view IN ACCESS EXCLUSIVE MODE NOWAIT; } step "coor-lock-all" { - LOCK dist_table, citus_local_table, ref_table, main_view, sub_view, local_table IN ACCESS EXCLUSIVE MODE; + LOCK dist_table, citus_local_table, ref_table, main_view, sub_view, local_table IN ACCESS EXCLUSIVE MODE; } step "coor-read-dist-table" { - SELECT COUNT(*) FROM dist_table; + SELECT COUNT(*) FROM dist_table; } step "coor-read-ref-table" { - SELECT COUNT(*) FROM ref_table; + SELECT COUNT(*) FROM ref_table; } step "coor-acquire-aggresive-lock-on-partitioned-table" { - LOCK partitioned_table IN ACCESS EXCLUSIVE MODE; + LOCK partitioned_table IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-partitioned-table-with-*-syntax" { - LOCK partitioned_table * IN ACCESS EXCLUSIVE MODE; + LOCK partitioned_table * IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-only-partitioned-table" { - LOCK ONLY partitioned_table IN ACCESS EXCLUSIVE MODE; + LOCK ONLY partitioned_table IN ACCESS EXCLUSIVE MODE; } step "coor-acquire-aggresive-lock-on-ref-table" { - LOCK ref_table IN ACCESS EXCLUSIVE MODE; + LOCK ref_table IN ACCESS EXCLUSIVE MODE; } step "coor-rollback" { - ROLLBACK; + ROLLBACK; } // worker 1 xact session @@ -141,56 +141,56 @@ step "w1-start-session-level-connection" step "w1-begin" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "w1-read-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM dist_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM dist_table'); } step "w1-read-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM ref_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM ref_table'); } step "w1-read-citus-local-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM citus_local_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM citus_local_table'); } step "w1-acquire-aggressive-lock-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE'); + SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE'); } step "w1-lock-reference-table" { - SELECT run_commands_on_session_level_connection_to_node('LOCK ref_table IN ACCESS EXCLUSIVE MODE'); + SELECT run_commands_on_session_level_connection_to_node('LOCK ref_table IN ACCESS EXCLUSIVE MODE'); } step "w1-read-partitioned-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partitioned_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partitioned_table'); } step "w1-read-partition-of-partitioned-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partition_1'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partition_1'); } step "w1-read-main-view" { - SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM main_view'); + SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM main_view'); } step "w1-rollback" { - SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); + SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); } step "w1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } // worker 2 xact session @@ -203,21 +203,21 @@ step "w2-start-session-level-connection" step "w2-begin" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "w2-acquire-aggressive-lock-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE'); + SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE'); } step "w2-rollback" { - SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); + SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); } step "w2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } permutation "coor-begin" "coor-acquire-aggresive-lock-on-dist-table" "w1-start-session-level-connection" "w1-begin" "w1-read-dist-table" "coor-rollback" "w1-rollback" "w1-stop-connection" diff --git a/src/test/regress/spec/isolation_add_coordinator.spec b/src/test/regress/spec/isolation_add_coordinator.spec index 8d27fe05c..398feee4c 100644 --- a/src/test/regress/spec/isolation_add_coordinator.spec +++ b/src/test/regress/spec/isolation_add_coordinator.spec @@ -6,7 +6,7 @@ setup teardown { - SELECT 1; + SELECT 1; } session "s1" diff --git a/src/test/regress/spec/isolation_add_node_vs_reference_table_operations.spec b/src/test/regress/spec/isolation_add_node_vs_reference_table_operations.spec index aad3f1f29..f0cf369c3 100644 --- a/src/test/regress/spec/isolation_add_node_vs_reference_table_operations.spec +++ b/src/test/regress/spec/isolation_add_node_vs_reference_table_operations.spec @@ -2,24 +2,24 @@ // add single one of the nodes for the purpose of the test setup { - SET citus.shard_replication_factor to 1; - SELECT 1 FROM master_add_node('localhost', 57637); + SET citus.shard_replication_factor to 1; + SELECT 1 FROM master_add_node('localhost', 57637); - CREATE TABLE test_reference_table (test_id integer); - CREATE TABLE test_reference_table_2 (test_id integer); - INSERT INTO test_reference_table_2 VALUES (8); - SELECT create_reference_table('test_reference_table'); - CREATE TABLE test_table (x int, y int); - SELECT create_distributed_table('test_table','x'); + CREATE TABLE test_reference_table (test_id integer); + CREATE TABLE test_reference_table_2 (test_id integer); + INSERT INTO test_reference_table_2 VALUES (8); + SELECT create_reference_table('test_reference_table'); + CREATE TABLE test_table (x int, y int); + SELECT create_distributed_table('test_table','x'); } // ensure neither node's added for the remaining of the isolation tests teardown { - DROP TABLE IF EXISTS test_reference_table; - DROP TABLE IF EXISTS test_reference_table_2; - DROP TABLE IF EXISTS test_table; - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + DROP TABLE IF EXISTS test_reference_table; + DROP TABLE IF EXISTS test_reference_table_2; + DROP TABLE IF EXISTS test_table; + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; } session "s1" @@ -31,12 +31,12 @@ step "s1-begin" step "s1-add-second-worker" { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); } step "s1-drop-reference-table" { - DROP TABLE test_reference_table; + DROP TABLE test_reference_table; } step "s1-commit" @@ -50,74 +50,74 @@ session "s2" // loading the cache step "s2-load-metadata-cache" { - COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; + COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; } step "s2-copy-to-reference-table" { - COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; + COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; } step "s2-replicate-reference-tables" { - SET client_min_messages TO DEBUG2; - SELECT replicate_reference_tables(); - RESET client_min_messages; + SET client_min_messages TO DEBUG2; + SELECT replicate_reference_tables(); + RESET client_min_messages; } step "s2-insert-to-reference-table" { - INSERT INTO test_reference_table VALUES (6); + INSERT INTO test_reference_table VALUES (6); } step "s2-ddl-on-reference-table" { - CREATE INDEX reference_index ON test_reference_table(test_id); + CREATE INDEX reference_index ON test_reference_table(test_id); } step "s2-create-reference-table-2" { - SELECT create_reference_table('test_reference_table_2'); + SELECT create_reference_table('test_reference_table_2'); } step "s2-begin" { - BEGIN; + BEGIN; } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-content" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_reference_table', 'select count(*) from %s') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_reference_table', 'select count(*) from %s') + ORDER BY + nodeport; } step "s2-print-content-2" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_reference_table_2', 'select count(*) from %s') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_reference_table_2', 'select count(*) from %s') + ORDER BY + nodeport; } step "s2-print-index-count" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_reference_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_reference_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') + ORDER BY + nodeport; } // verify that copy/insert gets the invalidation and re-builts its metadata cache diff --git a/src/test/regress/spec/isolation_add_remove_node.spec b/src/test/regress/spec/isolation_add_remove_node.spec index 014592d25..0e2628aad 100644 --- a/src/test/regress/spec/isolation_add_remove_node.spec +++ b/src/test/regress/spec/isolation_add_remove_node.spec @@ -1,7 +1,7 @@ setup { - SELECT 1; - CREATE OR REPLACE FUNCTION public.wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) + SELECT 1; + CREATE OR REPLACE FUNCTION public.wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) RETURNS void LANGUAGE C STRICT AS 'citus'; @@ -9,93 +9,93 @@ setup teardown { - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-add-node-1" { - SELECT 1 FROM master_add_node('localhost', 57637); + SELECT 1 FROM master_add_node('localhost', 57637); } step "s1-add-node-2" { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); } step "s1-add-inactive-1" { - SELECT 1 FROM master_add_inactive_node('localhost', 57637); + SELECT 1 FROM master_add_inactive_node('localhost', 57637); } step "s1-activate-node-1" { - SELECT 1 FROM master_activate_node('localhost', 57637); + SELECT 1 FROM master_activate_node('localhost', 57637); } step "s1-disable-node-1" { - SELECT 1 FROM master_disable_node('localhost', 57637); - SELECT public.wait_until_metadata_sync(); + SELECT 1 FROM master_disable_node('localhost', 57637); + SELECT public.wait_until_metadata_sync(); } step "s1-remove-node-1" { - SELECT * FROM master_remove_node('localhost', 57637); + SELECT * FROM master_remove_node('localhost', 57637); } step "s1-abort" { - ABORT; + ABORT; } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-show-nodes" { - SELECT nodename, nodeport, isactive FROM pg_dist_node ORDER BY nodename, nodeport; + SELECT nodename, nodeport, isactive FROM pg_dist_node ORDER BY nodename, nodeport; } session "s2" step "s2-add-node-1" { - SELECT 1 FROM master_add_node('localhost', 57637); + SELECT 1 FROM master_add_node('localhost', 57637); } step "s2-add-node-2" { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); } step "s2-activate-node-1" { - SELECT 1 FROM master_activate_node('localhost', 57637); + SELECT 1 FROM master_activate_node('localhost', 57637); } step "s2-disable-node-1" { - SELECT 1 FROM master_disable_node('localhost', 57637); - SELECT public.wait_until_metadata_sync(); + SELECT 1 FROM master_disable_node('localhost', 57637); + SELECT public.wait_until_metadata_sync(); } step "s2-remove-node-1" { - SELECT * FROM master_remove_node('localhost', 57637); + SELECT * FROM master_remove_node('localhost', 57637); } step "s2-remove-node-2" { - SELECT * FROM master_remove_node('localhost', 57638); + SELECT * FROM master_remove_node('localhost', 57638); } // session 1 adds a node, session 2 removes it, should be ok diff --git a/src/test/regress/spec/isolation_blocking_move_multi_shard_commands.spec b/src/test/regress/spec/isolation_blocking_move_multi_shard_commands.spec index 610920cc4..f26c8a114 100644 --- a/src/test/regress/spec/isolation_blocking_move_multi_shard_commands.spec +++ b/src/test/regress/spec/isolation_blocking_move_multi_shard_commands.spec @@ -3,20 +3,20 @@ setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -24,22 +24,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes') FROM selected_shard; + SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes') FROM selected_shard; } step "s1-end" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -56,7 +56,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-select" @@ -88,22 +88,22 @@ step "s2-upsert" step "s2-copy" { - COPY logical_replicate_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5\n15,30"' WITH CSV; + COPY logical_replicate_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5\n15,30"' WITH CSV; } step "s2-truncate" { - TRUNCATE logical_replicate_placement; + TRUNCATE logical_replicate_placement; } step "s2-alter-table" { - ALTER TABLE logical_replicate_placement ADD COLUMN z INT; + ALTER TABLE logical_replicate_placement ADD COLUMN z INT; } step "s2-end" { - COMMIT; + COMMIT; } permutation "s1-begin" "s2-begin" "s2-insert" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" @@ -114,4 +114,3 @@ permutation "s1-insert" "s1-begin" "s2-begin" "s2-select" "s1-move-placement" "s permutation "s1-begin" "s2-begin" "s2-copy" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" permutation "s1-insert" "s1-begin" "s2-begin" "s2-truncate" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" permutation "s1-begin" "s2-begin" "s2-alter-table" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" - diff --git a/src/test/regress/spec/isolation_blocking_move_multi_shard_commands_on_mx.spec b/src/test/regress/spec/isolation_blocking_move_multi_shard_commands_on_mx.spec index 2592d6b1b..9f0c892da 100644 --- a/src/test/regress/spec/isolation_blocking_move_multi_shard_commands_on_mx.spec +++ b/src/test/regress/spec/isolation_blocking_move_multi_shard_commands_on_mx.spec @@ -3,48 +3,48 @@ setup { - SET citus.enable_metadata_sync TO off; - CREATE OR REPLACE FUNCTION start_session_level_connection_to_node(text, integer) - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$start_session_level_connection_to_node$$; + SET citus.enable_metadata_sync TO off; + CREATE OR REPLACE FUNCTION start_session_level_connection_to_node(text, integer) + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$start_session_level_connection_to_node$$; - CREATE OR REPLACE FUNCTION run_commands_on_session_level_connection_to_node(text) - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$run_commands_on_session_level_connection_to_node$$; + CREATE OR REPLACE FUNCTION run_commands_on_session_level_connection_to_node(text) + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$run_commands_on_session_level_connection_to_node$$; - CREATE OR REPLACE FUNCTION stop_session_level_connection_to_node() - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$stop_session_level_connection_to_node$$; - RESET citus.enable_metadata_sync; + CREATE OR REPLACE FUNCTION stop_session_level_connection_to_node() + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$stop_session_level_connection_to_node$$; + RESET citus.enable_metadata_sync; - -- start_metadata_sync_to_node can not be run inside a transaction block - -- following is a workaround to overcome that - -- port numbers are hard coded at the moment - SELECT master_run_on_worker( - ARRAY['localhost']::text[], - ARRAY[57636]::int[], - ARRAY[format('SELECT start_metadata_sync_to_node(''%s'', %s)', nodename, nodeport)]::text[], - false) - FROM pg_dist_node; + -- start_metadata_sync_to_node can not be run inside a transaction block + -- following is a workaround to overcome that + -- port numbers are hard coded at the moment + SELECT master_run_on_worker( + ARRAY['localhost']::text[], + ARRAY[57636]::int[], + ARRAY[format('SELECT start_metadata_sync_to_node(''%s'', %s)', nodename, nodeport)]::text[], + false) + FROM pg_dist_node; - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -52,22 +52,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes') FROM selected_shard; + SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes') FROM selected_shard; } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -84,12 +84,12 @@ session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-select" @@ -114,16 +114,15 @@ step "s2-update" step "s2-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } permutation "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-insert" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-update" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-delete" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" - diff --git a/src/test/regress/spec/isolation_blocking_move_single_shard_commands.spec b/src/test/regress/spec/isolation_blocking_move_single_shard_commands.spec index c834a2916..250732c60 100644 --- a/src/test/regress/spec/isolation_blocking_move_single_shard_commands.spec +++ b/src/test/regress/spec/isolation_blocking_move_single_shard_commands.spec @@ -2,19 +2,19 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -22,7 +22,7 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" @@ -32,12 +32,12 @@ step "s1-move-placement" step "s1-end" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -47,7 +47,7 @@ step "s1-insert" step "s1-get-shard-distribution" { - select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 and shardid in (SELECT * FROM selected_shard) order by nodeport; + select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 and shardid in (SELECT * FROM selected_shard) order by nodeport; } session "s2" @@ -91,7 +91,7 @@ step "s2-upsert" step "s2-end" { - COMMIT; + COMMIT; } permutation "s1-begin" "s2-begin" "s2-insert" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" @@ -100,4 +100,3 @@ permutation "s1-insert" "s1-begin" "s2-begin" "s2-update" "s1-move-placement" "s permutation "s1-insert" "s1-begin" "s2-begin" "s2-delete" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" permutation "s1-insert" "s1-begin" "s2-begin" "s2-select" "s1-move-placement" "s2-end" "s1-end" "s1-get-shard-distribution" permutation "s1-insert" "s1-begin" "s2-begin" "s2-select-for-update" "s1-move-placement" "s2-end" "s1-end" "s1-get-shard-distribution" - diff --git a/src/test/regress/spec/isolation_blocking_move_single_shard_commands_on_mx.spec b/src/test/regress/spec/isolation_blocking_move_single_shard_commands_on_mx.spec index 5b102917d..40b81e899 100644 --- a/src/test/regress/spec/isolation_blocking_move_single_shard_commands_on_mx.spec +++ b/src/test/regress/spec/isolation_blocking_move_single_shard_commands_on_mx.spec @@ -2,47 +2,47 @@ // so setting the corresponding shard here is useful setup { - SET citus.enable_ddl_propagation TO OFF; - CREATE OR REPLACE FUNCTION start_session_level_connection_to_node(text, integer) - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$start_session_level_connection_to_node$$; + SET citus.enable_ddl_propagation TO OFF; + CREATE OR REPLACE FUNCTION start_session_level_connection_to_node(text, integer) + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$start_session_level_connection_to_node$$; - CREATE OR REPLACE FUNCTION run_commands_on_session_level_connection_to_node(text) - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$run_commands_on_session_level_connection_to_node$$; + CREATE OR REPLACE FUNCTION run_commands_on_session_level_connection_to_node(text) + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$run_commands_on_session_level_connection_to_node$$; - CREATE OR REPLACE FUNCTION stop_session_level_connection_to_node() - RETURNS void - LANGUAGE C STRICT VOLATILE - AS 'citus', $$stop_session_level_connection_to_node$$; - RESET citus.enable_ddl_propagation; + CREATE OR REPLACE FUNCTION stop_session_level_connection_to_node() + RETURNS void + LANGUAGE C STRICT VOLATILE + AS 'citus', $$stop_session_level_connection_to_node$$; + RESET citus.enable_ddl_propagation; - -- start_metadata_sync_to_node can not be run inside a transaction block - -- following is a workaround to overcome that - -- port numbers are hard coded at the moment - SELECT master_run_on_worker( - ARRAY['localhost']::text[], - ARRAY[57636]::int[], - ARRAY[format('SELECT start_metadata_sync_to_node(''%s'', %s)', nodename, nodeport)]::text[], - false) - FROM pg_dist_node; + -- start_metadata_sync_to_node can not be run inside a transaction block + -- following is a workaround to overcome that + -- port numbers are hard coded at the moment + SELECT master_run_on_worker( + ARRAY['localhost']::text[], + ARRAY[57636]::int[], + ARRAY[format('SELECT start_metadata_sync_to_node(''%s'', %s)', nodename, nodeport)]::text[], + false) + FROM pg_dist_node; - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; - SET citus.shard_count TO 8; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -50,79 +50,79 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" { - INSERT INTO logical_replicate_placement VALUES (15, 15); + INSERT INTO logical_replicate_placement VALUES (15, 15); } step "s1-get-shard-distribution" { - select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 and shardid in (SELECT * FROM selected_shard) order by nodeport; + select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 and shardid in (SELECT * FROM selected_shard) order by nodeport; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement ORDER BY y'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement ORDER BY y'); } step "s2-insert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO logical_replicate_placement VALUES (15, 15)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO logical_replicate_placement VALUES (15, 15)'); } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement WHERE x=15 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement WHERE x=15 FOR UPDATE'); } step "s2-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM logical_replicate_placement WHERE x = 15'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM logical_replicate_placement WHERE x = 15'); } step "s2-update" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE logical_replicate_placement SET y = y + 1 WHERE x = 15'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE logical_replicate_placement SET y = y + 1 WHERE x = 15'); } step "s2-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } permutation "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-insert" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" @@ -130,4 +130,3 @@ permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-delete" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select-for-update" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" - diff --git a/src/test/regress/spec/isolation_blocking_shard_split.spec b/src/test/regress/spec/isolation_blocking_shard_split.spec index 57876a8d6..77c64eee6 100644 --- a/src/test/regress/spec/isolation_blocking_shard_split.spec +++ b/src/test/regress/spec/isolation_blocking_shard_split.spec @@ -2,25 +2,25 @@ setup { - SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; + SET citus.shard_count to 2; + SET citus.shard_replication_factor to 1; SELECT setval('pg_dist_shardid_seq', 1500000); - -- Cleanup any orphan shards that might be left over from a previous run. - CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() - RETURNS VOID - AS 'citus' - LANGUAGE C STRICT VOLATILE; + -- Cleanup any orphan shards that might be left over from a previous run. + CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() + RETURNS VOID + AS 'citus' + LANGUAGE C STRICT VOLATILE; - CREATE TABLE to_split_table (id int, value int); - SELECT create_distributed_table('to_split_table', 'id'); + CREATE TABLE to_split_table (id int, value int); + SELECT create_distributed_table('to_split_table', 'id'); } teardown { - SELECT run_try_drop_marked_resources(); + SELECT run_try_drop_marked_resources(); - DROP TABLE to_split_table; + DROP TABLE to_split_table; } session "s1" @@ -37,51 +37,51 @@ step "s1-begin" // cache all placements step "s1-load-cache" { - -- Indirect way to load cache. - TRUNCATE to_split_table; + -- Indirect way to load cache. + TRUNCATE to_split_table; } step "s1-insert" { - -- Id '123456789' maps to shard 1500002. - SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); + -- Id '123456789' maps to shard 1500002. + SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); - INSERT INTO to_split_table VALUES (123456789, 1); + INSERT INTO to_split_table VALUES (123456789, 1); } step "s1-update" { - UPDATE to_split_table SET value = 111 WHERE id = 123456789; + UPDATE to_split_table SET value = 111 WHERE id = 123456789; } step "s1-delete" { - DELETE FROM to_split_table WHERE id = 123456789; + DELETE FROM to_split_table WHERE id = 123456789; } step "s1-select" { - SELECT count(*) FROM to_split_table WHERE id = 123456789; + SELECT count(*) FROM to_split_table WHERE id = 123456789; } step "s1-ddl" { - CREATE INDEX test_table_index ON to_split_table(id); + CREATE INDEX test_table_index ON to_split_table(id); } step "s1-copy" { - COPY to_split_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY to_split_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-lock-to-split-shard" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN; LOCK TABLE to_split_table_1500002 IN ACCESS SHARE MODE;'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN; LOCK TABLE to_split_table_1500002 IN ACCESS SHARE MODE;'); } step "s1-start-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s1-stop-connection" @@ -104,88 +104,88 @@ step "s1-release-split-advisory-lock" step "s1-run-cleaner" { - SELECT run_try_drop_marked_resources(); + SELECT run_try_drop_marked_resources(); } step "s1-show-pg_dist_cleanup" { - SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; + SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; } step "s1-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500001, - ARRAY['-1073741824'], - ARRAY[1, 2], - 'block_writes'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500001, + ARRAY['-1073741824'], + ARRAY[1, 2], + 'block_writes'); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-print-locks" { SELECT * FROM master_run_on_worker( - ARRAY['localhost']::text[], - ARRAY[57638]::int[], - ARRAY[ - 'SELECT CONCAT(relation::regclass, ''-'', locktype, ''-'', mode) AS LockInfo FROM pg_locks - WHERE relation::regclass::text = ''to_split_table_1500002'';' - ]::text[], - false); + ARRAY['localhost']::text[], + ARRAY[57638]::int[], + ARRAY[ + 'SELECT CONCAT(relation::regclass, ''-'', locktype, ''-'', mode) AS LockInfo FROM pg_locks + WHERE relation::regclass::text = ''to_split_table_1500002'';' + ]::text[], + false); } step "s2-show-pg_dist_cleanup" { - SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; + SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; } step "s2-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500002, - ARRAY['1073741824'], - ARRAY[1, 2], - 'block_writes'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500002, + ARRAY['1073741824'], + ARRAY[1, 2], + 'block_writes'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('to_split_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('to_split_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT id, value FROM to_split_table ORDER BY id, value; + -- rows + SELECT id, value FROM to_split_table ORDER BY id, value; } step "s2-print-index-count" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('to_split_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('to_split_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') + ORDER BY + nodeport; } // Run shard split while concurrently performing DML and index creation diff --git a/src/test/regress/spec/isolation_blocking_shard_split_with_fkey_to_reference.spec b/src/test/regress/spec/isolation_blocking_shard_split_with_fkey_to_reference.spec index b3baebd9a..f444f4a61 100644 --- a/src/test/regress/spec/isolation_blocking_shard_split_with_fkey_to_reference.spec +++ b/src/test/regress/spec/isolation_blocking_shard_split_with_fkey_to_reference.spec @@ -2,26 +2,26 @@ setup { SELECT setval('pg_dist_shardid_seq', 1500000); SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; + SET citus.shard_replication_factor to 1; - CREATE TABLE reference_table (id int PRIMARY KEY, value int); - SELECT create_reference_table('reference_table'); + CREATE TABLE reference_table (id int PRIMARY KEY, value int); + SELECT create_reference_table('reference_table'); - CREATE TABLE table_to_split (id int, value int); - SELECT create_distributed_table('table_to_split', 'id'); + CREATE TABLE table_to_split (id int, value int); + SELECT create_distributed_table('table_to_split', 'id'); } teardown { - -- Cleanup any orphan shards that might be left over from a previous run. - CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() - RETURNS VOID - AS 'citus' - LANGUAGE C STRICT VOLATILE; - SELECT run_try_drop_marked_resources(); + -- Cleanup any orphan shards that might be left over from a previous run. + CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() + RETURNS VOID + AS 'citus' + LANGUAGE C STRICT VOLATILE; + SELECT run_try_drop_marked_resources(); - DROP TABLE table_to_split CASCADE; - DROP TABLE reference_table CASCADE; + DROP TABLE table_to_split CASCADE; + DROP TABLE reference_table CASCADE; } session "s1" @@ -33,72 +33,72 @@ step "s1-begin" step "s1-insert" { - INSERT INTO reference_table VALUES (5, 10); + INSERT INTO reference_table VALUES (5, 10); } step "s1-update" { - UPDATE reference_table SET value = 5 WHERE id = 5; + UPDATE reference_table SET value = 5 WHERE id = 5; } step "s1-delete" { - DELETE FROM reference_table WHERE id = 5; + DELETE FROM reference_table WHERE id = 5; } step "s1-ddl" { - CREATE INDEX reference_table_index ON reference_table(id); + CREATE INDEX reference_table_index ON reference_table(id); } step "s1-copy" { - COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500002, - ARRAY['-1073741824'], - ARRAY[1, 2], - 'block_writes'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500002, + ARRAY['-1073741824'], + ARRAY[1, 2], + 'block_writes'); } step "s2-add-fkey" { - ALTER TABLE table_to_split ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); + ALTER TABLE table_to_split ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('table_to_split', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('table_to_split', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT id, value FROM table_to_split ORDER BY id, value; + -- rows + SELECT id, value FROM table_to_split ORDER BY id, value; } // Run shard split while concurrently performing an DML and index creation on the diff --git a/src/test/regress/spec/isolation_citus_dist_activity.spec b/src/test/regress/spec/isolation_citus_dist_activity.spec index d2f957d44..6b9d52187 100644 --- a/src/test/regress/spec/isolation_citus_dist_activity.spec +++ b/src/test/regress/spec/isolation_citus_dist_activity.spec @@ -44,17 +44,17 @@ step "s1-alter-table" step "s1-select" { - SELECT count(*) FROM test_table; + SELECT count(*) FROM test_table; } step "s1-select-router" { - SELECT count(*) FROM test_table WHERE column1 = 55; + SELECT count(*) FROM test_table WHERE column1 = 55; } step "s1-insert" { - INSERT INTO test_table VALUES (100, 100); + INSERT INTO test_table VALUES (100, 100); } step "s1-commit" @@ -66,39 +66,39 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-rollback" { - ROLLBACK; + ROLLBACK; } step "s2-sleep" { - SELECT pg_sleep(0.5); + SELECT pg_sleep(0.5); } step "s2-view-dist" { - SELECT query, citus_nodename_for_nodeid(citus_nodeid_for_gpid(global_pid)), citus_nodeport_for_nodeid(citus_nodeid_for_gpid(global_pid)), state, wait_event_type, wait_event, usename, datname FROM citus_dist_stat_activity WHERE query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%BEGIN%'), ('%pg_catalog.pg_isolation_test_session_is_blocked%'), ('%citus_add_node%'), ('%csa_from_one_node%')) AND backend_type = 'client backend' ORDER BY query DESC; + SELECT query, citus_nodename_for_nodeid(citus_nodeid_for_gpid(global_pid)), citus_nodeport_for_nodeid(citus_nodeid_for_gpid(global_pid)), state, wait_event_type, wait_event, usename, datname FROM citus_dist_stat_activity WHERE query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%BEGIN%'), ('%pg_catalog.pg_isolation_test_session_is_blocked%'), ('%citus_add_node%'), ('%csa_from_one_node%')) AND backend_type = 'client backend' ORDER BY query DESC; } session "s3" step "s3-begin" { - BEGIN; + BEGIN; } step "s3-rollback" { - ROLLBACK; + ROLLBACK; } step "s3-view-worker" { - SELECT query, citus_nodename_for_nodeid(citus_nodeid_for_gpid(global_pid)), citus_nodeport_for_nodeid(citus_nodeid_for_gpid(global_pid)), state, wait_event_type, wait_event, usename, datname FROM citus_stat_activity WHERE query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%csa_from_one_node%')) AND is_worker_query = true AND backend_type = 'client backend' ORDER BY query DESC; + SELECT query, citus_nodename_for_nodeid(citus_nodeid_for_gpid(global_pid)), citus_nodeport_for_nodeid(citus_nodeid_for_gpid(global_pid)), state, wait_event_type, wait_event, usename, datname FROM citus_stat_activity WHERE query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%csa_from_one_node%')) AND is_worker_query = true AND backend_type = 'client backend' ORDER BY query DESC; } // we prefer to sleep before "s2-view-dist" so that we can ensure diff --git a/src/test/regress/spec/isolation_citus_locks.spec b/src/test/regress/spec/isolation_citus_locks.spec index cfad78fc5..026e5edaf 100644 --- a/src/test/regress/spec/isolation_citus_locks.spec +++ b/src/test/regress/spec/isolation_citus_locks.spec @@ -18,32 +18,32 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-alter-dist-table" { - ALTER TABLE dist_table ADD COLUMN data text; + ALTER TABLE dist_table ADD COLUMN data text; } step "s1-record-gpid" { - SELECT citus_backend_gpid() INTO selected_gpid; + SELECT citus_backend_gpid() INTO selected_gpid; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-show-locks" { - SELECT relation_name, citus_nodename_for_nodeid(nodeid), citus_nodeport_for_nodeid(nodeid), mode - FROM citus_locks - WHERE global_pid IN (SELECT * FROM selected_gpid) AND relation_name LIKE 'dist_table%' - ORDER BY 1, 2, 3, 4; + SELECT relation_name, citus_nodename_for_nodeid(nodeid), citus_nodeport_for_nodeid(nodeid), mode + FROM citus_locks + WHERE global_pid IN (SELECT * FROM selected_gpid) AND relation_name LIKE 'dist_table%' + ORDER BY 1, 2, 3, 4; } permutation "s1-record-gpid" "s1-begin" "s2-show-locks" "s1-alter-dist-table" "s2-show-locks" "s1-commit" "s2-show-locks" diff --git a/src/test/regress/spec/isolation_concurrent_dml.spec b/src/test/regress/spec/isolation_concurrent_dml.spec index 937880671..f2799a936 100644 --- a/src/test/regress/spec/isolation_concurrent_dml.spec +++ b/src/test/regress/spec/isolation_concurrent_dml.spec @@ -1,7 +1,7 @@ setup { CREATE TABLE test_concurrent_dml (test_id integer NOT NULL, data text); - SET citus.shard_replication_factor TO 2; + SET citus.shard_replication_factor TO 2; SELECT create_distributed_table('test_concurrent_dml', 'test_id', 'hash', shard_count:=4); } diff --git a/src/test/regress/spec/isolation_concurrent_move_create_table.spec b/src/test/regress/spec/isolation_concurrent_move_create_table.spec index 48022425e..8f43be3cf 100644 --- a/src/test/regress/spec/isolation_concurrent_move_create_table.spec +++ b/src/test/regress/spec/isolation_concurrent_move_create_table.spec @@ -1,21 +1,21 @@ setup { - CREATE TABLE concurrent_table_1(id int PRIMARY KEY); - CREATE TABLE concurrent_table_2(id int PRIMARY KEY); - CREATE TABLE concurrent_table_3(id int PRIMARY KEY); - CREATE TABLE concurrent_table_4(id int PRIMARY KEY); - CREATE TABLE concurrent_table_5(id int PRIMARY KEY); + CREATE TABLE concurrent_table_1(id int PRIMARY KEY); + CREATE TABLE concurrent_table_2(id int PRIMARY KEY); + CREATE TABLE concurrent_table_3(id int PRIMARY KEY); + CREATE TABLE concurrent_table_4(id int PRIMARY KEY); + CREATE TABLE concurrent_table_5(id int PRIMARY KEY); - SET citus.shard_replication_factor TO 1; - SELECT create_distributed_table('concurrent_table_1', 'id', colocate_with := 'none'); - SELECT create_distributed_table('concurrent_table_4', 'id'); + SET citus.shard_replication_factor TO 1; + SELECT create_distributed_table('concurrent_table_1', 'id', colocate_with := 'none'); + SELECT create_distributed_table('concurrent_table_4', 'id'); - SELECT nodeid INTO first_node_id FROM pg_dist_node WHERE nodeport = 57637; + SELECT nodeid INTO first_node_id FROM pg_dist_node WHERE nodeport = 57637; } teardown { - DROP TABLE concurrent_table_1, concurrent_table_2, concurrent_table_3, concurrent_table_4, concurrent_table_5, first_node_id CASCADE; + DROP TABLE concurrent_table_1, concurrent_table_2, concurrent_table_3, concurrent_table_4, concurrent_table_5, first_node_id CASCADE; } session "s1" @@ -23,21 +23,21 @@ session "s1" step "s1-move-shard-logical" { - WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) - SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638) FROM shardid; + WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) + SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638) FROM shardid; } step "s1-move-shard-block" { - WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) - SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638, 'block_writes') FROM shardid; + WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) + SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638, 'block_writes') FROM shardid; } step "s1-split-block" { - WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) - SELECT citus_split_shard_by_split_points( - shardid.shardid, ARRAY['2113265921'], ARRAY[(SELECT * FROM first_node_id), (SELECT * FROM first_node_id)], 'block_writes') FROM shardid; + WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_1'::regclass ORDER BY shardid LIMIT 1) + SELECT citus_split_shard_by_split_points( + shardid.shardid, ARRAY['2113265921'], ARRAY[(SELECT * FROM first_node_id), (SELECT * FROM first_node_id)], 'block_writes') FROM shardid; } @@ -45,44 +45,44 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-create_distributed_table" { - SELECT create_distributed_table('concurrent_table_2', 'id', colocate_with := 'concurrent_table_1'); + SELECT create_distributed_table('concurrent_table_2', 'id', colocate_with := 'concurrent_table_1'); } step "s2-commit" { - COMMIT; + COMMIT; } session "s3" step "s3-create_distributed_table" { - SELECT create_distributed_table('concurrent_table_3', 'id', colocate_with := 'concurrent_table_1'); + SELECT create_distributed_table('concurrent_table_3', 'id', colocate_with := 'concurrent_table_1'); } step "s3-sanity-check" { - SELECT count(*) FROM pg_dist_shard LEFT JOIN pg_dist_shard_placement USING(shardid) WHERE nodename IS NULL; + SELECT count(*) FROM pg_dist_shard LEFT JOIN pg_dist_shard_placement USING(shardid) WHERE nodename IS NULL; } step "s3-sanity-check-2" { - SELECT count(*) FROM concurrent_table_1 JOIN concurrent_table_2 USING (id); + SELECT count(*) FROM concurrent_table_1 JOIN concurrent_table_2 USING (id); } step "s3-sanity-check-3" { - SELECT count(DISTINCT colocationid) FROM pg_dist_partition WHERE logicalrelid IN ('concurrent_table_4', 'concurrent_table_5'); + SELECT count(DISTINCT colocationid) FROM pg_dist_partition WHERE logicalrelid IN ('concurrent_table_4', 'concurrent_table_5'); } step "s3-sanity-check-4" { - SELECT count(*) FROM concurrent_table_4 JOIN concurrent_table_5 USING (id); + SELECT count(*) FROM concurrent_table_4 JOIN concurrent_table_5 USING (id); } @@ -90,36 +90,36 @@ session "s4" step "s4-begin" { - BEGIN; + BEGIN; } step "s4-commit" { - commit; + commit; } step "s4-move-shard-logical" { - WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_4'::regclass ORDER BY shardid LIMIT 1) - SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638) FROM shardid; + WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_4'::regclass ORDER BY shardid LIMIT 1) + SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638) FROM shardid; } step "s4-move-shard-block" { - WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_4'::regclass ORDER BY shardid LIMIT 1) - SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638, 'block_writes') FROM shardid; + WITH shardid AS (SELECT shardid FROM pg_dist_shard where logicalrelid = 'concurrent_table_4'::regclass ORDER BY shardid LIMIT 1) + SELECT citus_move_Shard_placement(shardid.shardid, 'localhost', 57637, 'localhost', 57638, 'block_writes') FROM shardid; } session "s5" step "s5-setup-rep-factor" { - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; } step "s5-create_implicit_colocated_distributed_table" { - SELECT create_distributed_table('concurrent_table_5', 'id'); + SELECT create_distributed_table('concurrent_table_5', 'id'); } @@ -134,4 +134,3 @@ permutation "s2-begin" "s2-create_distributed_table" "s1-split-block" "s2-commi // same test above, but this time implicitly colocated tables permutation "s4-begin" "s4-move-shard-logical" "s5-setup-rep-factor" "s5-create_implicit_colocated_distributed_table" "s4-commit" "s3-sanity-check" "s3-sanity-check-3" "s3-sanity-check-4" permutation "s4-begin" "s4-move-shard-block" "s5-setup-rep-factor" "s5-create_implicit_colocated_distributed_table" "s4-commit" "s3-sanity-check" "s3-sanity-check-3" "s3-sanity-check-4" - diff --git a/src/test/regress/spec/isolation_copy_placement_vs_copy_placement.spec b/src/test/regress/spec/isolation_copy_placement_vs_copy_placement.spec index 258463293..671e46faf 100644 --- a/src/test/regress/spec/isolation_copy_placement_vs_copy_placement.spec +++ b/src/test/regress/spec/isolation_copy_placement_vs_copy_placement.spec @@ -2,18 +2,18 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 2; - SET citus.shard_replication_factor TO 2; - CREATE TABLE test_hash_table (x int, y int); - SELECT create_distributed_table('test_hash_table', 'x'); + SET citus.shard_count TO 2; + SET citus.shard_replication_factor TO 2; + CREATE TABLE test_hash_table (x int, y int); + SELECT create_distributed_table('test_hash_table', 'x'); - SELECT get_shard_id_for_distribution_column('test_hash_table', 5) INTO selected_shard_for_test_table; + SELECT get_shard_id_for_distribution_column('test_hash_table', 5) INTO selected_shard_for_test_table; } teardown { - DROP TABLE test_hash_table; - DROP TABLE selected_shard_for_test_table; + DROP TABLE test_hash_table; + DROP TABLE selected_shard_for_test_table; } session "s1" @@ -23,29 +23,29 @@ session "s1" // but with copy all placements are cached step "s1-load-cache" { - COPY test_hash_table FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; + COPY test_hash_table FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; } step "s1-repair-placement" { - SELECT citus_copy_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638); + SELECT citus_copy_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638); } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-delete-inactive" { - DELETE FROM pg_dist_shard_placement WHERE shardid IN (SELECT * FROM selected_shard_for_test_table) AND nodeport = 57638; + DELETE FROM pg_dist_shard_placement WHERE shardid IN (SELECT * FROM selected_shard_for_test_table) AND nodeport = 57638; } step "s2-repair-placement" { - SELECT citus_copy_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, transfer_mode := 'block_writes'); + SELECT citus_copy_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, transfer_mode := 'block_writes'); } // since test_hash_table has rep > 1 simple select query doesn't hit all placements @@ -53,12 +53,12 @@ step "s2-repair-placement" // but with copy all placements are cached step "s2-load-cache" { - COPY test_hash_table FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; + COPY test_hash_table FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; } step "s2-commit" { - COMMIT; + COMMIT; } // two concurrent shard repairs on the same shard diff --git a/src/test/regress/spec/isolation_copy_placement_vs_modification.spec b/src/test/regress/spec/isolation_copy_placement_vs_modification.spec index 4496a4fa6..858ecf7b9 100644 --- a/src/test/regress/spec/isolation_copy_placement_vs_modification.spec +++ b/src/test/regress/spec/isolation_copy_placement_vs_modification.spec @@ -2,18 +2,18 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 2; - SET citus.shard_replication_factor TO 2; - CREATE TABLE test_repair_placement_vs_modification (x int, y int); - SELECT create_distributed_table('test_repair_placement_vs_modification', 'x'); + SET citus.shard_count TO 2; + SET citus.shard_replication_factor TO 2; + CREATE TABLE test_repair_placement_vs_modification (x int, y int); + SELECT create_distributed_table('test_repair_placement_vs_modification', 'x'); - SELECT get_shard_id_for_distribution_column('test_repair_placement_vs_modification', 5) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('test_repair_placement_vs_modification', 5) INTO selected_shard; } teardown { - DROP TABLE test_repair_placement_vs_modification; - DROP TABLE selected_shard; + DROP TABLE test_repair_placement_vs_modification; + DROP TABLE selected_shard; } session "s1" @@ -21,93 +21,93 @@ session "s1" step "s1-begin" { BEGIN; - SET LOCAL citus.select_opens_transaction_block TO off; + SET LOCAL citus.select_opens_transaction_block TO off; } // since test_repair_placement_vs_modification has rep > 1 simple select query doesn't hit all placements // hence not all placements are cached step "s1-load-cache" { - TRUNCATE test_repair_placement_vs_modification; + TRUNCATE test_repair_placement_vs_modification; } step "s1-insert" { - INSERT INTO test_repair_placement_vs_modification VALUES (5, 10); + INSERT INTO test_repair_placement_vs_modification VALUES (5, 10); } step "s1-update" { - UPDATE test_repair_placement_vs_modification SET y = 5 WHERE x = 5; + UPDATE test_repair_placement_vs_modification SET y = 5 WHERE x = 5; } step "s1-delete" { - DELETE FROM test_repair_placement_vs_modification WHERE x = 5; + DELETE FROM test_repair_placement_vs_modification WHERE x = 5; } step "s1-select" { - SELECT count(*) FROM test_repair_placement_vs_modification WHERE x = 5; + SELECT count(*) FROM test_repair_placement_vs_modification WHERE x = 5; } step "s1-ddl" { - CREATE INDEX test_repair_placement_vs_modification_index ON test_repair_placement_vs_modification(x); + CREATE INDEX test_repair_placement_vs_modification_index ON test_repair_placement_vs_modification(x); } step "s1-copy" { - COPY test_repair_placement_vs_modification FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; + COPY test_repair_placement_vs_modification FROM PROGRAM 'echo 1,1 && echo 2,2 && echo 3,3 && echo 4,4 && echo 5,5' WITH CSV; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-delete-inactive" { - DELETE FROM pg_dist_shard_placement WHERE shardid IN (SELECT * FROM selected_shard) AND nodeport = 57638; + DELETE FROM pg_dist_shard_placement WHERE shardid IN (SELECT * FROM selected_shard) AND nodeport = 57638; } step "s2-repair-placement" { - SELECT citus_copy_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, transfer_mode := 'block_writes'); + SELECT citus_copy_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, transfer_mode := 'block_writes'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-content" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_repair_placement_vs_modification', 'select y from %s WHERE x = 5') - WHERE - shardid IN (SELECT * FROM selected_shard) - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_repair_placement_vs_modification', 'select y from %s WHERE x = 5') + WHERE + shardid IN (SELECT * FROM selected_shard) + ORDER BY + nodeport; } step "s2-print-index-count" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_repair_placement_vs_modification', 'select count(*) from pg_indexes WHERE tablename = ''%s''') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_repair_placement_vs_modification', 'select count(*) from pg_indexes WHERE tablename = ''%s''') + ORDER BY + nodeport; } // repair a placement while concurrently performing an update/delete/insert/copy diff --git a/src/test/regress/spec/isolation_copy_vs_all_on_mx.spec b/src/test/regress/spec/isolation_copy_vs_all_on_mx.spec index 2990bf5cd..8f45679d9 100644 --- a/src/test/regress/spec/isolation_copy_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_copy_vs_all_on_mx.spec @@ -2,9 +2,9 @@ setup { - CREATE TABLE copy_table(id integer, value integer); - SELECT create_distributed_table('copy_table', 'id'); - COPY copy_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + CREATE TABLE copy_table(id integer, value integer); + SELECT create_distributed_table('copy_table', 'id'); + COPY copy_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -30,17 +30,17 @@ step "s1-begin-on-worker" step "s1-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY copy_table FROM PROGRAM ''echo 5, 50 && echo 6, 60 && echo 7, 70''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY copy_table FROM PROGRAM ''echo 5, 50 && echo 6, 60 && echo 7, 70''WITH CSV'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -48,7 +48,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -65,22 +65,22 @@ step "s2-begin-on-worker" step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY copy_table FROM PROGRAM ''echo 5, 50 && echo 8, 80 && echo 9, 90''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY copy_table FROM PROGRAM ''echo 5, 50 && echo 8, 80 && echo 9, 90''WITH CSV'); } step "s2-coordinator-drop" { - DROP TABLE copy_table; + DROP TABLE copy_table; } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM copy_table WHERE id=5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM copy_table WHERE id=5 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY copy_table_index ON copy_table(id); + CREATE INDEX CONCURRENTLY copy_table_index ON copy_table(id); } step "s2-commit-worker" @@ -95,7 +95,7 @@ step "s2-stop-connection" step "s2-commit" { - COMMIT; + COMMIT; } // We use this as a way to wait for s2-ddl-create-index-concurrently to // complete. We know it can complete after s1-commit has succeeded, this way @@ -107,7 +107,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM copy_table; + SELECT COUNT(*) FROM copy_table; } diff --git a/src/test/regress/spec/isolation_create_citus_local_table.spec b/src/test/regress/spec/isolation_create_citus_local_table.spec index 4e02e0e57..95b2d20f8 100644 --- a/src/test/regress/spec/isolation_create_citus_local_table.spec +++ b/src/test/regress/spec/isolation_create_citus_local_table.spec @@ -1,7 +1,7 @@ setup { SELECT 1 FROM master_add_node('localhost', 57636, 0); - CREATE TABLE citus_local_table_1(a int); + CREATE TABLE citus_local_table_1(a int); CREATE TABLE citus_local_table_2(a int unique); CREATE SCHEMA another_schema; @@ -10,7 +10,7 @@ setup teardown { - DROP TABLE IF EXISTS citus_local_table_1, citus_local_table_2 CASCADE; + DROP TABLE IF EXISTS citus_local_table_1, citus_local_table_2 CASCADE; DROP SCHEMA IF EXISTS another_schema CASCADE; -- remove coordinator only if it is added to pg_dist_node SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node WHERE nodeport=57636; diff --git a/src/test/regress/spec/isolation_create_distributed_concurrently_after_drop_column.spec b/src/test/regress/spec/isolation_create_distributed_concurrently_after_drop_column.spec index 95fa5e010..0c3f1aa38 100644 --- a/src/test/regress/spec/isolation_create_distributed_concurrently_after_drop_column.spec +++ b/src/test/regress/spec/isolation_create_distributed_concurrently_after_drop_column.spec @@ -7,54 +7,54 @@ setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE observations_with_pk ( - tenant_id text not null, - dummy int, - measurement_id bigserial not null, - payload jsonb not null, - observation_time timestamptz not null default '03/11/2018 02:00:00'::TIMESTAMP, - PRIMARY KEY (tenant_id, measurement_id) - ); + SET citus.shard_replication_factor TO 1; + CREATE TABLE observations_with_pk ( + tenant_id text not null, + dummy int, + measurement_id bigserial not null, + payload jsonb not null, + observation_time timestamptz not null default '03/11/2018 02:00:00'::TIMESTAMP, + PRIMARY KEY (tenant_id, measurement_id) + ); - CREATE TABLE observations_with_full_replica_identity ( - tenant_id text not null, - dummy int, - measurement_id bigserial not null, - payload jsonb not null, - observation_time timestamptz not null default '03/11/2018 02:00:00'::TIMESTAMP - ); - ALTER TABLE observations_with_full_replica_identity REPLICA IDENTITY FULL; + CREATE TABLE observations_with_full_replica_identity ( + tenant_id text not null, + dummy int, + measurement_id bigserial not null, + payload jsonb not null, + observation_time timestamptz not null default '03/11/2018 02:00:00'::TIMESTAMP + ); + ALTER TABLE observations_with_full_replica_identity REPLICA IDENTITY FULL; } teardown { DROP TABLE observations_with_pk; - DROP TABLE observations_with_full_replica_identity; + DROP TABLE observations_with_full_replica_identity; } session "s1" step "s1-alter-table" { - ALTER TABLE observations_with_pk DROP COLUMN dummy; - ALTER TABLE observations_with_full_replica_identity DROP COLUMN dummy; + ALTER TABLE observations_with_pk DROP COLUMN dummy; + ALTER TABLE observations_with_full_replica_identity DROP COLUMN dummy; } step "s1-set-factor-1" { - SET citus.shard_replication_factor TO 1; - SELECT citus_set_coordinator_host('localhost'); + SET citus.shard_replication_factor TO 1; + SELECT citus_set_coordinator_host('localhost'); } step "s1-create-distributed-table-observations_with_pk-concurrently" { - SELECT create_distributed_table_concurrently('observations_with_pk','tenant_id'); + SELECT create_distributed_table_concurrently('observations_with_pk','tenant_id'); } step "s1-create-distributed-table-observations-2-concurrently" { - SELECT create_distributed_table_concurrently('observations_with_full_replica_identity','tenant_id'); + SELECT create_distributed_table_concurrently('observations_with_full_replica_identity','tenant_id'); } session "s2" @@ -66,81 +66,81 @@ step "s2-begin" step "s2-insert-observations_with_pk" { - INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); - INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); - INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); - INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_pk(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); } step "s2-insert-observations_with_full_replica_identity" { - INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); - INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); - INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); + INSERT INTO observations_with_full_replica_identity(tenant_id, payload) SELECT 'tenant_id', jsonb_build_object('name', 29.3); } step "s2-update-observations_with_pk" { - UPDATE observations_with_pk set observation_time='03/11/2019 02:00:00'::TIMESTAMP where tenant_id = 'tenant_id' and measurement_id = 3; + UPDATE observations_with_pk set observation_time='03/11/2019 02:00:00'::TIMESTAMP where tenant_id = 'tenant_id' and measurement_id = 3; } step "s2-update-primary-key-observations_with_pk" { - UPDATE observations_with_pk set measurement_id=100 where tenant_id = 'tenant_id' and measurement_id = 4 ; + UPDATE observations_with_pk set measurement_id=100 where tenant_id = 'tenant_id' and measurement_id = 4 ; } step "s2-update-observations_with_full_replica_identity" { - UPDATE observations_with_full_replica_identity set observation_time='03/11/2019 02:00:00'::TIMESTAMP where tenant_id = 'tenant_id' and measurement_id = 3; + UPDATE observations_with_full_replica_identity set observation_time='03/11/2019 02:00:00'::TIMESTAMP where tenant_id = 'tenant_id' and measurement_id = 3; } step "s2-delete-observations_with_pk" { - DELETE FROM observations_with_pk where tenant_id = 'tenant_id' and measurement_id = 3 ; + DELETE FROM observations_with_pk where tenant_id = 'tenant_id' and measurement_id = 3 ; } step "s2-delete-observations_with_full_replica_identity" { - DELETE FROM observations_with_full_replica_identity where tenant_id = 'tenant_id' and measurement_id = 3 ; + DELETE FROM observations_with_full_replica_identity where tenant_id = 'tenant_id' and measurement_id = 3 ; } step "s2-end" { - COMMIT; + COMMIT; } step "s2-print-cluster-1" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('observations_with_pk', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('observations_with_pk', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - SELECT * - FROM - observations_with_pk - ORDER BY - measurement_id; + SELECT * + FROM + observations_with_pk + ORDER BY + measurement_id; } step "s2-print-cluster-2" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('observations_with_full_replica_identity', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('observations_with_full_replica_identity', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - SELECT * - FROM - observations_with_full_replica_identity - ORDER BY - measurement_id; + SELECT * + FROM + observations_with_full_replica_identity + ORDER BY + measurement_id; } diff --git a/src/test/regress/spec/isolation_create_distributed_table.spec b/src/test/regress/spec/isolation_create_distributed_table.spec index 0934df358..76146df48 100644 --- a/src/test/regress/spec/isolation_create_distributed_table.spec +++ b/src/test/regress/spec/isolation_create_distributed_table.spec @@ -1,11 +1,11 @@ setup { - CREATE TABLE table_to_distribute(id int); + CREATE TABLE table_to_distribute(id int); } teardown { - DROP TABLE table_to_distribute CASCADE; + DROP TABLE table_to_distribute CASCADE; } session "s1" @@ -17,12 +17,12 @@ step "s1-begin" step "s1-create_distributed_table" { - SELECT create_distributed_table('table_to_distribute', 'id'); + SELECT create_distributed_table('table_to_distribute', 'id'); } step "s1-copy_to_local_table" { - COPY table_to_distribute FROM PROGRAM 'echo 0 && echo 1 && echo 2 && echo 3 && echo 4 && echo 5 && echo 6 && echo 7 && echo 8'; + COPY table_to_distribute FROM PROGRAM 'echo 0 && echo 1 && echo 2 && echo 3 && echo 4 && echo 5 && echo 6 && echo 7 && echo 8'; } step "s1-commit" @@ -34,22 +34,22 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-create_distributed_table" { - SELECT create_distributed_table('table_to_distribute', 'id'); + SELECT create_distributed_table('table_to_distribute', 'id'); } step "s2-copy_to_local_table" { - COPY table_to_distribute FROM PROGRAM 'echo 0 && echo 1 && echo 2 && echo 3 && echo 4 && echo 5 && echo 6 && echo 7 && echo 8'; + COPY table_to_distribute FROM PROGRAM 'echo 0 && echo 1 && echo 2 && echo 3 && echo 4 && echo 5 && echo 6 && echo 7 && echo 8'; } step "s2-commit" { - COMMIT; + COMMIT; } //concurrent create_distributed_table on empty table diff --git a/src/test/regress/spec/isolation_create_distributed_table_concurrently.spec b/src/test/regress/spec/isolation_create_distributed_table_concurrently.spec index f6a83d309..4c062a70f 100644 --- a/src/test/regress/spec/isolation_create_distributed_table_concurrently.spec +++ b/src/test/regress/spec/isolation_create_distributed_table_concurrently.spec @@ -1,140 +1,140 @@ setup { - select setval('pg_dist_shardid_seq', GREATEST(1400292, nextval('pg_dist_shardid_seq')-1)); - -- make sure coordinator is in metadata - SELECT citus_set_coordinator_host('localhost', 57636); - CREATE TABLE table_1(id int PRIMARY KEY); - CREATE TABLE table_2(id smallint PRIMARY KEY); - CREATE TABLE table_default_colocated(id int PRIMARY KEY); - CREATE TABLE table_none_colocated(id int PRIMARY KEY); + select setval('pg_dist_shardid_seq', GREATEST(1400292, nextval('pg_dist_shardid_seq')-1)); + -- make sure coordinator is in metadata + SELECT citus_set_coordinator_host('localhost', 57636); + CREATE TABLE table_1(id int PRIMARY KEY); + CREATE TABLE table_2(id smallint PRIMARY KEY); + CREATE TABLE table_default_colocated(id int PRIMARY KEY); + CREATE TABLE table_none_colocated(id int PRIMARY KEY); } teardown { - DROP TABLE table_1 CASCADE; - DROP TABLE table_2 CASCADE; - DROP TABLE table_default_colocated CASCADE; - DROP TABLE table_none_colocated CASCADE; - SELECT citus_remove_node('localhost', 57636); + DROP TABLE table_1 CASCADE; + DROP TABLE table_2 CASCADE; + DROP TABLE table_default_colocated CASCADE; + DROP TABLE table_none_colocated CASCADE; + SELECT citus_remove_node('localhost', 57636); } session "s1" step "s1-create-concurrently-table_1" { - SELECT create_distributed_table_concurrently('table_1', 'id'); + SELECT create_distributed_table_concurrently('table_1', 'id'); } step "s1-create-concurrently-table_2" { - SELECT create_distributed_table_concurrently('table_2', 'id'); + SELECT create_distributed_table_concurrently('table_2', 'id'); } step "s1-create-concurrently-table_default_colocated" { - SELECT create_distributed_table_concurrently('table_default_colocated', 'id'); + SELECT create_distributed_table_concurrently('table_default_colocated', 'id'); } step "s1-create-concurrently-table_none_colocated" { - SELECT create_distributed_table_concurrently('table_none_colocated', 'id', colocate_with => 'none'); + SELECT create_distributed_table_concurrently('table_none_colocated', 'id', colocate_with => 'none'); } step "s1-settings" { - -- session needs to have replication factor set to 1, can't do in setup - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; + -- session needs to have replication factor set to 1, can't do in setup + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; } step "s1-truncate" { - TRUNCATE table_1; + TRUNCATE table_1; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-settings" { - -- session needs to have replication factor set to 1, can't do in setup - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; + -- session needs to have replication factor set to 1, can't do in setup + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; } step "s2-insert" { - INSERT INTO table_1 SELECT s FROM generate_series(1,20) s; + INSERT INTO table_1 SELECT s FROM generate_series(1,20) s; } step "s2-update" { - UPDATE table_1 SET id = 21 WHERE id = 20; + UPDATE table_1 SET id = 21 WHERE id = 20; } step "s2-delete" { - DELETE FROM table_1 WHERE id = 11; + DELETE FROM table_1 WHERE id = 11; } step "s2-copy" { - COPY table_1 FROM PROGRAM 'echo 30 && echo 31 && echo 32 && echo 33 && echo 34 && echo 35 && echo 36 && echo 37 && echo 38'; + COPY table_1 FROM PROGRAM 'echo 30 && echo 31 && echo 32 && echo 33 && echo 34 && echo 35 && echo 36 && echo 37 && echo 38'; } step "s2-reindex" { - REINDEX TABLE table_1; + REINDEX TABLE table_1; } step "s2-reindex-concurrently" { - REINDEX TABLE CONCURRENTLY table_1; + REINDEX TABLE CONCURRENTLY table_1; } step "s2-create-concurrently-table_1" { - SELECT create_distributed_table_concurrently('table_1', 'id'); + SELECT create_distributed_table_concurrently('table_1', 'id'); } step "s2-create-table_1" { - SELECT create_distributed_table('table_1', 'id'); + SELECT create_distributed_table('table_1', 'id'); } step "s2-create-concurrently-table_2" { - SELECT create_distributed_table_concurrently('table_2', 'id'); + SELECT create_distributed_table_concurrently('table_2', 'id'); } step "s2-create-table_2" { - SELECT create_distributed_table('table_2', 'id'); + SELECT create_distributed_table('table_2', 'id'); } step "s2-create-table_2-none" { - SELECT create_distributed_table('table_2', 'id', colocate_with => 'none'); + SELECT create_distributed_table('table_2', 'id', colocate_with => 'none'); } step "s2-print-status" { - -- sanity check on partitions - SELECT * FROM pg_dist_shard - WHERE logicalrelid = 'table_1'::regclass OR logicalrelid = 'table_2'::regclass - ORDER BY shardminvalue::BIGINT, logicalrelid; + -- sanity check on partitions + SELECT * FROM pg_dist_shard + WHERE logicalrelid = 'table_1'::regclass OR logicalrelid = 'table_2'::regclass + ORDER BY shardminvalue::BIGINT, logicalrelid; - -- sanity check on total elements in the table - SELECT COUNT(*) FROM table_1; + -- sanity check on total elements in the table + SELECT COUNT(*) FROM table_1; } step "s2-commit" { - COMMIT; + COMMIT; } session "s3" @@ -156,21 +156,21 @@ session "s4" step "s4-print-waiting-locks" { - SELECT mode, relation::regclass, granted FROM pg_locks - WHERE relation = 'table_1'::regclass OR relation = 'table_2'::regclass - ORDER BY mode, relation, granted; + SELECT mode, relation::regclass, granted FROM pg_locks + WHERE relation = 'table_1'::regclass OR relation = 'table_2'::regclass + ORDER BY mode, relation, granted; } step "s4-print-waiting-advisory-locks" { - SELECT mode, classid, objid, objsubid, granted FROM pg_locks - WHERE locktype = 'advisory' AND classid = 0 AND objid = 3 AND objsubid = 9 - ORDER BY granted; + SELECT mode, classid, objid, objsubid, granted FROM pg_locks + WHERE locktype = 'advisory' AND classid = 0 AND objid = 3 AND objsubid = 9 + ORDER BY granted; } step "s4-print-colocations" { - SELECT shardcount, replicationfactor, distributioncolumntype, distributioncolumncollation FROM pg_dist_colocation ORDER BY colocationid; + SELECT shardcount, replicationfactor, distributioncolumntype, distributioncolumncollation FROM pg_dist_colocation ORDER BY colocationid; } // show concurrent insert is NOT blocked by create_distributed_table_concurrently diff --git a/src/test/regress/spec/isolation_create_restore_point.spec b/src/test/regress/spec/isolation_create_restore_point.spec index 2cdc66f85..1bc321369 100644 --- a/src/test/regress/spec/isolation_create_restore_point.spec +++ b/src/test/regress/spec/isolation_create_restore_point.spec @@ -1,142 +1,142 @@ setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE restore_table (test_id integer NOT NULL, data text); - CREATE TABLE restore_ref_table (test_id integer NOT NULL, data text); - SELECT create_distributed_table('restore_table', 'test_id'); - SELECT create_reference_table('restore_ref_table'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE restore_table (test_id integer NOT NULL, data text); + CREATE TABLE restore_ref_table (test_id integer NOT NULL, data text); + SELECT create_distributed_table('restore_table', 'test_id'); + SELECT create_reference_table('restore_ref_table'); } teardown { - DROP TABLE IF EXISTS restore_table, restore_ref_table, test_create_distributed_table, test_create_reference_table; + DROP TABLE IF EXISTS restore_table, restore_ref_table, test_create_distributed_table, test_create_reference_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-create-reference" { - CREATE TABLE test_create_reference_table (test_id integer NOT NULL, data text); - SELECT create_reference_table('test_create_reference_table'); + CREATE TABLE test_create_reference_table (test_id integer NOT NULL, data text); + SELECT create_reference_table('test_create_reference_table'); } step "s1-create-distributed" { - CREATE TABLE test_create_distributed_table (test_id integer NOT NULL, data text); - SELECT create_distributed_table('test_create_distributed_table', 'test_id'); + CREATE TABLE test_create_distributed_table (test_id integer NOT NULL, data text); + SELECT create_distributed_table('test_create_distributed_table', 'test_id'); } step "s1-insert" { - INSERT INTO restore_table VALUES (1,'hello'); + INSERT INTO restore_table VALUES (1,'hello'); } step "s1-insert-ref" { - INSERT INTO restore_ref_table VALUES (1,'hello'); + INSERT INTO restore_ref_table VALUES (1,'hello'); } step "s1-modify-multiple" { - UPDATE restore_table SET data = 'world'; + UPDATE restore_table SET data = 'world'; } step "s1-modify-multiple-ref" { - UPDATE restore_ref_table SET data = 'world'; + UPDATE restore_ref_table SET data = 'world'; } step "s1-multi-statement-ref" { - BEGIN; - INSERT INTO restore_ref_table VALUES (1,'hello'); - INSERT INTO restore_ref_table VALUES (2,'hello'); - COMMIT; + BEGIN; + INSERT INTO restore_ref_table VALUES (1,'hello'); + INSERT INTO restore_ref_table VALUES (2,'hello'); + COMMIT; } step "s1-multi-statement" { - BEGIN; - INSERT INTO restore_table VALUES (1,'hello'); - INSERT INTO restore_table VALUES (2,'hello'); - COMMIT; + BEGIN; + INSERT INTO restore_table VALUES (1,'hello'); + INSERT INTO restore_table VALUES (2,'hello'); + COMMIT; } step "s1-ddl-ref" { - ALTER TABLE restore_ref_table ADD COLUMN x int; + ALTER TABLE restore_ref_table ADD COLUMN x int; } step "s1-ddl" { - ALTER TABLE restore_table ADD COLUMN x int; + ALTER TABLE restore_table ADD COLUMN x int; } step "s1-copy-ref" { - COPY restore_ref_table FROM PROGRAM 'echo 1,hello' WITH CSV; + COPY restore_ref_table FROM PROGRAM 'echo 1,hello' WITH CSV; } step "s1-copy" { - COPY restore_table FROM PROGRAM 'echo 1,hello' WITH CSV; + COPY restore_table FROM PROGRAM 'echo 1,hello' WITH CSV; } step "s1-recover" { - SELECT recover_prepared_transactions(); + SELECT recover_prepared_transactions(); } step "s1-create-restore" { - SELECT 1 FROM citus_create_restore_point('citus-test-2'); + SELECT 1 FROM citus_create_restore_point('citus-test-2'); } step "s1-drop" { - DROP TABLE restore_table; + DROP TABLE restore_table; } step "s1-drop-ref" { - DROP TABLE restore_ref_table; + DROP TABLE restore_ref_table; } step "s1-add-node" { - SELECT 1 FROM master_add_inactive_node('localhost', 9999); + SELECT 1 FROM master_add_inactive_node('localhost', 9999); } step "s1-remove-node" { - SELECT master_remove_node('localhost', 9999); + SELECT master_remove_node('localhost', 9999); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-create-restore" { - SELECT 1 FROM citus_create_restore_point('citus-test'); + SELECT 1 FROM citus_create_restore_point('citus-test'); } step "s2-commit" { - COMMIT; + COMMIT; } // verify that citus_create_restore_point is blocked by concurrent create_distributed_table diff --git a/src/test/regress/spec/isolation_create_table_vs_add_remove_node.spec b/src/test/regress/spec/isolation_create_table_vs_add_remove_node.spec index dbafd666b..80b3e2d11 100644 --- a/src/test/regress/spec/isolation_create_table_vs_add_remove_node.spec +++ b/src/test/regress/spec/isolation_create_table_vs_add_remove_node.spec @@ -1,94 +1,94 @@ setup { - SELECT 1 FROM master_add_node('localhost', 57637); - SELECT * FROM master_get_active_worker_nodes() ORDER BY node_name, node_port; + SELECT 1 FROM master_add_node('localhost', 57637); + SELECT * FROM master_get_active_worker_nodes() ORDER BY node_name, node_port; } teardown { - DROP TABLE IF EXISTS dist_table; + DROP TABLE IF EXISTS dist_table; - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-add-node-2" { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); } step "s1-remove-node-2" { - SELECT * FROM master_remove_node('localhost', 57638); + SELECT * FROM master_remove_node('localhost', 57638); } step "s1-abort" { - ABORT; + ABORT; } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-show-placements" { - SELECT - nodename, nodeport - FROM - pg_dist_shard_placement JOIN pg_dist_shard USING (shardid) - WHERE - logicalrelid = 'dist_table'::regclass - ORDER BY - nodename, nodeport; + SELECT + nodename, nodeport + FROM + pg_dist_shard_placement JOIN pg_dist_shard USING (shardid) + WHERE + logicalrelid = 'dist_table'::regclass + ORDER BY + nodename, nodeport; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-create-table-1" { - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; - CREATE TABLE dist_table (x int, y int); - SELECT create_distributed_table('dist_table', 'x'); + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; + CREATE TABLE dist_table (x int, y int); + SELECT create_distributed_table('dist_table', 'x'); } step "s2-create-table-2" { - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; - CREATE TABLE dist_table (x int, y int); - SELECT create_distributed_table('dist_table', 'x'); + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; + CREATE TABLE dist_table (x int, y int); + SELECT create_distributed_table('dist_table', 'x'); } step "s2-create-append-table" { - SET citus.shard_replication_factor TO 1; - CREATE TABLE dist_table (x int, y int); - SELECT create_distributed_table('dist_table', 'x', 'append'); - SELECT 1 FROM master_create_empty_shard('dist_table'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE dist_table (x int, y int); + SELECT create_distributed_table('dist_table', 'x', 'append'); + SELECT 1 FROM master_create_empty_shard('dist_table'); } step "s2-select" { - SELECT * FROM dist_table; + SELECT * FROM dist_table; } step "s2-commit" { - COMMIT; + COMMIT; } // session 1 adds a node, session 2 creates a distributed table diff --git a/src/test/regress/spec/isolation_data_migration.spec b/src/test/regress/spec/isolation_data_migration.spec index b0e75637e..118f56255 100644 --- a/src/test/regress/spec/isolation_data_migration.spec +++ b/src/test/regress/spec/isolation_data_migration.spec @@ -1,61 +1,61 @@ setup { - CREATE TABLE migration_table (test_id integer NOT NULL, data text); + CREATE TABLE migration_table (test_id integer NOT NULL, data text); } teardown { - DROP TABLE migration_table; + DROP TABLE migration_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-begin-serializable" { - BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; - SELECT 1; + BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; + SELECT 1; } step "s1-create_distributed_table" { - SELECT create_distributed_table('migration_table', 'test_id'); + SELECT create_distributed_table('migration_table', 'test_id'); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-copy" { - COPY migration_table FROM PROGRAM 'echo 1,hello' WITH CSV; + COPY migration_table FROM PROGRAM 'echo 1,hello' WITH CSV; } step "s2-insert" { - INSERT INTO migration_table VALUES (1, 'hello'); + INSERT INTO migration_table VALUES (1, 'hello'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-select" { - SELECT * FROM migration_table ORDER BY test_id; + SELECT * FROM migration_table ORDER BY test_id; } // verify that local COPY is picked up by create_distributed_table once it commits diff --git a/src/test/regress/spec/isolation_ddl_vs_all.spec b/src/test/regress/spec/isolation_ddl_vs_all.spec index 535f93220..a814374cd 100644 --- a/src/test/regress/spec/isolation_ddl_vs_all.spec +++ b/src/test/regress/spec/isolation_ddl_vs_all.spec @@ -5,15 +5,15 @@ // create range distributed table to test behavior of DDL in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE ddl_hash(id integer, data text); - SELECT create_distributed_table('ddl_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE ddl_hash(id integer, data text); + SELECT create_distributed_table('ddl_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS ddl_hash CASCADE; + DROP TABLE IF EXISTS ddl_hash CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_delete_vs_all.spec b/src/test/regress/spec/isolation_delete_vs_all.spec index d17073e73..584b24cc6 100644 --- a/src/test/regress/spec/isolation_delete_vs_all.spec +++ b/src/test/regress/spec/isolation_delete_vs_all.spec @@ -5,15 +5,15 @@ // create range distributed table to test behavior of DELETE in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE delete_hash(id integer, data text); - SELECT create_distributed_table('delete_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE delete_hash(id integer, data text); + SELECT create_distributed_table('delete_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS delete_hash CASCADE; + DROP TABLE IF EXISTS delete_hash CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_dis2ref_foreign_keys_on_mx.spec b/src/test/regress/spec/isolation_dis2ref_foreign_keys_on_mx.spec index 787a32d13..ae8725f12 100644 --- a/src/test/regress/spec/isolation_dis2ref_foreign_keys_on_mx.spec +++ b/src/test/regress/spec/isolation_dis2ref_foreign_keys_on_mx.spec @@ -2,68 +2,68 @@ setup { - CREATE TABLE ref_table(id int PRIMARY KEY, value int); - SELECT create_reference_table('ref_table'); + CREATE TABLE ref_table(id int PRIMARY KEY, value int); + SELECT create_reference_table('ref_table'); - CREATE TABLE dist_table(id int, value int REFERENCES ref_table(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_distributed_table('dist_table', 'id'); + CREATE TABLE dist_table(id int, value int REFERENCES ref_table(id) ON DELETE CASCADE ON UPDATE CASCADE); + SELECT create_distributed_table('dist_table', 'id'); - INSERT INTO ref_table VALUES (1, 10), (2, 20); - INSERT INTO dist_table VALUES (1, 1), (2, 2); + INSERT INTO ref_table VALUES (1, 10), (2, 20); + INSERT INTO dist_table VALUES (1, 1), (2, 2); } teardown { - DROP TABLE ref_table, dist_table; + DROP TABLE ref_table, dist_table; } session "s1" step "s1-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s1-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE id=1'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE id=1'); } step "s1-update" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET id=id+2 WHERE id=1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET id=id+2 WHERE id=1'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-rollback-worker" { - SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); + SELECT run_commands_on_session_level_connection_to_node('ROLLBACK'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-insert" @@ -103,17 +103,17 @@ step "s2-select-for-udpate" step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); + CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); } step "s2-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } // We use this as a way to wait for s2-ddl-create-index-concurrently to @@ -126,8 +126,8 @@ session "s3" step "s3-display" { - SELECT * FROM ref_table ORDER BY id, value; - SELECT * FROM dist_table ORDER BY id, value; + SELECT * FROM ref_table ORDER BY id, value; + SELECT * FROM dist_table ORDER BY id, value; } diff --git a/src/test/regress/spec/isolation_distributed_deadlock_detection.spec b/src/test/regress/spec/isolation_distributed_deadlock_detection.spec index 4667082e6..e2c093a0d 100644 --- a/src/test/regress/spec/isolation_distributed_deadlock_detection.spec +++ b/src/test/regress/spec/isolation_distributed_deadlock_detection.spec @@ -1,297 +1,297 @@ setup { - CREATE TABLE deadlock_detection_reference (user_id int UNIQUE, some_val int); - SELECT create_reference_table('deadlock_detection_reference'); + CREATE TABLE deadlock_detection_reference (user_id int UNIQUE, some_val int); + SELECT create_reference_table('deadlock_detection_reference'); - CREATE TABLE deadlock_detection_test (user_id int UNIQUE, some_val int); - INSERT INTO deadlock_detection_test SELECT i, i FROM generate_series(1,7) i; - SELECT create_distributed_table('deadlock_detection_test', 'user_id'); + CREATE TABLE deadlock_detection_test (user_id int UNIQUE, some_val int); + INSERT INTO deadlock_detection_test SELECT i, i FROM generate_series(1,7) i; + SELECT create_distributed_table('deadlock_detection_test', 'user_id'); - CREATE TABLE local_deadlock_table (user_id int UNIQUE, some_val int); + CREATE TABLE local_deadlock_table (user_id int UNIQUE, some_val int); - CREATE TABLE deadlock_detection_test_rep_2 (user_id int UNIQUE, some_val int); - SET citus.shard_replication_factor = 2; - SELECT create_distributed_table('deadlock_detection_test_rep_2', 'user_id'); + CREATE TABLE deadlock_detection_test_rep_2 (user_id int UNIQUE, some_val int); + SET citus.shard_replication_factor = 2; + SELECT create_distributed_table('deadlock_detection_test_rep_2', 'user_id'); - INSERT INTO deadlock_detection_test_rep_2 VALUES (1,1); - INSERT INTO deadlock_detection_test_rep_2 VALUES (2,2); + INSERT INTO deadlock_detection_test_rep_2 VALUES (1,1); + INSERT INTO deadlock_detection_test_rep_2 VALUES (2,2); } teardown { - DROP TABLE deadlock_detection_test; - DROP TABLE local_deadlock_table; - DROP TABLE deadlock_detection_test_rep_2; - DROP TABLE deadlock_detection_reference; - SET citus.shard_replication_factor = 1; + DROP TABLE deadlock_detection_test; + DROP TABLE local_deadlock_table; + DROP TABLE deadlock_detection_test_rep_2; + DROP TABLE deadlock_detection_reference; + SET citus.shard_replication_factor = 1; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-update-1" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 1; } step "s1-update-2" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2; } step "s1-update-4" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 4; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 4; } step "s1-update-5" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 5; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 5; } step "s1-insert-dist-10" { - INSERT INTO deadlock_detection_test VALUES (10, 10); + INSERT INTO deadlock_detection_test VALUES (10, 10); } step "s1-insert-local-10" { - INSERT INTO local_deadlock_table VALUES (10, 10); + INSERT INTO local_deadlock_table VALUES (10, 10); } step "s1-update-1-rep-2" { - UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 1; + UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 1; } step "s1-update-2-rep-2" { - UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 2; + UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 2; } step "s1-insert-ref-10" { - INSERT INTO deadlock_detection_reference VALUES (10, 10); + INSERT INTO deadlock_detection_reference VALUES (10, 10); } step "s1-insert-ref-11" { - INSERT INTO deadlock_detection_reference VALUES (11, 11); + INSERT INTO deadlock_detection_reference VALUES (11, 11); } step "s1-update-2-4" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2 OR user_id = 4; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2 OR user_id = 4; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-update-1" { - UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 1; } step "s2-update-2" { - UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 2; + UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 2; } step "s2-update-3" { - UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 3; + UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 3; } step "s2-update-4" { - UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 4; + UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 4; } step "s2-upsert-select-all" { - INSERT INTO deadlock_detection_test SELECT * FROM deadlock_detection_test ON CONFLICT(user_id) DO UPDATE SET some_val = deadlock_detection_test.some_val + 5 RETURNING *; + INSERT INTO deadlock_detection_test SELECT * FROM deadlock_detection_test ON CONFLICT(user_id) DO UPDATE SET some_val = deadlock_detection_test.some_val + 5 RETURNING *; } step "s2-ddl" { - ALTER TABLE deadlock_detection_test ADD COLUMN test_col INT; + ALTER TABLE deadlock_detection_test ADD COLUMN test_col INT; } step "s2-insert-dist-10" { - INSERT INTO deadlock_detection_test VALUES (10, 10); + INSERT INTO deadlock_detection_test VALUES (10, 10); } step "s2-insert-local-10" { - INSERT INTO local_deadlock_table VALUES (10, 10); + INSERT INTO local_deadlock_table VALUES (10, 10); } step "s2-update-1-rep-2" { - UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 1; + UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 1; } step "s2-update-2-rep-2" { - UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 2; + UPDATE deadlock_detection_test_rep_2 SET some_val = 1 WHERE user_id = 2; } step "s2-insert-ref-10" { - INSERT INTO deadlock_detection_reference VALUES (10, 10); + INSERT INTO deadlock_detection_reference VALUES (10, 10); } step "s2-insert-ref-11" { - INSERT INTO deadlock_detection_reference VALUES (11, 11); + INSERT INTO deadlock_detection_reference VALUES (11, 11); } step "s2-commit" { - COMMIT; + COMMIT; } session "s3" step "s3-begin" { - BEGIN; + BEGIN; } step "s3-update-1" { - UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 1; } step "s3-update-2" { - UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 2; + UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 2; } step "s3-update-3" { - UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 3; + UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 3; } step "s3-update-4" { - UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 4; + UPDATE deadlock_detection_test SET some_val = 3 WHERE user_id = 4; } step "s3-commit" { - COMMIT; + COMMIT; } session "s4" step "s4-begin" { - BEGIN; + BEGIN; } step "s4-update-1" { - UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 1; } step "s4-update-2" { - UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 2; + UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 2; } step "s4-update-4" { - UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 4; + UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 4; } step "s4-update-5" { - UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 5; + UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 5; } step "s4-update-6" { - UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 6; + UPDATE deadlock_detection_test SET some_val = 4 WHERE user_id = 6; } step "s4-random-adv-lock" { - SELECT pg_advisory_xact_lock(8765); + SELECT pg_advisory_xact_lock(8765); } step "s4-commit" { - COMMIT; + COMMIT; } session "s5" step "s5-begin" { - BEGIN; + BEGIN; } step "s5-update-1" { - UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 1; } step "s5-update-5" { - UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 5; + UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 5; } step "s5-update-6" { - UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 6; + UPDATE deadlock_detection_test SET some_val = 5 WHERE user_id = 6; } step "s5-random-adv-lock" { - SELECT pg_advisory_xact_lock(8765); + SELECT pg_advisory_xact_lock(8765); } step "s5-commit" { - COMMIT; + COMMIT; } session "s6" step "s6-begin" { - BEGIN; + BEGIN; } step "s6-update-5" { - UPDATE deadlock_detection_test SET some_val = 6 WHERE user_id = 5; + UPDATE deadlock_detection_test SET some_val = 6 WHERE user_id = 5; } step "s6-update-6" { - UPDATE deadlock_detection_test SET some_val = 6 WHERE user_id = 6; + UPDATE deadlock_detection_test SET some_val = 6 WHERE user_id = 6; } step "s6-commit" { - COMMIT; + COMMIT; } // we disable the daemon during the regression tests in order to get consistent results @@ -302,7 +302,7 @@ session "deadlock-checker" // backend inappropriately step "deadlock-checker-call" { - SELECT check_distributed_deadlocks(); + SELECT check_distributed_deadlocks(); } // simplest case, loop with two nodes (Reminder: Citus uses 2PC) diff --git a/src/test/regress/spec/isolation_distributed_transaction_id.spec b/src/test/regress/spec/isolation_distributed_transaction_id.spec index 0b626f2c8..fabb9f23c 100644 --- a/src/test/regress/spec/isolation_distributed_transaction_id.spec +++ b/src/test/regress/spec/isolation_distributed_transaction_id.spec @@ -2,12 +2,12 @@ setup { - SET TIME ZONE 'PST8PDT'; + SET TIME ZONE 'PST8PDT'; } teardown { - SET TIME ZONE DEFAULT; + SET TIME ZONE DEFAULT; } session "s1" @@ -34,40 +34,40 @@ step "s1-commit" step "s1-create-table" { - -- some tests also use distributed table - CREATE TABLE distributed_transaction_id_table(some_value int, other_value int); - SET citus.shard_count TO 4; - SELECT create_distributed_table('distributed_transaction_id_table', 'some_value'); + -- some tests also use distributed table + CREATE TABLE distributed_transaction_id_table(some_value int, other_value int); + SET citus.shard_count TO 4; + SELECT create_distributed_table('distributed_transaction_id_table', 'some_value'); } step "s1-insert" { - INSERT INTO distributed_transaction_id_table VALUES (1, 1); + INSERT INTO distributed_transaction_id_table VALUES (1, 1); } step "s1-verify-current-xact-is-on-worker" { - SELECT - remote.nodeport, - remote.result = row(xact.transaction_number)::text AS xact_exists - FROM - get_current_transaction_id() as xact, - run_command_on_workers($$ - SELECT row(transaction_number) + SELECT + remote.nodeport, + remote.result = row(xact.transaction_number)::text AS xact_exists + FROM + get_current_transaction_id() as xact, + run_command_on_workers($$ + SELECT row(transaction_number) FROM get_all_active_transactions() - WHERE transaction_number != 0; + WHERE transaction_number != 0; $$) as remote ORDER BY remote.nodeport ASC; } step "s1-get-all-transactions" { - SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; + SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; } step "s1-drop-table" { - DROP TABLE distributed_transaction_id_table; + DROP TABLE distributed_transaction_id_table; } session "s2" @@ -94,7 +94,7 @@ step "s2-commit" step "s2-get-all-transactions" { - SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; + SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; } session "s3" @@ -116,7 +116,7 @@ step "s3-commit" step "s3-get-all-transactions" { - SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; + SELECT initiator_node_identifier, transaction_number, transaction_stamp FROM get_current_transaction_id() ORDER BY 1,2,3; } // show that we could get all distributed transaction ids from seperate sessions diff --git a/src/test/regress/spec/isolation_drop_alter_index_select_for_update_on_mx.spec b/src/test/regress/spec/isolation_drop_alter_index_select_for_update_on_mx.spec index 9d4086ac1..98dea05c4 100644 --- a/src/test/regress/spec/isolation_drop_alter_index_select_for_update_on_mx.spec +++ b/src/test/regress/spec/isolation_drop_alter_index_select_for_update_on_mx.spec @@ -2,9 +2,9 @@ setup { - CREATE TABLE dist_table(id integer, value integer); - SELECT create_distributed_table('dist_table', 'id'); - COPY dist_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + CREATE TABLE dist_table(id integer, value integer); + SELECT create_distributed_table('dist_table', 'id'); + COPY dist_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -18,7 +18,7 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -40,27 +40,27 @@ step "s1-insert" step "s1-index" { - CREATE INDEX dist_table_index ON dist_table (id); + CREATE INDEX dist_table_index ON dist_table (id); } step "s1-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s1-commit" { - COMMIT; + COMMIT; } @@ -80,17 +80,17 @@ step "s2-begin-on-worker" step "s2-alter" { - ALTER TABLE dist_table DROP value; + ALTER TABLE dist_table DROP value; } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY dist_table_index_conc ON dist_table(id); + CREATE INDEX CONCURRENTLY dist_table_index_conc ON dist_table(id); } step "s2-commit-worker" @@ -115,7 +115,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM dist_table; + SELECT COUNT(*) FROM dist_table; } diff --git a/src/test/regress/spec/isolation_drop_shards.spec b/src/test/regress/spec/isolation_drop_shards.spec index cd83b18a9..cd0ca7ba7 100644 --- a/src/test/regress/spec/isolation_drop_shards.spec +++ b/src/test/regress/spec/isolation_drop_shards.spec @@ -1,55 +1,55 @@ setup { - CREATE TABLE append_table (test_id integer NOT NULL, data text); - SELECT create_distributed_table('append_table', 'test_id', 'append'); + CREATE TABLE append_table (test_id integer NOT NULL, data text); + SELECT create_distributed_table('append_table', 'test_id', 'append'); - SELECT 1 FROM ( - SELECT min(master_create_empty_shard('append_table')) FROM generate_series(1,16) - ) a; + SELECT 1 FROM ( + SELECT min(master_create_empty_shard('append_table')) FROM generate_series(1,16) + ) a; } teardown { - DROP TABLE append_table; + DROP TABLE append_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-truncate" { - TRUNCATE append_table; + TRUNCATE append_table; } step "s1-drop-all-shards" { - SELECT citus_drop_all_shards('append_table', 'public', 'append_table'); + SELECT citus_drop_all_shards('append_table', 'public', 'append_table'); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-truncate" { - TRUNCATE append_table; + TRUNCATE append_table; } step "s2-drop-all-shards" { - SELECT citus_drop_all_shards('append_table', 'public', 'append_table'); + SELECT citus_drop_all_shards('append_table', 'public', 'append_table'); } step "s2-select" { - SELECT * FROM append_table; + SELECT * FROM append_table; } permutation "s1-begin" "s1-drop-all-shards" "s2-truncate" "s1-commit" diff --git a/src/test/regress/spec/isolation_drop_vs_all.spec b/src/test/regress/spec/isolation_drop_vs_all.spec index d316c09d1..7bc20d5d1 100644 --- a/src/test/regress/spec/isolation_drop_vs_all.spec +++ b/src/test/regress/spec/isolation_drop_vs_all.spec @@ -5,21 +5,21 @@ // create distributed table to test behavior of DROP in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE SCHEMA drop_tests; - CREATE TABLE drop_tests.drop_hash(id integer, data text); - SELECT create_distributed_table('drop_tests.drop_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE SCHEMA drop_tests; + CREATE TABLE drop_tests.drop_hash(id integer, data text); + SELECT create_distributed_table('drop_tests.drop_hash', 'id'); - CREATE SCHEMA drop_tests_2; - CREATE TABLE drop_tests_2.drop_hash_2(id integer, data text); - SELECT create_distributed_table('drop_tests_2.drop_hash_2', 'id'); + CREATE SCHEMA drop_tests_2; + CREATE TABLE drop_tests_2.drop_hash_2(id integer, data text); + SELECT create_distributed_table('drop_tests_2.drop_hash_2', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS drop_tests.drop_hash, drop_tests_2.drop_hash_2 CASCADE; - DROP SCHEMA IF EXISTS drop_tests, drop_tests_2 CASCADE; + DROP TABLE IF EXISTS drop_tests.drop_hash, drop_tests_2.drop_hash_2 CASCADE; + DROP SCHEMA IF EXISTS drop_tests, drop_tests_2 CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_extension_commands.spec b/src/test/regress/spec/isolation_extension_commands.spec index 98a8eb6dc..ec1087ab2 100644 --- a/src/test/regress/spec/isolation_extension_commands.spec +++ b/src/test/regress/spec/isolation_extension_commands.spec @@ -1,108 +1,108 @@ setup { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); - create schema if not exists schema1; - create schema if not exists schema2; - CREATE schema if not exists schema3; + create schema if not exists schema1; + create schema if not exists schema2; + CREATE schema if not exists schema3; } teardown { - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-add-node-1" { - SELECT 1 FROM master_add_node('localhost', 57637); + SELECT 1 FROM master_add_node('localhost', 57637); } step "s1-remove-node-1" { - SELECT 1 FROM master_remove_node('localhost', 57637); + SELECT 1 FROM master_remove_node('localhost', 57637); } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-create-extension-with-schema2" { - CREATE extension seg with version "1.3" schema schema2; + CREATE extension seg with version "1.3" schema schema2; } step "s1-print" { - select count(*) from pg_catalog.pg_dist_object ; - select extname, extversion, nspname from pg_extension, pg_namespace where pg_namespace.oid=pg_extension.extnamespace and extname='seg'; - SELECT run_command_on_workers($$select extname from pg_extension where extname='seg'$$); - SELECT run_command_on_workers($$select extversion from pg_extension where extname='seg'$$); - SELECT run_command_on_workers($$select nspname from pg_extension, pg_namespace where extname='seg' and pg_extension.extnamespace=pg_namespace.oid$$); + select count(*) from pg_catalog.pg_dist_object ; + select extname, extversion, nspname from pg_extension, pg_namespace where pg_namespace.oid=pg_extension.extnamespace and extname='seg'; + SELECT run_command_on_workers($$select extname from pg_extension where extname='seg'$$); + SELECT run_command_on_workers($$select extversion from pg_extension where extname='seg'$$); + SELECT run_command_on_workers($$select nspname from pg_extension, pg_namespace where extname='seg' and pg_extension.extnamespace=pg_namespace.oid$$); } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-add-node-1" { - SELECT 1 FROM master_add_node('localhost', 57637); + SELECT 1 FROM master_add_node('localhost', 57637); } step "s2-create-extension-version-11" { - CREATE extension seg VERSION "1.1"; + CREATE extension seg VERSION "1.1"; } step "s2-alter-extension-version-13" { - ALTER extension seg update to "1.3"; + ALTER extension seg update to "1.3"; } step "s2-create-extension-with-schema1" { - CREATE extension seg with version "1.3" schema schema1; + CREATE extension seg with version "1.3" schema schema1; } step "s2-create-extension-with-schema2" { - CREATE extension seg with version "1.3" schema schema2; + CREATE extension seg with version "1.3" schema schema2; } step "s2-drop-extension" { - drop extension seg; + drop extension seg; } step "s2-alter-extension-update-to-version-12" { - ALTER extension seg update to "1.2"; + ALTER extension seg update to "1.2"; } step "s2-alter-extension-set-schema3" { - alter extension seg set schema schema3; + alter extension seg set schema schema3; } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-remove-node-1" { - SELECT 1 FROM master_remove_node('localhost', 57637); + SELECT 1 FROM master_remove_node('localhost', 57637); } // master_//_node vs extension command diff --git a/src/test/regress/spec/isolation_get_all_active_transactions.spec b/src/test/regress/spec/isolation_get_all_active_transactions.spec index 497b3a58a..7e6907484 100644 --- a/src/test/regress/spec/isolation_get_all_active_transactions.spec +++ b/src/test/regress/spec/isolation_get_all_active_transactions.spec @@ -1,27 +1,27 @@ setup { - SET LOCAL citus.multi_shard_modify_mode TO 'sequential'; - SET citus.shard_replication_factor TO 1; + SET LOCAL citus.multi_shard_modify_mode TO 'sequential'; + SET citus.shard_replication_factor TO 1; - CREATE TABLE test_table(column1 int, column2 int); - SELECT create_distributed_table('test_table', 'column1'); + CREATE TABLE test_table(column1 int, column2 int); + SELECT create_distributed_table('test_table', 'column1'); - CREATE USER test_user_1; + CREATE USER test_user_1; - CREATE USER test_user_2; + CREATE USER test_user_2; - CREATE USER test_readonly; + CREATE USER test_readonly; - CREATE USER test_monitor; + CREATE USER test_monitor; - GRANT pg_monitor TO test_monitor; + GRANT pg_monitor TO test_monitor; } teardown { - DROP TABLE test_table; - DROP USER test_user_1, test_user_2, test_readonly, test_monitor; - DROP TABLE IF EXISTS selected_pid; + DROP TABLE test_table; + DROP USER test_user_1, test_user_2, test_readonly, test_monitor; + DROP TABLE IF EXISTS selected_pid; } session "s1" @@ -29,96 +29,96 @@ session "s1" // run_command_on_placements is done in a separate step because the setup is executed as a single transaction step "s1-grant" { - GRANT ALL ON test_table TO test_user_1; - GRANT ALL ON test_table TO test_user_2; + GRANT ALL ON test_table TO test_user_1; + GRANT ALL ON test_table TO test_user_2; } step "s1-begin-insert" { - BEGIN; - SET ROLE test_user_1; - INSERT INTO test_table VALUES (100, 100); + BEGIN; + SET ROLE test_user_1; + INSERT INTO test_table VALUES (100, 100); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin-insert" { - BEGIN; - SET ROLE test_user_2; - INSERT INTO test_table VALUES (200, 200); + BEGIN; + SET ROLE test_user_2; + INSERT INTO test_table VALUES (200, 200); } step "s2-commit" { - COMMIT; + COMMIT; } session "s3" step "s3-as-admin" { - -- Admin should be able to see all transactions - SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; - SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; + -- Admin should be able to see all transactions + SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; + SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; } step "s3-as-user-1" { - -- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert) - -- userId (e.g., PG_PROC->userId) does not change, and hence none of the - -- transactions show up because here we are using test_user_1. This is a - -- limitation of isolation tester, we should be able to re-connect with - -- test_user_1 on s1/2-begin-insert to show that test_user_1 sees only its own processes - SET ROLE test_user_1; - SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; - SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; + -- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert) + -- userId (e.g., PG_PROC->userId) does not change, and hence none of the + -- transactions show up because here we are using test_user_1. This is a + -- limitation of isolation tester, we should be able to re-connect with + -- test_user_1 on s1/2-begin-insert to show that test_user_1 sees only its own processes + SET ROLE test_user_1; + SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; + SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; } step "s3-as-readonly" { - -- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert) - -- userId (e.g., PG_PROC->userId) does not change, and hence none of the - -- transactions show up because here we are using test_readonly. This is a - -- limitation of isolation tester, we should be able to re-connect with - -- test_readonly on s1/2-begin-insert to show that test_readonly sees only - -- its own processes - SET ROLE test_readonly; - SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; - SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; + -- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert) + -- userId (e.g., PG_PROC->userId) does not change, and hence none of the + -- transactions show up because here we are using test_readonly. This is a + -- limitation of isolation tester, we should be able to re-connect with + -- test_readonly on s1/2-begin-insert to show that test_readonly sees only + -- its own processes + SET ROLE test_readonly; + SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; + SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; } step "s3-as-monitor" { - -- Monitor should see all transactions - SET ROLE test_monitor; - SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; - SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; + -- Monitor should see all transactions + SET ROLE test_monitor; + SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; + SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; } step "s3-show-activity" { - SET ROLE postgres; - select count(*) from get_all_active_transactions() where process_id IN (SELECT * FROM selected_pid); + SET ROLE postgres; + select count(*) from get_all_active_transactions() where process_id IN (SELECT * FROM selected_pid); } session "s4" step "s4-record-pid" { - SELECT pg_backend_pid() INTO selected_pid; + SELECT pg_backend_pid() INTO selected_pid; } session "s5" step "s5-kill" { - SELECT pg_terminate_backend(pg_backend_pid) FROM selected_pid; + SELECT pg_terminate_backend(pg_backend_pid) FROM selected_pid; } diff --git a/src/test/regress/spec/isolation_get_distributed_wait_queries_mx.spec b/src/test/regress/spec/isolation_get_distributed_wait_queries_mx.spec index 1545845ec..8240a5ddc 100644 --- a/src/test/regress/spec/isolation_get_distributed_wait_queries_mx.spec +++ b/src/test/regress/spec/isolation_get_distributed_wait_queries_mx.spec @@ -1,82 +1,82 @@ #include "isolation_mx_common.include.spec" setup { - SELECT citus_add_node('localhost', 57636, groupid:=0); - CREATE TABLE ref_table(user_id int, value_1 int); - SELECT create_reference_table('ref_table'); - INSERT INTO ref_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + SELECT citus_add_node('localhost', 57636, groupid:=0); + CREATE TABLE ref_table(user_id int, value_1 int); + SELECT create_reference_table('ref_table'); + INSERT INTO ref_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); - CREATE TABLE tt1(user_id int, value_1 int); - SELECT create_distributed_table('tt1', 'user_id'); - INSERT INTO tt1 VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + CREATE TABLE tt1(user_id int, value_1 int); + SELECT create_distributed_table('tt1', 'user_id'); + INSERT INTO tt1 VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); } // Create and use UDF to close the connection opened in the setup step. Also return the cluster // back to the initial state. teardown { - DROP TABLE ref_table; - DROP TABLE tt1; - SELECT citus_remove_node('localhost', 57636); + DROP TABLE ref_table; + DROP TABLE tt1; + SELECT citus_remove_node('localhost', 57636); } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-update-ref-table-from-coordinator" { - UPDATE ref_table SET value_1 = 15; + UPDATE ref_table SET value_1 = 15; } // We do not need to begin a transaction on coordinator, since it will be open on workers. step "s1-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s1-update-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4'); } step "s1-update-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); } step "s1-delete-from-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE user_id = 1'); } step "s1-insert-into-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); } step "s1-copy-to-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); } step "s1-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table FOR UPDATE'); } step "s1-update-dist-table-id-1" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4 WHERE user_id = 1'); } step "s1-commit-worker" @@ -86,69 +86,69 @@ step "s1-commit-worker" step "s1-alter-table" { - ALTER TABLE ref_table ADD CONSTRAINT rf_p_key PRIMARY KEY(user_id); + ALTER TABLE ref_table ADD CONSTRAINT rf_p_key PRIMARY KEY(user_id); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s1-update-on-the-coordinator" { - UPDATE tt1 SET value_1 = 4; + UPDATE tt1 SET value_1 = 4; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-update-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 5'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 5'); } step "s2-update-dist-table-id-1" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 4 WHERE user_id = 1'); } step "s2-update-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); } step "s2-insert-into-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); } step "s2-copy-to-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s2-update-on-the-coordinator" { - UPDATE tt1 SET value_1 = 4; + UPDATE tt1 SET value_1 = 4; } step "s2-commit-worker" @@ -160,13 +160,13 @@ session "s3" step "s3-select-distributed-waiting-queries" { - SELECT blocked_statement, current_statement_in_blocking_process FROM citus_lock_waits WHERE blocked_statement NOT ILIKE '%run_commands_on_session_level_connection_to_node%' AND current_statement_in_blocking_process NOT ILIKE '%run_commands_on_session_level_connection_to_node%'; + SELECT blocked_statement, current_statement_in_blocking_process FROM citus_lock_waits WHERE blocked_statement NOT ILIKE '%run_commands_on_session_level_connection_to_node%' AND current_statement_in_blocking_process NOT ILIKE '%run_commands_on_session_level_connection_to_node%'; } // only works for the coordinator step "s3-show-actual-gpids" { - SELECT global_pid > 0 as gpid_exists, query FROM citus_stat_activity WHERE state = 'active' AND query IN (SELECT blocked_statement FROM citus_lock_waits UNION SELECT current_statement_in_blocking_process FROM citus_lock_waits) ORDER BY 1 DESC; + SELECT global_pid > 0 as gpid_exists, query FROM citus_stat_activity WHERE state = 'active' AND query IN (SELECT blocked_statement FROM citus_lock_waits UNION SELECT current_statement_in_blocking_process FROM citus_lock_waits) ORDER BY 1 DESC; } // session s1 and s4 executes the commands on the same worker node @@ -174,22 +174,22 @@ session "s4" step "s4-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s4-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s4-update-dist-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 5'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE tt1 SET value_1 = 5'); } step "s4-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s4-commit-worker" { @@ -205,48 +205,48 @@ session "s5" step "s5-begin" { - BEGIN; + BEGIN; } step "s5-alter" { - ALTER TABLE tt1 ADD COLUMN new_column INT; + ALTER TABLE tt1 ADD COLUMN new_column INT; } step "s5-rollback" { - ROLLBACK; + ROLLBACK; } session "s6" step "s6-select" { - SELECT user_id FROM tt1 ORDER BY user_id DESC LIMIT 1; + SELECT user_id FROM tt1 ORDER BY user_id DESC LIMIT 1; } session "s7" step "s7-alter" { - ALTER TABLE tt1 ADD COLUMN new_column INT; + ALTER TABLE tt1 ADD COLUMN new_column INT; } session "s8" step "s8-begin" { - BEGIN; + BEGIN; } step "s8-select" { - SELECT user_id FROM tt1 ORDER BY user_id DESC LIMIT 1; + SELECT user_id FROM tt1 ORDER BY user_id DESC LIMIT 1; } step "s8-rollback" { - ROLLBACK; + ROLLBACK; } permutation "s1-begin" "s1-update-ref-table-from-coordinator" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-update-ref-table" "s3-select-distributed-waiting-queries" "s1-commit" "s2-commit-worker" "s2-stop-connection" diff --git a/src/test/regress/spec/isolation_hash_copy_vs_all.spec b/src/test/regress/spec/isolation_hash_copy_vs_all.spec index 89d7691ba..81cc1f045 100644 --- a/src/test/regress/spec/isolation_hash_copy_vs_all.spec +++ b/src/test/regress/spec/isolation_hash_copy_vs_all.spec @@ -5,15 +5,15 @@ // create append distributed table to test behavior of COPY in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE hash_copy(id integer, data text, int_data int); - SELECT create_distributed_table('hash_copy', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE hash_copy(id integer, data text, int_data int); + SELECT create_distributed_table('hash_copy', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS hash_copy CASCADE; + DROP TABLE IF EXISTS hash_copy CASCADE; } // session 1 @@ -26,8 +26,8 @@ step "s1-router-select" { SELECT * FROM hash_copy WHERE id = 1; } step "s1-real-time-select" { SELECT * FROM hash_copy ORDER BY 1, 2; } step "s1-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM hash_copy AS t1 JOIN hash_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM hash_copy AS t1 JOIN hash_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s1-insert" { INSERT INTO hash_copy VALUES(0, 'k', 0); } step "s1-insert-select" { INSERT INTO hash_copy SELECT * FROM hash_copy; } @@ -51,10 +51,10 @@ step "s1-show-columns" { SELECT run_command_on_workers('SELECT column_name FROM step "s1-commit" { COMMIT; } step "s1-recreate-with-replication-2" { - DROP TABLE hash_copy; - SET citus.shard_replication_factor TO 2; - CREATE TABLE hash_copy(id integer, data text, int_data int); - SELECT create_distributed_table('hash_copy', 'id'); + DROP TABLE hash_copy; + SET citus.shard_replication_factor TO 2; + CREATE TABLE hash_copy(id integer, data text, int_data int); + SELECT create_distributed_table('hash_copy', 'id'); } // session 2 @@ -64,8 +64,8 @@ step "s2-router-select" { SELECT * FROM hash_copy WHERE id = 1; } step "s2-real-time-select" { SELECT * FROM hash_copy ORDER BY 1, 2; } step "s2-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM hash_copy AS t1 JOIN hash_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM hash_copy AS t1 JOIN hash_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s2-insert" { INSERT INTO hash_copy VALUES(0, 'k', 0); } step "s2-insert-select" { INSERT INTO hash_copy SELECT * FROM hash_copy; } diff --git a/src/test/regress/spec/isolation_insert_select_conflict.spec b/src/test/regress/spec/isolation_insert_select_conflict.spec index cf548ff2d..2bfc9cbb9 100644 --- a/src/test/regress/spec/isolation_insert_select_conflict.spec +++ b/src/test/regress/spec/isolation_insert_select_conflict.spec @@ -1,158 +1,158 @@ setup { - CREATE TABLE target_table(col_1 int primary key, col_2 int); - SELECT create_distributed_table('target_table','col_1'); - INSERT INTO target_table VALUES(1,2),(2,3),(3,4),(4,5),(5,6); + CREATE TABLE target_table(col_1 int primary key, col_2 int); + SELECT create_distributed_table('target_table','col_1'); + INSERT INTO target_table VALUES(1,2),(2,3),(3,4),(4,5),(5,6); - CREATE TABLE source_table(col_1 int, col_2 int, col_3 int); - SELECT create_distributed_table('source_table','col_1'); - INSERT INTO source_table VALUES(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5); + CREATE TABLE source_table(col_1 int, col_2 int, col_3 int); + SELECT create_distributed_table('source_table','col_1'); + INSERT INTO source_table VALUES(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5); - SET citus.shard_replication_factor to 2; - CREATE TABLE target_table_2(col_1 int primary key, col_2 int, col_3 int); - SELECT create_distributed_table('target_table_2', 'col_1'); + SET citus.shard_replication_factor to 2; + CREATE TABLE target_table_2(col_1 int primary key, col_2 int, col_3 int); + SELECT create_distributed_table('target_table_2', 'col_1'); } teardown { - DROP TABLE target_table, target_table_2, source_table; + DROP TABLE target_table, target_table_2, source_table; } session "s1" step "s1-begin" { - SET citus.shard_replication_factor to 1; - BEGIN; + SET citus.shard_replication_factor to 1; + BEGIN; } step "s1-begin-replication-factor-2" { - SET citus.shard_replication_factor to 2; - BEGIN; + SET citus.shard_replication_factor to 2; + BEGIN; } step "s1-insert-into-select-conflict-update" { - INSERT INTO target_table - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; + INSERT INTO target_table + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; } step "s1-insert-into-select-conflict-do-nothing" { - INSERT INTO target_table - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT DO NOTHING; + INSERT INTO target_table + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT DO NOTHING; } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-insert-into-select-conflict-update-replication-factor-2" { - INSERT INTO target_table_2 - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; + INSERT INTO target_table_2 + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-begin-replication-factor-2" { - SET citus.shard_replication_factor to 2; - BEGIN; + SET citus.shard_replication_factor to 2; + BEGIN; } step "s2-insert-into-select-conflict-update" { - INSERT INTO target_table - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; + INSERT INTO target_table + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; } step "s2-insert-into-select-conflict-update-replication-factor-2" { - INSERT INTO target_table_2 - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; + INSERT INTO target_table_2 + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT(col_1) DO UPDATE SET col_2 = EXCLUDED.col_2 RETURNING *; } step "s2-insert-into-select-conflict-do-nothing" { - INSERT INTO target_table - SELECT - col_1, col_2 - FROM ( - SELECT - col_1, col_2, col_3 - FROM - source_table - LIMIT 5 - ) as foo - ON CONFLICT DO NOTHING; + INSERT INTO target_table + SELECT + col_1, col_2 + FROM ( + SELECT + col_1, col_2, col_3 + FROM + source_table + LIMIT 5 + ) as foo + ON CONFLICT DO NOTHING; } step "s2-update" { - UPDATE target_table SET col_2 = 5; + UPDATE target_table SET col_2 = 5; } step "s2-delete" { - DELETE FROM target_table; + DELETE FROM target_table; } step "s2-commit" { - COMMIT; + COMMIT; } permutation "s1-begin" "s1-insert-into-select-conflict-update" "s2-begin" "s2-update" "s1-commit" "s2-commit" diff --git a/src/test/regress/spec/isolation_insert_select_repartition.spec b/src/test/regress/spec/isolation_insert_select_repartition.spec index 3e2eeeb30..48ad51582 100644 --- a/src/test/regress/spec/isolation_insert_select_repartition.spec +++ b/src/test/regress/spec/isolation_insert_select_repartition.spec @@ -1,20 +1,20 @@ setup { - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; SET citus.shard_count TO 4; - CREATE TABLE source_table(a int, b int); - SELECT create_distributed_table('source_table', 'a'); + CREATE TABLE source_table(a int, b int); + SELECT create_distributed_table('source_table', 'a'); SET citus.shard_count TO 3; - CREATE TABLE target_table(a int, b int); - SELECT create_distributed_table('target_table', 'a'); + CREATE TABLE target_table(a int, b int); + SELECT create_distributed_table('target_table', 'a'); INSERT INTO source_table SELECT i, i * i FROM generate_series(1, 10) i; } teardown { - DROP TABLE IF EXISTS source_table; - DROP TABLE IF EXISTS target_table; + DROP TABLE IF EXISTS source_table; + DROP TABLE IF EXISTS target_table; } session "s1" diff --git a/src/test/regress/spec/isolation_insert_select_vs_all.spec b/src/test/regress/spec/isolation_insert_select_vs_all.spec index 0a3ca4396..fa532674c 100644 --- a/src/test/regress/spec/isolation_insert_select_vs_all.spec +++ b/src/test/regress/spec/isolation_insert_select_vs_all.spec @@ -5,28 +5,28 @@ // create range distributed table to test behavior of INSERT/SELECT in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE insert_of_insert_select_hash(id integer, data text); - SELECT create_distributed_table('insert_of_insert_select_hash', 'id'); - CREATE TABLE select_of_insert_select_hash(id integer, data text); - SELECT create_distributed_table('select_of_insert_select_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE insert_of_insert_select_hash(id integer, data text); + SELECT create_distributed_table('insert_of_insert_select_hash', 'id'); + CREATE TABLE select_of_insert_select_hash(id integer, data text); + SELECT create_distributed_table('select_of_insert_select_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS insert_of_insert_select_hash CASCADE; - DROP TABLE IF EXISTS select_of_insert_select_hash CASCADE; + DROP TABLE IF EXISTS insert_of_insert_select_hash CASCADE; + DROP TABLE IF EXISTS select_of_insert_select_hash CASCADE; } // session 1 session "s1" step "s1-initialize" { - COPY insert_of_insert_select_hash FROM PROGRAM 'echo 0, a && echo 1, b && echo 2, c && echo 3, d && echo 4, e' WITH CSV; - COPY select_of_insert_select_hash FROM PROGRAM 'echo 0, a && echo 1, b && echo 2, c && echo 3, d && echo 4, e' WITH CSV; - COPY insert_of_insert_select_hash FROM PROGRAM 'echo 5, a && echo 6, b && echo 7, c && echo 8, d && echo 9, e' WITH CSV; - COPY select_of_insert_select_hash FROM PROGRAM 'echo 5, a && echo 6, b && echo 7, c && echo 8, d && echo 9, e' WITH CSV; + COPY insert_of_insert_select_hash FROM PROGRAM 'echo 0, a && echo 1, b && echo 2, c && echo 3, d && echo 4, e' WITH CSV; + COPY select_of_insert_select_hash FROM PROGRAM 'echo 0, a && echo 1, b && echo 2, c && echo 3, d && echo 4, e' WITH CSV; + COPY insert_of_insert_select_hash FROM PROGRAM 'echo 5, a && echo 6, b && echo 7, c && echo 8, d && echo 9, e' WITH CSV; + COPY select_of_insert_select_hash FROM PROGRAM 'echo 5, a && echo 6, b && echo 7, c && echo 8, d && echo 9, e' WITH CSV; } step "s1-begin" { BEGIN; } step "s1-insert-select" { INSERT INTO insert_of_insert_select_hash SELECT * FROM select_of_insert_select_hash ORDER BY 1, 2 LIMIT 5;; } diff --git a/src/test/regress/spec/isolation_insert_select_vs_all_on_mx.spec b/src/test/regress/spec/isolation_insert_select_vs_all_on_mx.spec index 6c78e77a1..cb17264e4 100644 --- a/src/test/regress/spec/isolation_insert_select_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_insert_select_vs_all_on_mx.spec @@ -2,9 +2,9 @@ setup { - CREATE TABLE dist_table(id integer, value integer); - SELECT create_distributed_table('dist_table', 'id'); - COPY dist_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + CREATE TABLE dist_table(id integer, value integer); + SELECT create_distributed_table('dist_table', 'id'); + COPY dist_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -30,22 +30,22 @@ step "s1-begin-on-worker" step "s1-colocated-insert-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT * FROM dist_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT * FROM dist_table'); } step "s1-insert-select-via-coordinator" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT value, id FROM dist_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT value, id FROM dist_table'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -53,7 +53,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -70,22 +70,22 @@ step "s2-begin-on-worker" step "s2-colocated-insert-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT * FROM dist_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT * FROM dist_table'); } step "s2-insert-select-via-coordinator" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT value, id FROM dist_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table SELECT value, id FROM dist_table'); } step "s2-insert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table VALUES (5, 50), (6, 60)') + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO dist_table VALUES (5, 50), (6, 60)') } step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table') + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table') } step "s2-update" @@ -95,22 +95,22 @@ step "s2-update" step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY dist_table FROM PROGRAM ''echo 5, 50 && echo 9, 90 && echo 10, 100''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY dist_table FROM PROGRAM ''echo 5, 50 && echo 9, 90 && echo 10, 100''WITH CSV'); } step "s2-coordinator-drop" { - DROP TABLE dist_table; + DROP TABLE dist_table; } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id = 5 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); + CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); } step "s2-commit-worker" @@ -125,7 +125,7 @@ step "s2-stop-connection" step "s2-commit" { - COMMIT; + COMMIT; } // We use this as a way to wait for s2-ddl-create-index-concurrently to @@ -138,7 +138,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM dist_table; + SELECT COUNT(*) FROM dist_table; } diff --git a/src/test/regress/spec/isolation_insert_vs_all.spec b/src/test/regress/spec/isolation_insert_vs_all.spec index 9f0b59b0f..20366ee62 100644 --- a/src/test/regress/spec/isolation_insert_vs_all.spec +++ b/src/test/regress/spec/isolation_insert_vs_all.spec @@ -5,15 +5,15 @@ // create range distributed table to test behavior of INSERT in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE insert_hash(id integer, data text); - SELECT create_distributed_table('insert_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE insert_hash(id integer, data text); + SELECT create_distributed_table('insert_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS insert_hash CASCADE; + DROP TABLE IF EXISTS insert_hash CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_insert_vs_all_on_mx.spec b/src/test/regress/spec/isolation_insert_vs_all_on_mx.spec index 4ca8c6802..551be9b5d 100644 --- a/src/test/regress/spec/isolation_insert_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_insert_vs_all_on_mx.spec @@ -2,9 +2,9 @@ setup { - CREATE TABLE insert_table(id integer, value integer); - SELECT create_distributed_table('insert_table', 'id'); - COPY insert_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + CREATE TABLE insert_table(id integer, value integer); + SELECT create_distributed_table('insert_table', 'id'); + COPY insert_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -31,22 +31,22 @@ step "s1-begin-on-worker" step "s1-insert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60)'); } step "s1-insert-multi-row" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60), (7, 70), (8, 80)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60), (7, 70), (8, 80)'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -71,47 +71,47 @@ step "s2-insert" step "s2-insert-multi-row" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60), (7, 70), (8, 80)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table VALUES(6, 60), (7, 70), (8, 80)'); } step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM insert_table WHERE id = 6'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM insert_table WHERE id = 6'); } step "s2-insert-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table SELECT * FROM insert_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO insert_table SELECT * FROM insert_table'); } step "s2-update" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE insert_table SET value = 65 WHERE id = 6'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE insert_table SET value = 65 WHERE id = 6'); } step "s2-update-multi-row" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE insert_table SET value = 67 WHERE id IN (6, 7)'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE insert_table SET value = 67 WHERE id IN (6, 7)'); } step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY insert_table FROM PROGRAM ''echo 9, 90 && echo 10, 100''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY insert_table FROM PROGRAM ''echo 9, 90 && echo 10, 100''WITH CSV'); } step "s2-truncate" { - SELECT run_commands_on_session_level_connection_to_node('TRUNCATE insert_table'); + SELECT run_commands_on_session_level_connection_to_node('TRUNCATE insert_table'); } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM insert_table WHERE id = 6 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM insert_table WHERE id = 6 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY insert_table_index ON insert_table(id); + CREATE INDEX CONCURRENTLY insert_table_index ON insert_table(id); } step "s2-commit-worker" @@ -134,7 +134,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM insert_table; + SELECT COUNT(*) FROM insert_table; } diff --git a/src/test/regress/spec/isolation_insert_vs_vacuum.spec b/src/test/regress/spec/isolation_insert_vs_vacuum.spec index 7860855e1..17946d0c4 100644 --- a/src/test/regress/spec/isolation_insert_vs_vacuum.spec +++ b/src/test/regress/spec/isolation_insert_vs_vacuum.spec @@ -50,4 +50,3 @@ permutation "s1-begin" "s1-insert" "s2-vacuum-analyze"(*) "s2-wait" "s1-commit" // INSERT and VACUUM FULL should block each other. permutation "s1-begin" "s1-insert" "s2-vacuum-full" "s1-commit" - diff --git a/src/test/regress/spec/isolation_logical_replication_binaryless.spec b/src/test/regress/spec/isolation_logical_replication_binaryless.spec index f89dac62e..c9b7dd05d 100644 --- a/src/test/regress/spec/isolation_logical_replication_binaryless.spec +++ b/src/test/regress/spec/isolation_logical_replication_binaryless.spec @@ -2,17 +2,17 @@ // being moved contains columns that don't allow for binary encoding setup { - SET citus.shard_count TO 1; - SET citus.shard_replication_factor TO 1; - ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 45076800; - CREATE TABLE t_nonbinary(id bigserial, nonbinary aclitem); - SELECT create_distributed_table('t_nonbinary', 'id'); - INSERT INTO t_nonbinary (SELECT i, 'user postgres=r/postgres' FROM generate_series(1, 5) i); + SET citus.shard_count TO 1; + SET citus.shard_replication_factor TO 1; + ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 45076800; + CREATE TABLE t_nonbinary(id bigserial, nonbinary aclitem); + SELECT create_distributed_table('t_nonbinary', 'id'); + INSERT INTO t_nonbinary (SELECT i, 'user postgres=r/postgres' FROM generate_series(1, 5) i); } teardown { - DROP TABLE t_nonbinary; + DROP TABLE t_nonbinary; } @@ -20,18 +20,18 @@ session "s1" step "s1-move-placement" { - SELECT citus_move_shard_placement(45076800, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='force_logical'); + SELECT citus_move_shard_placement(45076800, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='force_logical'); } step "s1-select" { - SELECT * FROM t_nonbinary order by id; + SELECT * FROM t_nonbinary order by id; } session "s2" step "s2-insert" { - INSERT INTO t_nonbinary (SELECT i, 'user postgres=r/postgres' FROM generate_series(6, 10) i); + INSERT INTO t_nonbinary (SELECT i, 'user postgres=r/postgres' FROM generate_series(6, 10) i); } session "s3" diff --git a/src/test/regress/spec/isolation_logical_replication_multi_shard_commands.spec b/src/test/regress/spec/isolation_logical_replication_multi_shard_commands.spec index fa133031e..5bbaa66f7 100644 --- a/src/test/regress/spec/isolation_logical_replication_multi_shard_commands.spec +++ b/src/test/regress/spec/isolation_logical_replication_multi_shard_commands.spec @@ -3,19 +3,19 @@ setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -23,22 +23,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638) FROM selected_shard; + SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638) FROM selected_shard; } step "s1-end" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -55,7 +55,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-select" @@ -87,22 +87,22 @@ step "s2-upsert" step "s2-copy" { - COPY logical_replicate_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5\n15,30"' WITH CSV; + COPY logical_replicate_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5\n15,30"' WITH CSV; } step "s2-truncate" { - TRUNCATE logical_replicate_placement; + TRUNCATE logical_replicate_placement; } step "s2-alter-table" { - ALTER TABLE logical_replicate_placement ADD COLUMN z INT; + ALTER TABLE logical_replicate_placement ADD COLUMN z INT; } step "s2-end" { - COMMIT; + COMMIT; } session "s3" @@ -149,4 +149,3 @@ permutation "s1-insert" "s1-begin" "s2-begin" "s2-select" "s1-move-placement" "s permutation "s1-begin" "s2-begin" "s2-copy" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" permutation "s1-insert" "s1-begin" "s2-begin" "s2-truncate" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" permutation "s1-begin" "s2-begin" "s2-alter-table" "s1-move-placement" "s2-end" "s1-end" "s1-select" "s1-get-shard-distribution" - diff --git a/src/test/regress/spec/isolation_logical_replication_multi_shard_commands_on_mx.spec b/src/test/regress/spec/isolation_logical_replication_multi_shard_commands_on_mx.spec index 24432a78b..78e368747 100644 --- a/src/test/regress/spec/isolation_logical_replication_multi_shard_commands_on_mx.spec +++ b/src/test/regress/spec/isolation_logical_replication_multi_shard_commands_on_mx.spec @@ -5,18 +5,18 @@ setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -24,22 +24,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638) FROM selected_shard; + SELECT master_move_shard_placement(get_shard_id_for_distribution_column, 'localhost', 57637, 'localhost', 57638) FROM selected_shard; } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -56,12 +56,12 @@ session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-select" @@ -86,12 +86,12 @@ step "s2-update" step "s2-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } session "s3" @@ -128,4 +128,3 @@ permutation "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-update" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-delete" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" - diff --git a/src/test/regress/spec/isolation_logical_replication_nonsu_nonbypassrls.spec b/src/test/regress/spec/isolation_logical_replication_nonsu_nonbypassrls.spec index 103b5e70f..bfaa71380 100644 --- a/src/test/regress/spec/isolation_logical_replication_nonsu_nonbypassrls.spec +++ b/src/test/regress/spec/isolation_logical_replication_nonsu_nonbypassrls.spec @@ -13,8 +13,8 @@ setup SET citus.max_cached_conns_per_worker to 0; SET citus.next_shard_id TO 1234000; - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; CREATE TABLE dist(column1 int PRIMARY KEY, column2 int); SELECT create_distributed_table('dist', 'column1'); @@ -22,7 +22,7 @@ setup CREATE USER new_user; GRANT ALL ON SCHEMA public TO new_user; - SELECT get_shard_id_for_distribution_column('dist', 23) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('dist', 23) INTO selected_shard; GRANT ALL ON TABLE selected_shard TO new_user; } @@ -44,7 +44,7 @@ session "s1" step "s1-no-connection-cache" { - SET citus.max_cached_conns_per_worker to 0; + SET citus.max_cached_conns_per_worker to 0; } step "s1-table-owner-new_user" @@ -69,7 +69,7 @@ step "s1-user-spec" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-set-role" @@ -84,12 +84,12 @@ step "s1-move-placement" step "s1-reset-role" { - RESET ROLE; + RESET ROLE; } step "s1-end" { - COMMIT; + COMMIT; } step "s1-select" @@ -106,7 +106,7 @@ session "s2" step "s2-no-connection-cache" { - SET citus.max_cached_conns_per_worker to 0; + SET citus.max_cached_conns_per_worker to 0; } step "s2-insert" @@ -118,7 +118,7 @@ session "s3" step "s3-no-connection-cache" { - SET citus.max_cached_conns_per_worker to 0; + SET citus.max_cached_conns_per_worker to 0; } step "s3-acquire-advisory-lock" diff --git a/src/test/regress/spec/isolation_logical_replication_single_shard_commands.spec b/src/test/regress/spec/isolation_logical_replication_single_shard_commands.spec index 117e8cf43..72e7bfa75 100644 --- a/src/test/regress/spec/isolation_logical_replication_single_shard_commands.spec +++ b/src/test/regress/spec/isolation_logical_replication_single_shard_commands.spec @@ -2,18 +2,18 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -21,22 +21,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638); + SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638); } step "s1-end" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" @@ -46,7 +46,7 @@ step "s1-insert" step "s1-get-shard-distribution" { - select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 AND shardid in (SELECT * FROM selected_shard) order by nodeport; + select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 AND shardid in (SELECT * FROM selected_shard) order by nodeport; } session "s2" @@ -58,9 +58,9 @@ step "s2-begin" step "s2-move-placement" { - SELECT master_move_shard_placement( - get_shard_id_for_distribution_column('logical_replicate_placement', 4), - 'localhost', 57637, 'localhost', 57638); + SELECT master_move_shard_placement( + get_shard_id_for_distribution_column('logical_replicate_placement', 4), + 'localhost', 57637, 'localhost', 57638); } step "s2-select" @@ -97,7 +97,7 @@ step "s2-upsert" step "s2-end" { - COMMIT; + COMMIT; } session "s3" diff --git a/src/test/regress/spec/isolation_logical_replication_single_shard_commands_on_mx.spec b/src/test/regress/spec/isolation_logical_replication_single_shard_commands_on_mx.spec index 7f24dab91..75bbf89c0 100644 --- a/src/test/regress/spec/isolation_logical_replication_single_shard_commands_on_mx.spec +++ b/src/test/regress/spec/isolation_logical_replication_single_shard_commands_on_mx.spec @@ -4,17 +4,17 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 8; - CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); - SELECT create_distributed_table('logical_replicate_placement', 'x'); + SET citus.shard_count TO 8; + CREATE TABLE logical_replicate_placement (x int PRIMARY KEY, y int); + SELECT create_distributed_table('logical_replicate_placement', 'x'); - SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_placement', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE logical_replicate_placement; + DROP TABLE selected_shard; + DROP TABLE logical_replicate_placement; } @@ -22,79 +22,79 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638); + SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638); } step "s1-commit" { - COMMIT; + COMMIT; } step "s1-select" { - SELECT * FROM logical_replicate_placement order by y; + SELECT * FROM logical_replicate_placement order by y; } step "s1-insert" { - INSERT INTO logical_replicate_placement VALUES (15, 15); + INSERT INTO logical_replicate_placement VALUES (15, 15); } step "s1-get-shard-distribution" { - select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 AND shardid in (SELECT * FROM selected_shard) order by nodeport; + select nodeport from pg_dist_placement inner join pg_dist_node on(pg_dist_placement.groupid = pg_dist_node.groupid) where shardstate != 4 AND shardid in (SELECT * FROM selected_shard) order by nodeport; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement ORDER BY y'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement ORDER BY y'); } step "s2-insert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO logical_replicate_placement VALUES (15, 15)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO logical_replicate_placement VALUES (15, 15)'); } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement WHERE x=15 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM logical_replicate_placement WHERE x=15 FOR UPDATE'); } step "s2-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM logical_replicate_placement WHERE x = 15'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM logical_replicate_placement WHERE x = 15'); } step "s2-update" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE logical_replicate_placement SET y = y + 1 WHERE x = 15'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE logical_replicate_placement SET y = y + 1 WHERE x = 15'); } step "s2-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } session "s3" @@ -104,12 +104,12 @@ session "s3" // source code step "s3-acquire-advisory-lock" { - SELECT pg_advisory_lock(44000, 55152); + SELECT pg_advisory_lock(44000, 55152); } step "s3-release-advisory-lock" { - SELECT pg_advisory_unlock(44000, 55152); + SELECT pg_advisory_unlock(44000, 55152); } ##// nonblocking tests lie below ### @@ -132,4 +132,3 @@ permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-delete" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-select" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" permutation "s1-insert" "s1-begin" "s2-start-session-level-connection" "s2-begin-on-worker" "s2-select-for-update" "s1-move-placement" "s2-commit-worker" "s1-commit" "s1-get-shard-distribution" "s2-stop-connection" - diff --git a/src/test/regress/spec/isolation_logical_replication_with_partitioning.spec b/src/test/regress/spec/isolation_logical_replication_with_partitioning.spec index aac8e5b71..d42752a89 100644 --- a/src/test/regress/spec/isolation_logical_replication_with_partitioning.spec +++ b/src/test/regress/spec/isolation_logical_replication_with_partitioning.spec @@ -8,25 +8,25 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; - CREATE TABLE logical_replicate_partitioned(x int, y int, PRIMARY KEY (x,y) ) PARTITION BY RANGE(y); - SELECT create_distributed_table('logical_replicate_partitioned', 'x'); - CREATE TABLE logical_replicate_partitioned_1 PARTITION OF logical_replicate_partitioned - FOR VALUES FROM (0) TO (100); - CREATE TABLE logical_replicate_partitioned_2 PARTITION OF logical_replicate_partitioned - FOR VALUES FROM (100) TO (200); + CREATE TABLE logical_replicate_partitioned(x int, y int, PRIMARY KEY (x,y) ) PARTITION BY RANGE(y); + SELECT create_distributed_table('logical_replicate_partitioned', 'x'); + CREATE TABLE logical_replicate_partitioned_1 PARTITION OF logical_replicate_partitioned + FOR VALUES FROM (0) TO (100); + CREATE TABLE logical_replicate_partitioned_2 PARTITION OF logical_replicate_partitioned + FOR VALUES FROM (100) TO (200); - SELECT get_shard_id_for_distribution_column('logical_replicate_partitioned', 5) INTO selected_partitioned_shard; - SELECT get_shard_id_for_distribution_column('logical_replicate_partitioned_1', 5) INTO selected_single_partition_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_partitioned', 5) INTO selected_partitioned_shard; + SELECT get_shard_id_for_distribution_column('logical_replicate_partitioned_1', 5) INTO selected_single_partition_shard; } teardown { - DROP TABLE selected_partitioned_shard; - DROP TABLE selected_single_partition_shard; - DROP TABLE logical_replicate_partitioned; + DROP TABLE selected_partitioned_shard; + DROP TABLE selected_single_partition_shard; + DROP TABLE logical_replicate_partitioned; } @@ -34,22 +34,22 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-move-placement-partitioned" { - SELECT master_move_shard_placement((SELECT * FROM selected_partitioned_shard), 'localhost', 57638, 'localhost', 57637); + SELECT master_move_shard_placement((SELECT * FROM selected_partitioned_shard), 'localhost', 57638, 'localhost', 57637); } step "s1-move-placement-single-partition" { - SELECT master_move_shard_placement((SELECT * FROM selected_single_partition_shard), 'localhost', 57638, 'localhost', 57637); + SELECT master_move_shard_placement((SELECT * FROM selected_single_partition_shard), 'localhost', 57638, 'localhost', 57637); } step "s1-end" { - COMMIT; + COMMIT; } session "s2" @@ -78,17 +78,17 @@ step "s2-upsert-partitioned" step "s2-copy-partitioned" { - COPY logical_replicate_partitioned FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY logical_replicate_partitioned FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s2-truncate-partitioned" { - TRUNCATE logical_replicate_partitioned; + TRUNCATE logical_replicate_partitioned; } step "s2-alter-table-partitioned" { - ALTER TABLE logical_replicate_partitioned ADD COLUMN z INT; + ALTER TABLE logical_replicate_partitioned ADD COLUMN z INT; } @@ -136,5 +136,3 @@ permutation "s1-begin" "s1-move-placement-single-partition" "s2-truncate-partiti permutation "s1-begin" "s1-move-placement-single-partition" "s2-alter-table-partitioned" "s1-end" permutation "s1-begin" "s2-truncate-partitioned" "s1-move-placement-single-partition" "s1-end" permutation "s1-begin" "s2-alter-table-partitioned" "s1-move-placement-single-partition" "s1-end" - - diff --git a/src/test/regress/spec/isolation_master_update_node.spec b/src/test/regress/spec/isolation_master_update_node.spec index 5c5a1bb48..3cab9fbec 100644 --- a/src/test/regress/spec/isolation_master_update_node.spec +++ b/src/test/regress/spec/isolation_master_update_node.spec @@ -36,16 +36,16 @@ step "s2-begin" { BEGIN; } step "s2-update-node-1" { -- update a specific node by address SELECT master_update_node(nodeid, 'localhost', nodeport + 10) - FROM pg_dist_node - WHERE nodename = 'localhost' - AND nodeport = 57637; + FROM pg_dist_node + WHERE nodename = 'localhost' + AND nodeport = 57637; } step "s2-update-node-1-force" { -- update a specific node by address (force) SELECT master_update_node(nodeid, 'localhost', nodeport + 10, force => true, lock_cooldown => 100) - FROM pg_dist_node - WHERE nodename = 'localhost' - AND nodeport = 57637; + FROM pg_dist_node + WHERE nodename = 'localhost' + AND nodeport = 57637; } step "s2-abort" { ABORT; } diff --git a/src/test/regress/spec/isolation_max_client_connections.spec b/src/test/regress/spec/isolation_max_client_connections.spec index 6c02cca52..c40d9677a 100644 --- a/src/test/regress/spec/isolation_max_client_connections.spec +++ b/src/test/regress/spec/isolation_max_client_connections.spec @@ -1,32 +1,32 @@ setup { - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; - CREATE USER my_user; - SELECT run_command_on_workers('CREATE USER my_user'); + CREATE USER my_user; + SELECT run_command_on_workers('CREATE USER my_user'); CREATE TABLE my_table (test_id integer NOT NULL, data text); SELECT create_distributed_table('my_table', 'test_id'); - GRANT USAGE ON SCHEMA public TO my_user; - GRANT SELECT ON TABLE my_table TO my_user; + GRANT USAGE ON SCHEMA public TO my_user; + GRANT SELECT ON TABLE my_table TO my_user; - SET citus.enable_ddl_propagation TO OFF; - CREATE FUNCTION make_external_connection_to_node(text,int,text,text) - RETURNS void - AS 'citus' - LANGUAGE C STRICT; - RESET citus.enable_ddl_propagation; + SET citus.enable_ddl_propagation TO OFF; + CREATE FUNCTION make_external_connection_to_node(text,int,text,text) + RETURNS void + AS 'citus' + LANGUAGE C STRICT; + RESET citus.enable_ddl_propagation; - SELECT run_command_on_workers('ALTER SYSTEM SET citus.max_client_connections TO 1'); - SELECT run_command_on_workers('SELECT pg_reload_conf()'); + SELECT run_command_on_workers('ALTER SYSTEM SET citus.max_client_connections TO 1'); + SELECT run_command_on_workers('SELECT pg_reload_conf()'); } teardown { - SELECT run_command_on_workers('ALTER SYSTEM RESET citus.max_client_connections'); - SELECT run_command_on_workers('SELECT pg_reload_conf()'); - DROP TABLE my_table; + SELECT run_command_on_workers('ALTER SYSTEM RESET citus.max_client_connections'); + SELECT run_command_on_workers('SELECT pg_reload_conf()'); + DROP TABLE my_table; } session "s1" @@ -34,13 +34,13 @@ session "s1" // Setup runs as a transaction, so run_command_on_placements must be separate step "s1-grant" { - SELECT result FROM run_command_on_placements('my_table', 'GRANT SELECT ON TABLE %s TO my_user'); + SELECT result FROM run_command_on_placements('my_table', 'GRANT SELECT ON TABLE %s TO my_user'); } // Open one external connection as non-superuser, is allowed step "s1-connect" { - SELECT make_external_connection_to_node('localhost', 57637, 'my_user', current_database()); + SELECT make_external_connection_to_node('localhost', 57637, 'my_user', current_database()); } session "s2" @@ -48,13 +48,13 @@ session "s2" // Open another external connection as non-superuser, not allowed step "s2-connect" { - SELECT make_external_connection_to_node('localhost', 57637, 'my_user', current_database()); + SELECT make_external_connection_to_node('localhost', 57637, 'my_user', current_database()); } // Open another external connection as superuser, allowed step "s2-connect-superuser" { - SELECT make_external_connection_to_node('localhost', 57637, 'postgres', current_database()); + SELECT make_external_connection_to_node('localhost', 57637, 'postgres', current_database()); } session "s3" @@ -62,8 +62,8 @@ session "s3" // Open internal connections as non-superuser, allowed step "s3-select" { - SET ROLE my_user; - SELECT count(*) FROM my_table; + SET ROLE my_user; + SELECT count(*) FROM my_table; } permutation "s1-grant" "s1-connect" "s2-connect" "s2-connect-superuser" "s3-select" diff --git a/src/test/regress/spec/isolation_metadata_sync_deadlock.spec b/src/test/regress/spec/isolation_metadata_sync_deadlock.spec index 67c20a2b2..08386d122 100644 --- a/src/test/regress/spec/isolation_metadata_sync_deadlock.spec +++ b/src/test/regress/spec/isolation_metadata_sync_deadlock.spec @@ -2,42 +2,42 @@ setup { - CREATE OR REPLACE FUNCTION trigger_metadata_sync() - RETURNS void - LANGUAGE C STRICT - AS 'citus'; + CREATE OR REPLACE FUNCTION trigger_metadata_sync() + RETURNS void + LANGUAGE C STRICT + AS 'citus'; - CREATE OR REPLACE FUNCTION wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) - RETURNS void - LANGUAGE C STRICT - AS 'citus'; + CREATE OR REPLACE FUNCTION wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) + RETURNS void + LANGUAGE C STRICT + AS 'citus'; - CREATE TABLE deadlock_detection_test (user_id int UNIQUE, some_val int); - INSERT INTO deadlock_detection_test SELECT i, i FROM generate_series(1,7) i; - SELECT create_distributed_table('deadlock_detection_test', 'user_id'); + CREATE TABLE deadlock_detection_test (user_id int UNIQUE, some_val int); + INSERT INTO deadlock_detection_test SELECT i, i FROM generate_series(1,7) i; + SELECT create_distributed_table('deadlock_detection_test', 'user_id'); - CREATE TABLE t2(a int); - SELECT create_distributed_table('t2', 'a'); + CREATE TABLE t2(a int); + SELECT create_distributed_table('t2', 'a'); } teardown { - DROP FUNCTION trigger_metadata_sync(); - DROP TABLE deadlock_detection_test; - DROP TABLE t2; - SET citus.shard_replication_factor = 1; + DROP FUNCTION trigger_metadata_sync(); + DROP TABLE deadlock_detection_test; + DROP TABLE t2; + SET citus.shard_replication_factor = 1; } session "s1" step "enable-deadlock-detection" { - ALTER SYSTEM SET citus.distributed_deadlock_detection_factor TO 3; + ALTER SYSTEM SET citus.distributed_deadlock_detection_factor TO 3; } step "disable-deadlock-detection" { - ALTER SYSTEM SET citus.distributed_deadlock_detection_factor TO -1; + ALTER SYSTEM SET citus.distributed_deadlock_detection_factor TO -1; } step "reload-conf" @@ -47,49 +47,49 @@ step "reload-conf" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-update-1" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 1; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 1; } step "s1-update-2" { - UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2; + UPDATE deadlock_detection_test SET some_val = 1 WHERE user_id = 2; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-update-1-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 1'); } step "s2-update-2-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 2'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE deadlock_detection_test SET some_val = 2 WHERE user_id = 2'); } step "s2-truncate-on-worker" @@ -99,7 +99,7 @@ step "s2-truncate-on-worker" step "s2-commit-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } session "s3" @@ -111,12 +111,12 @@ step "s3-invalidate-metadata" step "s3-resync" { - SELECT trigger_metadata_sync(); + SELECT trigger_metadata_sync(); } step "s3-wait" { - SELECT pg_sleep(2); + SELECT pg_sleep(2); } // Backends can block metadata sync. The following test verifies that if this happens, diff --git a/src/test/regress/spec/isolation_metadata_sync_vs_all.spec b/src/test/regress/spec/isolation_metadata_sync_vs_all.spec index 59a100a6f..9ebf7ceb2 100644 --- a/src/test/regress/spec/isolation_metadata_sync_vs_all.spec +++ b/src/test/regress/spec/isolation_metadata_sync_vs_all.spec @@ -1,46 +1,46 @@ setup { - SET citus.shard_replication_factor to 1; + SET citus.shard_replication_factor to 1; - ALTER SEQUENCE pg_catalog.pg_dist_colocationid_seq RESTART 123000; - ALTER SEQUENCE pg_catalog.pg_dist_groupid_seq RESTART 123000; - ALTER SEQUENCE pg_catalog.pg_dist_node_nodeid_seq RESTART 123000; - ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 123000; + ALTER SEQUENCE pg_catalog.pg_dist_colocationid_seq RESTART 123000; + ALTER SEQUENCE pg_catalog.pg_dist_groupid_seq RESTART 123000; + ALTER SEQUENCE pg_catalog.pg_dist_node_nodeid_seq RESTART 123000; + ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 123000; - -- Create the necessary test utility function - CREATE OR REPLACE FUNCTION activate_node_snapshot() - RETURNS text[] - LANGUAGE C STRICT - AS 'citus'; - SELECT create_distributed_function('activate_node_snapshot()'); + -- Create the necessary test utility function + CREATE OR REPLACE FUNCTION activate_node_snapshot() + RETURNS text[] + LANGUAGE C STRICT + AS 'citus'; + SELECT create_distributed_function('activate_node_snapshot()'); - -- Create distributed tables - CREATE TABLE ref_table (test_id integer, y int unique); - SELECT create_reference_table('ref_table'); + -- Create distributed tables + CREATE TABLE ref_table (test_id integer, y int unique); + SELECT create_reference_table('ref_table'); - CREATE TABLE dist_table (x int, y int); - SELECT create_distributed_table('dist_table', 'x'); + CREATE TABLE dist_table (x int, y int); + SELECT create_distributed_table('dist_table', 'x'); - CREATE TABLE dist_partitioned_table (x int, y int) PARTITION BY RANGE(y); - SELECT create_distributed_table('dist_partitioned_table', 'x'); + CREATE TABLE dist_partitioned_table (x int, y int) PARTITION BY RANGE(y); + SELECT create_distributed_table('dist_partitioned_table', 'x'); - CREATE TABLE dist_partitioned_table_p1(x int, y int); + CREATE TABLE dist_partitioned_table_p1(x int, y int); } teardown { - DROP TABLE IF EXISTS ref_table, - dist_table, - dist_partitioned_table, - dist_partitioned_table_p1, - dist_partitioned_table_p2, - new_dist_table, - new_ref_table; + DROP TABLE IF EXISTS ref_table, + dist_table, + dist_partitioned_table, + dist_partitioned_table_p1, + dist_partitioned_table_p2, + new_dist_table, + new_ref_table; - DROP FUNCTION activate_node_snapshot(); - DROP FUNCTION IF EXISTS squares(int); - DROP TYPE IF EXISTS my_type; + DROP FUNCTION activate_node_snapshot(); + DROP FUNCTION IF EXISTS squares(int); + DROP TYPE IF EXISTS my_type; } session "s1" @@ -57,154 +57,154 @@ step "s1-commit" step "s1-start-metadata-sync" { - SELECT start_metadata_sync_to_node('localhost', 57638); + SELECT start_metadata_sync_to_node('localhost', 57638); } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-start-metadata-sync-to-same-node" { - SELECT start_metadata_sync_to_node('localhost', 57638); + SELECT start_metadata_sync_to_node('localhost', 57638); } step "s2-start-metadata-sync-to-another-node" { - SELECT start_metadata_sync_to_node('localhost', 57637); + SELECT start_metadata_sync_to_node('localhost', 57637); } step "s2-alter-table" { - ALTER TABLE dist_table ADD COLUMN z int; + ALTER TABLE dist_table ADD COLUMN z int; } step "s2-add-fk" { - ALTER TABLE dist_table ADD CONSTRAINT y_fk FOREIGN KEY (y) REFERENCES ref_table(y); + ALTER TABLE dist_table ADD CONSTRAINT y_fk FOREIGN KEY (y) REFERENCES ref_table(y); } step "s2-drop-fk" { - ALTER TABLE dist_table DROP CONSTRAINT y_fk; + ALTER TABLE dist_table DROP CONSTRAINT y_fk; } step "s2-drop-table" { - DROP TABLE dist_table; + DROP TABLE dist_table; } step "s2-create-dist-table" { - CREATE TABLE new_dist_table(id int, data int); - SELECT create_distributed_table('new_dist_table', 'id'); + CREATE TABLE new_dist_table(id int, data int); + SELECT create_distributed_table('new_dist_table', 'id'); } step "s2-create-schema" { - CREATE SCHEMA dist_schema; - CREATE TABLE dist_schema.dist_table_in_schema(id int, data int); + CREATE SCHEMA dist_schema; + CREATE TABLE dist_schema.dist_table_in_schema(id int, data int); - SELECT create_distributed_table('dist_schema.dist_table_in_schema', 'id'); + SELECT create_distributed_table('dist_schema.dist_table_in_schema', 'id'); } step "s2-drop-schema" { - DROP SCHEMA dist_schema CASCADE; + DROP SCHEMA dist_schema CASCADE; } step "s2-create-ref-table" { - CREATE TABLE new_ref_table(id int, data int); - SELECT create_reference_table('new_ref_table'); + CREATE TABLE new_ref_table(id int, data int); + SELECT create_reference_table('new_ref_table'); } step "s2-attach-partition" { - ALTER TABLE dist_partitioned_table ATTACH PARTITION dist_partitioned_table_p1 FOR VALUES FROM (1) TO (9); + ALTER TABLE dist_partitioned_table ATTACH PARTITION dist_partitioned_table_p1 FOR VALUES FROM (1) TO (9); } step "s2-detach-partition" { - ALTER TABLE dist_partitioned_table DETACH PARTITION dist_partitioned_table_p1; + ALTER TABLE dist_partitioned_table DETACH PARTITION dist_partitioned_table_p1; } step "s2-create-partition-of" { - CREATE TABLE dist_partitioned_table_p2 PARTITION OF dist_partitioned_table FOR VALUES FROM (10) TO (20); + CREATE TABLE dist_partitioned_table_p2 PARTITION OF dist_partitioned_table FOR VALUES FROM (10) TO (20); } step "s2-create-type" { - CREATE TYPE my_type AS (a int, b int); + CREATE TYPE my_type AS (a int, b int); } step "s2-drop-type" { - DROP TYPE my_type; + DROP TYPE my_type; } step "s2-alter-type" { - ALTER TYPE my_type ADD ATTRIBUTE x int; + ALTER TYPE my_type ADD ATTRIBUTE x int; } step "s2-create-dist-func" { - CREATE FUNCTION squares(int) RETURNS SETOF RECORD + CREATE FUNCTION squares(int) RETURNS SETOF RECORD AS $$ SELECT i, i * i FROM generate_series(1, $1) i $$ LANGUAGE SQL; - SELECT create_distributed_function('squares(int)'); + SELECT create_distributed_function('squares(int)'); } step "s2-drop-dist-func" { - DROP FUNCTION squares(int); + DROP FUNCTION squares(int); } session "s3" step "s3-compare-snapshot" { - SELECT count(*) = 0 AS same_metadata_in_workers - FROM - ( - ( - SELECT unnest(activate_node_snapshot()) - EXCEPT - SELECT unnest(result::text[]) AS unnested_result - FROM run_command_on_workers($$SELECT activate_node_snapshot()$$) - ) - UNION - ( - SELECT unnest(result::text[]) AS unnested_result - FROM run_command_on_workers($$SELECT activate_node_snapshot()$$) - EXCEPT - SELECT unnest(activate_node_snapshot()) - ) - ) AS foo; + SELECT count(*) = 0 AS same_metadata_in_workers + FROM + ( + ( + SELECT unnest(activate_node_snapshot()) + EXCEPT + SELECT unnest(result::text[]) AS unnested_result + FROM run_command_on_workers($$SELECT activate_node_snapshot()$$) + ) + UNION + ( + SELECT unnest(result::text[]) AS unnested_result + FROM run_command_on_workers($$SELECT activate_node_snapshot()$$) + EXCEPT + SELECT unnest(activate_node_snapshot()) + ) + ) AS foo; } step "s3-compare-type-definition" { - SELECT run_command_on_workers($$SELECT '(1,1,1)'::my_type$$); + SELECT run_command_on_workers($$SELECT '(1,1,1)'::my_type$$); } step "s3-debug" { - SELECT unnest(activate_node_snapshot()); + SELECT unnest(activate_node_snapshot()); - SELECT unnest(result::text[]) - FROM run_command_on_workers('SELECT activate_node_snapshot()'); + SELECT unnest(result::text[]) + FROM run_command_on_workers('SELECT activate_node_snapshot()'); } // before running any updates to metadata, make sure all nodes have same metadata in the cluster diff --git a/src/test/regress/spec/isolation_modify_with_subquery_vs_dml.spec b/src/test/regress/spec/isolation_modify_with_subquery_vs_dml.spec index ae5a08e0a..4f4ea179c 100644 --- a/src/test/regress/spec/isolation_modify_with_subquery_vs_dml.spec +++ b/src/test/regress/spec/isolation_modify_with_subquery_vs_dml.spec @@ -1,34 +1,34 @@ setup { - SET citus.shard_replication_factor to 2; - CREATE TABLE users_test_table(user_id int, value_1 int, value_2 int, value_3 int); - SELECT create_distributed_table('users_test_table', 'user_id'); - INSERT INTO users_test_table VALUES - (1, 5, 6, 7), - (2, 12, 7, 18), - (3, 23, 8, 25), - (4, 42, 9, 23), - (5, 35, 10, 17), - (6, 21, 11, 25), - (7, 27, 12, 18); + SET citus.shard_replication_factor to 2; + CREATE TABLE users_test_table(user_id int, value_1 int, value_2 int, value_3 int); + SELECT create_distributed_table('users_test_table', 'user_id'); + INSERT INTO users_test_table VALUES + (1, 5, 6, 7), + (2, 12, 7, 18), + (3, 23, 8, 25), + (4, 42, 9, 23), + (5, 35, 10, 17), + (6, 21, 11, 25), + (7, 27, 12, 18); - CREATE TABLE events_test_table (user_id int, value_1 int, value_2 int, value_3 int); - SELECT create_distributed_table('events_test_table', 'user_id'); - INSERT INTO events_test_table VALUES - (1, 5, 7, 7), - (3, 11, 78, 18), - (5, 22, 9, 25), - (7, 41, 10, 23), - (1, 20, 12, 25), - (3, 26, 13, 18), - (5, 17, 14, 4); + CREATE TABLE events_test_table (user_id int, value_1 int, value_2 int, value_3 int); + SELECT create_distributed_table('events_test_table', 'user_id'); + INSERT INTO events_test_table VALUES + (1, 5, 7, 7), + (3, 11, 78, 18), + (5, 22, 9, 25), + (7, 41, 10, 23), + (1, 20, 12, 25), + (3, 26, 13, 18), + (5, 17, 14, 4); } teardown { - DROP TABLE users_test_table; - DROP TABLE events_test_table; - SET citus.shard_replication_factor to 1; + DROP TABLE users_test_table; + DROP TABLE events_test_table; + SET citus.shard_replication_factor to 1; } session "s1" @@ -45,12 +45,12 @@ step "s1-insert_to_events_test_table" step "s1-update_events_test_table" { - UPDATE users_test_table SET value_1 = 3; + UPDATE users_test_table SET value_1 = 3; } step "s1-delete_events_test_table" { - DELETE FROM events_test_table WHERE user_id = 1 or user_id = 3; + DELETE FROM events_test_table WHERE user_id = 1 or user_id = 3; } step "s1-commit" @@ -62,7 +62,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-modify_with_subquery_v1" @@ -72,7 +72,7 @@ step "s2-modify_with_subquery_v1" step "s2-commit" { - COMMIT; + COMMIT; } // tests to check locks on subqueries are taken @@ -82,4 +82,3 @@ permutation "s1-begin" "s2-begin" "s2-modify_with_subquery_v1" "s1-delete_events permutation "s1-begin" "s2-begin" "s1-insert_to_events_test_table" "s2-modify_with_subquery_v1" "s1-commit" "s2-commit" permutation "s1-begin" "s2-begin" "s1-update_events_test_table" "s2-modify_with_subquery_v1" "s1-commit" "s2-commit" permutation "s1-begin" "s2-begin" "s1-delete_events_test_table" "s2-modify_with_subquery_v1" "s1-commit" "s2-commit" - diff --git a/src/test/regress/spec/isolation_move_placement_vs_modification.spec b/src/test/regress/spec/isolation_move_placement_vs_modification.spec index 964ef689e..f258767a7 100644 --- a/src/test/regress/spec/isolation_move_placement_vs_modification.spec +++ b/src/test/regress/spec/isolation_move_placement_vs_modification.spec @@ -2,18 +2,18 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE test_move_placement (x int, y int); - SELECT create_distributed_table('test_move_placement', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE test_move_placement (x int, y int); + SELECT create_distributed_table('test_move_placement', 'x'); - SELECT get_shard_id_for_distribution_column('test_move_placement', 5) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('test_move_placement', 5) INTO selected_shard; } teardown { - DROP TABLE test_move_placement; - DROP TABLE selected_shard; + DROP TABLE test_move_placement; + DROP TABLE selected_shard; } session "s1" @@ -30,96 +30,96 @@ step "s1-begin" // hence not all placements are cached step "s1-load-cache" { - TRUNCATE test_move_placement; + TRUNCATE test_move_placement; } step "s1-insert" { - INSERT INTO test_move_placement VALUES (5, 10); + INSERT INTO test_move_placement VALUES (5, 10); } step "s1-update" { - UPDATE test_move_placement SET y = 5 WHERE x = 5; + UPDATE test_move_placement SET y = 5 WHERE x = 5; } step "s1-delete" { - DELETE FROM test_move_placement WHERE x = 5; + DELETE FROM test_move_placement WHERE x = 5; } step "s1-select" { - SELECT count(*) FROM test_move_placement WHERE x = 5; + SELECT count(*) FROM test_move_placement WHERE x = 5; } step "s1-ddl" { - CREATE INDEX test_move_placement_index ON test_move_placement(x); + CREATE INDEX test_move_placement_index ON test_move_placement(x); } step "s1-copy" { - COPY test_move_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY test_move_placement FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57638, 'localhost', 57637, 'force_logical'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57638, 'localhost', 57637, 'force_logical'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-content" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_move_placement', 'select y from %s WHERE x = 5') - WHERE - shardid IN (SELECT * FROM selected_shard) - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_move_placement', 'select y from %s WHERE x = 5') + WHERE + shardid IN (SELECT * FROM selected_shard) + ORDER BY + nodeport; } step "s2-print-index-count" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('test_move_placement', 'select count(*) from pg_indexes WHERE tablename = ''%s''') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('test_move_placement', 'select count(*) from pg_indexes WHERE tablename = ''%s''') + ORDER BY + nodeport; } step "s2-print-placements" { - SELECT - nodename, nodeport, count(*) - FROM - pg_dist_shard_placement - WHERE - shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'test_move_placement'::regclass) - AND - shardstate = 1 - GROUP BY - nodename, nodeport; + SELECT + nodename, nodeport, count(*) + FROM + pg_dist_shard_placement + WHERE + shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'test_move_placement'::regclass) + AND + shardstate = 1 + GROUP BY + nodename, nodeport; } // move a placement while concurrently performing an update/delete/insert/copy diff --git a/src/test/regress/spec/isolation_move_placement_vs_modification_fk.spec b/src/test/regress/spec/isolation_move_placement_vs_modification_fk.spec index 9987a5fec..039eb5050 100644 --- a/src/test/regress/spec/isolation_move_placement_vs_modification_fk.spec +++ b/src/test/regress/spec/isolation_move_placement_vs_modification_fk.spec @@ -1,27 +1,27 @@ setup { - SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; - SELECT setval('pg_dist_shardid_seq', - CASE WHEN nextval('pg_dist_shardid_seq') > 1699999 OR nextval('pg_dist_shardid_seq') < 1600000 - THEN 1600000 - ELSE nextval('pg_dist_shardid_seq')-2 - END); + SET citus.shard_count to 2; + SET citus.shard_replication_factor to 1; + SELECT setval('pg_dist_shardid_seq', + CASE WHEN nextval('pg_dist_shardid_seq') > 1699999 OR nextval('pg_dist_shardid_seq') < 1600000 + THEN 1600000 + ELSE nextval('pg_dist_shardid_seq')-2 + END); - CREATE TABLE referenced_table (id int PRIMARY KEY, value int); - SELECT create_reference_table('referenced_table'); + CREATE TABLE referenced_table (id int PRIMARY KEY, value int); + SELECT create_reference_table('referenced_table'); - CREATE TABLE referencing_table (id int PRIMARY KEY, value int); - SELECT create_distributed_table('referencing_table', 'id'); + CREATE TABLE referencing_table (id int PRIMARY KEY, value int); + SELECT create_distributed_table('referencing_table', 'id'); - SELECT get_shard_id_for_distribution_column('referencing_table', 2) INTO selected_shard_for_test_table; + SELECT get_shard_id_for_distribution_column('referencing_table', 2) INTO selected_shard_for_test_table; } teardown { - DROP TABLE referencing_table; - DROP TABLE referenced_table; - DROP TABLE selected_shard_for_test_table; + DROP TABLE referencing_table; + DROP TABLE referenced_table; + DROP TABLE selected_shard_for_test_table; } session "s1" @@ -33,73 +33,73 @@ step "s1-begin" step "s1-insert-referenced" { - INSERT INTO referenced_table SELECT x,x FROM generate_series(1,10) as f(x); + INSERT INTO referenced_table SELECT x,x FROM generate_series(1,10) as f(x); } step "s1-insert-referencing" { - INSERT INTO referencing_table SELECT x,x FROM generate_series(1,10) as f(x); + INSERT INTO referencing_table SELECT x,x FROM generate_series(1,10) as f(x); } step "s1-delete" { - DELETE FROM referenced_table WHERE id < 5; + DELETE FROM referenced_table WHERE id < 5; } step "s1-update" { - UPDATE referenced_table SET value = 5 WHERE id = 5; + UPDATE referenced_table SET value = 5 WHERE id = 5; } step "s1-ddl" { - CREATE INDEX referenced_table_index ON referenced_table(id); + CREATE INDEX referenced_table_index ON referenced_table(id); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-add-fkey" { - ALTER TABLE referencing_table ADD CONSTRAINT fkey_const FOREIGN KEY (value) REFERENCES referenced_table(id) ON DELETE CASCADE; + ALTER TABLE referencing_table ADD CONSTRAINT fkey_const FOREIGN KEY (value) REFERENCES referenced_table(id) ON DELETE CASCADE; } step "s2-move-placement-blocking" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637, shard_transfer_mode:='block_writes'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637, shard_transfer_mode:='block_writes'); } step "s2-move-placement-nonblocking" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637); + SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637); } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('referencing_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('referencing_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT * FROM referencing_table ORDER BY 1; + -- rows + SELECT * FROM referencing_table ORDER BY 1; } step "s2-commit" { - COMMIT; + COMMIT; } session "s3" @@ -129,4 +129,3 @@ permutation "s2-add-fkey" "s3-acquire-advisory-lock" "s1-insert-referenced" "s1- permutation "s2-add-fkey" "s3-acquire-advisory-lock" "s1-insert-referenced" "s1-insert-referencing" "s2-begin" "s2-move-placement-nonblocking" "s1-update" "s3-release-advisory-lock" "s2-commit" "s2-print-cluster" permutation "s2-add-fkey" "s3-acquire-advisory-lock" "s1-insert-referenced" "s1-insert-referencing" "s2-begin" "s2-move-placement-nonblocking" "s1-ddl" "s3-release-advisory-lock" "s2-commit" "s2-print-cluster" permutation "s2-add-fkey" "s3-acquire-advisory-lock" "s1-insert-referenced" "s2-begin" "s2-move-placement-nonblocking" "s1-insert-referencing" "s3-release-advisory-lock" "s2-commit" "s2-print-cluster" - diff --git a/src/test/regress/spec/isolation_move_placement_vs_move_placement.spec b/src/test/regress/spec/isolation_move_placement_vs_move_placement.spec index b55ab6e54..a4a9656b8 100644 --- a/src/test/regress/spec/isolation_move_placement_vs_move_placement.spec +++ b/src/test/regress/spec/isolation_move_placement_vs_move_placement.spec @@ -2,27 +2,27 @@ // so setting the corresponding shard here is useful setup { - SET citus.shard_count TO 2; - SET citus.shard_replication_factor TO 1; - ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 102011; - CREATE TABLE test_move_table (x int, y int); - SELECT create_distributed_table('test_move_table', 'x'); + SET citus.shard_count TO 2; + SET citus.shard_replication_factor TO 1; + ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 102011; + CREATE TABLE test_move_table (x int, y int); + SELECT create_distributed_table('test_move_table', 'x'); - SELECT get_shard_id_for_distribution_column('test_move_table', 5) INTO selected_shard_for_test_table; + SELECT get_shard_id_for_distribution_column('test_move_table', 5) INTO selected_shard_for_test_table; } teardown { - DROP TABLE test_move_table; - DROP TABLE selected_shard_for_test_table; + DROP TABLE test_move_table; + DROP TABLE selected_shard_for_test_table; - CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() - LANGUAGE C - AS 'citus', $$isolation_cleanup_orphaned_resources$$; - COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() - IS 'cleanup orphaned shards'; - RESET citus.enable_metadata_sync; - CALL isolation_cleanup_orphaned_resources(); + CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() + LANGUAGE C + AS 'citus', $$isolation_cleanup_orphaned_resources$$; + COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() + IS 'cleanup orphaned shards'; + RESET citus.enable_metadata_sync; + CALL isolation_cleanup_orphaned_resources(); } session "s1" @@ -30,17 +30,17 @@ session "s1" // with copy all placements are cached step "s1-load-cache" { - COPY test_move_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY test_move_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, 'force_logical'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, 'force_logical'); } step "s1-move-placement-back" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637, 'force_logical'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57638, 'localhost', 57637, 'force_logical'); } step "s1-wait" {} @@ -49,36 +49,36 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-select-from-table" { - SELECT * FROM test_move_table WHERE x=5; + SELECT * FROM test_move_table WHERE x=5; } step "s2-move-placement" { - SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, 'force_logical'); + SELECT master_move_shard_placement((SELECT * FROM selected_shard_for_test_table), 'localhost', 57637, 'localhost', 57638, 'force_logical'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-placements" { - SELECT - nodename, nodeport, count(*) - FROM - pg_dist_shard_placement - WHERE - shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'test_move_table'::regclass) - AND - shardstate = 1 - GROUP BY - nodename, nodeport; + SELECT + nodename, nodeport, count(*) + FROM + pg_dist_shard_placement + WHERE + shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'test_move_table'::regclass) + AND + shardstate = 1 + GROUP BY + nodename, nodeport; } // two concurrent shard moves on the same shard diff --git a/src/test/regress/spec/isolation_multi_shard_modify_vs_all.spec b/src/test/regress/spec/isolation_multi_shard_modify_vs_all.spec index 60216f27f..ff265578d 100644 --- a/src/test/regress/spec/isolation_multi_shard_modify_vs_all.spec +++ b/src/test/regress/spec/isolation_multi_shard_modify_vs_all.spec @@ -1,37 +1,37 @@ setup { - SET citus.shard_replication_factor to 1; - SET citus.shard_count to 32; - SET citus.multi_shard_modify_mode to 'parallel'; + SET citus.shard_replication_factor to 1; + SET citus.shard_count to 32; + SET citus.multi_shard_modify_mode to 'parallel'; - CREATE TABLE users_test_table(user_id int, value_1 int, value_2 int, value_3 int); - SELECT create_distributed_table('users_test_table', 'user_id'); - INSERT INTO users_test_table VALUES - (1, 5, 6, 7), - (2, 12, 7, 18), - (3, 23, 8, 25), - (4, 42, 9, 23), - (5, 35, 10, 17), - (6, 21, 11, 25), - (7, 27, 12, 18); + CREATE TABLE users_test_table(user_id int, value_1 int, value_2 int, value_3 int); + SELECT create_distributed_table('users_test_table', 'user_id'); + INSERT INTO users_test_table VALUES + (1, 5, 6, 7), + (2, 12, 7, 18), + (3, 23, 8, 25), + (4, 42, 9, 23), + (5, 35, 10, 17), + (6, 21, 11, 25), + (7, 27, 12, 18); - CREATE TABLE events_test_table (user_id int, value_1 int, value_2 int, value_3 int); - SELECT create_distributed_table('events_test_table', 'user_id'); - INSERT INTO events_test_table VALUES - (1, 5, 7, 7), - (3, 11, 78, 18), - (5, 22, 9, 25), - (7, 41, 10, 23), - (1, 20, 12, 25), - (3, 26, 13, 18), - (5, 17, 14, 4); + CREATE TABLE events_test_table (user_id int, value_1 int, value_2 int, value_3 int); + SELECT create_distributed_table('events_test_table', 'user_id'); + INSERT INTO events_test_table VALUES + (1, 5, 7, 7), + (3, 11, 78, 18), + (5, 22, 9, 25), + (7, 41, 10, 23), + (1, 20, 12, 25), + (3, 26, 13, 18), + (5, 17, 14, 4); } teardown { - DROP TABLE users_test_table; - DROP TABLE events_test_table; - SET citus.shard_count to 4; + DROP TABLE users_test_table; + DROP TABLE events_test_table; + SET citus.shard_count to 4; } session "s1" @@ -48,24 +48,24 @@ step "s1-change_connection_mode_to_sequential" step "s1-update_all_value_1" { - UPDATE users_test_table SET value_1 = 3; + UPDATE users_test_table SET value_1 = 3; } step "s1-update_even_concurrently" { - SET citus.enable_deadlock_prevention TO off; - UPDATE users_test_table SET value_1 = 3 WHERE user_id % 2 = 0; - SET citus.enable_deadlock_prevention TO on; + SET citus.enable_deadlock_prevention TO off; + UPDATE users_test_table SET value_1 = 3 WHERE user_id % 2 = 0; + SET citus.enable_deadlock_prevention TO on; } step "s1-update_value_1_of_1_or_3_to_5" { - UPDATE users_test_table SET value_1 = 5 WHERE user_id = 1 or user_id = 3; + UPDATE users_test_table SET value_1 = 5 WHERE user_id = 1 or user_id = 3; } step "s1-update_value_1_of_2_or_4_to_5" { - UPDATE users_test_table SET value_1 = 5 WHERE user_id = 2 or user_id = 4; + UPDATE users_test_table SET value_1 = 5 WHERE user_id = 2 or user_id = 4; } step "s1-commit" @@ -77,7 +77,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-change_connection_mode_to_sequential" @@ -87,44 +87,44 @@ step "s2-change_connection_mode_to_sequential" step "s2-select" { - SELECT * FROM users_test_table ORDER BY value_2, value_3; + SELECT * FROM users_test_table ORDER BY value_2, value_3; } step "s2-insert-to-table" { - INSERT INTO users_test_table VALUES (1,2,3,4); + INSERT INTO users_test_table VALUES (1,2,3,4); } step "s2-insert-into-select" { - INSERT INTO users_test_table SELECT * FROM events_test_table; + INSERT INTO users_test_table SELECT * FROM events_test_table; } step "s2-update_all_value_1" { - UPDATE users_test_table SET value_1 = 6; + UPDATE users_test_table SET value_1 = 6; } step "s2-update_odd_concurrently" { - SET citus.enable_deadlock_prevention = off; - UPDATE users_test_table SET value_1 = 3 WHERE user_id % 2 = 1; - SET citus.enable_deadlock_prevention TO on; + SET citus.enable_deadlock_prevention = off; + UPDATE users_test_table SET value_1 = 3 WHERE user_id % 2 = 1; + SET citus.enable_deadlock_prevention TO on; } step "s2-update_value_1_of_1_or_3_to_8" { - UPDATE users_test_table SET value_1 = 8 WHERE user_id = 1 or user_id = 3; + UPDATE users_test_table SET value_1 = 8 WHERE user_id = 1 or user_id = 3; } step "s2-update_value_1_of_4_or_6_to_4" { - UPDATE users_test_table SET value_1 = 4 WHERE user_id = 4 or user_id = 6; + UPDATE users_test_table SET value_1 = 4 WHERE user_id = 4 or user_id = 6; } step "s2-commit" { - COMMIT; + COMMIT; } // test with parallel connections diff --git a/src/test/regress/spec/isolation_multiuser_locking.spec b/src/test/regress/spec/isolation_multiuser_locking.spec index 2d5c1cc03..8f0ca36ee 100644 --- a/src/test/regress/spec/isolation_multiuser_locking.spec +++ b/src/test/regress/spec/isolation_multiuser_locking.spec @@ -1,26 +1,26 @@ setup { - SET citus.max_cached_conns_per_worker to 0; - SET citus.shard_replication_factor TO 1; + SET citus.max_cached_conns_per_worker to 0; + SET citus.shard_replication_factor TO 1; - CREATE USER test_user_1; + CREATE USER test_user_1; - CREATE USER test_user_2; + CREATE USER test_user_2; - GRANT CREATE ON SCHEMA public TO test_user_1, test_user_2; + GRANT CREATE ON SCHEMA public TO test_user_1, test_user_2; - CREATE TABLE test_table(column1 int, column2 int); - ALTER TABLE test_table OWNER TO test_user_1; - SELECT create_distributed_table('test_table', 'column1'); + CREATE TABLE test_table(column1 int, column2 int); + ALTER TABLE test_table OWNER TO test_user_1; + SELECT create_distributed_table('test_table', 'column1'); } teardown { - BEGIN; - DROP TABLE IF EXISTS test_table; - REVOKE CREATE ON SCHEMA public FROM test_user_1, test_user_2; - DROP USER test_user_1, test_user_2; - COMMIT; + BEGIN; + DROP TABLE IF EXISTS test_table; + REVOKE CREATE ON SCHEMA public FROM test_user_1, test_user_2; + DROP USER test_user_1, test_user_2; + COMMIT; } session "s1" @@ -31,49 +31,49 @@ session "s1" // By setting the cached connections to zero we prevent the use of cached conncetions. // These steps can be removed once the root cause is solved step "s1-no-connection-cache" { - SET citus.max_cached_conns_per_worker to 0; + SET citus.max_cached_conns_per_worker to 0; } step "s1-grant" { - SET ROLE test_user_1; - GRANT ALL ON test_table TO test_user_2; + SET ROLE test_user_1; + GRANT ALL ON test_table TO test_user_2; } step "s1-begin" { - BEGIN; - SET ROLE test_user_1; + BEGIN; + SET ROLE test_user_1; } step "s1-index" { - CREATE INDEX test_index ON test_table(column1); + CREATE INDEX test_index ON test_table(column1); } step "s1-reindex" { - REINDEX TABLE test_table; + REINDEX TABLE test_table; } step "s1-drop-index" { - DROP INDEX IF EXISTS test_index; + DROP INDEX IF EXISTS test_index; } step "s1-insert" { - UPDATE test_table SET column2 = 1; + UPDATE test_table SET column2 = 1; } step "s1-truncate" { - TRUNCATE test_table; + TRUNCATE test_table; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" @@ -84,43 +84,43 @@ session "s2" // By setting the cached connections to zero we prevent the use of cached conncetions. // These steps can be removed once the root cause is solved step "s2-no-connection-cache" { - SET citus.max_cached_conns_per_worker to 0; + SET citus.max_cached_conns_per_worker to 0; } step "s2-begin" { - BEGIN; - SET ROLE test_user_2; + BEGIN; + SET ROLE test_user_2; } step "s2-index" { - CREATE INDEX test_index ON test_table(column1); + CREATE INDEX test_index ON test_table(column1); } step "s2-reindex" { - REINDEX TABLE test_table; + REINDEX TABLE test_table; } step "s2-drop-index" { - DROP INDEX IF EXISTS test_index; + DROP INDEX IF EXISTS test_index; } step "s2-insert" { - UPDATE test_table SET column2 = 2; + UPDATE test_table SET column2 = 2; } step "s2-truncate" { - TRUNCATE test_table; + TRUNCATE test_table; } step "s2-commit" { - COMMIT; + COMMIT; } // REINDEX @@ -137,4 +137,3 @@ permutation "s1-no-connection-cache" "s2-no-connection-cache" "s1-grant" "s1-beg permutation "s1-no-connection-cache" "s2-no-connection-cache" "s1-begin" "s2-begin" "s2-truncate" "s1-insert" "s2-commit" "s1-commit" permutation "s1-no-connection-cache" "s2-no-connection-cache" "s1-grant" "s1-begin" "s2-begin" "s1-truncate" "s2-insert" "s1-insert" "s1-commit" "s2-commit" permutation "s1-no-connection-cache" "s2-no-connection-cache" "s1-grant" "s1-begin" "s2-begin" "s1-truncate" "s2-truncate" "s1-commit" "s2-commit" - diff --git a/src/test/regress/spec/isolation_mx_common.include.spec b/src/test/regress/spec/isolation_mx_common.include.spec index 9ca65b585..980537aa1 100644 --- a/src/test/regress/spec/isolation_mx_common.include.spec +++ b/src/test/regress/spec/isolation_mx_common.include.spec @@ -39,5 +39,5 @@ setup false) FROM pg_dist_node; - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; } diff --git a/src/test/regress/spec/isolation_non_blocking_shard_split.spec b/src/test/regress/spec/isolation_non_blocking_shard_split.spec index a5e0aad80..a28c86c13 100644 --- a/src/test/regress/spec/isolation_non_blocking_shard_split.spec +++ b/src/test/regress/spec/isolation_non_blocking_shard_split.spec @@ -8,23 +8,23 @@ // setup { - SET citus.shard_count to 1; - SET citus.shard_replication_factor to 1; + SET citus.shard_count to 1; + SET citus.shard_replication_factor to 1; SELECT setval('pg_dist_shardid_seq', 1500000); - -- Cleanup any orphan shards that might be left over from a previous run. - CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() - RETURNS VOID - AS 'citus' - LANGUAGE C STRICT VOLATILE; + -- Cleanup any orphan shards that might be left over from a previous run. + CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() + RETURNS VOID + AS 'citus' + LANGUAGE C STRICT VOLATILE; - CREATE TABLE to_split_table (id int PRIMARY KEY, value int); - SELECT create_distributed_table('to_split_table', 'id'); + CREATE TABLE to_split_table (id int PRIMARY KEY, value int); + SELECT create_distributed_table('to_split_table', 'id'); } teardown { - SELECT run_try_drop_marked_resources(); + SELECT run_try_drop_marked_resources(); DROP TABLE to_split_table; } @@ -34,19 +34,19 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // cache all placements step "s1-load-cache" { - -- Indirect way to load cache. - TRUNCATE to_split_table; + -- Indirect way to load cache. + TRUNCATE to_split_table; } step "s1-lock-to-split-shard" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN; LOCK TABLE to_split_table_1500001 IN ACCESS SHARE MODE;'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN; LOCK TABLE to_split_table_1500001 IN ACCESS SHARE MODE;'); } // this advisory lock with (almost) random values are only used @@ -64,12 +64,12 @@ step "s1-release-split-advisory-lock" step "s1-run-cleaner" { - SELECT run_try_drop_marked_resources(); + SELECT run_try_drop_marked_resources(); } step "s1-start-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-stop-connection" @@ -79,21 +79,21 @@ step "s1-stop-connection" step "s1-show-pg_dist_cleanup" { - SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; + SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; } step "s1-non-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500001, - ARRAY['-1073741824'], - ARRAY[2, 2], - 'force_logical'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500001, + ARRAY['-1073741824'], + ARRAY[2, 2], + 'force_logical'); } step "s1-end" { - COMMIT; + COMMIT; } session "s2" @@ -105,54 +105,54 @@ step "s2-begin" step "s2-insert" { - SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); - INSERT INTO to_split_table VALUES (123456789, 1); + SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); + INSERT INTO to_split_table VALUES (123456789, 1); } step "s2-update" { - UPDATE to_split_table SET value = 111 WHERE id = 123456789; + UPDATE to_split_table SET value = 111 WHERE id = 123456789; } step "s2-delete" { - DELETE FROM to_split_table WHERE id = 123456789; + DELETE FROM to_split_table WHERE id = 123456789; } step "s2-select" { - SELECT count(*) FROM to_split_table WHERE id = 123456789; + SELECT count(*) FROM to_split_table WHERE id = 123456789; } step "s2-end" { - COMMIT; + COMMIT; } step "s2-non-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500001, - ARRAY['-1073741824'], - ARRAY[1, 2], - 'force_logical'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500001, + ARRAY['-1073741824'], + ARRAY[1, 2], + 'force_logical'); } step "s2-print-locks" { SELECT * FROM master_run_on_worker( - ARRAY['localhost']::text[], - ARRAY[57637]::int[], - ARRAY[ - 'SELECT CONCAT(relation::regclass, ''-'', locktype, ''-'', mode) AS LockInfo FROM pg_locks - WHERE relation::regclass::text = ''to_split_table_1500001'';' - ]::text[], - false); + ARRAY['localhost']::text[], + ARRAY[57637]::int[], + ARRAY[ + 'SELECT CONCAT(relation::regclass, ''-'', locktype, ''-'', mode) AS LockInfo FROM pg_locks + WHERE relation::regclass::text = ''to_split_table_1500001'';' + ]::text[], + false); } step "s2-show-pg_dist_cleanup" { - SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; + SELECT object_name, object_type, policy_type FROM pg_dist_cleanup; } step "s2-show-pg_dist_cleanup-shards" @@ -163,15 +163,15 @@ step "s2-show-pg_dist_cleanup-shards" step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('to_split_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; - -- rows - SELECT id, value FROM to_split_table ORDER BY id, value; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('to_split_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; + -- rows + SELECT id, value FROM to_split_table ORDER BY id, value; } @@ -199,12 +199,12 @@ step "s4-begin" step "s4-insert" { - INSERT INTO to_split_table VALUES (900, 1); + INSERT INTO to_split_table VALUES (900, 1); } step "s4-end" { - COMMIT; + COMMIT; } diff --git a/src/test/regress/spec/isolation_non_blocking_shard_split_fkey.spec b/src/test/regress/spec/isolation_non_blocking_shard_split_fkey.spec index 588c086ab..f70308890 100644 --- a/src/test/regress/spec/isolation_non_blocking_shard_split_fkey.spec +++ b/src/test/regress/spec/isolation_non_blocking_shard_split_fkey.spec @@ -8,26 +8,26 @@ setup { SELECT setval('pg_dist_shardid_seq', 1500000); SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; + SET citus.shard_replication_factor to 1; - CREATE TABLE reference_table (id int PRIMARY KEY, value int); - SELECT create_reference_table('reference_table'); + CREATE TABLE reference_table (id int PRIMARY KEY, value int); + SELECT create_reference_table('reference_table'); - CREATE TABLE table_to_split (id int, value int); - SELECT create_distributed_table('table_to_split', 'id'); + CREATE TABLE table_to_split (id int, value int); + SELECT create_distributed_table('table_to_split', 'id'); } teardown { - -- Cleanup any orphan shards that might be left over from a previous run. - CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() - RETURNS VOID - AS 'citus' - LANGUAGE C STRICT VOLATILE; - SELECT run_try_drop_marked_resources(); + -- Cleanup any orphan shards that might be left over from a previous run. + CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() + RETURNS VOID + AS 'citus' + LANGUAGE C STRICT VOLATILE; + SELECT run_try_drop_marked_resources(); - DROP TABLE table_to_split CASCADE; - DROP TABLE reference_table CASCADE; + DROP TABLE table_to_split CASCADE; + DROP TABLE reference_table CASCADE; } session "s1" @@ -39,75 +39,75 @@ step "s1-begin" step "s1-insert" { - INSERT INTO reference_table VALUES (5, 10); + INSERT INTO reference_table VALUES (5, 10); } step "s1-update" { - UPDATE reference_table SET value = 5 WHERE id = 5; + UPDATE reference_table SET value = 5 WHERE id = 5; } step "s1-delete" { - DELETE FROM reference_table WHERE id = 5; + DELETE FROM reference_table WHERE id = 5; } step "s1-ddl" { - CREATE INDEX reference_table_index ON reference_table(id); + CREATE INDEX reference_table_index ON reference_table(id); } step "s1-copy" { - COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-non-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500002, - ARRAY['-1073741824'], - ARRAY[1, 2], - 'force_logical'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500002, + ARRAY['-1073741824'], + ARRAY[1, 2], + 'force_logical'); } step "s2-add-fkey" { - ALTER TABLE table_to_split ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); + ALTER TABLE table_to_split ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('table_to_split', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('table_to_split', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows of table_to_split - SELECT id, value FROM table_to_split ORDER BY id, value; + -- rows of table_to_split + SELECT id, value FROM table_to_split ORDER BY id, value; - -- rows of reference table - SELECT * FROM reference_table; + -- rows of reference table + SELECT * FROM reference_table; } session "s3" diff --git a/src/test/regress/spec/isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec b/src/test/regress/spec/isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec index a92bb6a13..ab70cc0a2 100644 --- a/src/test/regress/spec/isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec +++ b/src/test/regress/spec/isolation_non_blocking_shard_split_with_index_as_replicaIdentity.spec @@ -5,25 +5,25 @@ // session s3 - Holds advisory locks setup { - SET citus.shard_count to 1; - SET citus.shard_replication_factor to 1; + SET citus.shard_count to 1; + SET citus.shard_replication_factor to 1; SELECT setval('pg_dist_shardid_seq', 1500000); - CREATE TABLE to_split_table (id int NOT NULL, value int); - CREATE UNIQUE INDEX split_table_index ON to_split_table(id); - ALTER TABLE to_split_table REPLICA IDENTITY USING INDEX split_table_index; + CREATE TABLE to_split_table (id int NOT NULL, value int); + CREATE UNIQUE INDEX split_table_index ON to_split_table(id); + ALTER TABLE to_split_table REPLICA IDENTITY USING INDEX split_table_index; - SELECT create_distributed_table('to_split_table', 'id'); + SELECT create_distributed_table('to_split_table', 'id'); } teardown { - -- Cleanup any orphan shards that might be left over from a previous run. - CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() - RETURNS VOID - AS 'citus' - LANGUAGE C STRICT VOLATILE; - SELECT run_try_drop_marked_resources(); + -- Cleanup any orphan shards that might be left over from a previous run. + CREATE OR REPLACE FUNCTION run_try_drop_marked_resources() + RETURNS VOID + AS 'citus' + LANGUAGE C STRICT VOLATILE; + SELECT run_try_drop_marked_resources(); DROP TABLE to_split_table CASCADE; } @@ -33,28 +33,28 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // cache all placements step "s1-load-cache" { - -- Indirect way to load cache. - TRUNCATE to_split_table; + -- Indirect way to load cache. + TRUNCATE to_split_table; } step "s1-non-blocking-shard-split" { - SELECT pg_catalog.citus_split_shard_by_split_points( - 1500001, - ARRAY['-1073741824'], - ARRAY[2, 2], - 'force_logical'); + SELECT pg_catalog.citus_split_shard_by_split_points( + 1500001, + ARRAY['-1073741824'], + ARRAY[2, 2], + 'force_logical'); } step "s1-end" { - COMMIT; + COMMIT; } session "s2" @@ -66,41 +66,41 @@ step "s2-begin" step "s2-insert" { - SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); - INSERT INTO to_split_table VALUES (123456789, 1); + SELECT get_shard_id_for_distribution_column('to_split_table', 123456789); + INSERT INTO to_split_table VALUES (123456789, 1); } step "s2-update" { - UPDATE to_split_table SET value = 111 WHERE id = 123456789; + UPDATE to_split_table SET value = 111 WHERE id = 123456789; } step "s2-delete" { - DELETE FROM to_split_table WHERE id = 123456789; + DELETE FROM to_split_table WHERE id = 123456789; } step "s2-select" { - SELECT count(*) FROM to_split_table WHERE id = 123456789; + SELECT count(*) FROM to_split_table WHERE id = 123456789; } step "s2-end" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('to_split_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; - -- rows - SELECT id, value FROM to_split_table ORDER BY id, value; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('to_split_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; + -- rows + SELECT id, value FROM to_split_table ORDER BY id, value; } diff --git a/src/test/regress/spec/isolation_partitioned_copy_vs_all.spec b/src/test/regress/spec/isolation_partitioned_copy_vs_all.spec index 4352981fb..6aab634c9 100644 --- a/src/test/regress/spec/isolation_partitioned_copy_vs_all.spec +++ b/src/test/regress/spec/isolation_partitioned_copy_vs_all.spec @@ -5,18 +5,18 @@ // create append distributed table to test behavior of COPY in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE partitioned_copy(id integer, data text, int_data int) PARTITION BY RANGE (int_data); + SET citus.shard_replication_factor TO 1; + CREATE TABLE partitioned_copy(id integer, data text, int_data int) PARTITION BY RANGE (int_data); CREATE TABLE partitioned_copy_0_3 PARTITION OF partitioned_copy FOR VALUES FROM (0) TO (3); CREATE TABLE partitioned_copy_3_6 PARTITION OF partitioned_copy FOR VALUES FROM (3) TO (6); CREATE TABLE partitioned_copy_6_10 PARTITION OF partitioned_copy FOR VALUES FROM (6) TO (10); - SELECT create_distributed_table('partitioned_copy', 'id'); + SELECT create_distributed_table('partitioned_copy', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS partitioned_copy CASCADE; + DROP TABLE IF EXISTS partitioned_copy CASCADE; } // session 1 @@ -29,8 +29,8 @@ step "s1-router-select" { SELECT * FROM partitioned_copy WHERE id = 1; } step "s1-real-time-select" { SELECT * FROM partitioned_copy ORDER BY 1, 2; } step "s1-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM partitioned_copy AS t1 JOIN partitioned_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM partitioned_copy AS t1 JOIN partitioned_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s1-insert" { INSERT INTO partitioned_copy VALUES(0, 'k', 0); } step "s1-insert-select" { INSERT INTO partitioned_copy SELECT * FROM partitioned_copy; } @@ -57,8 +57,8 @@ step "s2-router-select" { SELECT * FROM partitioned_copy WHERE id = 1; } step "s2-real-time-select" { SELECT * FROM partitioned_copy ORDER BY 1, 2; } step "s2-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM partitioned_copy AS t1 JOIN partitioned_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM partitioned_copy AS t1 JOIN partitioned_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s2-insert" { INSERT INTO partitioned_copy VALUES(0, 'k', 0); } step "s2-insert-select" { INSERT INTO partitioned_copy SELECT * FROM partitioned_copy; } diff --git a/src/test/regress/spec/isolation_pg_send_cancellation.spec b/src/test/regress/spec/isolation_pg_send_cancellation.spec index 46c6a0539..8049cd514 100644 --- a/src/test/regress/spec/isolation_pg_send_cancellation.spec +++ b/src/test/regress/spec/isolation_pg_send_cancellation.spec @@ -1,21 +1,21 @@ setup { - CREATE FUNCTION run_pg_send_cancellation(int,int) - RETURNS void - AS 'citus' - LANGUAGE C STRICT; + CREATE FUNCTION run_pg_send_cancellation(int,int) + RETURNS void + AS 'citus' + LANGUAGE C STRICT; - CREATE FUNCTION get_cancellation_key() - RETURNS int - AS 'citus' - LANGUAGE C STRICT; + CREATE FUNCTION get_cancellation_key() + RETURNS int + AS 'citus' + LANGUAGE C STRICT; - CREATE TABLE cancel_table (pid int, cancel_key int); + CREATE TABLE cancel_table (pid int, cancel_key int); } teardown { - DROP TABLE IF EXISTS cancel_table; + DROP TABLE IF EXISTS cancel_table; } session "s1" @@ -23,15 +23,15 @@ session "s1" /* store the PID and cancellation key of session 1 */ step "s1-register" { - INSERT INTO cancel_table VALUES (pg_backend_pid(), get_cancellation_key()); + INSERT INTO cancel_table VALUES (pg_backend_pid(), get_cancellation_key()); } /* lock the table from session 1, will block and get cancelled */ step "s1-lock" { - BEGIN; - LOCK TABLE cancel_table IN ACCESS EXCLUSIVE MODE; - END; + BEGIN; + LOCK TABLE cancel_table IN ACCESS EXCLUSIVE MODE; + END; } session "s2" @@ -39,27 +39,27 @@ session "s2" /* lock the table from session 2 to block session 1 */ step "s2-lock" { - BEGIN; - LOCK TABLE cancel_table IN ACCESS EXCLUSIVE MODE; + BEGIN; + LOCK TABLE cancel_table IN ACCESS EXCLUSIVE MODE; } /* PID mismatch */ step "s2-wrong-cancel-1" { - SELECT run_pg_send_cancellation(pid + 1, cancel_key) FROM cancel_table; + SELECT run_pg_send_cancellation(pid + 1, cancel_key) FROM cancel_table; } /* cancellation key mismatch */ step "s2-wrong-cancel-2" { - SELECT run_pg_send_cancellation(pid, cancel_key + 1) FROM cancel_table; + SELECT run_pg_send_cancellation(pid, cancel_key + 1) FROM cancel_table; } /* cancel the LOCK statement in session 1 */ step "s2-cancel" { - SELECT run_pg_send_cancellation(pid, cancel_key) FROM cancel_table; - END; + SELECT run_pg_send_cancellation(pid, cancel_key) FROM cancel_table; + END; } permutation "s1-register" "s2-lock" "s1-lock" "s2-wrong-cancel-1" "s2-wrong-cancel-2" "s2-cancel" diff --git a/src/test/regress/spec/isolation_progress_monitoring.spec b/src/test/regress/spec/isolation_progress_monitoring.spec index 225451ec8..6a1d821b1 100644 --- a/src/test/regress/spec/isolation_progress_monitoring.spec +++ b/src/test/regress/spec/isolation_progress_monitoring.spec @@ -6,50 +6,50 @@ setup { - CREATE FUNCTION create_progress(bigint, bigint) - RETURNS void - AS 'citus' - LANGUAGE C STRICT; + CREATE FUNCTION create_progress(bigint, bigint) + RETURNS void + AS 'citus' + LANGUAGE C STRICT; - CREATE FUNCTION update_progress(bigint, bigint) - RETURNS void - AS 'citus' - LANGUAGE C STRICT; + CREATE FUNCTION update_progress(bigint, bigint) + RETURNS void + AS 'citus' + LANGUAGE C STRICT; - CREATE FUNCTION finish_progress() - RETURNS void - AS 'citus' - LANGUAGE C STRICT; + CREATE FUNCTION finish_progress() + RETURNS void + AS 'citus' + LANGUAGE C STRICT; - CREATE OR REPLACE FUNCTION show_progress(bigint) - RETURNS TABLE(step int, progress bigint) - AS 'citus' - LANGUAGE C STRICT; + CREATE OR REPLACE FUNCTION show_progress(bigint) + RETURNS TABLE(step int, progress bigint) + AS 'citus' + LANGUAGE C STRICT; - CREATE FUNCTION sample_operation(command_type bigint, lockid bigint, progress bigint) - RETURNS VOID AS $$ - BEGIN - PERFORM create_progress(command_type, 2); - PERFORM pg_advisory_xact_lock(lockid); + CREATE FUNCTION sample_operation(command_type bigint, lockid bigint, progress bigint) + RETURNS VOID AS $$ + BEGIN + PERFORM create_progress(command_type, 2); + PERFORM pg_advisory_xact_lock(lockid); - PERFORM update_progress(0, progress); - PERFORM pg_advisory_xact_lock(lockid + 1); + PERFORM update_progress(0, progress); + PERFORM pg_advisory_xact_lock(lockid + 1); - PERFORM update_progress(1, progress); - PERFORM pg_advisory_xact_lock(lockid + 2); + PERFORM update_progress(1, progress); + PERFORM pg_advisory_xact_lock(lockid + 2); - PERFORM finish_progress(); - END; - $$ LANGUAGE 'plpgsql'; + PERFORM finish_progress(); + END; + $$ LANGUAGE 'plpgsql'; } teardown { - DROP FUNCTION IF EXISTS create_progress(bigint, bigint); - DROP FUNCTION IF EXISTS update_progress(bigint, bigint); - DROP FUNCTION IF EXISTS finish_progress(); - DROP FUNCTION IF EXISTS show_progress(bigint); - DROP FUNCTION IF EXISTS sample_operation(bigint, bigint, bigint); + DROP FUNCTION IF EXISTS create_progress(bigint, bigint); + DROP FUNCTION IF EXISTS update_progress(bigint, bigint); + DROP FUNCTION IF EXISTS finish_progress(); + DROP FUNCTION IF EXISTS show_progress(bigint); + DROP FUNCTION IF EXISTS sample_operation(bigint, bigint, bigint); } @@ -57,7 +57,7 @@ session "s1" step "s1-start-operation" { - SELECT sample_operation(1337, 10, -1); + SELECT sample_operation(1337, 10, -1); } @@ -65,7 +65,7 @@ session "s2" step "s2-start-operation" { - SELECT sample_operation(1337, 20, 2); + SELECT sample_operation(1337, 20, 2); } @@ -73,7 +73,7 @@ session "s3" step "s3-start-operation" { - SELECT sample_operation(3778, 30, 9); + SELECT sample_operation(3778, 30, 9); } @@ -81,44 +81,44 @@ session "lock-orchestrator" step "take-locks" { - -- Locks for steps of sample operation in s1 - SELECT pg_advisory_lock(10); - SELECT pg_advisory_lock(11); - SELECT pg_advisory_lock(12); + -- Locks for steps of sample operation in s1 + SELECT pg_advisory_lock(10); + SELECT pg_advisory_lock(11); + SELECT pg_advisory_lock(12); - -- Locks for steps of sample operation in s2 - SELECT pg_advisory_lock(20); - SELECT pg_advisory_lock(21); - SELECT pg_advisory_lock(22); + -- Locks for steps of sample operation in s2 + SELECT pg_advisory_lock(20); + SELECT pg_advisory_lock(21); + SELECT pg_advisory_lock(22); - -- Locks for steps of sample operation in s3 - SELECT pg_advisory_lock(30); - SELECT pg_advisory_lock(31); - SELECT pg_advisory_lock(32); + -- Locks for steps of sample operation in s3 + SELECT pg_advisory_lock(30); + SELECT pg_advisory_lock(31); + SELECT pg_advisory_lock(32); } step "release-locks-1" { - -- Release the locks of first steps of sample operations - SELECT pg_advisory_unlock(10); - SELECT pg_advisory_unlock(20); - SELECT pg_advisory_unlock(30); + -- Release the locks of first steps of sample operations + SELECT pg_advisory_unlock(10); + SELECT pg_advisory_unlock(20); + SELECT pg_advisory_unlock(30); } step "release-locks-2" { - -- Release the locks of second steps of sample operations - SELECT pg_advisory_unlock(11); - SELECT pg_advisory_unlock(21); - SELECT pg_advisory_unlock(31); + -- Release the locks of second steps of sample operations + SELECT pg_advisory_unlock(11); + SELECT pg_advisory_unlock(21); + SELECT pg_advisory_unlock(31); } step "release-locks-3" { - -- Release the locks of final steps of sample operations - SELECT pg_advisory_unlock(12); - SELECT pg_advisory_unlock(22); - SELECT pg_advisory_unlock(32); + -- Release the locks of final steps of sample operations + SELECT pg_advisory_unlock(12); + SELECT pg_advisory_unlock(22); + SELECT pg_advisory_unlock(32); } @@ -126,8 +126,8 @@ session "monitor" step "show-progress" { - SELECT show_progress(1337); - SELECT show_progress(3778); + SELECT show_progress(1337); + SELECT show_progress(3778); } permutation "take-locks" "s1-start-operation" "s2-start-operation" "s3-start-operation" "show-progress" "release-locks-1" "show-progress" "release-locks-2" "show-progress" "release-locks-3" diff --git a/src/test/regress/spec/isolation_range_copy_vs_all.spec b/src/test/regress/spec/isolation_range_copy_vs_all.spec index 453ea5101..6890b9713 100644 --- a/src/test/regress/spec/isolation_range_copy_vs_all.spec +++ b/src/test/regress/spec/isolation_range_copy_vs_all.spec @@ -5,20 +5,20 @@ // create range distributed table to test behavior of COPY in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - SET citus.next_shard_id TO 3004005; - CREATE TABLE range_copy(id integer, data text, int_data int); - SELECT create_distributed_table('range_copy', 'id', 'range'); - SELECT master_create_empty_shard('range_copy'); - SELECT master_create_empty_shard('range_copy'); - UPDATE pg_dist_shard SET shardminvalue = '0', shardmaxvalue = '4' WHERE shardid = 3004005; - UPDATE pg_dist_shard SET shardminvalue = '5', shardmaxvalue = '9' WHERE shardid = 3004006; + SET citus.shard_replication_factor TO 1; + SET citus.next_shard_id TO 3004005; + CREATE TABLE range_copy(id integer, data text, int_data int); + SELECT create_distributed_table('range_copy', 'id', 'range'); + SELECT master_create_empty_shard('range_copy'); + SELECT master_create_empty_shard('range_copy'); + UPDATE pg_dist_shard SET shardminvalue = '0', shardmaxvalue = '4' WHERE shardid = 3004005; + UPDATE pg_dist_shard SET shardminvalue = '5', shardmaxvalue = '9' WHERE shardid = 3004006; } // drop distributed table teardown { - DROP TABLE IF EXISTS range_copy CASCADE; + DROP TABLE IF EXISTS range_copy CASCADE; } // session 1 @@ -31,8 +31,8 @@ step "s1-router-select" { SELECT * FROM range_copy WHERE id = 1; } step "s1-real-time-select" { SELECT * FROM range_copy ORDER BY 1, 2; } step "s1-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM range_copy AS t1 JOIN range_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM range_copy AS t1 JOIN range_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s1-insert" { INSERT INTO range_copy VALUES(0, 'k', 0); } step "s1-insert-select" { INSERT INTO range_copy SELECT * FROM range_copy; } @@ -63,8 +63,8 @@ step "s2-router-select" { SELECT * FROM range_copy WHERE id = 1; } step "s2-real-time-select" { SELECT * FROM range_copy ORDER BY 1, 2; } step "s2-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM range_copy AS t1 JOIN range_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM range_copy AS t1 JOIN range_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s2-insert" { INSERT INTO range_copy VALUES(0, 'k', 0); } step "s2-insert-select" { INSERT INTO range_copy SELECT * FROM range_copy; } @@ -81,13 +81,14 @@ step "s2-ddl-rename-column" { ALTER TABLE range_copy RENAME data TO new_column; step "s2-table-size" { SELECT citus_total_relation_size('range_copy'); } step "s2-master-modify-multiple-shards" { DELETE FROM range_copy; } step "s2-master-drop-all-shards" { SELECT citus_drop_all_shards('range_copy'::regclass, 'public', 'range_copy'); } -step "s2-distribute-table" { - SET citus.shard_replication_factor TO 1; - SET citus.next_shard_id TO 3004005; - SELECT create_distributed_table('range_copy', 'id', 'range'); - UPDATE pg_dist_shard SET shardminvalue = '0', shardmaxvalue = '4' WHERE shardid = 3004005; - UPDATE pg_dist_shard SET shardminvalue = '5', shardmaxvalue = '9' WHERE shardid = 3004006; - } +step "s2-distribute-table" +{ + SET citus.shard_replication_factor TO 1; + SET citus.next_shard_id TO 3004005; + SELECT create_distributed_table('range_copy', 'id', 'range'); + UPDATE pg_dist_shard SET shardminvalue = '0', shardmaxvalue = '4' WHERE shardid = 3004005; + UPDATE pg_dist_shard SET shardminvalue = '5', shardmaxvalue = '9' WHERE shardid = 3004006; +} // We use this as a way to wait for s2-ddl-create-index-concurrently to // complete. We know it can complete after s1-commit has succeeded, this way we // make sure no other query is run over session s1 before that happens. diff --git a/src/test/regress/spec/isolation_rebalancer_deferred_drop.spec b/src/test/regress/spec/isolation_rebalancer_deferred_drop.spec index e5185680e..76d209154 100644 --- a/src/test/regress/spec/isolation_rebalancer_deferred_drop.spec +++ b/src/test/regress/spec/isolation_rebalancer_deferred_drop.spec @@ -25,27 +25,27 @@ setup LANGUAGE C STRICT VOLATILE AS 'citus', $$stop_session_level_connection_to_node$$; -CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() - LANGUAGE C - AS 'citus', $$isolation_cleanup_orphaned_resources$$; -COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() - IS 'cleanup orphaned shards'; + CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() + LANGUAGE C + AS 'citus', $$isolation_cleanup_orphaned_resources$$; + COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() + IS 'cleanup orphaned shards'; RESET citus.enable_metadata_sync; CALL isolation_cleanup_orphaned_resources(); SET citus.next_shard_id to 120000; - SET citus.shard_count TO 8; - SET citus.shard_replication_factor TO 1; - CREATE TABLE t1 (x int PRIMARY KEY, y int); - SELECT create_distributed_table('t1', 'x'); + SET citus.shard_count TO 8; + SET citus.shard_replication_factor TO 1; + CREATE TABLE t1 (x int PRIMARY KEY, y int); + SELECT create_distributed_table('t1', 'x'); - SELECT get_shard_id_for_distribution_column('t1', 15) INTO selected_shard; + SELECT get_shard_id_for_distribution_column('t1', 15) INTO selected_shard; } teardown { - DROP TABLE selected_shard; - DROP TABLE t1; + DROP TABLE selected_shard; + DROP TABLE t1; } @@ -82,7 +82,7 @@ step "s2-start-session-level-connection" step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s2-lock-table-on-worker" diff --git a/src/test/regress/spec/isolation_ref2ref_foreign_keys.spec b/src/test/regress/spec/isolation_ref2ref_foreign_keys.spec index 4967883c0..d1bfeb07b 100644 --- a/src/test/regress/spec/isolation_ref2ref_foreign_keys.spec +++ b/src/test/regress/spec/isolation_ref2ref_foreign_keys.spec @@ -1,14 +1,14 @@ setup { - ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 8429800; + ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 8429800; CREATE TABLE ref_table_1(id int PRIMARY KEY, value int); - SELECT create_reference_table('ref_table_1'); + SELECT create_reference_table('ref_table_1'); CREATE TABLE ref_table_2(id int PRIMARY KEY, value int REFERENCES ref_table_1(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_reference_table('ref_table_2'); + SELECT create_reference_table('ref_table_2'); CREATE TABLE ref_table_3(id int PRIMARY KEY, value int REFERENCES ref_table_2(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_reference_table('ref_table_3'); + SELECT create_reference_table('ref_table_3'); INSERT INTO ref_table_1 VALUES (1, 1), (3, 3), (5, 5); INSERT INTO ref_table_2 SELECT * FROM ref_table_1; @@ -17,14 +17,14 @@ setup teardown { - DROP TABLE ref_table_1, ref_table_2, ref_table_3; + DROP TABLE ref_table_1, ref_table_2, ref_table_3; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-delete-table-2" @@ -106,7 +106,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-insert-table-1" diff --git a/src/test/regress/spec/isolation_ref2ref_foreign_keys_enterprise.spec b/src/test/regress/spec/isolation_ref2ref_foreign_keys_enterprise.spec index c4c8fc6a6..8f3167223 100644 --- a/src/test/regress/spec/isolation_ref2ref_foreign_keys_enterprise.spec +++ b/src/test/regress/spec/isolation_ref2ref_foreign_keys_enterprise.spec @@ -1,13 +1,13 @@ setup { SET citus.shard_count TO 2; - SET citus.shard_replication_factor TO 1; + SET citus.shard_replication_factor TO 1; CREATE TABLE ref_table_1(id int PRIMARY KEY, value int); - SELECT create_reference_table('ref_table_1'); + SELECT create_reference_table('ref_table_1'); CREATE TABLE ref_table_2(id int PRIMARY KEY REFERENCES ref_table_1(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_reference_table('ref_table_2'); + SELECT create_reference_table('ref_table_2'); CREATE TABLE dist_table(id int PRIMARY KEY, value int REFERENCES ref_table_2(id) ON DELETE CASCADE ON UPDATE CASCADE); SELECT create_distributed_table('dist_table', 'id'); @@ -21,14 +21,14 @@ setup teardown { - DROP TABLE ref_table_1, ref_table_2, dist_table, selected_shard_for_dist_table; + DROP TABLE ref_table_1, ref_table_2, dist_table, selected_shard_for_dist_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-delete-table-1" @@ -66,7 +66,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-move-shards" diff --git a/src/test/regress/spec/isolation_ref2ref_foreign_keys_on_mx.spec b/src/test/regress/spec/isolation_ref2ref_foreign_keys_on_mx.spec index cd0028537..9791dc3db 100644 --- a/src/test/regress/spec/isolation_ref2ref_foreign_keys_on_mx.spec +++ b/src/test/regress/spec/isolation_ref2ref_foreign_keys_on_mx.spec @@ -3,13 +3,13 @@ setup { CREATE TABLE ref_table_1(id int PRIMARY KEY, value int); - SELECT create_reference_table('ref_table_1'); + SELECT create_reference_table('ref_table_1'); CREATE TABLE ref_table_2(id int PRIMARY KEY, value int REFERENCES ref_table_1(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_reference_table('ref_table_2'); + SELECT create_reference_table('ref_table_2'); CREATE TABLE ref_table_3(id int PRIMARY KEY, value int REFERENCES ref_table_2(id) ON DELETE CASCADE ON UPDATE CASCADE); - SELECT create_reference_table('ref_table_3'); + SELECT create_reference_table('ref_table_3'); INSERT INTO ref_table_1 VALUES (1, 1), (3, 3), (5, 5); INSERT INTO ref_table_2 SELECT * FROM ref_table_1; @@ -18,43 +18,43 @@ setup teardown { - DROP TABLE ref_table_1, ref_table_2, ref_table_3; + DROP TABLE ref_table_1, ref_table_2, ref_table_3; } session "s1" step "s1-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-view-locks" { SELECT * FROM master_run_on_worker( - ARRAY['localhost']::text[], - ARRAY[57637]::int[], - ARRAY[$$ - SELECT array_agg(ROW(t.mode, t.count) ORDER BY t.mode) FROM - (SELECT mode, count(*) count FROM pg_locks - WHERE locktype='advisory' GROUP BY mode ORDER BY 1, 2) t$$]::text[], - false); + ARRAY['localhost']::text[], + ARRAY[57637]::int[], + ARRAY[$$ + SELECT array_agg(ROW(t.mode, t.count) ORDER BY t.mode) FROM + (SELECT mode, count(*) count FROM pg_locks + WHERE locktype='advisory' GROUP BY mode ORDER BY 1, 2) t$$]::text[], + false); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-insert-table-1" @@ -109,7 +109,7 @@ step "s2-rollback-worker" step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } // Case 1. UPDATE/DELETE ref_table_1 should only lock its own shard in Exclusive mode. diff --git a/src/test/regress/spec/isolation_ref_select_for_update_vs_all_on_mx.spec b/src/test/regress/spec/isolation_ref_select_for_update_vs_all_on_mx.spec index 02241b51e..4b89c18c8 100644 --- a/src/test/regress/spec/isolation_ref_select_for_update_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_ref_select_for_update_vs_all_on_mx.spec @@ -2,8 +2,8 @@ setup { - CREATE TABLE ref_table(id integer, value integer); - SELECT create_reference_table('ref_table'); + CREATE TABLE ref_table(id integer, value integer); + SELECT create_reference_table('ref_table'); } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -29,17 +29,17 @@ step "s1-begin-on-worker" step "s1-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2 FOR UPDATE'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -59,42 +59,42 @@ step "s2-begin-on-worker" step "s2-insert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES (1, 10), (2, 20)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES (1, 10), (2, 20)'); } step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2'); } step "s2-insert-select-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table SELECT * FROM ref_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table SELECT * FROM ref_table'); } step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 1, 10 && echo 2, 20''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 1, 10 && echo 2, 20''WITH CSV'); } step "s2-alter" { - ALTER TABLE ref_table DROP value; + ALTER TABLE ref_table DROP value; } step "s2-truncate" { - SELECT run_commands_on_session_level_connection_to_node('TRUNCATE ref_table'); + SELECT run_commands_on_session_level_connection_to_node('TRUNCATE ref_table'); } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY ref_table_index ON ref_table(id); + CREATE INDEX CONCURRENTLY ref_table_index ON ref_table(id); } step "s2-commit-worker" @@ -119,7 +119,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM ref_table; + SELECT COUNT(*) FROM ref_table; } diff --git a/src/test/regress/spec/isolation_ref_update_delete_upsert_vs_all_on_mx.spec b/src/test/regress/spec/isolation_ref_update_delete_upsert_vs_all_on_mx.spec index b37bd5f9f..28a209562 100644 --- a/src/test/regress/spec/isolation_ref_update_delete_upsert_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_ref_update_delete_upsert_vs_all_on_mx.spec @@ -2,8 +2,8 @@ setup { - CREATE TABLE ref_table(id integer, value integer); - SELECT create_reference_table('ref_table'); + CREATE TABLE ref_table(id integer, value integer); + SELECT create_reference_table('ref_table'); } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -17,7 +17,7 @@ session "s1" step "s1-add-primary-key" { - ALTER TABLE ref_table ADD CONSTRAINT pri_key PRIMARY KEY (id); + ALTER TABLE ref_table ADD CONSTRAINT pri_key PRIMARY KEY (id); } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -34,22 +34,22 @@ step "s1-begin-on-worker" step "s1-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE id=1 OR id=2'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE id=1 OR id=2'); } step "s1-upsert" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES (1, 3), (2, 3) ON CONFLICT (id) DO UPDATE SET value=3'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES (1, 3), (2, 3) ON CONFLICT (id) DO UPDATE SET value=3'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -69,27 +69,27 @@ step "s2-begin-on-worker" step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table WHERE id=1 OR id=2'); } step "s2-insert-select-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table SELECT * FROM ref_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table SELECT * FROM ref_table'); } step "s2-drop" { - DROP TABLE ref_table; + DROP TABLE ref_table; } step "s2-truncate" { - SELECT run_commands_on_session_level_connection_to_node('TRUNCATE ref_table'); + SELECT run_commands_on_session_level_connection_to_node('TRUNCATE ref_table'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY ref_table_index ON ref_table(id); + CREATE INDEX CONCURRENTLY ref_table_index ON ref_table(id); } step "s2-commit-worker" @@ -111,7 +111,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM ref_table; + SELECT COUNT(*) FROM ref_table; } diff --git a/src/test/regress/spec/isolation_reference_copy_vs_all.spec b/src/test/regress/spec/isolation_reference_copy_vs_all.spec index 6e962b9c3..f74ab8ea6 100644 --- a/src/test/regress/spec/isolation_reference_copy_vs_all.spec +++ b/src/test/regress/spec/isolation_reference_copy_vs_all.spec @@ -5,15 +5,15 @@ // create append distributed table to test behavior of COPY in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE reference_copy(id integer, data text, int_data int); - SELECT create_reference_table('reference_copy'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE reference_copy(id integer, data text, int_data int); + SELECT create_reference_table('reference_copy'); } // drop distributed table teardown { - DROP TABLE IF EXISTS reference_copy CASCADE; + DROP TABLE IF EXISTS reference_copy CASCADE; } // session 1 @@ -26,7 +26,7 @@ step "s1-router-select" { SELECT * FROM reference_copy WHERE id = 1; } step "s1-real-time-select" { SELECT * FROM reference_copy ORDER BY 1, 2; } step "s1-adaptive-select" { - SELECT * FROM reference_copy AS t1 JOIN reference_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SELECT * FROM reference_copy AS t1 JOIN reference_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s1-insert" { INSERT INTO reference_copy VALUES(0, 'k', 0); } step "s1-insert-select" { INSERT INTO reference_copy SELECT * FROM reference_copy; } @@ -55,7 +55,7 @@ step "s2-router-select" { SELECT * FROM reference_copy WHERE id = 1; } step "s2-real-time-select" { SELECT * FROM reference_copy ORDER BY 1, 2; } step "s2-adaptive-select" { - SELECT * FROM reference_copy AS t1 JOIN reference_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SELECT * FROM reference_copy AS t1 JOIN reference_copy AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s2-insert" { INSERT INTO reference_copy VALUES(0, 'k', 0); } step "s2-insert-select" { INSERT INTO reference_copy SELECT * FROM reference_copy; } diff --git a/src/test/regress/spec/isolation_reference_on_mx.spec b/src/test/regress/spec/isolation_reference_on_mx.spec index 45e4bf905..d9296fb5b 100644 --- a/src/test/regress/spec/isolation_reference_on_mx.spec +++ b/src/test/regress/spec/isolation_reference_on_mx.spec @@ -2,60 +2,60 @@ setup { - CREATE TABLE ref_table(user_id int, value_1 int); - SELECT create_reference_table('ref_table'); - INSERT INTO ref_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + CREATE TABLE ref_table(user_id int, value_1 int); + SELECT create_reference_table('ref_table'); + INSERT INTO ref_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); } // Create and use UDF to close the connection opened in the setup step. Also return the cluster // back to the initial state. teardown { - DROP TABLE ref_table; + DROP TABLE ref_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. step "s1-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s1-update-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); } step "s1-delete-from-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM ref_table WHERE user_id = 1'); } step "s1-insert-into-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); } step "s1-copy-to-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); } step "s1-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM ref_table FOR UPDATE'); } step "s1-commit-worker" @@ -65,54 +65,54 @@ step "s1-commit-worker" step "s1-alter-table" { - ALTER TABLE ref_table ADD CONSTRAINT rf_p_key PRIMARY KEY(user_id); + ALTER TABLE ref_table ADD CONSTRAINT rf_p_key PRIMARY KEY(user_id); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-update-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE ref_table SET value_1 = 12 WHERE user_id = 1'); } step "s2-select-from-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT count(*) FROM ref_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT count(*) FROM ref_table'); } step "s2-insert-into-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO ref_table VALUES(8,81),(9,91)'); } step "s2-copy-to-ref-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY ref_table FROM PROGRAM ''echo 10, 101 && echo 11, 111'' WITH CSV'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s2-commit-worker" diff --git a/src/test/regress/spec/isolation_reference_table.spec b/src/test/regress/spec/isolation_reference_table.spec index 358ce6512..9949e53c0 100644 --- a/src/test/regress/spec/isolation_reference_table.spec +++ b/src/test/regress/spec/isolation_reference_table.spec @@ -10,12 +10,12 @@ // transaction. setup { - VACUUM FULL pg_dist_partition; + VACUUM FULL pg_dist_partition; } setup { - CREATE TABLE first_reference_table(a int); - SELECT create_reference_table('first_reference_table'); + CREATE TABLE first_reference_table(a int); + SELECT create_reference_table('first_reference_table'); } teardown @@ -35,7 +35,7 @@ step "s1-begin" step "s1-create" { CREATE TABLE reference_table_s1(a int); - SELECT create_reference_table('reference_table_s1'); + SELECT create_reference_table('reference_table_s1'); } step "s1-drop" @@ -58,7 +58,7 @@ step "s2-begin" step "s2-create" { CREATE TABLE reference_table_s2(a int); - SELECT create_reference_table('reference_table_s2'); + SELECT create_reference_table('reference_table_s2'); } step "s2-drop" diff --git a/src/test/regress/spec/isolation_remove_coordinator.spec b/src/test/regress/spec/isolation_remove_coordinator.spec index 5f373cfb5..1f181fe4a 100644 --- a/src/test/regress/spec/isolation_remove_coordinator.spec +++ b/src/test/regress/spec/isolation_remove_coordinator.spec @@ -1,11 +1,11 @@ setup { - SELECT 1; + SELECT 1; } teardown { - SELECT 1 FROM citus_remove_node('localhost', 57636); + SELECT 1 FROM citus_remove_node('localhost', 57636); } session "s1" diff --git a/src/test/regress/spec/isolation_replace_wait_function.spec b/src/test/regress/spec/isolation_replace_wait_function.spec index bf7f8a03d..fc5a75889 100644 --- a/src/test/regress/spec/isolation_replace_wait_function.spec +++ b/src/test/regress/spec/isolation_replace_wait_function.spec @@ -5,41 +5,41 @@ setup { - select setval('pg_dist_shardid_seq', GREATEST(1400000, nextval('pg_dist_shardid_seq'))); + select setval('pg_dist_shardid_seq', GREATEST(1400000, nextval('pg_dist_shardid_seq'))); - CREATE TABLE test_locking (a int unique); - SELECT create_distributed_table('test_locking', 'a'); + CREATE TABLE test_locking (a int unique); + SELECT create_distributed_table('test_locking', 'a'); } teardown { - DROP TABLE test_locking; + DROP TABLE test_locking; } session "s1" step "s1-insert-1" { - BEGIN; - INSERT INTO test_locking (a) VALUES (1); + BEGIN; + INSERT INTO test_locking (a) VALUES (1); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-insert" { - BEGIN; - INSERT INTO test_locking (a) VALUES (1); + BEGIN; + INSERT INTO test_locking (a) VALUES (1); } step "s2-commit" { - COMMIT; + COMMIT; } permutation "s1-insert-1" "s2-insert" "s1-commit" "s2-commit" diff --git a/src/test/regress/spec/isolation_replicate_reference_tables_to_coordinator.spec b/src/test/regress/spec/isolation_replicate_reference_tables_to_coordinator.spec index fce379427..fee01293c 100644 --- a/src/test/regress/spec/isolation_replicate_reference_tables_to_coordinator.spec +++ b/src/test/regress/spec/isolation_replicate_reference_tables_to_coordinator.spec @@ -1,18 +1,18 @@ setup { - SET citus.next_shard_id TO 1500877; - CREATE TABLE ref_table(a int primary key); - SELECT create_reference_table('ref_table'); - INSERT INTO ref_table VALUES (1), (3), (5), (7); + SET citus.next_shard_id TO 1500877; + CREATE TABLE ref_table(a int primary key); + SELECT create_reference_table('ref_table'); + INSERT INTO ref_table VALUES (1), (3), (5), (7); - CREATE TABLE dist_table(a int, b int); - SELECT create_distributed_table('dist_table', 'a'); + CREATE TABLE dist_table(a int, b int); + SELECT create_distributed_table('dist_table', 'a'); } teardown { - DROP TABLE ref_table, dist_table; - SELECT master_remove_node('localhost', 57636); + DROP TABLE ref_table, dist_table; + SELECT master_remove_node('localhost', 57636); } session "s1" @@ -40,11 +40,11 @@ step "s1-update-ref-table" step "s1-lock-ref-table-placement-on-coordinator" { DO $$ - DECLARE refshardid int; - BEGIN + DECLARE refshardid int; + BEGIN SELECT shardid INTO refshardid FROM pg_dist_shard WHERE logicalrelid='ref_table'::regclass; EXECUTE format('SELECT * from ref_table_%s FOR UPDATE', refshardid::text); - END + END $$; } @@ -68,32 +68,32 @@ step "s2-update-dist-table" step "s2-lock-ref-table-placement-on-coordinator" { DO $$ - DECLARE refshardid int; - BEGIN + DECLARE refshardid int; + BEGIN SELECT shardid INTO refshardid FROM pg_dist_shard WHERE logicalrelid='ref_table'::regclass; EXECUTE format('SELECT * from ref_table_%s FOR UPDATE', refshardid::text); - END + END $$; } step "s2-view-dist" { - SELECT query, state, wait_event_type, wait_event, usename, datname FROM citus_dist_stat_activity WHERE backend_type = 'client backend' AND query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%pg_isolation_test_session_is_blocked%'), ('%BEGIN%'), ('%add_node%')) ORDER BY query DESC; + SELECT query, state, wait_event_type, wait_event, usename, datname FROM citus_dist_stat_activity WHERE backend_type = 'client backend' AND query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%pg_isolation_test_session_is_blocked%'), ('%BEGIN%'), ('%add_node%')) ORDER BY query DESC; } step "s2-view-worker" { - SELECT query, state, wait_event_type, wait_event, usename, datname + SELECT query, state, wait_event_type, wait_event, usename, datname FROM citus_stat_activity WHERE query NOT ILIKE ALL(VALUES - ('%application_name%'), - ('%pg_prepared_xacts%'), - ('%COMMIT%'), - ('%dump_local_%'), - ('%citus_internal_local_blocked_processes%'), - ('%add_node%'), - ('%csa_from_one_node%'), - ('%pg_locks%')) + ('%application_name%'), + ('%pg_prepared_xacts%'), + ('%COMMIT%'), + ('%dump_local_%'), + ('%citus_internal_local_blocked_processes%'), + ('%add_node%'), + ('%csa_from_one_node%'), + ('%pg_locks%')) AND is_worker_query = true AND backend_type = 'client backend' AND query != '' @@ -103,14 +103,14 @@ step "s2-view-worker" step "s2-sleep" { - SELECT pg_sleep(0.5); + SELECT pg_sleep(0.5); } step "s2-active-transactions" { - -- Admin should be able to see all transactions - SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; - SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; + -- Admin should be able to see all transactions + SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0; + SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0; } // we disable the daemon during the regression tests in order to get consistent results @@ -122,7 +122,7 @@ session "deadlock-checker" // backend inappropriately step "deadlock-checker-call" { - SELECT check_distributed_deadlocks(); + SELECT check_distributed_deadlocks(); } @@ -133,12 +133,12 @@ session "add-node" // backend inappropriately step "add-node" { - SELECT 1 FROM master_add_node('localhost', 57636, groupid => 0); + SELECT 1 FROM master_add_node('localhost', 57636, groupid => 0); } step "replicate-reference-tables" { - SELECT replicate_reference_tables(shard_transfer_mode := 'block_writes'); + SELECT replicate_reference_tables(shard_transfer_mode := 'block_writes'); } // verify that locks on the placement of the reference table on the coordinator is diff --git a/src/test/regress/spec/isolation_replicated_dist_on_mx.spec b/src/test/regress/spec/isolation_replicated_dist_on_mx.spec index f3dd18816..b854c0003 100644 --- a/src/test/regress/spec/isolation_replicated_dist_on_mx.spec +++ b/src/test/regress/spec/isolation_replicated_dist_on_mx.spec @@ -2,20 +2,20 @@ setup { - CREATE TABLE replicated_table(user_id int, value_1 int); - SET citus.shard_replication_factor TO 2; - SELECT create_distributed_table('replicated_table', 'user_id', shard_count:=4); - INSERT INTO replicated_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + CREATE TABLE replicated_table(user_id int, value_1 int); + SET citus.shard_replication_factor TO 2; + SELECT create_distributed_table('replicated_table', 'user_id', shard_count:=4); + INSERT INTO replicated_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); - CREATE TABLE replicated_table_2(user_id int, value_1 int); - SET citus.shard_replication_factor TO 2; - SELECT create_distributed_table('replicated_table_2', 'user_id', shard_count:=4); - INSERT INTO replicated_table_2 VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + CREATE TABLE replicated_table_2(user_id int, value_1 int); + SET citus.shard_replication_factor TO 2; + SELECT create_distributed_table('replicated_table_2', 'user_id', shard_count:=4); + INSERT INTO replicated_table_2 VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); - CREATE TABLE single_replicated_table(user_id int, value_1 int); - SET citus.shard_replication_factor TO 1; - SELECT create_distributed_table('single_replicated_table', 'user_id', shard_count:=4); - INSERT INTO single_replicated_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); + CREATE TABLE single_replicated_table(user_id int, value_1 int); + SET citus.shard_replication_factor TO 1; + SELECT create_distributed_table('single_replicated_table', 'user_id', shard_count:=4); + INSERT INTO single_replicated_table VALUES (1, 11), (2, 21), (3, 31), (4, 41), (5, 51), (6, 61), (7, 71); } @@ -24,76 +24,76 @@ setup // back to the initial state. teardown { - DROP TABLE replicated_table, replicated_table_2, single_replicated_table; + DROP TABLE replicated_table, replicated_table_2, single_replicated_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. step "s1-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57637); + SELECT start_session_level_connection_to_node('localhost', 57637); } step "s1-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s1-update-1-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12 WHERE user_id = 1'); } step "s1-update-all-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12'); } step "s1-delete-1-from-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM replicated_table WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM replicated_table WHERE user_id = 1'); } step "s1-delete-all-from-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM replicated_table'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM replicated_table'); } step "s1-insert-into-1-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(1,81)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(1,81)'); } step "s1-insert-into-all-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(8,81),(9,91),(10,91),(11,91),(12,91), (13,91), (14,91), (15,91), (16,91), (17,91), (18,91), (19,91), (20,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(8,81),(9,91),(10,91),(11,91),(12,91), (13,91), (14,91), (15,91), (16,91), (17,91), (18,91), (19,91), (20,91)'); } step "s1-insert-into-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table SELECT * FROM replicated_table_2'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table SELECT * FROM replicated_table_2'); } step "s1-insert-into-select-from-single-rep" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table SELECT * FROM single_replicated_table LIMIT 10'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table SELECT * FROM single_replicated_table LIMIT 10'); } step "s1-copy-all-to-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 10, 101 && echo 11, 111 && echo 11, 111 && echo 12, 111 && echo 13, 111 && echo 14, 111 && echo 15, 111 && echo 16, 111 && echo 17, 111 && echo 18, 111 && echo 19, 111 && echo 20, 111 && echo 21, 111 && echo 22, 111 && echo 23, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 10, 101 && echo 11, 111 && echo 11, 111 && echo 12, 111 && echo 13, 111 && echo 14, 111 && echo 15, 111 && echo 16, 111 && echo 17, 111 && echo 18, 111 && echo 19, 111 && echo 20, 111 && echo 21, 111 && echo 22, 111 && echo 23, 111'' WITH CSV'); } step "s1-copy-1-to-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 1, 101 && echo 1, 111 && echo 1,1111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 1, 101 && echo 1, 111 && echo 1,1111'' WITH CSV'); } step "s1-commit-worker" @@ -103,69 +103,69 @@ step "s1-commit-worker" step "s1-alter-table" { - ALTER TABLE replicated_table ADD COLUMN x INT; + ALTER TABLE replicated_table ADD COLUMN x INT; } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-start-session-level-connection" { - SELECT start_session_level_connection_to_node('localhost', 57638); + SELECT start_session_level_connection_to_node('localhost', 57638); } step "s2-begin-on-worker" { - SELECT run_commands_on_session_level_connection_to_node('BEGIN'); + SELECT run_commands_on_session_level_connection_to_node('BEGIN'); } step "s2-update-1-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12 WHERE user_id = 1'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12 WHERE user_id = 1'); } step "s2-update-all-single-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE single_replicated_table SET value_1 = 12'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE single_replicated_table SET value_1 = 12'); } step "s2-update-all-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE replicated_table SET value_1 = 12'); } step "s2-select-from-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('SELECT count(*) FROM replicated_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT count(*) FROM replicated_table'); } step "s2-insert-into-1-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(1,81)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(1,81)'); } step "s2-insert-into-all-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(8,81),(9,91),(10,91),(11,91),(12,91), (13,91), (14,91), (15,91), (16,91), (17,91), (18,91), (19,91), (20,91)'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO replicated_table VALUES(8,81),(9,91),(10,91),(11,91),(12,91), (13,91), (14,91), (15,91), (16,91), (17,91), (18,91), (19,91), (20,91)'); } step "s2-copy-all-to-rep-table" { - SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 10, 101 && echo 11, 111 && echo 11, 111 && echo 12, 111 && echo 13, 111 && echo 14, 111 && echo 15, 111 && echo 16, 111 && echo 17, 111 && echo 18, 111 && echo 19, 111 && echo 20, 111 && echo 21, 111 && echo 22, 111 && echo 23, 111'' WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY replicated_table FROM PROGRAM ''echo 10, 101 && echo 11, 111 && echo 11, 111 && echo 12, 111 && echo 13, 111 && echo 14, 111 && echo 15, 111 && echo 16, 111 && echo 17, 111 && echo 18, 111 && echo 19, 111 && echo 20, 111 && echo 21, 111 && echo 22, 111 && echo 23, 111'' WITH CSV'); } step "s2-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s2-commit-worker" diff --git a/src/test/regress/spec/isolation_select_for_update.spec b/src/test/regress/spec/isolation_select_for_update.spec index d92884aed..243c0ff6d 100644 --- a/src/test/regress/spec/isolation_select_for_update.spec +++ b/src/test/regress/spec/isolation_select_for_update.spec @@ -1,153 +1,153 @@ setup { - SET citus.shard_replication_factor to 1; + SET citus.shard_replication_factor to 1; - CREATE TABLE test_table_1_rf1(id int, val_1 int); - SELECT create_distributed_table('test_table_1_rf1','id'); - INSERT INTO test_table_1_rf1 values(1,2),(2,3),(3,4); + CREATE TABLE test_table_1_rf1(id int, val_1 int); + SELECT create_distributed_table('test_table_1_rf1','id'); + INSERT INTO test_table_1_rf1 values(1,2),(2,3),(3,4); - SET citus.enable_ddl_propagation TO OFF; - CREATE VIEW test_1 AS SELECT * FROM test_table_1_rf1 WHERE val_1 = 2; - RESET citus.enable_ddl_propagation; + SET citus.enable_ddl_propagation TO OFF; + CREATE VIEW test_1 AS SELECT * FROM test_table_1_rf1 WHERE val_1 = 2; + RESET citus.enable_ddl_propagation; - CREATE TABLE test_table_2_rf1(id int, val_1 int); - SELECT create_distributed_table('test_table_2_rf1','id'); - INSERT INTO test_table_2_rf1 values(1,2),(2,3),(3,4); + CREATE TABLE test_table_2_rf1(id int, val_1 int); + SELECT create_distributed_table('test_table_2_rf1','id'); + INSERT INTO test_table_2_rf1 values(1,2),(2,3),(3,4); - CREATE TABLE ref_table(id int, val_1 int); - SELECT create_reference_table('ref_table'); - INSERT INTO ref_table values(1,2),(3,4),(5,6); + CREATE TABLE ref_table(id int, val_1 int); + SELECT create_reference_table('ref_table'); + INSERT INTO ref_table values(1,2),(3,4),(5,6); } teardown { - DROP TABLE test_table_1_rf1 CASCADE; - DROP TABLE test_table_2_rf1; - DROP TABLE ref_table; + DROP TABLE test_table_1_rf1 CASCADE; + DROP TABLE test_table_2_rf1; + DROP TABLE ref_table; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-select-from-t1-t2-for-update" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN test_table_2_rf1 as tt2 on tt1.id = tt2.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR UPDATE; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN test_table_2_rf1 as tt2 on tt1.id = tt2.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR UPDATE; } step "s1-select-from-t1-t2-for-share" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN test_table_2_rf1 as tt2 on tt1.id = tt2.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR SHARE; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN test_table_2_rf1 as tt2 on tt1.id = tt2.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR SHARE; } step "s1-select-from-t1-rt-for-update" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN ref_table as rt1 on tt1.id = rt1.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR UPDATE; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN ref_table as rt1 on tt1.id = rt1.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR UPDATE; } step "s1-select-from-t1-rt-with-lc-for-update" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN ref_table as rt1 on tt1.id = rt1.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR UPDATE - OF rt1; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN ref_table as rt1 on tt1.id = rt1.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR UPDATE + OF rt1; } step "s1-select-from-t1-within-cte" { - WITH first_value AS (SELECT val_1 FROM test_table_1_rf1 WHERE id = 1 FOR UPDATE) - SELECT * FROM first_value WHERE EXISTS (SELECT * FROM first_value); + WITH first_value AS (SELECT val_1 FROM test_table_1_rf1 WHERE id = 1 FOR UPDATE) + SELECT * FROM first_value WHERE EXISTS (SELECT * FROM first_value); } step "s1-update-rt-with-cte-select-from-rt" { - WITH foo AS (SELECT * FROM ref_table FOR UPDATE) - UPDATE ref_table SET val_1 = 4 FROM foo WHERE ref_table.id = foo.id AND EXISTS (SELECT * FROM foo); + WITH foo AS (SELECT * FROM ref_table FOR UPDATE) + UPDATE ref_table SET val_1 = 4 FROM foo WHERE ref_table.id = foo.id AND EXISTS (SELECT * FROM foo); } step "s1-select-from-t1-with-subquery" { - SET client_min_messages TO DEBUG2; - SELECT * FROM (SELECT * FROM test_table_1_rf1 FOR UPDATE) foo WHERE id = 1; - RESET client_min_messages; + SET client_min_messages TO DEBUG2; + SELECT * FROM (SELECT * FROM test_table_1_rf1 FOR UPDATE) foo WHERE id = 1; + RESET client_min_messages; } step "s1-select-from-rt-with-subquery" { - SELECT * FROM (SELECT * FROM ref_table FOR UPDATE) foo WHERE id = 1; + SELECT * FROM (SELECT * FROM ref_table FOR UPDATE) foo WHERE id = 1; } step "s1-select-from-t1-with-view" { - SELECT * FROM test_1 WHERE id = 1 FOR UPDATE; + SELECT * FROM test_1 WHERE id = 1 FOR UPDATE; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-update-t1" { - UPDATE test_table_1_rf1 SET val_1 = 5 WHERE id = 1; + UPDATE test_table_1_rf1 SET val_1 = 5 WHERE id = 1; } step "s2-update-rt" { - UPDATE ref_table SET val_1 = 5 WHERE id = 1; + UPDATE ref_table SET val_1 = 5 WHERE id = 1; } step "s2-delete-t1" { - DELETE FROM test_table_1_rf1 WHERE id = 1; + DELETE FROM test_table_1_rf1 WHERE id = 1; } step "s2-select-from-t1-t2-for-share" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN test_table_1_rf1 as tt2 on tt1.id = tt2.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR SHARE; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN test_table_1_rf1 as tt2 on tt1.id = tt2.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR SHARE; } step "s2-select-from-t1-t2-for-update" { - SELECT * FROM - test_table_1_rf1 as tt1 INNER JOIN test_table_1_rf1 as tt2 on tt1.id = tt2.id - WHERE tt1.id = 1 - ORDER BY 1 - FOR UPDATE; + SELECT * FROM + test_table_1_rf1 as tt1 INNER JOIN test_table_1_rf1 as tt2 on tt1.id = tt2.id + WHERE tt1.id = 1 + ORDER BY 1 + FOR UPDATE; } step "s2-commit" { - COMMIT; + COMMIT; } permutation "s1-begin" "s1-select-from-t1-t2-for-update" "s2-begin" "s2-update-t1" "s1-commit" "s2-commit" diff --git a/src/test/regress/spec/isolation_select_vs_all.spec b/src/test/regress/spec/isolation_select_vs_all.spec index a3b65ca77..739dcad91 100644 --- a/src/test/regress/spec/isolation_select_vs_all.spec +++ b/src/test/regress/spec/isolation_select_vs_all.spec @@ -5,17 +5,17 @@ // create range distributed table to test behavior of SELECT in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - SET citus.next_shard_id TO 6780300; - CREATE TABLE select_append(id integer, data text, int_data int); - SELECT create_distributed_table('select_append', 'id', 'append'); - SELECT master_create_empty_shard('select_append'); + SET citus.shard_replication_factor TO 1; + SET citus.next_shard_id TO 6780300; + CREATE TABLE select_append(id integer, data text, int_data int); + SELECT create_distributed_table('select_append', 'id', 'append'); + SELECT master_create_empty_shard('select_append'); } // drop distributed table teardown { - DROP TABLE IF EXISTS select_append CASCADE; + DROP TABLE IF EXISTS select_append CASCADE; } // session 1 @@ -24,15 +24,15 @@ step "s1-initialize" { COPY select_append FROM PROGRAM 'echo 0, a, 0 && echo 1, step "s1-begin" { BEGIN; } step "s1-disable-binary-protocol" { - -- Workaround router-select blocking blocking create-index-concurrently - SET citus.enable_binary_protocol TO false; + -- Workaround router-select blocking blocking create-index-concurrently + SET citus.enable_binary_protocol TO false; } step "s1-router-select" { SELECT * FROM select_append WHERE id = 1; } step "s1-real-time-select" { SELECT * FROM select_append ORDER BY 1, 2; } step "s1-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM select_append AS t1 JOIN select_append AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM select_append AS t1 JOIN select_append AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s1-insert" { INSERT INTO select_append VALUES(0, 'k', 0); } step "s1-insert-select" { INSERT INTO select_append SELECT * FROM select_append; } @@ -61,8 +61,8 @@ step "s2-router-select" { SELECT * FROM select_append WHERE id = 1; } step "s2-real-time-select" { SELECT * FROM select_append ORDER BY 1, 2; } step "s2-adaptive-select" { - SET citus.enable_repartition_joins TO ON; - SELECT * FROM select_append AS t1 JOIN select_append AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; + SET citus.enable_repartition_joins TO ON; + SELECT * FROM select_append AS t1 JOIN select_append AS t2 ON t1.id = t2.int_data ORDER BY 1, 2, 3, 4; } step "s2-insert" { INSERT INTO select_append VALUES(0, 'k', 0); } step "s2-insert-select" { INSERT INTO select_append SELECT * FROM select_append; } diff --git a/src/test/regress/spec/isolation_select_vs_all_on_mx.spec b/src/test/regress/spec/isolation_select_vs_all_on_mx.spec index 2f5f85e01..32812735a 100644 --- a/src/test/regress/spec/isolation_select_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_select_vs_all_on_mx.spec @@ -2,9 +2,9 @@ setup { - CREATE TABLE select_table(id integer, value integer); - SELECT create_distributed_table('select_table', 'id'); - COPY select_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + CREATE TABLE select_table(id integer, value integer); + SELECT create_distributed_table('select_table', 'id'); + COPY select_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -29,23 +29,23 @@ step "s1-begin-on-worker" } step "s1-disable-binary-protocol-on-worker" { - -- Workaround router-select blocking blocking create-index-concurrently - SELECT run_commands_on_session_level_connection_to_node('SET citus.enable_binary_protocol TO false'); + -- Workaround router-select blocking blocking create-index-concurrently + SELECT run_commands_on_session_level_connection_to_node('SET citus.enable_binary_protocol TO false'); } step "s1-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -53,7 +53,7 @@ session "s2" step "s2-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -70,37 +70,37 @@ step "s2-begin-on-worker" step "s2-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table'); } step "s2-insert-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO select_table SELECT * FROM select_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO select_table SELECT * FROM select_table'); } step "s2-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM select_table WHERE id = 1'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM select_table WHERE id = 1'); } step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY select_table FROM PROGRAM ''echo 9, 90 && echo 10, 100''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY select_table FROM PROGRAM ''echo 9, 90 && echo 10, 100''WITH CSV'); } step "s2-index" { - CREATE INDEX select_index ON select_table(id); + CREATE INDEX select_index ON select_table(id); } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table WHERE id = 6 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM select_table WHERE id = 6 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY select_table_index ON select_table(id); + CREATE INDEX CONCURRENTLY select_table_index ON select_table(id); } step "s2-commit-worker" @@ -115,7 +115,7 @@ step "s2-stop-connection" step "s2-commit" { - COMMIT; + COMMIT; } // We use this as a way to wait for s2-coordinator-create-index-concurrently to @@ -131,7 +131,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM select_table; + SELECT COUNT(*) FROM select_table; } diff --git a/src/test/regress/spec/isolation_setup.spec b/src/test/regress/spec/isolation_setup.spec index 0a69a2c9d..837300687 100644 --- a/src/test/regress/spec/isolation_setup.spec +++ b/src/test/regress/spec/isolation_setup.spec @@ -1,15 +1,15 @@ session "s1" step "setup" { - -- Replace pg_isolation_test_session_is_blocked so that all isolation tests are run with Citus implementation. - -- - -- Vanilla PG only checks for local blocks, whereas citus implementation also checks worker jobs in distributed - -- transactions. - -- - -- We have some tests that do not produce deterministic outputs when we use the Citus UDFs. They restore this - -- function in the setup phase and replace it again on the teardown phase so that the remainder of the tests can - -- keep using the Citus alternatives. Those tests should never be run concurrently with other isolation tests. - SELECT citus_internal.replace_isolation_tester_func(); + -- Replace pg_isolation_test_session_is_blocked so that all isolation tests are run with Citus implementation. + -- + -- Vanilla PG only checks for local blocks, whereas citus implementation also checks worker jobs in distributed + -- transactions. + -- + -- We have some tests that do not produce deterministic outputs when we use the Citus UDFs. They restore this + -- function in the setup phase and replace it again on the teardown phase so that the remainder of the tests can + -- keep using the Citus alternatives. Those tests should never be run concurrently with other isolation tests. + SELECT citus_internal.replace_isolation_tester_func(); } permutation "setup" diff --git a/src/test/regress/spec/isolation_shard_move_vs_start_metadata_sync.spec b/src/test/regress/spec/isolation_shard_move_vs_start_metadata_sync.spec index 701fbe8dd..777e8a091 100644 --- a/src/test/regress/spec/isolation_shard_move_vs_start_metadata_sync.spec +++ b/src/test/regress/spec/isolation_shard_move_vs_start_metadata_sync.spec @@ -1,49 +1,49 @@ setup { - SET citus.shard_replication_factor TO 1; - SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; + SET citus.shard_count TO 4; - CREATE TABLE dist_table (id int, value int); - SELECT create_distributed_table('dist_table', 'id'); + CREATE TABLE dist_table (id int, value int); + SELECT create_distributed_table('dist_table', 'id'); - SELECT shardid INTO selected_shard FROM pg_dist_shard WHERE logicalrelid='dist_table'::regclass LIMIT 1; + SELECT shardid INTO selected_shard FROM pg_dist_shard WHERE logicalrelid='dist_table'::regclass LIMIT 1; } teardown { - DROP TABLE dist_table; - DROP TABLE selected_shard; + DROP TABLE dist_table; + DROP TABLE selected_shard; } session "s1" step "s1-count-shards-by-worker" { - SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=1 AND shardstate != 4; - SELECT * FROM run_command_on_workers('SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=1') ORDER BY 1, 2, 3, 4; - SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=2 AND shardstate != 4; - SELECT * FROM run_command_on_workers('SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=2') ORDER BY 1, 2, 3, 4; + SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=1 AND shardstate != 4; + SELECT * FROM run_command_on_workers('SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=1') ORDER BY 1, 2, 3, 4; + SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=2 AND shardstate != 4; + SELECT * FROM run_command_on_workers('SELECT COUNT(*) FROM pg_dist_placement WHERE groupid=2') ORDER BY 1, 2, 3, 4; } step "s1-move-shard-force-logical" { - SELECT * FROM master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, 'force_logical'); + SELECT * FROM master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, 'force_logical'); } step "s1-move-shard-block-writes" { - SELECT * FROM master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, 'block_writes'); + SELECT * FROM master_move_shard_placement((SELECT * FROM selected_shard), 'localhost', 57637, 'localhost', 57638, 'block_writes'); } step "s1-begin" { - BEGIN; + BEGIN; } step "s1-commit" { - COMMIT; + COMMIT; } @@ -51,7 +51,7 @@ session "s2" step "s2-start-metadata-sync" { - SELECT * FROM start_metadata_sync_to_node('localhost', 57637); + SELECT * FROM start_metadata_sync_to_node('localhost', 57637); } // It is expected to observe different number of placements on coordinator and worker diff --git a/src/test/regress/spec/isolation_shard_rebalancer.spec b/src/test/regress/spec/isolation_shard_rebalancer.spec index d9d8d99ed..569037d36 100644 --- a/src/test/regress/spec/isolation_shard_rebalancer.spec +++ b/src/test/regress/spec/isolation_shard_rebalancer.spec @@ -1,58 +1,58 @@ setup { - SELECT 1 FROM master_add_node('localhost', 57637); - SELECT 1 FROM master_add_node('localhost', 57638); - CREATE TABLE colocated1 (test_id integer NOT NULL, data text); - SELECT create_distributed_table('colocated1', 'test_id', 'hash', 'none'); - CREATE TABLE colocated2 (test_id integer NOT NULL, data text); - SELECT create_distributed_table('colocated2', 'test_id', 'hash', 'colocated1'); - CREATE TABLE non_colocated (test_id integer NOT NULL, data text); - SELECT create_distributed_table('non_colocated', 'test_id', 'hash', 'none'); + SELECT 1 FROM master_add_node('localhost', 57637); + SELECT 1 FROM master_add_node('localhost', 57638); + CREATE TABLE colocated1 (test_id integer NOT NULL, data text); + SELECT create_distributed_table('colocated1', 'test_id', 'hash', 'none'); + CREATE TABLE colocated2 (test_id integer NOT NULL, data text); + SELECT create_distributed_table('colocated2', 'test_id', 'hash', 'colocated1'); + CREATE TABLE non_colocated (test_id integer NOT NULL, data text); + SELECT create_distributed_table('non_colocated', 'test_id', 'hash', 'none'); } teardown { - DROP TABLE non_colocated; - DROP TABLE colocated2; - DROP TABLE colocated1; - SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', true); + DROP TABLE non_colocated; + DROP TABLE colocated2; + DROP TABLE colocated1; + SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', true); } session "s1" step "s1-rebalance-c1" { - BEGIN; - select rebalance_table_shards('colocated1'); + BEGIN; + select rebalance_table_shards('colocated1'); } step "s1-replicate-c1" { - BEGIN; - select replicate_table_shards('colocated1'); + BEGIN; + select replicate_table_shards('colocated1'); } step "s1-rebalance-nc" { - BEGIN; - select rebalance_table_shards('non_colocated'); + BEGIN; + select rebalance_table_shards('non_colocated'); } step "s1-replicate-nc" { - BEGIN; - select replicate_table_shards('non_colocated'); + BEGIN; + select replicate_table_shards('non_colocated'); } step "s1-rebalance-all" { BEGIN; - select rebalance_table_shards(); + select rebalance_table_shards(); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" @@ -60,32 +60,32 @@ session "s2" step "s2-rebalance-c2" { - select rebalance_table_shards('colocated2'); + select rebalance_table_shards('colocated2'); } step "s2-replicate-c2" { - select replicate_table_shards('colocated2'); + select replicate_table_shards('colocated2'); } step "s2-rebalance-nc" { - select rebalance_table_shards('non_colocated'); + select rebalance_table_shards('non_colocated'); } step "s2-replicate-nc" { - select replicate_table_shards('non_colocated'); + select replicate_table_shards('non_colocated'); } step "s2-rebalance-all" { - select rebalance_table_shards(); + select rebalance_table_shards(); } step "s2-drain" { - select master_drain_node('localhost', 57638); + select master_drain_node('localhost', 57638); } step "s2-citus-rebalance-start" diff --git a/src/test/regress/spec/isolation_shard_rebalancer_progress.spec b/src/test/regress/spec/isolation_shard_rebalancer_progress.spec index e329e9483..3512e244f 100644 --- a/src/test/regress/spec/isolation_shard_rebalancer_progress.spec +++ b/src/test/regress/spec/isolation_shard_rebalancer_progress.spec @@ -1,73 +1,73 @@ setup { - ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 1500001; - SET citus.shard_count TO 4; - SET citus.shard_replication_factor TO 1; - SELECT 1 FROM master_add_node('localhost', 57637); + ALTER SEQUENCE pg_catalog.pg_dist_shardid_seq RESTART 1500001; + SET citus.shard_count TO 4; + SET citus.shard_replication_factor TO 1; + SELECT 1 FROM master_add_node('localhost', 57637); - CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() - LANGUAGE C - AS 'citus', $$isolation_cleanup_orphaned_resources$$; - COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() - IS 'cleanup orphaned shards'; - RESET citus.enable_metadata_sync; - CALL isolation_cleanup_orphaned_resources(); + CREATE OR REPLACE PROCEDURE isolation_cleanup_orphaned_resources() + LANGUAGE C + AS 'citus', $$isolation_cleanup_orphaned_resources$$; + COMMENT ON PROCEDURE isolation_cleanup_orphaned_resources() + IS 'cleanup orphaned shards'; + RESET citus.enable_metadata_sync; + CALL isolation_cleanup_orphaned_resources(); - SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', false); - CREATE TABLE colocated1 (test_id integer NOT NULL, data text); - SELECT create_distributed_table('colocated1', 'test_id', 'hash', 'none'); - CREATE TABLE colocated2 (test_id integer NOT NULL, data text); - SELECT create_distributed_table('colocated2', 'test_id', 'hash', 'colocated1'); - CREATE TABLE separate (test_id integer NOT NULL, data text); - SELECT create_distributed_table('separate', 'test_id', 'hash', 'none'); - -- 1 and 3 are chosen so they go to shard 1 and 2 - INSERT INTO colocated1(test_id) SELECT 1 from generate_series(0, 1000) i; - INSERT INTO colocated2(test_id) SELECT 1 from generate_series(0, 10000) i; - INSERT INTO colocated1(test_id) SELECT 3 from generate_series(0, 5000) i; - INSERT INTO separate(test_id) SELECT 1 from generate_series(0, 3000) i; - select * from pg_dist_placement; - SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', true); + SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', false); + CREATE TABLE colocated1 (test_id integer NOT NULL, data text); + SELECT create_distributed_table('colocated1', 'test_id', 'hash', 'none'); + CREATE TABLE colocated2 (test_id integer NOT NULL, data text); + SELECT create_distributed_table('colocated2', 'test_id', 'hash', 'colocated1'); + CREATE TABLE separate (test_id integer NOT NULL, data text); + SELECT create_distributed_table('separate', 'test_id', 'hash', 'none'); + -- 1 and 3 are chosen so they go to shard 1 and 2 + INSERT INTO colocated1(test_id) SELECT 1 from generate_series(0, 1000) i; + INSERT INTO colocated2(test_id) SELECT 1 from generate_series(0, 10000) i; + INSERT INTO colocated1(test_id) SELECT 3 from generate_series(0, 5000) i; + INSERT INTO separate(test_id) SELECT 1 from generate_series(0, 3000) i; + select * from pg_dist_placement; + SELECT master_set_node_property('localhost', 57638, 'shouldhaveshards', true); } teardown { - DROP TABLE colocated2; - DROP TABLE colocated1; - DROP TABLE separate; + DROP TABLE colocated2; + DROP TABLE colocated1; + DROP TABLE separate; } session "s1" step "s1-rebalance-c1-block-writes" { - SELECT rebalance_table_shards('colocated1', shard_transfer_mode:='block_writes'); + SELECT rebalance_table_shards('colocated1', shard_transfer_mode:='block_writes'); } step "s1-rebalance-c1-online" { - SELECT rebalance_table_shards('colocated1', shard_transfer_mode:='force_logical'); + SELECT rebalance_table_shards('colocated1', shard_transfer_mode:='force_logical'); } step "s1-shard-move-c1-block-writes" { - SELECT citus_move_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); + SELECT citus_move_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); } step "s1-shard-copy-c1-block-writes" { - UPDATE pg_dist_partition SET repmodel = 'c' WHERE logicalrelid IN ('colocated1', 'colocated2'); - SELECT citus_copy_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, transfer_mode:='block_writes'); + UPDATE pg_dist_partition SET repmodel = 'c' WHERE logicalrelid IN ('colocated1', 'colocated2'); + SELECT citus_copy_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, transfer_mode:='block_writes'); } step "s1-shard-move-c1-online" { - SELECT citus_move_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='force_logical'); + SELECT citus_move_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='force_logical'); } step "s1-shard-copy-c1-online" { - UPDATE pg_dist_partition SET repmodel = 'c' WHERE logicalrelid IN ('colocated1', 'colocated2'); - SELECT citus_copy_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, transfer_mode:='force_logical'); + UPDATE pg_dist_partition SET repmodel = 'c' WHERE logicalrelid IN ('colocated1', 'colocated2'); + SELECT citus_copy_shard_placement(1500001, 'localhost', 57637, 'localhost', 57638, transfer_mode:='force_logical'); } step "s1-wait" {} @@ -76,20 +76,20 @@ session "s3" step "s3-lock-2-start" { - BEGIN; - DELETE FROM colocated1 WHERE test_id = 3; + BEGIN; + DELETE FROM colocated1 WHERE test_id = 3; } step "s3-unlock-2-start" { - ROLLBACK; + ROLLBACK; } session "s4" step "s4-shard-move-sep-block-writes" { - SELECT citus_move_shard_placement(1500009, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); + SELECT citus_move_shard_placement(1500009, 'localhost', 57637, 'localhost', 57638, shard_transfer_mode:='block_writes'); } step "s4-wait" {} @@ -130,25 +130,25 @@ session "s7" step "s7-get-progress" { - set LOCAL client_min_messages=NOTICE; - WITH possible_sizes(size) as (VALUES (0), (8000), (50000), (200000), (400000)) - SELECT - table_name, - shardid, - ( SELECT size FROM possible_sizes WHERE ABS(size - shard_size) = (SELECT MIN(ABS(size - shard_size)) FROM possible_sizes )) shard_size, - sourcename, - sourceport, - ( SELECT size FROM possible_sizes WHERE ABS(size - source_shard_size) = (SELECT MIN(ABS(size - source_shard_size)) FROM possible_sizes )) source_shard_size, - targetname, - targetport, - ( SELECT size FROM possible_sizes WHERE ABS(size - target_shard_size) = (SELECT MIN(ABS(size - target_shard_size)) FROM possible_sizes )) target_shard_size, - progress, - operation_type, - target_lsn IS NULL OR source_lsn >= target_lsn AS lsn_sanity_check, - source_lsn IS NOT NULL AS source_lsn_available, - target_lsn IS NOT NULL AS target_lsn_available, - status - FROM get_rebalance_progress(); + set LOCAL client_min_messages=NOTICE; + WITH possible_sizes(size) as (VALUES (0), (8000), (50000), (200000), (400000)) + SELECT + table_name, + shardid, + ( SELECT size FROM possible_sizes WHERE ABS(size - shard_size) = (SELECT MIN(ABS(size - shard_size)) FROM possible_sizes )) shard_size, + sourcename, + sourceport, + ( SELECT size FROM possible_sizes WHERE ABS(size - source_shard_size) = (SELECT MIN(ABS(size - source_shard_size)) FROM possible_sizes )) source_shard_size, + targetname, + targetport, + ( SELECT size FROM possible_sizes WHERE ABS(size - target_shard_size) = (SELECT MIN(ABS(size - target_shard_size)) FROM possible_sizes )) target_shard_size, + progress, + operation_type, + target_lsn IS NULL OR source_lsn >= target_lsn AS lsn_sanity_check, + source_lsn IS NOT NULL AS source_lsn_available, + target_lsn IS NOT NULL AS target_lsn_available, + status + FROM get_rebalance_progress(); } // When getting progress from multiple monitors at the same time it can result @@ -156,25 +156,25 @@ step "s7-get-progress" // monitors. So in those cases we need to order the output for consistent results. step "s7-get-progress-ordered" { - set LOCAL client_min_messages=NOTICE; - WITH possible_sizes(size) as (VALUES (0), (8000), (50000), (200000), (400000)) - SELECT - table_name, - shardid, - ( SELECT size FROM possible_sizes WHERE ABS(size - shard_size) = (SELECT MIN(ABS(size - shard_size)) FROM possible_sizes )) shard_size, - sourcename, - sourceport, - ( SELECT size FROM possible_sizes WHERE ABS(size - source_shard_size) = (SELECT MIN(ABS(size - source_shard_size)) FROM possible_sizes )) source_shard_size, - targetname, - targetport, - ( SELECT size FROM possible_sizes WHERE ABS(size - target_shard_size) = (SELECT MIN(ABS(size - target_shard_size)) FROM possible_sizes )) target_shard_size, - progress, - operation_type, - target_lsn IS NULL OR source_lsn >= target_lsn AS lsn_sanity_check, - source_lsn IS NOT NULL AS source_lsn_available, - target_lsn IS NOT NULL AS target_lsn_available - FROM get_rebalance_progress() - ORDER BY 1, 2, 3, 4, 5; + set LOCAL client_min_messages=NOTICE; + WITH possible_sizes(size) as (VALUES (0), (8000), (50000), (200000), (400000)) + SELECT + table_name, + shardid, + ( SELECT size FROM possible_sizes WHERE ABS(size - shard_size) = (SELECT MIN(ABS(size - shard_size)) FROM possible_sizes )) shard_size, + sourcename, + sourceport, + ( SELECT size FROM possible_sizes WHERE ABS(size - source_shard_size) = (SELECT MIN(ABS(size - source_shard_size)) FROM possible_sizes )) source_shard_size, + targetname, + targetport, + ( SELECT size FROM possible_sizes WHERE ABS(size - target_shard_size) = (SELECT MIN(ABS(size - target_shard_size)) FROM possible_sizes )) target_shard_size, + progress, + operation_type, + target_lsn IS NULL OR source_lsn >= target_lsn AS lsn_sanity_check, + source_lsn IS NOT NULL AS source_lsn_available, + target_lsn IS NOT NULL AS target_lsn_available + FROM get_rebalance_progress() + ORDER BY 1, 2, 3, 4, 5; } // blocking rebalancer does what it should diff --git a/src/test/regress/spec/isolation_shouldhaveshards.spec b/src/test/regress/spec/isolation_shouldhaveshards.spec index 4df530540..54baae763 100644 --- a/src/test/regress/spec/isolation_shouldhaveshards.spec +++ b/src/test/regress/spec/isolation_shouldhaveshards.spec @@ -2,68 +2,68 @@ // add single one of the nodes for the purpose of the test setup { - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; - SELECT 1 FROM master_add_node('localhost', 57637); + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + SELECT 1 FROM master_add_node('localhost', 57637); } teardown { DROP TABLE IF EXISTS t1 CASCADE; - SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; + SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node; } session "s1" step "s1-add-second-node" { - SELECT 1 FROM master_add_node('localhost', 57638); + SELECT 1 FROM master_add_node('localhost', 57638); } step "s1-begin" { - BEGIN; + BEGIN; } step "s1-noshards" { - SELECT * from master_set_node_property('localhost', 57637, 'shouldhaveshards', false); + SELECT * from master_set_node_property('localhost', 57637, 'shouldhaveshards', false); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-create-distributed-table" { - CREATE TABLE t1 (a int); - -- session needs to have replication factor set to 1, can't do in setup - SET citus.shard_replication_factor TO 1; - SELECT create_distributed_table('t1', 'a'); + CREATE TABLE t1 (a int); + -- session needs to have replication factor set to 1, can't do in setup + SET citus.shard_replication_factor TO 1; + SELECT create_distributed_table('t1', 'a'); } step "s2-update-node" { - select * from master_update_node((select nodeid from pg_dist_node where nodeport = 57637), 'localhost', 57638) + select * from master_update_node((select nodeid from pg_dist_node where nodeport = 57637), 'localhost', 57638) } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-shardcounts" { - SELECT nodeport, count(*) - FROM pg_dist_shard JOIN pg_dist_shard_placement USING (shardid) - WHERE logicalrelid = 't1'::regclass GROUP BY nodeport ORDER BY nodeport; + SELECT nodeport, count(*) + FROM pg_dist_shard JOIN pg_dist_shard_placement USING (shardid) + WHERE logicalrelid = 't1'::regclass GROUP BY nodeport ORDER BY nodeport; } diff --git a/src/test/regress/spec/isolation_tenant_isolation.spec b/src/test/regress/spec/isolation_tenant_isolation.spec index 5db86685e..f25b339e2 100644 --- a/src/test/regress/spec/isolation_tenant_isolation.spec +++ b/src/test/regress/spec/isolation_tenant_isolation.spec @@ -1,20 +1,20 @@ setup { - SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; - SELECT setval('pg_dist_shardid_seq', - CASE WHEN nextval('pg_dist_shardid_seq') > 1599999 OR nextval('pg_dist_shardid_seq') < 1500000 - THEN 1500000 - ELSE nextval('pg_dist_shardid_seq')-2 - END); + SET citus.shard_count to 2; + SET citus.shard_replication_factor to 1; + SELECT setval('pg_dist_shardid_seq', + CASE WHEN nextval('pg_dist_shardid_seq') > 1599999 OR nextval('pg_dist_shardid_seq') < 1500000 + THEN 1500000 + ELSE nextval('pg_dist_shardid_seq')-2 + END); - CREATE TABLE isolation_table (id int, value int); - SELECT create_distributed_table('isolation_table', 'id'); + CREATE TABLE isolation_table (id int, value int); + SELECT create_distributed_table('isolation_table', 'id'); } teardown { - DROP TABLE isolation_table; + DROP TABLE isolation_table; } session "s1" @@ -31,95 +31,95 @@ step "s1-begin" // cache all placements step "s1-load-cache" { - TRUNCATE isolation_table; + TRUNCATE isolation_table; } step "s1-insert" { - INSERT INTO isolation_table VALUES (5, 10); + INSERT INTO isolation_table VALUES (5, 10); } step "s1-update" { - UPDATE isolation_table SET value = 5 WHERE id = 5; + UPDATE isolation_table SET value = 5 WHERE id = 5; } step "s1-update-complex" { - UPDATE isolation_table SET value = 5 WHERE id IN ( + UPDATE isolation_table SET value = 5 WHERE id IN ( SELECT max(id) FROM isolation_table ); } step "s1-delete" { - DELETE FROM isolation_table WHERE id = 5; + DELETE FROM isolation_table WHERE id = 5; } step "s1-select" { - SELECT count(*) FROM isolation_table WHERE id = 5; + SELECT count(*) FROM isolation_table WHERE id = 5; } step "s1-ddl" { - CREATE INDEX test_table_index ON isolation_table(id); + CREATE INDEX test_table_index ON isolation_table(id); } step "s1-copy" { - COPY isolation_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY isolation_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-isolate-tenant" { - SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'block_writes'); + SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'block_writes'); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-isolate-tenant" { - SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'block_writes'); + SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'block_writes'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('isolation_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('isolation_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT id, value FROM isolation_table ORDER BY id, value; + -- rows + SELECT id, value FROM isolation_table ORDER BY id, value; } step "s2-print-index-count" { - SELECT - nodeport, success, result - FROM - run_command_on_placements('isolation_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') - ORDER BY - nodeport; + SELECT + nodeport, success, result + FROM + run_command_on_placements('isolation_table', 'select count(*) from pg_indexes WHERE tablename = ''%s''') + ORDER BY + nodeport; } // run tenant isolation while concurrently performing an DML and index creation diff --git a/src/test/regress/spec/isolation_tenant_isolation_nonblocking.spec b/src/test/regress/spec/isolation_tenant_isolation_nonblocking.spec index 8dd726392..e9a16f061 100644 --- a/src/test/regress/spec/isolation_tenant_isolation_nonblocking.spec +++ b/src/test/regress/spec/isolation_tenant_isolation_nonblocking.spec @@ -1,25 +1,25 @@ setup { - SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; - SELECT setval('pg_dist_shardid_seq', - CASE WHEN nextval('pg_dist_shardid_seq') > 1599999 OR nextval('pg_dist_shardid_seq') < 1500072 - THEN 1500072 - ELSE nextval('pg_dist_shardid_seq')-2 - END); + SET citus.shard_count to 2; + SET citus.shard_replication_factor to 1; + SELECT setval('pg_dist_shardid_seq', + CASE WHEN nextval('pg_dist_shardid_seq') > 1599999 OR nextval('pg_dist_shardid_seq') < 1500072 + THEN 1500072 + ELSE nextval('pg_dist_shardid_seq')-2 + END); - CREATE TABLE isolation_table (id int PRIMARY KEY, value int); - SELECT create_distributed_table('isolation_table', 'id'); + CREATE TABLE isolation_table (id int PRIMARY KEY, value int); + SELECT create_distributed_table('isolation_table', 'id'); - -- different colocation id - CREATE TABLE isolation_table2 (id smallint PRIMARY KEY, value int); - SELECT create_distributed_table('isolation_table2', 'id'); + -- different colocation id + CREATE TABLE isolation_table2 (id smallint PRIMARY KEY, value int); + SELECT create_distributed_table('isolation_table2', 'id'); } teardown { - DROP TABLE isolation_table; - DROP TABLE isolation_table2; + DROP TABLE isolation_table; + DROP TABLE isolation_table2; } session "s1" @@ -36,97 +36,97 @@ step "s1-begin" // cache all placements step "s1-load-cache" { - TRUNCATE isolation_table; - TRUNCATE isolation_table2; + TRUNCATE isolation_table; + TRUNCATE isolation_table2; } step "s1-insert" { - INSERT INTO isolation_table VALUES (5, 10); - INSERT INTO isolation_table2 VALUES (5, 10); + INSERT INTO isolation_table VALUES (5, 10); + INSERT INTO isolation_table2 VALUES (5, 10); } step "s1-update" { - UPDATE isolation_table SET value = 5 WHERE id = 5; + UPDATE isolation_table SET value = 5 WHERE id = 5; } step "s1-update-complex" { - UPDATE isolation_table SET value = 5 WHERE id IN ( + UPDATE isolation_table SET value = 5 WHERE id IN ( SELECT max(id) FROM isolation_table ); } step "s1-delete" { - DELETE FROM isolation_table WHERE id = 5; + DELETE FROM isolation_table WHERE id = 5; } step "s1-select" { - SELECT count(*) FROM isolation_table WHERE id = 5; + SELECT count(*) FROM isolation_table WHERE id = 5; } step "s1-copy" { - COPY isolation_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY isolation_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-isolate-tenant-same-coloc" { - SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'force_logical'); + SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'force_logical'); } step "s1-isolate-tenant-same-coloc-blocking" { - SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'block_writes'); + SELECT isolate_tenant_to_new_shard('isolation_table', 2, shard_transfer_mode => 'block_writes'); } step "s1-isolate-tenant-no-same-coloc" { - SELECT isolate_tenant_to_new_shard('isolation_table2', 2, shard_transfer_mode => 'force_logical'); + SELECT isolate_tenant_to_new_shard('isolation_table2', 2, shard_transfer_mode => 'force_logical'); } step "s1-isolate-tenant-no-same-coloc-blocking" { - SELECT isolate_tenant_to_new_shard('isolation_table2', 2, shard_transfer_mode => 'block_writes'); + SELECT isolate_tenant_to_new_shard('isolation_table2', 2, shard_transfer_mode => 'block_writes'); } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-isolate-tenant" { - SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'force_logical'); + SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'force_logical'); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('isolation_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('isolation_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT id, value FROM isolation_table ORDER BY id, value; + -- rows + SELECT id, value FROM isolation_table ORDER BY id, value; } session "s3" diff --git a/src/test/regress/spec/isolation_tenant_isolation_with_fkey_to_reference.spec b/src/test/regress/spec/isolation_tenant_isolation_with_fkey_to_reference.spec index 78be85198..19a1fd642 100644 --- a/src/test/regress/spec/isolation_tenant_isolation_with_fkey_to_reference.spec +++ b/src/test/regress/spec/isolation_tenant_isolation_with_fkey_to_reference.spec @@ -1,26 +1,26 @@ setup { - -- set it to a predefined value as we check shard id's as well in output of this test - SELECT setval('pg_dist_shardid_seq', - CASE WHEN nextval('pg_dist_shardid_seq') > 1399999 OR nextval('pg_dist_shardid_seq') < 1300000 - THEN 1300000 - ELSE nextval('pg_dist_shardid_seq')-2 - END); + -- set it to a predefined value as we check shard id's as well in output of this test + SELECT setval('pg_dist_shardid_seq', + CASE WHEN nextval('pg_dist_shardid_seq') > 1399999 OR nextval('pg_dist_shardid_seq') < 1300000 + THEN 1300000 + ELSE nextval('pg_dist_shardid_seq')-2 + END); - SET citus.shard_count to 2; - SET citus.shard_replication_factor to 1; + SET citus.shard_count to 2; + SET citus.shard_replication_factor to 1; - CREATE TABLE reference_table (id int PRIMARY KEY, value int); - SELECT create_reference_table('reference_table'); + CREATE TABLE reference_table (id int PRIMARY KEY, value int); + SELECT create_reference_table('reference_table'); - CREATE TABLE isolation_table (id int, value int); - SELECT create_distributed_table('isolation_table', 'id'); + CREATE TABLE isolation_table (id int, value int); + SELECT create_distributed_table('isolation_table', 'id'); } teardown { - DROP TABLE isolation_table CASCADE; - DROP TABLE reference_table CASCADE; + DROP TABLE isolation_table CASCADE; + DROP TABLE reference_table CASCADE; } session "s1" @@ -32,68 +32,68 @@ step "s1-begin" step "s1-insert" { - INSERT INTO reference_table VALUES (5, 10); + INSERT INTO reference_table VALUES (5, 10); } step "s1-update" { - UPDATE reference_table SET value = 5 WHERE id = 5; + UPDATE reference_table SET value = 5 WHERE id = 5; } step "s1-delete" { - DELETE FROM reference_table WHERE id = 5; + DELETE FROM reference_table WHERE id = 5; } step "s1-ddl" { - CREATE INDEX reference_table_index ON reference_table(id); + CREATE INDEX reference_table_index ON reference_table(id); } step "s1-copy" { - COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; + COPY reference_table FROM PROGRAM 'echo "1,1\n2,2\n3,3\n4,4\n5,5"' WITH CSV; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-isolate-tenant" { - SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'block_writes'); + SELECT isolate_tenant_to_new_shard('isolation_table', 5, shard_transfer_mode => 'block_writes'); } step "s2-add-fkey" { - ALTER TABLE isolation_table ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); + ALTER TABLE isolation_table ADD CONSTRAINT fkey_const FOREIGN KEY(value) REFERENCES reference_table(id); } step "s2-commit" { - COMMIT; + COMMIT; } step "s2-print-cluster" { - -- row count per shard - SELECT - nodeport, shardid, success, result - FROM - run_command_on_placements('isolation_table', 'select count(*) from %s') - ORDER BY - nodeport, shardid; + -- row count per shard + SELECT + nodeport, shardid, success, result + FROM + run_command_on_placements('isolation_table', 'select count(*) from %s') + ORDER BY + nodeport, shardid; - -- rows - SELECT id, value FROM isolation_table ORDER BY id, value; + -- rows + SELECT id, value FROM isolation_table ORDER BY id, value; } // run tenant isolation while concurrently performing an DML and index creation on the diff --git a/src/test/regress/spec/isolation_truncate_vs_all.spec b/src/test/regress/spec/isolation_truncate_vs_all.spec index 1900ead26..cb161024d 100644 --- a/src/test/regress/spec/isolation_truncate_vs_all.spec +++ b/src/test/regress/spec/isolation_truncate_vs_all.spec @@ -5,17 +5,17 @@ // create range distributed table to test behavior of TRUNCATE in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - SET citus.next_shard_id TO 5990340; - CREATE TABLE truncate_append(id integer, data text); - SELECT create_distributed_table('truncate_append', 'id', 'append'); - SELECT master_create_empty_shard('truncate_append'); + SET citus.shard_replication_factor TO 1; + SET citus.next_shard_id TO 5990340; + CREATE TABLE truncate_append(id integer, data text); + SELECT create_distributed_table('truncate_append', 'id', 'append'); + SELECT master_create_empty_shard('truncate_append'); } // drop distributed table teardown { - DROP TABLE IF EXISTS truncate_append CASCADE; + DROP TABLE IF EXISTS truncate_append CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_truncate_vs_all_on_mx.spec b/src/test/regress/spec/isolation_truncate_vs_all_on_mx.spec index 779170b00..dd7dd7ecd 100644 --- a/src/test/regress/spec/isolation_truncate_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_truncate_vs_all_on_mx.spec @@ -2,35 +2,35 @@ setup { - CREATE TABLE truncate_table(id integer, value integer, PRIMARY KEY(id)); - CREATE TABLE data_table(id integer, value integer); - CREATE TABLE referencing_table_1 (id integer, PRIMARY KEY(id), FOREIGN KEY (id) REFERENCES truncate_table(id)); - CREATE TABLE referencing_table_2 (id integer, PRIMARY KEY(id), FOREIGN KEY (id) REFERENCES referencing_table_1(id)); + CREATE TABLE truncate_table(id integer, value integer, PRIMARY KEY(id)); + CREATE TABLE data_table(id integer, value integer); + CREATE TABLE referencing_table_1 (id integer, PRIMARY KEY(id), FOREIGN KEY (id) REFERENCES truncate_table(id)); + CREATE TABLE referencing_table_2 (id integer, PRIMARY KEY(id), FOREIGN KEY (id) REFERENCES referencing_table_1(id)); - SELECT create_distributed_table('truncate_table', 'id'); - SELECT create_distributed_table('data_table', 'id'); - SELECT create_distributed_table('referencing_table_1', 'id'); - SELECT create_distributed_table('referencing_table_2', 'id'); + SELECT create_distributed_table('truncate_table', 'id'); + SELECT create_distributed_table('data_table', 'id'); + SELECT create_distributed_table('referencing_table_1', 'id'); + SELECT create_distributed_table('referencing_table_2', 'id'); - COPY truncate_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; - COPY data_table FROM PROGRAM 'echo 20, 20 && echo 30, 30 && echo 40, 40 && echo 50, 50' WITH CSV; + COPY truncate_table FROM PROGRAM 'echo 1, 10 && echo 2, 20 && echo 3, 30 && echo 4, 40 && echo 5, 50' WITH CSV; + COPY data_table FROM PROGRAM 'echo 20, 20 && echo 30, 30 && echo 40, 40 && echo 50, 50' WITH CSV; } // Create and use UDF to close the connection opened in the setup step. Also return the cluster // back to the initial state. teardown { - DROP TABLE IF EXISTS data_table; - DROP TABLE IF EXISTS referencing_table_2; - DROP TABLE IF EXISTS referencing_table_1; - DROP TABLE IF EXISTS truncate_table CASCADE; + DROP TABLE IF EXISTS data_table; + DROP TABLE IF EXISTS referencing_table_2; + DROP TABLE IF EXISTS referencing_table_1; + DROP TABLE IF EXISTS truncate_table CASCADE; } session "s1" step "s1-begin" { - BEGIN; + BEGIN; } // We do not need to begin a transaction on coordinator, since it will be open on workers. @@ -47,52 +47,52 @@ step "s1-begin-on-worker" step "s1-truncate" { - SELECT run_commands_on_session_level_connection_to_node('TRUNCATE truncate_table CASCADE'); + SELECT run_commands_on_session_level_connection_to_node('TRUNCATE truncate_table CASCADE'); } step "s1-select" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM truncate_table WHERE id = 6'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM truncate_table WHERE id = 6'); } step "s1-insert-select" { - SELECT run_commands_on_session_level_connection_to_node('INSERT INTO truncate_table SELECT * FROM data_table'); + SELECT run_commands_on_session_level_connection_to_node('INSERT INTO truncate_table SELECT * FROM data_table'); } step "s1-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM truncate_table WHERE id IN (5, 6, 7)'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM truncate_table WHERE id IN (5, 6, 7)'); } step "s1-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY truncate_table FROM PROGRAM ''echo 6, 60 && echo 9, 90 && echo 10, 100''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY truncate_table FROM PROGRAM ''echo 6, 60 && echo 9, 90 && echo 10, 100''WITH CSV'); } step "s1-alter" { - ALTER TABLE truncate_table DROP value; + ALTER TABLE truncate_table DROP value; } step "s1-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM truncate_table WHERE id=5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM truncate_table WHERE id=5 FOR UPDATE'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } step "s1-commit" { - COMMIT; + COMMIT; } @@ -112,7 +112,7 @@ step "s2-begin-on-worker" step "s2-truncate" { - SELECT run_commands_on_session_level_connection_to_node('TRUNCATE truncate_table CASCADE'); + SELECT run_commands_on_session_level_connection_to_node('TRUNCATE truncate_table CASCADE'); } step "s2-commit-worker" @@ -130,12 +130,12 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM truncate_table; + SELECT COUNT(*) FROM truncate_table; } step "s3-select-count-from-ref-table" { - SELECT COUNT(*) FROM referencing_table_2; + SELECT COUNT(*) FROM referencing_table_2; } diff --git a/src/test/regress/spec/isolation_update_delete_upsert_vs_all_on_mx.spec b/src/test/regress/spec/isolation_update_delete_upsert_vs_all_on_mx.spec index 834b363ed..31b0be1e5 100644 --- a/src/test/regress/spec/isolation_update_delete_upsert_vs_all_on_mx.spec +++ b/src/test/regress/spec/isolation_update_delete_upsert_vs_all_on_mx.spec @@ -2,8 +2,8 @@ setup { - CREATE TABLE dist_table(id integer, value integer); - SELECT create_distributed_table('dist_table', 'id'); + CREATE TABLE dist_table(id integer, value integer); + SELECT create_distributed_table('dist_table', 'id'); } // Create and use UDF to close the connection opened in the setup step. Also return the cluster @@ -29,22 +29,22 @@ step "s1-begin-on-worker" step "s1-update" { - SELECT run_commands_on_session_level_connection_to_node('UPDATE dist_table SET value=15 WHERE id=5'); + SELECT run_commands_on_session_level_connection_to_node('UPDATE dist_table SET value=15 WHERE id=5'); } step "s1-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM dist_table WHERE id=5'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM dist_table WHERE id=5'); } step "s1-commit-worker" { - SELECT run_commands_on_session_level_connection_to_node('COMMIT'); + SELECT run_commands_on_session_level_connection_to_node('COMMIT'); } step "s1-stop-connection" { - SELECT stop_session_level_connection_to_node(); + SELECT stop_session_level_connection_to_node(); } @@ -64,27 +64,27 @@ step "s2-begin-on-worker" step "s2-delete" { - SELECT run_commands_on_session_level_connection_to_node('DELETE FROM dist_table WHERE id=5'); + SELECT run_commands_on_session_level_connection_to_node('DELETE FROM dist_table WHERE id=5'); } step "s2-copy" { - SELECT run_commands_on_session_level_connection_to_node('COPY dist_table FROM PROGRAM ''echo 5, 50 && echo 9, 90 && echo 10, 100''WITH CSV'); + SELECT run_commands_on_session_level_connection_to_node('COPY dist_table FROM PROGRAM ''echo 5, 50 && echo 9, 90 && echo 10, 100''WITH CSV'); } step "s2-alter-table" { - ALTER TABLE dist_table DROP value; + ALTER TABLE dist_table DROP value; } step "s2-select-for-update" { - SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id=5 FOR UPDATE'); + SELECT run_commands_on_session_level_connection_to_node('SELECT * FROM dist_table WHERE id=5 FOR UPDATE'); } step "s2-coordinator-create-index-concurrently" { - CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); + CREATE INDEX CONCURRENTLY dist_table_index ON dist_table(id); } step "s2-commit-worker" @@ -106,7 +106,7 @@ session "s3" step "s3-select-count" { - SELECT COUNT(*) FROM dist_table; + SELECT COUNT(*) FROM dist_table; } diff --git a/src/test/regress/spec/isolation_update_node.spec b/src/test/regress/spec/isolation_update_node.spec index d6be6bfdc..ba841dda1 100644 --- a/src/test/regress/spec/isolation_update_node.spec +++ b/src/test/regress/spec/isolation_update_node.spec @@ -23,7 +23,7 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-prepare-transaction" { @@ -58,21 +58,21 @@ step "s1-update-node-existent" { step "s1-commit" { - COMMIT; + COMMIT; } step "s1-show-nodes" { SELECT nodeid, nodename, nodeport, isactive - FROM pg_dist_node - ORDER BY nodename, nodeport; + FROM pg_dist_node + ORDER BY nodename, nodeport; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-update-node-1" @@ -112,7 +112,7 @@ step "s2-execute-prepared" { step "s2-abort" { - ABORT; + ABORT; } session "s3" diff --git a/src/test/regress/spec/isolation_update_node_lock_writes.spec b/src/test/regress/spec/isolation_update_node_lock_writes.spec index 74e37c659..9e0fc6d55 100644 --- a/src/test/regress/spec/isolation_update_node_lock_writes.spec +++ b/src/test/regress/spec/isolation_update_node_lock_writes.spec @@ -24,7 +24,7 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-update-node-1" @@ -37,34 +37,33 @@ step "s1-update-node-1" step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-begin" { - BEGIN; + BEGIN; } step "s2-insert" { INSERT INTO update_node(id, f1) - SELECT id, md5(id::text) - FROM generate_series(1, 10) as t(id); + SELECT id, md5(id::text) + FROM generate_series(1, 10) as t(id); } step "s2-abort" { - ABORT; + ABORT; } step "s2-commit" { - COMMIT; + COMMIT; } // session 1 updates node 1, session 2 writes should be blocked permutation "s1-begin" "s1-update-node-1" "s2-begin" "s2-insert" "s1-commit" "s2-abort" permutation "s2-begin" "s2-insert" "s1-update-node-1" "s2-commit" - diff --git a/src/test/regress/spec/isolation_update_vs_all.spec b/src/test/regress/spec/isolation_update_vs_all.spec index b8d419643..3af43d8fb 100644 --- a/src/test/regress/spec/isolation_update_vs_all.spec +++ b/src/test/regress/spec/isolation_update_vs_all.spec @@ -5,15 +5,15 @@ // create range distributed table to test behavior of UPDATE in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE update_hash(id integer, data text); - SELECT create_distributed_table('update_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE update_hash(id integer, data text); + SELECT create_distributed_table('update_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS update_hash CASCADE; + DROP TABLE IF EXISTS update_hash CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_upsert_vs_all.spec b/src/test/regress/spec/isolation_upsert_vs_all.spec index 6ac9008a5..857e31f06 100644 --- a/src/test/regress/spec/isolation_upsert_vs_all.spec +++ b/src/test/regress/spec/isolation_upsert_vs_all.spec @@ -5,15 +5,15 @@ // create range distributed table to test behavior of UPSERT in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE upsert_hash(id integer PRIMARY KEY, data text); - SELECT create_distributed_table('upsert_hash', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE upsert_hash(id integer PRIMARY KEY, data text); + SELECT create_distributed_table('upsert_hash', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS upsert_hash CASCADE; + DROP TABLE IF EXISTS upsert_hash CASCADE; } // session 1 diff --git a/src/test/regress/spec/isolation_vacuum_skip_locked.spec b/src/test/regress/spec/isolation_vacuum_skip_locked.spec index 4f1c2d3e2..2d9535425 100644 --- a/src/test/regress/spec/isolation_vacuum_skip_locked.spec +++ b/src/test/regress/spec/isolation_vacuum_skip_locked.spec @@ -5,32 +5,32 @@ setup { - CREATE TABLE parted (a INT) PARTITION BY LIST (a); - CREATE TABLE part1 PARTITION OF parted FOR VALUES IN (1); - ALTER TABLE part1 SET (autovacuum_enabled = false); - CREATE TABLE part2 PARTITION OF parted FOR VALUES IN (2); - ALTER TABLE part2 SET (autovacuum_enabled = false); + CREATE TABLE parted (a INT) PARTITION BY LIST (a); + CREATE TABLE part1 PARTITION OF parted FOR VALUES IN (1); + ALTER TABLE part1 SET (autovacuum_enabled = false); + CREATE TABLE part2 PARTITION OF parted FOR VALUES IN (2); + ALTER TABLE part2 SET (autovacuum_enabled = false); } teardown { - DROP TABLE IF EXISTS parted; + DROP TABLE IF EXISTS parted; } session s1 step lock_share { - BEGIN; - LOCK part1 IN SHARE MODE; + BEGIN; + LOCK part1 IN SHARE MODE; } step lock_access_exclusive { - BEGIN; - LOCK part1 IN ACCESS EXCLUSIVE MODE; + BEGIN; + LOCK part1 IN ACCESS EXCLUSIVE MODE; } step commit { - COMMIT; + COMMIT; } session s2 diff --git a/src/test/regress/spec/isolation_validate_vs_insert.spec b/src/test/regress/spec/isolation_validate_vs_insert.spec index e50ddb5eb..403779d8b 100644 --- a/src/test/regress/spec/isolation_validate_vs_insert.spec +++ b/src/test/regress/spec/isolation_validate_vs_insert.spec @@ -5,15 +5,15 @@ // create distributed table to test behavior of VALIDATE in concurrent operations setup { - SET citus.shard_replication_factor TO 1; - CREATE TABLE constrained_table(id integer, int_data int); - SELECT create_distributed_table('constrained_table', 'id'); + SET citus.shard_replication_factor TO 1; + CREATE TABLE constrained_table(id integer, int_data int); + SELECT create_distributed_table('constrained_table', 'id'); } // drop distributed table teardown { - DROP TABLE IF EXISTS constrained_table CASCADE; + DROP TABLE IF EXISTS constrained_table CASCADE; } // session 1 diff --git a/src/test/regress/spec/shared_connection_waits.spec b/src/test/regress/spec/shared_connection_waits.spec index e7cd7eaca..8732ceb78 100644 --- a/src/test/regress/spec/shared_connection_waits.spec +++ b/src/test/regress/spec/shared_connection_waits.spec @@ -1,28 +1,28 @@ setup { - CREATE OR REPLACE FUNCTION wake_up_connection_pool_waiters() - RETURNS void - LANGUAGE C STABLE STRICT - AS 'citus', $$wake_up_connection_pool_waiters$$; + CREATE OR REPLACE FUNCTION wake_up_connection_pool_waiters() + RETURNS void + LANGUAGE C STABLE STRICT + AS 'citus', $$wake_up_connection_pool_waiters$$; - CREATE OR REPLACE FUNCTION set_max_shared_pool_size(int) - RETURNS void - LANGUAGE C STABLE STRICT - AS 'citus', $$set_max_shared_pool_size$$; + CREATE OR REPLACE FUNCTION set_max_shared_pool_size(int) + RETURNS void + LANGUAGE C STABLE STRICT + AS 'citus', $$set_max_shared_pool_size$$; - CREATE TABLE test (a int, b int); - SET citus.shard_count TO 32; - SELECT create_distributed_table('test', 'a'); - INSERT INTO test SELECT i, i FROM generate_series(0,100)i; + CREATE TABLE test (a int, b int); + SET citus.shard_count TO 32; + SELECT create_distributed_table('test', 'a'); + INSERT INTO test SELECT i, i FROM generate_series(0,100)i; } teardown { - SELECT set_max_shared_pool_size(100); - DROP FUNCTION wake_up_connection_pool_waiters(); - DROP FUNCTION set_max_shared_pool_size(int); - DROP TABLE test; + SELECT set_max_shared_pool_size(100); + DROP FUNCTION wake_up_connection_pool_waiters(); + DROP FUNCTION set_max_shared_pool_size(int); + DROP TABLE test; } session "s1" @@ -30,37 +30,36 @@ session "s1" step "s1-begin" { - BEGIN; + BEGIN; } step "s1-count-slow" { - SELECT pg_sleep(0.1), count(*) FROM test; + SELECT pg_sleep(0.1), count(*) FROM test; } step "s1-commit" { - COMMIT; + COMMIT; } session "s2" step "s2-select" { - SELECT count(*) FROM test; + SELECT count(*) FROM test; } session "s3" step "s3-lower-pool-size" { - SELECT set_max_shared_pool_size(5); + SELECT set_max_shared_pool_size(5); } step "s3-increase-pool-size" { - SELECT set_max_shared_pool_size(100); + SELECT set_max_shared_pool_size(100); } permutation "s3-lower-pool-size" "s1-begin" "s1-count-slow" "s3-increase-pool-size" "s2-select" "s1-commit" - diff --git a/src/test/regress/sql/citus_local_table_triggers.sql b/src/test/regress/sql/citus_local_table_triggers.sql index 93427d063..0b129934d 100644 --- a/src/test/regress/sql/citus_local_table_triggers.sql +++ b/src/test/regress/sql/citus_local_table_triggers.sql @@ -340,7 +340,7 @@ ROLLBACK; -- can perform local execution from a trigger on a Citus local table BEGIN; - SELECT citus_add_local_table_to_metadata('local_table'); + SELECT citus_add_local_table_to_metadata('local_table'); -- update should actually update something to test ON UPDATE CASCADE logic INSERT INTO another_citus_local_table VALUES (600); diff --git a/src/test/regress/sql/citus_local_tables_queries_mx.sql b/src/test/regress/sql/citus_local_tables_queries_mx.sql index 8bdb41a19..0ff03746f 100644 --- a/src/test/regress/sql/citus_local_tables_queries_mx.sql +++ b/src/test/regress/sql/citus_local_tables_queries_mx.sql @@ -46,18 +46,18 @@ CREATE TABLE postgres_local_table(a int, b int); SET citus.enable_metadata_sync TO OFF; CREATE FUNCTION clear_and_init_test_tables() RETURNS void AS $$ BEGIN - SET client_min_messages to ERROR; + SET client_min_messages to ERROR; - TRUNCATE postgres_local_table, citus_local_table, reference_table, distributed_table, dummy_reference_table, citus_local_table_2; + TRUNCATE postgres_local_table, citus_local_table, reference_table, distributed_table, dummy_reference_table, citus_local_table_2; - INSERT INTO dummy_reference_table SELECT i, i FROM generate_series(0, 5) i; - INSERT INTO citus_local_table SELECT i, i FROM generate_series(0, 5) i; - INSERT INTO citus_local_table_2 SELECT i, i FROM generate_series(0, 5) i; - INSERT INTO postgres_local_table SELECT i, i FROM generate_series(0, 5) i; - INSERT INTO distributed_table SELECT i, i FROM generate_series(0, 5) i; - INSERT INTO reference_table SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO dummy_reference_table SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO citus_local_table SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO citus_local_table_2 SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO postgres_local_table SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO distributed_table SELECT i, i FROM generate_series(0, 5) i; + INSERT INTO reference_table SELECT i, i FROM generate_series(0, 5) i; - RESET client_min_messages; + RESET client_min_messages; END; $$ LANGUAGE plpgsql; RESET citus.enable_metadata_sync; @@ -74,16 +74,16 @@ SELECT * FROM citus_local_table, reference_table WHERE citus_local_table.a = ref -- should work WITH cte_1 AS - (SELECT * FROM citus_local_table, reference_table WHERE citus_local_table.a = reference_table.a ORDER BY 1,2,3,4 FOR UPDATE) + (SELECT * FROM citus_local_table, reference_table WHERE citus_local_table.a = reference_table.a ORDER BY 1,2,3,4 FOR UPDATE) SELECT count(*) FROM cte_1; -- should work as joins are between ctes WITH cte_citus_local_table AS - (SELECT * FROM citus_local_table), + (SELECT * FROM citus_local_table), cte_postgres_local_table AS - (SELECT * FROM postgres_local_table), + (SELECT * FROM postgres_local_table), cte_distributed_table AS - (SELECT * FROM distributed_table) + (SELECT * FROM distributed_table) SELECT count(*) FROM cte_distributed_table, cte_citus_local_table, cte_postgres_local_table WHERE cte_citus_local_table.a = 1 AND cte_distributed_table.a = 1; @@ -93,7 +93,7 @@ SELECT count(*) FROM distributed_table d1, distributed_table d2, citus_local_tab -- local table inside subquery should just work SELECT count(*) FROM ( - SELECT * FROM (SELECT * FROM citus_local_table) as subquery_inner + SELECT * FROM (SELECT * FROM citus_local_table) as subquery_inner ) as subquery_top; SELECT clear_and_init_test_tables(); @@ -101,30 +101,30 @@ SELECT clear_and_init_test_tables(); -- join between citus/postgres local tables wouldn't work as citus local table is on the coordinator SELECT count(*) FROM ( - SELECT * FROM (SELECT count(*) FROM citus_local_table, postgres_local_table) as subquery_inner + SELECT * FROM (SELECT count(*) FROM citus_local_table, postgres_local_table) as subquery_inner ) as subquery_top; -- should fail as we don't support direct joins between distributed/local tables SELECT count(*) FROM ( - SELECT *, random() FROM (SELECT *, random() FROM citus_local_table, distributed_table) as subquery_inner + SELECT *, random() FROM (SELECT *, random() FROM citus_local_table, distributed_table) as subquery_inner ) as subquery_top; -- should fail as we don't support direct joins between distributed/local tables SELECT count(*) FROM ( - SELECT *, random() - FROM ( - WITH cte_1 AS (SELECT *, random() FROM citus_local_table, distributed_table) SELECT * FROM cte_1) as subquery_inner + SELECT *, random() + FROM ( + WITH cte_1 AS (SELECT *, random() FROM citus_local_table, distributed_table) SELECT * FROM cte_1) as subquery_inner ) as subquery_top; -- should be fine SELECT count(*) FROM ( - SELECT *, random() - FROM ( - WITH cte_1 AS (SELECT *, random() FROM citus_local_table), cte_2 AS (SELECT * FROM distributed_table) SELECT count(*) FROM cte_1, cte_2 - ) as subquery_inner + SELECT *, random() + FROM ( + WITH cte_1 AS (SELECT *, random() FROM citus_local_table), cte_2 AS (SELECT * FROM distributed_table) SELECT count(*) FROM cte_1, cte_2 + ) as subquery_inner ) as subquery_top; SELECT clear_and_init_test_tables(); @@ -155,14 +155,14 @@ EXECUTE citus_local_only_p(random()); EXECUTE citus_local_only_p(random()); PREPARE mixed_query(int, int, int) AS - WITH cte_citus_local_table AS - (SELECT * FROM citus_local_table WHERE a = $1), - cte_postgres_local_table AS - (SELECT * FROM postgres_local_table WHERE a = $2), - cte_distributed_table AS - (SELECT * FROM distributed_table WHERE a = $3), - cte_mixes AS (SELECT * FROM cte_distributed_table, cte_citus_local_table, cte_postgres_local_table) - SELECT count(*) FROM cte_mixes; + WITH cte_citus_local_table AS + (SELECT * FROM citus_local_table WHERE a = $1), + cte_postgres_local_table AS + (SELECT * FROM postgres_local_table WHERE a = $2), + cte_distributed_table AS + (SELECT * FROM distributed_table WHERE a = $3), + cte_mixes AS (SELECT * FROM cte_distributed_table, cte_citus_local_table, cte_postgres_local_table) + SELECT count(*) FROM cte_mixes; EXECUTE mixed_query(1,2,3); EXECUTE mixed_query(1,2,3); @@ -192,9 +192,9 @@ SELECT count(*) FROM citus_local_table WHERE a IN (SELECT a FROM reference_tabl -- nested recursive queries should just work SELECT count(*) FROM citus_local_table - WHERE a IN - (SELECT a FROM distributed_table WHERE a IN - (SELECT b FROM citus_local_table WHERE b IN (SELECT b FROM postgres_local_table))); + WHERE a IN + (SELECT a FROM distributed_table WHERE a IN + (SELECT b FROM citus_local_table WHERE b IN (SELECT b FROM postgres_local_table))); -- local outer joins SELECT count(*) FROM citus_local_table LEFT JOIN reference_table ON (true); @@ -208,7 +208,7 @@ SELECT count(*) FROM citus_local_table LEFT JOIN distributed_table ON (true); -- distinct in subquery on CTE WITH one_row AS ( - SELECT a from citus_local_table WHERE b = 1 + SELECT a from citus_local_table WHERE b = 1 ) SELECT * @@ -222,7 +222,7 @@ LIMIT 1; WITH one_row_2 AS ( - SELECT a from distributed_table WHERE b = 1 + SELECT a from distributed_table WHERE b = 1 ) SELECT * @@ -479,13 +479,13 @@ SELECT clear_and_init_test_tables(); SELECT count(*) AS a, count(*) AS b FROM reference_table JOIN (SELECT count(*) as a, count(*) as b - FROM citus_local_table_2 - JOIN (SELECT count(*) as a, count(*) as b + FROM citus_local_table_2 + JOIN (SELECT count(*) as a, count(*) as b FROM postgres_local_table JOIN (SELECT count(*) as a, count(*) as b - FROM reference_table as table_4677) subquery5108 + FROM reference_table as table_4677) subquery5108 USING (a)) subquery7132 - USING (b)) subquery7294 + USING (b)) subquery7294 USING (a); -- direct join inside CTE not supported @@ -499,7 +499,7 @@ RETURNING lt.b, lt.a UPDATE citus_local_table SET a=5 FROM (SELECT avg(distributed_table.b) as avg_b - FROM distributed_table) as foo + FROM distributed_table) as foo WHERE foo.avg_b = citus_local_table.b; @@ -572,24 +572,24 @@ BEGIN; INSERT INTO distributed_table VALUES (1); -- should show sequential as first inserting into citus local table - -- would force the xact block to use sequential execution + -- would force the xact block to use sequential execution show citus.multi_shard_modify_mode; ROLLBACK; BEGIN; - TRUNCATE distributed_table; + TRUNCATE distributed_table; - -- should error out as we truncated distributed_table via parallel execution - TRUNCATE citus_local_table CASCADE; + -- should error out as we truncated distributed_table via parallel execution + TRUNCATE citus_local_table CASCADE; ROLLBACK; BEGIN; - SET LOCAL citus.multi_shard_modify_mode TO 'sequential'; - TRUNCATE distributed_table; + SET LOCAL citus.multi_shard_modify_mode TO 'sequential'; + TRUNCATE distributed_table; - -- should work fine as we already switched to sequential execution - -- before parallel truncate - TRUNCATE citus_local_table CASCADE; + -- should work fine as we already switched to sequential execution + -- before parallel truncate + TRUNCATE citus_local_table CASCADE; ROLLBACK; \c - - - :master_port @@ -620,8 +620,8 @@ SET search_path TO citus_local_table_queries_mx; COPY citus_local_table(a) FROM PROGRAM 'seq 1'; BEGIN; - COPY citus_local_table(a) FROM PROGRAM 'seq 1'; - COPY citus_local_table(a) FROM PROGRAM 'seq 1'; + COPY citus_local_table(a) FROM PROGRAM 'seq 1'; + COPY citus_local_table(a) FROM PROGRAM 'seq 1'; COMMIT; COPY citus_local_table TO STDOUT; @@ -639,29 +639,29 @@ COMMIT; TRUNCATE citus_local_table, reference_table, distributed_table; BEGIN; - INSERT INTO citus_local_table VALUES (1), (2); + INSERT INTO citus_local_table VALUES (1), (2); - SAVEPOINT sp1; - INSERT INTO citus_local_table VALUES (3), (4); + SAVEPOINT sp1; + INSERT INTO citus_local_table VALUES (3), (4); - ROLLBACK TO SAVEPOINT sp1; - SELECT * FROM citus_local_table ORDER BY 1,2; + ROLLBACK TO SAVEPOINT sp1; + SELECT * FROM citus_local_table ORDER BY 1,2; - SAVEPOINT sp2; - INSERT INTO citus_local_table VALUES (3), (4); - INSERT INTO distributed_table VALUES (3), (4); + SAVEPOINT sp2; + INSERT INTO citus_local_table VALUES (3), (4); + INSERT INTO distributed_table VALUES (3), (4); - ROLLBACK TO SAVEPOINT sp2; - SELECT * FROM citus_local_table ORDER BY 1,2; - SELECT * FROM distributed_table ORDER BY 1,2; + ROLLBACK TO SAVEPOINT sp2; + SELECT * FROM citus_local_table ORDER BY 1,2; + SELECT * FROM distributed_table ORDER BY 1,2; - SAVEPOINT sp3; - INSERT INTO citus_local_table VALUES (3), (2); - INSERT INTO reference_table VALUES (3), (2); + SAVEPOINT sp3; + INSERT INTO citus_local_table VALUES (3), (2); + INSERT INTO reference_table VALUES (3), (2); - ROLLBACK TO SAVEPOINT sp3; - SELECT * FROM citus_local_table ORDER BY 1,2; - SELECT * FROM reference_table ORDER BY 1,2; + ROLLBACK TO SAVEPOINT sp3; + SELECT * FROM citus_local_table ORDER BY 1,2; + SELECT * FROM reference_table ORDER BY 1,2; COMMIT; \c - - - :master_port diff --git a/src/test/regress/sql_base_schedule b/src/test/regress/sql_base_schedule index e69de29bb..8b1378917 100644 --- a/src/test/regress/sql_base_schedule +++ b/src/test/regress/sql_base_schedule @@ -0,0 +1 @@ +