diff --git a/src/test/isolation2/expected/add_column_after_vacuum_skip_drop_column.out b/src/test/isolation2/expected/add_column_after_vacuum_skip_drop_column.out index 86512af3702009379e3b2d4d2aac7c7601fba130..5f31f2883aab08406b37e17f0261e1e5184703ee 100644 --- a/src/test/isolation2/expected/add_column_after_vacuum_skip_drop_column.out +++ b/src/test/isolation2/expected/add_column_after_vacuum_skip_drop_column.out @@ -10,7 +10,7 @@ DELETE FROM aoco_add_column_after_vacuum_skip_drop; DELETE 10 -- We should see all aocssegs in state 1 -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |1 @@ -31,7 +31,7 @@ VACUUM END -- We should see an aocsseg in state 2 (AOSEG_STATE_AWAITING_DROP) -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |2 @@ -43,7 +43,7 @@ segno|column_num|state -- The ADD COLUMN should clean up aocssegs in state 2 (AOSEG_STATE_AWAITING_DROP) 1: ALTER TABLE aoco_add_column_after_vacuum_skip_drop ADD COLUMN c INT DEFAULT 0; ALTER -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |1 @@ -57,7 +57,7 @@ segno|column_num|state -- Check if insert goes into segno 1 instead of segno 2 1: INSERT INTO aoco_add_column_after_vacuum_skip_drop SELECT i as a, i as b, i as c FROM generate_series(1, 100) AS i; INSERT 100 -2U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); segno|?column?|state -----+--------+----- 1 |t |1 diff --git a/src/test/isolation2/expected/commit_transaction_block_checkpoint.out b/src/test/isolation2/expected/commit_transaction_block_checkpoint.out index fd84cc1c4e2dc24d315f14e9f8f121e1a7530cd1..ea564b8ef4c13bc91c728d1f2813d0464d9b598c 100644 --- a/src/test/isolation2/expected/commit_transaction_block_checkpoint.out +++ b/src/test/isolation2/expected/commit_transaction_block_checkpoint.out @@ -19,8 +19,8 @@ BEGIN CREATE 2&: commit; --- do checkpoint on dbid 3 (segment 1) in utility mode, and it should block -3U&: checkpoint; +-- do checkpoint on segment content 1 in utility mode, and it should block +1U&: checkpoint; -- resume the 2PC after setting inCommit flag select gp_inject_fault('twophase_transaction_commit_prepared', 'reset', 3); @@ -30,7 +30,7 @@ t (1 row) 2<: <... completed> COMMIT -3U<: <... completed> +1U<: <... completed> CHECKPOINT -- TEST 2: block checkpoint on master @@ -52,8 +52,8 @@ BEGIN DROP 2&: commit; --- do checkpoint on dbid 1 (master) in utility mode, and it should block -1U&: checkpoint; +-- do checkpoint on master in utility mode, and it should block +-1U&: checkpoint; -- resume the 2PC select gp_inject_fault('onephase_transaction_commit', 'reset', 1); @@ -63,6 +63,5 @@ t (1 row) 2<: <... completed> COMMIT -1U<: <... completed> +-1U<: <... completed> CHECKPOINT - diff --git a/src/test/isolation2/expected/master_panic_after_phase1_commit.out b/src/test/isolation2/expected/master_panic_after_phase1_commit.out index bd2ecfa4f7e142dc7aeccccb6d12307d49fe9e9d..b98d3562ebc2e6886a2f01b5f81e3c0d2b736fa8 100644 --- a/src/test/isolation2/expected/master_panic_after_phase1_commit.out +++ b/src/test/isolation2/expected/master_panic_after_phase1_commit.out @@ -34,7 +34,7 @@ gp_inject_fault t (1 row) -- create utility session to segment which will be used to reset the fault -2U: SELECT 1; +0U: SELECT 1; ?column? -------- 1 @@ -48,7 +48,7 @@ server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. -- Reset the fault using utility mode connection -2U: SELECT gp_inject_fault('finish_prepared_start_of_function', 'reset', 2); +0U: SELECT gp_inject_fault('finish_prepared_start_of_function', 'reset', 2); gp_inject_fault --------------- t diff --git a/src/test/isolation2/expected/reader_waits_for_lock.out b/src/test/isolation2/expected/reader_waits_for_lock.out index 65e3eff92d0e45e1c272d5dbb609eaaaed80975a..6fee6f87437ec33d8073c7ae058930fa1eaea871 100644 --- a/src/test/isolation2/expected/reader_waits_for_lock.out +++ b/src/test/isolation2/expected/reader_waits_for_lock.out @@ -10,19 +10,19 @@ INSERT 1 -- save session id 1: CREATE TABLE reader_waits_for_lock_table_sessionid(a, setting) AS SELECT 1, setting::int FROM pg_settings WHERE name = 'gp_session_id' distributed by (a); CREATE 1 -2U: BEGIN; +0U: BEGIN; BEGIN -2U: LOCK reader_waits_for_lock_table IN ACCESS EXCLUSIVE MODE; +0U: LOCK reader_waits_for_lock_table IN ACCESS EXCLUSIVE MODE; LOCK -- creates reader and writer gang 1&: SELECT t1.* FROM reader_waits_for_lock_table t1 INNER JOIN reader_waits_for_lock_table t2 ON t1.b = t2.b; -- all processes in the session 1 should be blocked -2U: SELECT count(case when waiting then 1 end) = count(*) all_waiting FROM pg_stat_activity where sess_id = (SELECT setting FROM reader_waits_for_lock_table_sessionid); +0U: SELECT count(case when waiting then 1 end) = count(*) all_waiting FROM pg_stat_activity where sess_id = (SELECT setting FROM reader_waits_for_lock_table_sessionid); all_waiting ----------- t (1 row) -2U: COMMIT; +0U: COMMIT; COMMIT 1<: <... completed> a|b diff --git a/src/test/isolation2/expected/segwalrep/commit_blocking.out b/src/test/isolation2/expected/segwalrep/commit_blocking.out index 92dfb96614a62640389338afbd70626eaca50285..9db66814176ce6ba973daeb9e337900ac48ba71a 100644 --- a/src/test/isolation2/expected/segwalrep/commit_blocking.out +++ b/src/test/isolation2/expected/segwalrep/commit_blocking.out @@ -19,7 +19,7 @@ content|role|preferred_role|mode|status (2 rows) -- print synchronous_standby_names should be set to '*' at start of test -2U: show synchronous_standby_names; +0U: show synchronous_standby_names; synchronous_standby_names ------------------------- * @@ -46,7 +46,7 @@ t ! gpconfig -c gp_fts_probe_pause -v true --masteronly --skipvalidation; 20180104:13:17:57:019143 gpconfig:station1:csteam-[INFO]:-completed successfully with parameters '-c gp_fts_probe_pause -v true --masteronly --skipvalidation' -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); pg_ctl ---------------- server signaled @@ -54,17 +54,17 @@ server signaled (1 row) -- stop a mirror and show commit on dbid 2 will block -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'stop', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'stop', NULL, NULL); pg_ctl ---------------------------------------------------- waiting for server to shut down done server stopped (1 row) -2U&: insert into segwalrep_commit_blocking values (1); +0U&: insert into segwalrep_commit_blocking values (1); -- restart primary dbid 2 -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=0), 'restart', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=0), 'restart', NULL, NULL); pg_ctl ---------------------------------------------------------------------------------------------------- waiting for server to shut down done @@ -75,14 +75,14 @@ server started (1 row) -- should show dbid 2 utility mode connection closed because of primary restart -2U<: <... completed> +0U<: <... completed> server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. -2Uq: ... +0Uq: ... -- synchronous_standby_names should be set to '*' after primary restart -2U: show synchronous_standby_names; +0U: show synchronous_standby_names; synchronous_standby_names ------------------------- * @@ -100,7 +100,7 @@ INSERT 1 INSERT 1 -- bring the mirror back up -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'start', (select port from gp_segment_configuration where content = 0 and preferred_role = 'm'), 0); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'start', (select port from gp_segment_configuration where content = 0 and preferred_role = 'm'), 0); pg_ctl ---------------- server starting @@ -115,7 +115,7 @@ COMMIT ! gpconfig -c gp_fts_probe_pause -v false --masteronly --skipvalidation; 20180104:13:18:02:019373 gpconfig:station1:csteam-[INFO]:-completed successfully with parameters '-c gp_fts_probe_pause -v false --masteronly --skipvalidation' -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); pg_ctl ---------------- server signaled diff --git a/src/test/isolation2/expected/segwalrep/fts_unblock_primary.out b/src/test/isolation2/expected/segwalrep/fts_unblock_primary.out index 2522dead07d5c6b19279509e7f898f2f1cb5740d..47033d1250aba42e675ef342bb84f54d1f9213e8 100644 --- a/src/test/isolation2/expected/segwalrep/fts_unblock_primary.out +++ b/src/test/isolation2/expected/segwalrep/fts_unblock_primary.out @@ -41,7 +41,7 @@ INSERT 1 ! gpconfig -c gp_fts_probe_pause -v true --masteronly --skipvalidation; completed successfully with parameters '-c gp_fts_probe_pause -v true --masteronly --skipvalidation' -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); pg_ctl ---------------- server signaled @@ -49,7 +49,7 @@ server signaled (1 row) -- stop a mirror -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'stop', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'stop', NULL, NULL); pg_ctl ---------------------------------------------------- waiting for server to shut down done @@ -72,7 +72,7 @@ INSERT 1 ! gpconfig -c gp_fts_probe_pause -v false --masteronly --skipvalidation; completed successfully with parameters '-c gp_fts_probe_pause -v false --masteronly --skipvalidation' -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); pg_ctl ---------------- server signaled @@ -104,7 +104,7 @@ synchronous_standby_names (1 row) -- bring the mirror back up and see primary s/u and mirror s/u -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'start', (select port from gp_segment_configuration where content = 2 and preferred_role = 'm'), 2); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'start', (select port from gp_segment_configuration where content = 2 and preferred_role = 'm'), 2); pg_ctl ---------------- server starting diff --git a/src/test/isolation2/expected/segwalrep/mirror_promotion.out b/src/test/isolation2/expected/segwalrep/mirror_promotion.out index eb4a3da278f86ed3e6bb989ffb4ef12d94ef39a2..05fc07725c662c4539a2e67c288a15d61d4b54ba 100644 --- a/src/test/isolation2/expected/segwalrep/mirror_promotion.out +++ b/src/test/isolation2/expected/segwalrep/mirror_promotion.out @@ -33,63 +33,65 @@ content|preferred_role|role|status|mode 0 |m |p |u |n (2 rows) --- wait for dbid 5 (mirror for content 0) to finish the promotion -5U: select 1; +-- wait for content 0 (earlier mirror, now primary) to finish the promotion +0U: select 1; ?column? -------- 1 (1 row) +-- Quit this utility mode session, as need to start fresh one below +0Uq: ... -- fully recover the failed primary as new mirror !\retcode ../../../gpAux/gpdemo/gpsegwalrep.py recoverfull; -- start_ignore -2018-01-08 16:00:58.097007: fetching cluster configuration -2018-01-08 16:00:58.104765: fetched cluster configuration +2018-01-10 23:42:04.312398: fetching cluster configuration +2018-01-10 23:42:04.405057: fetched cluster configuration found 3 distinct content IDs -Mirror content 0: 2018-01-08 16:00:58.129024: Running command... rm -rf /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 +Mirror content 0: 2018-01-10 23:42:04.423853: Running command... rm -rf /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 Mirror content 0: -Mirror content 0: 2018-01-08 16:00:58.174251: Running command... pg_basebackup -x -R -c fast -E ./pg_log -E ./db_dumps -E ./gpperfmon/data -E ./gpperfmon/logs -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 -h localhost -p 25435 +Mirror content 0: 2018-01-10 23:42:04.508628: Running command... pg_basebackup -x -R -c fast -E ./pg_log -E ./db_dumps -E ./gpperfmon/data -E ./gpperfmon/logs -D /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 -h 127.0.0.1 -p 25435 Mirror content 0: NOTICE: WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup Mirror content 0: -Mirror content 0: 2018-01-08 16:00:58.804815: Running command... mkdir /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/pg_log; mkdir /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/pg_xlog/archive_status +Mirror content 0: 2018-01-10 23:42:05.009465: Running command... mkdir /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0/pg_log; mkdir /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0/pg_xlog/archive_status Mirror content 0: -Mirror content 0: 2018-01-08 16:00:58.812926: Initialized mirror at /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 +Mirror content 0: 2018-01-10 23:42:05.020184: Initialized mirror at /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 -Segment primary content 0: 2018-01-08 16:00:58.813229: Running command... pg_ctl -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 -o '-p 25432 --gp_dbid=0 --silent-mode=true -i -M mirrorless --gp_contentid=0 --gp_num_contents_in_cluster=3' start +Segment primary content 0: 2018-01-10 23:42:05.020494: Running command... pg_ctl -D /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 -o '-p 25432 --gp_dbid=0 --silent-mode=true -i -M mirrorless --gp_contentid=0 --gp_num_contents_in_cluster=3' start Segment primary content 0: server starting Segment primary content 0: -Segment primary content 0: 2018-01-08 16:00:58.846892: Running command... pg_ctl -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 status -Segment primary content 0: pg_ctl: server is running (PID: 4006) +Segment primary content 0: 2018-01-10 23:42:05.048563: Running command... pg_ctl -D /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 status +Segment primary content 0: pg_ctl: server is running (PID: 35912) Segment primary content 0: -Segment primary content 0: 2018-01-08 16:00:58.849761: Started primary segment with content 0 and port 25432 at /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 +Segment primary content 0: 2018-01-10 23:42:05.055839: Started primary segment with content 0 and port 25432 at /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 -Force FTS probe scan: 2018-01-08 16:00:58.849919: Running command... psql postgres -c "SELECT gp_request_fts_probe_scan()" +Force FTS probe scan: 2018-01-10 23:42:05.056015: Running command... psql postgres -c "SELECT gp_request_fts_probe_scan()" Force FTS probe scan: gp_request_fts_probe_scan Force FTS probe scan: --------------------------- Force FTS probe scan: t Force FTS probe scan: (1 row) Force FTS probe scan: Force FTS probe scan: -Force FTS probe scan: 2018-01-08 16:00:59.914176: FTS probe refreshed catalog +Force FTS probe scan: 2018-01-10 23:42:06.088302: FTS probe refreshed catalog -2018-01-08 16:00:59.914229: fetching cluster configuration -2018-01-08 16:00:59.924334: fetched cluster configuration +2018-01-10 23:42:06.088478: fetching cluster configuration +2018-01-10 23:42:06.179366: fetched cluster configuration found 3 distinct content IDs -: 2018-01-08 16:00:59.937801: Running command... psql postgres -c "select * from gp_segment_configuration order by content, dbid" -: dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir -: ------+---------+------+----------------+------+--------+-------+-------------+-------------+------------------------------------------------------------------------------- -: 1 | -1 | p | p | n | u | 15432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/qddir/demoDataDir-1 -: 8 | -1 | m | m | s | u | 16432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/standby -: 2 | 0 | m | p | s | u | 25432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 -: 5 | 0 | p | m | s | u | 25435 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 -: 3 | 1 | p | p | s | u | 25433 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast2/demoDataDir1 -: 6 | 1 | m | m | s | u | 25436 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror2/demoDataDir1 -: 4 | 2 | p | p | s | u | 25434 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast3/demoDataDir2 -: 7 | 2 | m | m | s | u | 25437 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror3/demoDataDir2 +: 2018-01-10 23:42:06.189714: Running command... psql postgres -c "select * from gp_segment_configuration order by content, dbid" +: dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir +: ------+---------+------+----------------+------+--------+-------+-------------------+-------------------+-------------------------------------------------------------- +: 1 | -1 | p | p | n | u | 15432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/qddir/demoDataDir-1 +: 8 | -1 | m | m | s | u | 16432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/standby +: 2 | 0 | m | p | s | u | 25432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 +: 5 | 0 | p | m | s | u | 25435 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 +: 3 | 1 | p | p | s | u | 25433 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast2/demoDataDir1 +: 7 | 1 | m | m | s | u | 25436 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror2/demoDataDir1 +: 4 | 2 | p | p | s | u | 25434 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast3/demoDataDir2 +: 6 | 2 | m | m | s | u | 25437 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror3/demoDataDir2 : (8 rows) : : -: 2018-01-08 16:00:59.950212: +: 2018-01-10 23:42:06.205890: -- end_ignore @@ -127,8 +129,8 @@ content|preferred_role|role|status|mode 0 |p |p |u |n (2 rows) --- wait for dbid 2 (primary for content 0) finish promotion -2U: select 1; +-- wait for content 0 (earlier mirror, now primary) to finish the promotion +0U: select 1; ?column? -------- 1 @@ -137,53 +139,53 @@ content|preferred_role|role|status|mode -- now, let's fully recover the mirror !\retcode ../../../gpAux/gpdemo/gpsegwalrep.py recoverfull; -- start_ignore -2018-01-08 16:01:06.212959: fetching cluster configuration -2018-01-08 16:01:06.218760: fetched cluster configuration +2018-01-10 23:42:12.624505: fetching cluster configuration +2018-01-10 23:42:12.717571: fetched cluster configuration found 3 distinct content IDs -Mirror content 0: 2018-01-08 16:01:06.233588: Running command... rm -rf /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 +Mirror content 0: 2018-01-10 23:42:12.733807: Running command... rm -rf /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 Mirror content 0: -Mirror content 0: 2018-01-08 16:01:06.288272: Running command... pg_basebackup -x -R -c fast -E ./pg_log -E ./db_dumps -E ./gpperfmon/data -E ./gpperfmon/logs -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 -h localhost -p 25432 +Mirror content 0: 2018-01-10 23:42:12.830415: Running command... pg_basebackup -x -R -c fast -E ./pg_log -E ./db_dumps -E ./gpperfmon/data -E ./gpperfmon/logs -D /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 -h 127.0.0.1 -p 25432 Mirror content 0: NOTICE: WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup Mirror content 0: -Mirror content 0: 2018-01-08 16:01:06.726959: Running command... mkdir /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0/pg_log; mkdir /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0/pg_xlog/archive_status +Mirror content 0: 2018-01-10 23:42:14.326265: Running command... mkdir /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0/pg_log; mkdir /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0/pg_xlog/archive_status Mirror content 0: -Mirror content 0: 2018-01-08 16:01:06.732329: Initialized mirror at /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 +Mirror content 0: 2018-01-10 23:42:14.335604: Initialized mirror at /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 -Segment mirror content 0: 2018-01-08 16:01:06.732833: Running command... pg_ctl -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 -o '-p 25435 --gp_dbid=0 --silent-mode=true -i -M mirrorless --gp_contentid=0 --gp_num_contents_in_cluster=3' start +Segment mirror content 0: 2018-01-10 23:42:14.335990: Running command... pg_ctl -D /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 -o '-p 25435 --gp_dbid=0 --silent-mode=true -i -M mirrorless --gp_contentid=0 --gp_num_contents_in_cluster=3' start Segment mirror content 0: server starting Segment mirror content 0: -Segment mirror content 0: 2018-01-08 16:01:06.765965: Running command... pg_ctl -D /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 status -Segment mirror content 0: pg_ctl: server is running (PID: 4285) +Segment mirror content 0: 2018-01-10 23:42:14.362829: Running command... pg_ctl -D /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 status +Segment mirror content 0: pg_ctl: server is running (PID: 35968) Segment mirror content 0: -Segment mirror content 0: 2018-01-08 16:01:06.769486: Started mirror segment with content 0 and port 25435 at /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 +Segment mirror content 0: 2018-01-10 23:42:14.370174: Started mirror segment with content 0 and port 25435 at /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 -Force FTS probe scan: 2018-01-08 16:01:06.769688: Running command... psql postgres -c "SELECT gp_request_fts_probe_scan()" +Force FTS probe scan: 2018-01-10 23:42:14.370351: Running command... psql postgres -c "SELECT gp_request_fts_probe_scan()" Force FTS probe scan: gp_request_fts_probe_scan Force FTS probe scan: --------------------------- Force FTS probe scan: t Force FTS probe scan: (1 row) Force FTS probe scan: Force FTS probe scan: -Force FTS probe scan: 2018-01-08 16:01:07.836626: FTS probe refreshed catalog +Force FTS probe scan: 2018-01-10 23:42:15.399794: FTS probe refreshed catalog -2018-01-08 16:01:07.836704: fetching cluster configuration -2018-01-08 16:01:07.846714: fetched cluster configuration +2018-01-10 23:42:15.399942: fetching cluster configuration +2018-01-10 23:42:15.492766: fetched cluster configuration found 3 distinct content IDs -: 2018-01-08 16:01:07.859669: Running command... psql postgres -c "select * from gp_segment_configuration order by content, dbid" -: dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir -: ------+---------+------+----------------+------+--------+-------+-------------+-------------+------------------------------------------------------------------------------- -: 1 | -1 | p | p | n | u | 15432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/qddir/demoDataDir-1 -: 8 | -1 | m | m | s | u | 16432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/standby -: 2 | 0 | p | p | s | u | 25432 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 -: 5 | 0 | m | m | s | u | 25435 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 -: 3 | 1 | p | p | s | u | 25433 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast2/demoDataDir1 -: 6 | 1 | m | m | s | u | 25436 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror2/demoDataDir1 -: 4 | 2 | p | p | s | u | 25434 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast3/demoDataDir2 -: 7 | 2 | m | m | s | u | 25437 | xzhang-iMac | xzhang-iMac | /home/xzhang/workspace/gpdb/gpAux/gpdemo/datadirs/dbfast_mirror3/demoDataDir2 +: 2018-01-10 23:42:15.503241: Running command... psql postgres -c "select * from gp_segment_configuration order by content, dbid" +: dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir +: ------+---------+------+----------------+------+--------+-------+-------------------+-------------------+-------------------------------------------------------------- +: 1 | -1 | p | p | n | u | 15432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/qddir/demoDataDir-1 +: 8 | -1 | m | m | s | u | 16432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/standby +: 2 | 0 | p | p | s | u | 25432 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast1/demoDataDir0 +: 5 | 0 | m | m | s | u | 25435 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror1/demoDataDir0 +: 3 | 1 | p | p | s | u | 25433 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast2/demoDataDir1 +: 7 | 1 | m | m | s | u | 25436 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror2/demoDataDir1 +: 4 | 2 | p | p | s | u | 25434 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast3/demoDataDir2 +: 6 | 2 | m | m | s | u | 25437 | ashwins-mac.local | ashwins-mac.local | /Users/aagrawal/workspace/gpdata/dbfast_mirror3/demoDataDir2 : (8 rows) : : -: 2018-01-08 16:01:07.873428: +: 2018-01-10 23:42:15.519589: -- end_ignore @@ -197,4 +199,3 @@ content|preferred_role|role|status|mode 0 |p |p |u |s 0 |m |m |u |s (2 rows) - diff --git a/src/test/isolation2/expected/vacuum_after_vacuum_skip_drop_column.out b/src/test/isolation2/expected/vacuum_after_vacuum_skip_drop_column.out index 06046063c45e12b0b4889bc4a5343c06abce8da6..b04898e1e32808ac2e8e40d5a1912fa3302a57cf 100644 --- a/src/test/isolation2/expected/vacuum_after_vacuum_skip_drop_column.out +++ b/src/test/isolation2/expected/vacuum_after_vacuum_skip_drop_column.out @@ -10,7 +10,7 @@ DELETE FROM aoco_vacuum_after_vacuum_skip_drop; DELETE 10 -- We should see all aocssegs in state 1 -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |1 @@ -31,7 +31,7 @@ VACUUM END -- We should see an aocsseg in state 2 (AOSEG_STATE_AWAITING_DROP) -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |2 @@ -43,7 +43,7 @@ segno|column_num|state -- The VACUUM should clean up aocssegs in state 2 (AOSEG_STATE_AWAITING_DROP) 1: VACUUM aoco_vacuum_after_vacuum_skip_drop; VACUUM -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); segno|column_num|state -----+----------+----- 1 |0 |1 @@ -55,7 +55,7 @@ segno|column_num|state -- Check if insert goes into segno 1 instead of segno 2 1: INSERT INTO aoco_vacuum_after_vacuum_skip_drop SELECT i as a, i as b FROM generate_series(1, 100) AS i; INSERT 100 -2U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); segno|?column?|state -----+--------+----- 1 |t |1 diff --git a/src/test/isolation2/input/uao/compaction_utility.source b/src/test/isolation2/input/uao/compaction_utility.source index 50c2f5b0f96eab732053f202768688d5e7a1c585..8887e8cd06a79dc018b88d70d590e089dc473cbd 100644 --- a/src/test/isolation2/input/uao/compaction_utility.source +++ b/src/test/isolation2/input/uao/compaction_utility.source @@ -7,6 +7,6 @@ INSERT INTO foo SELECT i as a, 1 as b, 'hello world' as c FROM generate_series(1 DELETE FROM foo WHERE a < 20; SELECT COUNT(*) FROM foo; -2U: VACUUM foo; +0U: VACUUM foo; SELECT COUNT(*) FROM foo; -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('foo'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('foo'); diff --git a/src/test/isolation2/input/uao/compaction_utility_insert.source b/src/test/isolation2/input/uao/compaction_utility_insert.source index eb3d90caef80ec227aef0cedccc7bc4e15519a82..b8f94d69d0d8d817c851ac240bdcfb03d0969d7e 100644 --- a/src/test/isolation2/input/uao/compaction_utility_insert.source +++ b/src/test/isolation2/input/uao/compaction_utility_insert.source @@ -6,13 +6,13 @@ CREATE INDEX foo_index ON foo(b); INSERT INTO foo VALUES (1, 1, 'c'); SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo'); -2U: INSERT INTO foo VALUES (2, 2, 'c'); -2U: INSERT INTO foo VALUES (3, 3, 'c'); -2U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; +0U: INSERT INTO foo VALUES (2, 2, 'c'); +0U: INSERT INTO foo VALUES (3, 3, 'c'); +0U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; -- We know that the master does update its tupcount yet SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo'); DELETE FROM foo WHERE a = 2; UPDATE foo SET b = -1 WHERE a = 3; VACUUM foo; -2U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; +0U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo'); diff --git a/src/test/isolation2/input/uao/insert_policy.source b/src/test/isolation2/input/uao/insert_policy.source index 05bb0e08c26c5fdc66a29f3ec056a9823bf85207..b978ddd2acb63163e55c210feffad6609e4283ae 100644 --- a/src/test/isolation2/input/uao/insert_policy.source +++ b/src/test/isolation2/input/uao/insert_policy.source @@ -131,16 +131,16 @@ CREATE TABLE ao (a INT) WITH (appendonly=true, orientation=@orientation@); -- Actual test begins 1: INSERT INTO AO VALUES (1); -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); 1: INSERT INTO AO VALUES (2); -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); 1: BEGIN; 1: INSERT INTO AO VALUES (2); 2: BEGIN; 2: INSERT INTO AO VALUES (2); 1: COMMIT; 2: COMMIT; -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); 1: insert into ao select generate_series(1,100000); 1: INSERT INTO AO VALUES (2); -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); diff --git a/src/test/isolation2/input/uao/parallel_delete.source b/src/test/isolation2/input/uao/parallel_delete.source index f5e46f8a62a103f037c8f5b6523a19c521bdbb89..71f5c426e2126601d20f0bca4ef9645863093451 100644 --- a/src/test/isolation2/input/uao/parallel_delete.source +++ b/src/test/isolation2/input/uao/parallel_delete.source @@ -18,4 +18,4 @@ insert into ao select generate_series(1,100); 3: BEGIN; 3: SELECT * FROM ao WHERE a < 5 ORDER BY a; 3: COMMIT; -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); diff --git a/src/test/isolation2/input/uao/parallel_update.source b/src/test/isolation2/input/uao/parallel_update.source index 964841a9540373a360fcd9fcdeb33d96eb906928..c93ee15fb1ef80b4dfc01c8dd0569a356ac8adcd 100644 --- a/src/test/isolation2/input/uao/parallel_update.source +++ b/src/test/isolation2/input/uao/parallel_update.source @@ -16,4 +16,4 @@ INSERT INTO ao SELECT i as a, i as b FROM generate_series(1,10) AS i; 1<: 1: COMMIT; 3: SELECT * FROM ao WHERE a < 5 ORDER BY a; -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); diff --git a/src/test/isolation2/input/uao/select_after_vacuum.source b/src/test/isolation2/input/uao/select_after_vacuum.source index e2ef25ff4b680610acab8f079d5508243991a7b8..72b27d115e772984e5e33898d6728f16e9fcef13 100644 --- a/src/test/isolation2/input/uao/select_after_vacuum.source +++ b/src/test/isolation2/input/uao/select_after_vacuum.source @@ -31,7 +31,7 @@ insert into ao2 select generate_series(1,1000); DELETE FROM ao WHERE a < 128; 1: BEGIN; 1: SELECT COUNT(*) FROM ao2; -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); 2: VACUUM ao; 1: SELECT COUNT(*) FROM ao; 1: SELECT * FROM locktest_master WHERE coalesce = 'ao'; @@ -39,4 +39,4 @@ DELETE FROM ao WHERE a < 128; 1: COMMIT; 1: SELECT COUNT(*) FROM ao; 3: INSERT INTO ao VALUES (0); -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); diff --git a/src/test/isolation2/input/uao/select_while_vacuum_serializable2.source b/src/test/isolation2/input/uao/select_while_vacuum_serializable2.source index 437a62d25c9be0252a8dafe8243b307b055cc4f3..a1f6ddfcd04a206b1fe9c47cce0afdbf81b688e3 100644 --- a/src/test/isolation2/input/uao/select_while_vacuum_serializable2.source +++ b/src/test/isolation2/input/uao/select_while_vacuum_serializable2.source @@ -27,9 +27,9 @@ insert into ao select generate_series(1,1000); DELETE FROM ao WHERE a < 128; 1: BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; 1: SELECT COUNT(*) FROM ao; -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); 2: VACUUM ao; 1: SELECT COUNT(*) FROM ao; 1: COMMIT; 3: INSERT INTO ao VALUES (0); -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); diff --git a/src/test/isolation2/output/uao/compaction_utility.source b/src/test/isolation2/output/uao/compaction_utility.source index 70f183ceb101cae12dca5620700ce0921b54732c..e6f743d591a5c4d74bb4668cfe6b4d91d7b458ff 100644 --- a/src/test/isolation2/output/uao/compaction_utility.source +++ b/src/test/isolation2/output/uao/compaction_utility.source @@ -16,14 +16,14 @@ count ----- 81 (1 row) -2U: VACUUM foo; +0U: VACUUM foo; VACUUM SELECT COUNT(*) FROM foo; count ----- 81 (1 row) -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('foo'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('foo'); segno|case -----+---- 0 |many diff --git a/src/test/isolation2/output/uao/compaction_utility_insert.source b/src/test/isolation2/output/uao/compaction_utility_insert.source index b5fb138d3402a48cfc5730f0d34b6ac46090e67e..79ebd0df243e52273869d0d7a2b24e0a5fdd332e 100644 --- a/src/test/isolation2/output/uao/compaction_utility_insert.source +++ b/src/test/isolation2/output/uao/compaction_utility_insert.source @@ -14,11 +14,11 @@ segno|tupcount|state -----+--------+----- 1 |1 |1 (1 row) -2U: INSERT INTO foo VALUES (2, 2, 'c'); +0U: INSERT INTO foo VALUES (2, 2, 'c'); INSERT 1 -2U: INSERT INTO foo VALUES (3, 3, 'c'); +0U: INSERT INTO foo VALUES (3, 3, 'c'); INSERT 1 -2U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; +0U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; segno|tupcount|state -----+--------+----- 0 |2 |1 @@ -35,7 +35,7 @@ UPDATE foo SET b = -1 WHERE a = 3; UPDATE 1 VACUUM foo; VACUUM -2U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; +0U: SELECT segno, tupcount, state FROM gp_ao_or_aocs_seg_name('foo') where segno = 0; segno|tupcount|state -----+--------+----- 0 |0 |1 diff --git a/src/test/isolation2/output/uao/insert_policy.source b/src/test/isolation2/output/uao/insert_policy.source index fcd263701fa3aa7bda3384e0e3de1523be24cf29..d6cc0cbd25d6177d292a9608d48d827f6152f897 100644 --- a/src/test/isolation2/output/uao/insert_policy.source +++ b/src/test/isolation2/output/uao/insert_policy.source @@ -260,14 +260,14 @@ INSERT 1 -- Actual test begins 1: INSERT INTO AO VALUES (1); INSERT 1 -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); segno|tupcount -----+-------- 1 |127 (1 row) 1: INSERT INTO AO VALUES (2); INSERT 1 -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); segno|tupcount -----+-------- 1 |128 @@ -284,7 +284,7 @@ INSERT 1 COMMIT 2: COMMIT; COMMIT -2U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, tupcount FROM gp_ao_or_aocs_seg_name('ao'); segno|tupcount -----+-------- 1 |129 @@ -294,7 +294,7 @@ segno|tupcount INSERT 100000 1: INSERT INTO AO VALUES (2); INSERT 1 -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); segno|case -----+---- 1 |many diff --git a/src/test/isolation2/output/uao/parallel_delete.source b/src/test/isolation2/output/uao/parallel_delete.source index 821f1aea45f9880201cb183f99f7d6bed387fbc4..6b8ba720b7004006f78eeca5473d910fa39ad153 100644 --- a/src/test/isolation2/output/uao/parallel_delete.source +++ b/src/test/isolation2/output/uao/parallel_delete.source @@ -43,7 +43,7 @@ a (2 rows) 3: COMMIT; COMMIT -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); tid |segno|row_num ----------------+-----+------- (33554432,32769)|1 |1 diff --git a/src/test/isolation2/output/uao/parallel_delete_optimizer.source b/src/test/isolation2/output/uao/parallel_delete_optimizer.source index b3019fcbd4f65d2ccfdf0d157218053cc9057734..f9ed8851ff3a2a58f08a1742b841e4110dca6ddb 100644 --- a/src/test/isolation2/output/uao/parallel_delete_optimizer.source +++ b/src/test/isolation2/output/uao/parallel_delete_optimizer.source @@ -45,7 +45,7 @@ a (2 rows) 3: COMMIT; COMMIT -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); tid |segno|row_num ----------------+-----+------- (33554432,32769)|1 |1 diff --git a/src/test/isolation2/output/uao/parallel_update.source b/src/test/isolation2/output/uao/parallel_update.source index 3c59f7dee677368054c33a6e8cee8a9c1f0eb5a9..adc9bb4c4877ec69518973c83b780d0ade121a33 100644 --- a/src/test/isolation2/output/uao/parallel_update.source +++ b/src/test/isolation2/output/uao/parallel_update.source @@ -42,7 +42,7 @@ a|b 3|3 4|4 (4 rows) -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); tid |segno|row_num ----------------+-----+------- (33554432,32769)|1 |1 diff --git a/src/test/isolation2/output/uao/parallel_update_optimizer.source b/src/test/isolation2/output/uao/parallel_update_optimizer.source index 5ecbb9fef6507c747e9e8208e8316f4b3bfa289d..111aee93541922bf9e5dc665228889a0491b18be 100644 --- a/src/test/isolation2/output/uao/parallel_update_optimizer.source +++ b/src/test/isolation2/output/uao/parallel_update_optimizer.source @@ -44,7 +44,7 @@ a|b 3|3 4|4 (4 rows) -2U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); +0U: SELECT * FROM gp_toolkit.__gp_aovisimap_name('ao'); tid |segno|row_num ----------------+-----+------- (33554432,32769)|1 |1 diff --git a/src/test/isolation2/output/uao/select_after_vacuum.source b/src/test/isolation2/output/uao/select_after_vacuum.source index 1e6d90be5fa96fde534069bfa02c6aa992a2bad3..488cc68c0da83a1aa5ead5e2284c09315c4bb16e 100644 --- a/src/test/isolation2/output/uao/select_after_vacuum.source +++ b/src/test/isolation2/output/uao/select_after_vacuum.source @@ -63,7 +63,7 @@ count ----- 1000 (1 row) -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); segno|case -----+---- 1 |many @@ -94,7 +94,7 @@ count (1 row) 3: INSERT INTO ao VALUES (0); INSERT 1 -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); segno|case -----+---- 1 |one diff --git a/src/test/isolation2/output/uao/select_while_vacuum_serializable2.source b/src/test/isolation2/output/uao/select_while_vacuum_serializable2.source index d41fce86fb03638c055a97a0024f6fcd6e653c8b..3235cf4e69618f6d0b9d2ad2db989e4aaf0da7f4 100644 --- a/src/test/isolation2/output/uao/select_while_vacuum_serializable2.source +++ b/src/test/isolation2/output/uao/select_while_vacuum_serializable2.source @@ -56,7 +56,7 @@ count ----- 18333 (1 row) -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); segno|case -----+---- 1 |many @@ -72,7 +72,7 @@ count COMMIT 3: INSERT INTO ao VALUES (0); INSERT 1 -2U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); +0U: SELECT segno, case when tupcount = 0 then 'zero' when tupcount = 1 then 'one' when tupcount <= 5 then 'few' else 'many' end FROM gp_ao_or_aocs_seg_name('ao'); segno|case -----+---- 1 |many diff --git a/src/test/isolation2/sql/add_column_after_vacuum_skip_drop_column.sql b/src/test/isolation2/sql/add_column_after_vacuum_skip_drop_column.sql index 09bbb238ea9e5fb73c4e04cdcce4caac7e90a312..81419ea9192e56b5cc7ea66ca670406592b7d291 100644 --- a/src/test/isolation2/sql/add_column_after_vacuum_skip_drop_column.sql +++ b/src/test/isolation2/sql/add_column_after_vacuum_skip_drop_column.sql @@ -7,7 +7,7 @@ INSERT INTO aoco_add_column_after_vacuum_skip_drop SELECT i as a, i as b FROM ge DELETE FROM aoco_add_column_after_vacuum_skip_drop; -- We should see all aocssegs in state 1 -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); -- VACUUM while another session holds lock 1: BEGIN; @@ -16,12 +16,12 @@ DELETE FROM aoco_add_column_after_vacuum_skip_drop; 1: END; -- We should see an aocsseg in state 2 (AOSEG_STATE_AWAITING_DROP) -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); -- The ADD COLUMN should clean up aocssegs in state 2 (AOSEG_STATE_AWAITING_DROP) 1: ALTER TABLE aoco_add_column_after_vacuum_skip_drop ADD COLUMN c INT DEFAULT 0; -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); -- Check if insert goes into segno 1 instead of segno 2 1: INSERT INTO aoco_add_column_after_vacuum_skip_drop SELECT i as a, i as b, i as c FROM generate_series(1, 100) AS i; -2U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); +0U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_add_column_after_vacuum_skip_drop'); diff --git a/src/test/isolation2/sql/commit_transaction_block_checkpoint.sql b/src/test/isolation2/sql/commit_transaction_block_checkpoint.sql index a633a629269fba507c0ae8ec5719abf4642d0462..e86df81f5a487fa865bb4a3ef9368ff2baed65e9 100644 --- a/src/test/isolation2/sql/commit_transaction_block_checkpoint.sql +++ b/src/test/isolation2/sql/commit_transaction_block_checkpoint.sql @@ -11,13 +11,13 @@ select gp_inject_fault('twophase_transaction_commit_prepared', 'suspend', 3); 2: create table t_commit_transaction_block_checkpoint (c int) distributed by (c); 2&: commit; --- do checkpoint on dbid 3 (segment 1) in utility mode, and it should block -3U&: checkpoint; +-- do checkpoint on segment content 1 in utility mode, and it should block +1U&: checkpoint; -- resume the 2PC after setting inCommit flag select gp_inject_fault('twophase_transaction_commit_prepared', 'reset', 3); 2<: -3U<: +1U<: -- TEST 2: block checkpoint on master @@ -31,11 +31,10 @@ select gp_inject_fault('onephase_transaction_commit', 'suspend', 1); 2: drop table t_commit_transaction_block_checkpoint; 2&: commit; --- do checkpoint on dbid 1 (master) in utility mode, and it should block -1U&: checkpoint; +-- do checkpoint on master in utility mode, and it should block +-1U&: checkpoint; -- resume the 2PC select gp_inject_fault('onephase_transaction_commit', 'reset', 1); 2<: -1U<: - +-1U<: diff --git a/src/test/isolation2/sql/master_panic_after_phase1_commit.sql b/src/test/isolation2/sql/master_panic_after_phase1_commit.sql index f014be1bf51103436bc7db571c0a4737b3c184ac..4d7d6525539e990ccde7355acbb636f6831c49d7 100644 --- a/src/test/isolation2/sql/master_panic_after_phase1_commit.sql +++ b/src/test/isolation2/sql/master_panic_after_phase1_commit.sql @@ -36,13 +36,13 @@ $$ LANGUAGE plpgsql; -- Inject fault to fail the COMMIT PREPARED always on one segment, till fault is not reset 1: SELECT gp_inject_fault('finish_prepared_start_of_function', 'error', '', '', '', -1, 0, 2); -- create utility session to segment which will be used to reset the fault -2U: SELECT 1; +0U: SELECT 1; -- Start looping in background, till master panics and closes the session 3&: SELECT wait_till_master_shutsdown(); -- Start transaction which should hit PANIC as COMMIT PREPARED will fail to one segment 1: CREATE TABLE commit_phase1_panic(a int, b int); -- Reset the fault using utility mode connection -2U: SELECT gp_inject_fault('finish_prepared_start_of_function', 'reset', 2); +0U: SELECT gp_inject_fault('finish_prepared_start_of_function', 'reset', 2); -- Join back to know master has completed postmaster reset. 3<: -- Start a session on master which would complete the DTM recovery and hence COMMIT PREPARED diff --git a/src/test/isolation2/sql/reader_waits_for_lock.sql b/src/test/isolation2/sql/reader_waits_for_lock.sql index 0d711e8c6f452daae204ff345c8d2864184ad051..f99cb573f456c174f1dadaf757a25075514ec54f 100644 --- a/src/test/isolation2/sql/reader_waits_for_lock.sql +++ b/src/test/isolation2/sql/reader_waits_for_lock.sql @@ -7,11 +7,11 @@ 1: insert into reader_waits_for_lock_table select 1, 1; -- save session id 1: CREATE TABLE reader_waits_for_lock_table_sessionid(a, setting) AS SELECT 1, setting::int FROM pg_settings WHERE name = 'gp_session_id' distributed by (a); -2U: BEGIN; -2U: LOCK reader_waits_for_lock_table IN ACCESS EXCLUSIVE MODE; +0U: BEGIN; +0U: LOCK reader_waits_for_lock_table IN ACCESS EXCLUSIVE MODE; -- creates reader and writer gang 1&: SELECT t1.* FROM reader_waits_for_lock_table t1 INNER JOIN reader_waits_for_lock_table t2 ON t1.b = t2.b; -- all processes in the session 1 should be blocked -2U: SELECT count(case when waiting then 1 end) = count(*) all_waiting FROM pg_stat_activity where sess_id = (SELECT setting FROM reader_waits_for_lock_table_sessionid); -2U: COMMIT; +0U: SELECT count(case when waiting then 1 end) = count(*) all_waiting FROM pg_stat_activity where sess_id = (SELECT setting FROM reader_waits_for_lock_table_sessionid); +0U: COMMIT; 1<: diff --git a/src/test/isolation2/sql/segwalrep/commit_blocking.sql b/src/test/isolation2/sql/segwalrep/commit_blocking.sql index 3966ac07f8b5cdf3b9cf9f5e28a257684a86e560..31e8a84731f889e668406d830f32c747e30b1560 100644 --- a/src/test/isolation2/sql/segwalrep/commit_blocking.sql +++ b/src/test/isolation2/sql/segwalrep/commit_blocking.sql @@ -26,7 +26,7 @@ $$ language plpythonu; select content, role, preferred_role, mode, status from gp_segment_configuration where content=2; -- print synchronous_standby_names should be set to '*' at start of test -2U: show synchronous_standby_names; +0U: show synchronous_standby_names; -- create table and show commits are not blocked create table segwalrep_commit_blocking (a int) distributed by (a); @@ -41,21 +41,21 @@ select gp_request_fts_probe_scan(); -- turn off fts ! gpconfig -c gp_fts_probe_pause -v true --masteronly --skipvalidation; -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); -- stop a mirror and show commit on dbid 2 will block -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'stop', NULL, NULL); -2U&: insert into segwalrep_commit_blocking values (1); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'stop', NULL, NULL); +0U&: insert into segwalrep_commit_blocking values (1); -- restart primary dbid 2 -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=0), 'restart', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=0), 'restart', NULL, NULL); -- should show dbid 2 utility mode connection closed because of primary restart -2U<: -2Uq: +0U<: +0Uq: -- synchronous_standby_names should be set to '*' after primary restart -2U: show synchronous_standby_names; +0U: show synchronous_standby_names; -- this should block since mirror is not up and sync replication is on 3: begin; @@ -66,14 +66,14 @@ select gp_request_fts_probe_scan(); 4: insert into segwalrep_commit_blocking values (3); -- bring the mirror back up -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'start', (select port from gp_segment_configuration where content = 0 and preferred_role = 'm'), 0); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=0), 'start', (select port from gp_segment_configuration where content = 0 and preferred_role = 'm'), 0); -- should unblock and commit now that mirror is back up and in-sync 3<: -- turn on fts ! gpconfig -c gp_fts_probe_pause -v false --masteronly --skipvalidation; -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); -- everything should be back to normal 4: insert into segwalrep_commit_blocking select i from generate_series(1,10)i; diff --git a/src/test/isolation2/sql/segwalrep/fts_unblock_primary.sql b/src/test/isolation2/sql/segwalrep/fts_unblock_primary.sql index 9eb75f2bbc7a8ed54a0493eaada611afb5f2ab5d..92c79f573ca7c946e1b44f45ad430bfcd586a2f4 100644 --- a/src/test/isolation2/sql/segwalrep/fts_unblock_primary.sql +++ b/src/test/isolation2/sql/segwalrep/fts_unblock_primary.sql @@ -53,10 +53,10 @@ insert into fts_unblock_primary values (1); -- turn off fts ! gpconfig -c gp_fts_probe_pause -v true --masteronly --skipvalidation; -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); -- stop a mirror -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'stop', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'stop', NULL, NULL); -- this should block since mirror is not up and sync replication is on 2: begin; @@ -68,7 +68,7 @@ insert into fts_unblock_primary values (3); -- turn on fts ! gpconfig -c gp_fts_probe_pause -v false --masteronly --skipvalidation; -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='p' and c.content=-1), 'reload', NULL, NULL); --trigger fts probe and check to see primary marked n/u and mirror n/d select gp_request_fts_probe_scan(); @@ -81,7 +81,7 @@ select content, role, preferred_role, mode, status from gp_segment_configuration 4U: show synchronous_standby_names; -- bring the mirror back up and see primary s/u and mirror s/u -1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'start', (select port from gp_segment_configuration where content = 2 and preferred_role = 'm'), 2); +-1U: select pg_ctl((select datadir from gp_segment_configuration c where c.role='m' and c.content=2), 'start', (select port from gp_segment_configuration where content = 2 and preferred_role = 'm'), 2); select wait_for_streaming(2::smallint); select content, role, preferred_role, mode, status from gp_segment_configuration where content=2; diff --git a/src/test/isolation2/sql/segwalrep/mirror_promotion.sql b/src/test/isolation2/sql/segwalrep/mirror_promotion.sql index ee8bd9bb3eb32318efee9b33564090cfcfcb48d9..f517266a8673d109b046fd671045ac0cc91d7add 100644 --- a/src/test/isolation2/sql/segwalrep/mirror_promotion.sql +++ b/src/test/isolation2/sql/segwalrep/mirror_promotion.sql @@ -33,8 +33,10 @@ select content, preferred_role, role, status, mode from gp_segment_configuration where content = 0; --- wait for dbid 5 (mirror for content 0) to finish the promotion -5U: select 1; +-- wait for content 0 (earlier mirror, now primary) to finish the promotion +0U: select 1; +-- Quit this utility mode session, as need to start fresh one below +0Uq: -- fully recover the failed primary as new mirror !\retcode ../../../gpAux/gpdemo/gpsegwalrep.py recoverfull; @@ -56,8 +58,8 @@ select content, preferred_role, role, status, mode from gp_segment_configuration where content = 0; --- wait for dbid 2 (primary for content 0) finish promotion -2U: select 1; +-- wait for content 0 (earlier mirror, now primary) to finish the promotion +0U: select 1; -- now, let's fully recover the mirror !\retcode ../../../gpAux/gpdemo/gpsegwalrep.py recoverfull; @@ -67,4 +69,3 @@ where content = 0; select content, preferred_role, role, status, mode from gp_segment_configuration where content = 0; - diff --git a/src/test/isolation2/sql/vacuum_after_vacuum_skip_drop_column.sql b/src/test/isolation2/sql/vacuum_after_vacuum_skip_drop_column.sql index 0a9d2f046d10b78f5b0c9b1959429e1e481d0c2d..709a8bdbe7ea78b7b9f2ee363b5ad94807bf9514 100644 --- a/src/test/isolation2/sql/vacuum_after_vacuum_skip_drop_column.sql +++ b/src/test/isolation2/sql/vacuum_after_vacuum_skip_drop_column.sql @@ -7,7 +7,7 @@ INSERT INTO aoco_vacuum_after_vacuum_skip_drop SELECT i as a, i as b FROM genera DELETE FROM aoco_vacuum_after_vacuum_skip_drop; -- We should see all aocssegs in state 1 -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); -- VACUUM while another session holds lock 1: BEGIN; @@ -16,12 +16,12 @@ DELETE FROM aoco_vacuum_after_vacuum_skip_drop; 1: END; -- We should see an aocsseg in state 2 (AOSEG_STATE_AWAITING_DROP) -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); -- The VACUUM should clean up aocssegs in state 2 (AOSEG_STATE_AWAITING_DROP) 1: VACUUM aoco_vacuum_after_vacuum_skip_drop; -2U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, column_num, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); -- Check if insert goes into segno 1 instead of segno 2 1: INSERT INTO aoco_vacuum_after_vacuum_skip_drop SELECT i as a, i as b FROM generate_series(1, 100) AS i; -2U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); +0U: SELECT segno, tupcount > 0, state FROM gp_toolkit.__gp_aocsseg_name('aoco_vacuum_after_vacuum_skip_drop'); diff --git a/src/test/isolation2/sql_isolation_testcase.py b/src/test/isolation2/sql_isolation_testcase.py index 45f487414ccda5e57146535c2dac9ed661100dc1..bb15e942f0df5b16a3fda8ed362e765fa05d50a3 100644 --- a/src/test/isolation2/sql_isolation_testcase.py +++ b/src/test/isolation2/sql_isolation_testcase.py @@ -355,7 +355,7 @@ class SQLIsolationExecutor(object): command_part = line.partition("--")[0] # remove comment from line if command_part == "" or command_part == "\n": print >>output_file - elif command_part.endswith(";\n") or re.match(r"^\d+[q\\<]:$", line) or re.match(r"^\d+U[q\\<]:$", line): + elif command_part.endswith(";\n") or re.match(r"^\d+[q\\<]:$", line) or re.match(r"^-?\d+U[q\\<]:$", line): command += command_part try: self.process_command(command, output_file)