diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/boolean.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/boolean.out --- /tmp/cirrus-ci-build/src/test/regress/expected/boolean.out 2024-02-22 13:04:49.011881000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/boolean.out 2024-02-22 13:08:01.699275000 +0000 @@ -44,8 +44,6 @@ SELECT bool 'test' AS error; ERROR: invalid input syntax for type boolean: "test" -LINE 1: SELECT bool 'test' AS error; - ^ SELECT bool 'false' AS false; false ------- @@ -54,8 +52,6 @@ SELECT bool 'foo' AS error; ERROR: invalid input syntax for type boolean: "foo" -LINE 1: SELECT bool 'foo' AS error; - ^ SELECT bool 'y' AS true; true ------ @@ -70,8 +66,6 @@ SELECT bool 'yeah' AS error; ERROR: invalid input syntax for type boolean: "yeah" -LINE 1: SELECT bool 'yeah' AS error; - ^ SELECT bool 'n' AS false; false ------- @@ -86,8 +80,6 @@ SELECT bool 'nay' AS error; ERROR: invalid input syntax for type boolean: "nay" -LINE 1: SELECT bool 'nay' AS error; - ^ SELECT bool 'on' AS true; true ------ @@ -108,16 +100,10 @@ SELECT bool 'o' AS error; ERROR: invalid input syntax for type boolean: "o" -LINE 1: SELECT bool 'o' AS error; - ^ SELECT bool 'on_' AS error; ERROR: invalid input syntax for type boolean: "on_" -LINE 1: SELECT bool 'on_' AS error; - ^ SELECT bool 'off_' AS error; ERROR: invalid input syntax for type boolean: "off_" -LINE 1: SELECT bool 'off_' AS error; - ^ SELECT bool '1' AS true; true ------ @@ -126,8 +112,6 @@ SELECT bool '11' AS error; ERROR: invalid input syntax for type boolean: "11" -LINE 1: SELECT bool '11' AS error; - ^ SELECT bool '0' AS false; false ------- @@ -136,12 +120,8 @@ SELECT bool '000' AS error; ERROR: invalid input syntax for type boolean: "000" -LINE 1: SELECT bool '000' AS error; - ^ SELECT bool '' AS error; ERROR: invalid input syntax for type boolean: "" -LINE 1: SELECT bool '' AS error; - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('true', 'bool'); pg_input_is_valid @@ -299,8 +279,6 @@ INSERT INTO BOOLTBL2 (f1) VALUES (bool 'XXX'); ERROR: invalid input syntax for type boolean: "XXX" -LINE 2: VALUES (bool 'XXX'); - ^ -- BOOLTBL2 should be full of false's at this point SELECT BOOLTBL2.* FROM BOOLTBL2; f1 diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/text.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/text.out --- /tmp/cirrus-ci-build/src/test/regress/expected/text.out 2024-02-22 13:04:49.016852000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/text.out 2024-02-22 13:08:01.664728000 +0000 @@ -25,8 +25,6 @@ -- this no longer works: select length(42); ERROR: function length(integer) does not exist -LINE 1: select length(42); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. -- But as a special exception for usability's sake, we still allow implicit -- casting to text in concatenations, so long as the other input is text or @@ -46,8 +44,6 @@ -- but not this: select 3 || 4.0; ERROR: operator does not exist: integer || numeric -LINE 1: select 3 || 4.0; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. /* * various string functions @@ -168,8 +164,6 @@ --should fail select concat_ws(',', variadic 10); ERROR: VARIADIC argument must be an array -LINE 1: select concat_ws(',', variadic 10); - ^ /* * format */ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/int2.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int2.out --- /tmp/cirrus-ci-build/src/test/regress/expected/int2.out 2024-02-22 13:04:49.013945000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int2.out 2024-02-22 13:08:01.679728000 +0000 @@ -5,36 +5,20 @@ -- Here we just try to insert bad values. INSERT INTO INT2_TBL(f1) VALUES ('34.5'); ERROR: invalid input syntax for type smallint: "34.5" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('34.5'); - ^ INSERT INTO INT2_TBL(f1) VALUES ('100000'); ERROR: value "100000" is out of range for type smallint -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('100000'); - ^ INSERT INTO INT2_TBL(f1) VALUES ('asdf'); ERROR: invalid input syntax for type smallint: "asdf" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('asdf'); - ^ INSERT INTO INT2_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type smallint: " " -LINE 1: INSERT INTO INT2_TBL(f1) VALUES (' '); - ^ INSERT INTO INT2_TBL(f1) VALUES ('- 1234'); ERROR: invalid input syntax for type smallint: "- 1234" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('- 1234'); - ^ INSERT INTO INT2_TBL(f1) VALUES ('4 444'); ERROR: invalid input syntax for type smallint: "4 444" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('4 444'); - ^ INSERT INTO INT2_TBL(f1) VALUES ('123 dt'); ERROR: invalid input syntax for type smallint: "123 dt" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('123 dt'); - ^ INSERT INTO INT2_TBL(f1) VALUES (''); ERROR: invalid input syntax for type smallint: "" -LINE 1: INSERT INTO INT2_TBL(f1) VALUES (''); - ^ SELECT * FROM INT2_TBL; f1 -------- @@ -369,16 +353,10 @@ SELECT int2 '0b'; ERROR: invalid input syntax for type smallint: "0b" -LINE 1: SELECT int2 '0b'; - ^ SELECT int2 '0o'; ERROR: invalid input syntax for type smallint: "0o" -LINE 1: SELECT int2 '0o'; - ^ SELECT int2 '0x'; ERROR: invalid input syntax for type smallint: "0x" -LINE 1: SELECT int2 '0x'; - ^ -- cases near overflow SELECT int2 '0b111111111111111'; int2 @@ -388,8 +366,6 @@ SELECT int2 '0b1000000000000000'; ERROR: value "0b1000000000000000" is out of range for type smallint -LINE 1: SELECT int2 '0b1000000000000000'; - ^ SELECT int2 '0o77777'; int2 ------- @@ -398,8 +374,6 @@ SELECT int2 '0o100000'; ERROR: value "0o100000" is out of range for type smallint -LINE 1: SELECT int2 '0o100000'; - ^ SELECT int2 '0x7FFF'; int2 ------- @@ -408,8 +382,6 @@ SELECT int2 '0x8000'; ERROR: value "0x8000" is out of range for type smallint -LINE 1: SELECT int2 '0x8000'; - ^ SELECT int2 '-0b1000000000000000'; int2 -------- @@ -418,8 +390,6 @@ SELECT int2 '-0b1000000000000001'; ERROR: value "-0b1000000000000001" is out of range for type smallint -LINE 1: SELECT int2 '-0b1000000000000001'; - ^ SELECT int2 '-0o100000'; int2 -------- @@ -428,8 +398,6 @@ SELECT int2 '-0o100001'; ERROR: value "-0o100001" is out of range for type smallint -LINE 1: SELECT int2 '-0o100001'; - ^ SELECT int2 '-0x8000'; int2 -------- @@ -438,8 +406,6 @@ SELECT int2 '-0x8001'; ERROR: value "-0x8001" is out of range for type smallint -LINE 1: SELECT int2 '-0x8001'; - ^ -- underscores SELECT int2 '1_000'; int2 @@ -474,13 +440,7 @@ -- error cases SELECT int2 '_100'; ERROR: invalid input syntax for type smallint: "_100" -LINE 1: SELECT int2 '_100'; - ^ SELECT int2 '100_'; ERROR: invalid input syntax for type smallint: "100_" -LINE 1: SELECT int2 '100_'; - ^ SELECT int2 '10__000'; ERROR: invalid input syntax for type smallint: "10__000" -LINE 1: SELECT int2 '10__000'; - ^ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/int4.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int4.out --- /tmp/cirrus-ci-build/src/test/regress/expected/int4.out 2024-02-22 13:04:49.013958000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int4.out 2024-02-22 13:08:01.675782000 +0000 @@ -5,36 +5,20 @@ -- Here we just try to insert bad values. INSERT INTO INT4_TBL(f1) VALUES ('34.5'); ERROR: invalid input syntax for type integer: "34.5" -LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('34.5'); - ^ INSERT INTO INT4_TBL(f1) VALUES ('1000000000000'); ERROR: value "1000000000000" is out of range for type integer -LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000'); - ^ INSERT INTO INT4_TBL(f1) VALUES ('asdf'); ERROR: invalid input syntax for type integer: "asdf" -LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('asdf'); - ^ INSERT INTO INT4_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type integer: " " -LINE 1: INSERT INTO INT4_TBL(f1) VALUES (' '); - ^ INSERT INTO INT4_TBL(f1) VALUES (' asdf '); ERROR: invalid input syntax for type integer: " asdf " -LINE 1: INSERT INTO INT4_TBL(f1) VALUES (' asdf '); - ^ INSERT INTO INT4_TBL(f1) VALUES ('- 1234'); ERROR: invalid input syntax for type integer: "- 1234" -LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('- 1234'); - ^ INSERT INTO INT4_TBL(f1) VALUES ('123 5'); ERROR: invalid input syntax for type integer: "123 5" -LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('123 5'); - ^ INSERT INTO INT4_TBL(f1) VALUES (''); ERROR: invalid input syntax for type integer: "" -LINE 1: INSERT INTO INT4_TBL(f1) VALUES (''); - ^ SELECT * FROM INT4_TBL; f1 ------------- @@ -477,16 +461,10 @@ SELECT int4 '0b'; ERROR: invalid input syntax for type integer: "0b" -LINE 1: SELECT int4 '0b'; - ^ SELECT int4 '0o'; ERROR: invalid input syntax for type integer: "0o" -LINE 1: SELECT int4 '0o'; - ^ SELECT int4 '0x'; ERROR: invalid input syntax for type integer: "0x" -LINE 1: SELECT int4 '0x'; - ^ -- cases near overflow SELECT int4 '0b1111111111111111111111111111111'; int4 @@ -496,8 +474,6 @@ SELECT int4 '0b10000000000000000000000000000000'; ERROR: value "0b10000000000000000000000000000000" is out of range for type integer -LINE 1: SELECT int4 '0b10000000000000000000000000000000'; - ^ SELECT int4 '0o17777777777'; int4 ------------ @@ -506,8 +482,6 @@ SELECT int4 '0o20000000000'; ERROR: value "0o20000000000" is out of range for type integer -LINE 1: SELECT int4 '0o20000000000'; - ^ SELECT int4 '0x7FFFFFFF'; int4 ------------ @@ -516,8 +490,6 @@ SELECT int4 '0x80000000'; ERROR: value "0x80000000" is out of range for type integer -LINE 1: SELECT int4 '0x80000000'; - ^ SELECT int4 '-0b10000000000000000000000000000000'; int4 ------------- @@ -526,8 +498,6 @@ SELECT int4 '-0b10000000000000000000000000000001'; ERROR: value "-0b10000000000000000000000000000001" is out of range for type integer -LINE 1: SELECT int4 '-0b10000000000000000000000000000001'; - ^ SELECT int4 '-0o20000000000'; int4 ------------- @@ -536,8 +506,6 @@ SELECT int4 '-0o20000000001'; ERROR: value "-0o20000000001" is out of range for type integer -LINE 1: SELECT int4 '-0o20000000001'; - ^ SELECT int4 '-0x80000000'; int4 ------------- @@ -546,8 +514,6 @@ SELECT int4 '-0x80000001'; ERROR: value "-0x80000001" is out of range for type integer -LINE 1: SELECT int4 '-0x80000001'; - ^ -- underscores SELECT int4 '1_000_000'; int4 @@ -582,13 +548,7 @@ -- error cases SELECT int4 '_100'; ERROR: invalid input syntax for type integer: "_100" -LINE 1: SELECT int4 '_100'; - ^ SELECT int4 '100_'; ERROR: invalid input syntax for type integer: "100_" -LINE 1: SELECT int4 '100_'; - ^ SELECT int4 '100__000'; ERROR: invalid input syntax for type integer: "100__000" -LINE 1: SELECT int4 '100__000'; - ^ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/int8.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int8.out --- /tmp/cirrus-ci-build/src/test/regress/expected/int8.out 2024-02-22 13:04:49.013996000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/int8.out 2024-02-22 13:08:01.729937000 +0000 @@ -6,32 +6,18 @@ -- Here we just try to insert bad values. INSERT INTO INT8_TBL(q1) VALUES (' '); ERROR: invalid input syntax for type bigint: " " -LINE 1: INSERT INTO INT8_TBL(q1) VALUES (' '); - ^ INSERT INTO INT8_TBL(q1) VALUES ('xxx'); ERROR: invalid input syntax for type bigint: "xxx" -LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('xxx'); - ^ INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485'); ERROR: value "3908203590239580293850293850329485" is out of range for type bigint -LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('39082035902395802938502938... - ^ INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934'); ERROR: value "-1204982019841029840928340329840934" is out of range for type bigint -LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340... - ^ INSERT INTO INT8_TBL(q1) VALUES ('- 123'); ERROR: invalid input syntax for type bigint: "- 123" -LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('- 123'); - ^ INSERT INTO INT8_TBL(q1) VALUES (' 345 5'); ERROR: invalid input syntax for type bigint: " 345 5" -LINE 1: INSERT INTO INT8_TBL(q1) VALUES (' 345 5'); - ^ INSERT INTO INT8_TBL(q1) VALUES (''); ERROR: invalid input syntax for type bigint: "" -LINE 1: INSERT INTO INT8_TBL(q1) VALUES (''); - ^ SELECT * FROM INT8_TBL; q1 | q2 ------------------+------------------- @@ -659,8 +645,6 @@ select '-9223372036854775809'::int8; ERROR: value "-9223372036854775809" is out of range for type bigint -LINE 1: select '-9223372036854775809'::int8; - ^ select '9223372036854775807'::int8; int8 --------------------- @@ -669,8 +653,6 @@ select '9223372036854775808'::int8; ERROR: value "9223372036854775808" is out of range for type bigint -LINE 1: select '9223372036854775808'::int8; - ^ select -('-9223372036854775807'::int8); ?column? --------------------- @@ -975,16 +957,10 @@ SELECT int8 '0b'; ERROR: invalid input syntax for type bigint: "0b" -LINE 1: SELECT int8 '0b'; - ^ SELECT int8 '0o'; ERROR: invalid input syntax for type bigint: "0o" -LINE 1: SELECT int8 '0o'; - ^ SELECT int8 '0x'; ERROR: invalid input syntax for type bigint: "0x" -LINE 1: SELECT int8 '0x'; - ^ -- cases near overflow SELECT int8 '0b111111111111111111111111111111111111111111111111111111111111111'; int8 @@ -994,8 +970,6 @@ SELECT int8 '0b1000000000000000000000000000000000000000000000000000000000000000'; ERROR: value "0b1000000000000000000000000000000000000000000000000000000000000000" is out of range for type bigint -LINE 1: SELECT int8 '0b100000000000000000000000000000000000000000000... - ^ SELECT int8 '0o777777777777777777777'; int8 --------------------- @@ -1004,8 +978,6 @@ SELECT int8 '0o1000000000000000000000'; ERROR: value "0o1000000000000000000000" is out of range for type bigint -LINE 1: SELECT int8 '0o1000000000000000000000'; - ^ SELECT int8 '0x7FFFFFFFFFFFFFFF'; int8 --------------------- @@ -1014,8 +986,6 @@ SELECT int8 '0x8000000000000000'; ERROR: value "0x8000000000000000" is out of range for type bigint -LINE 1: SELECT int8 '0x8000000000000000'; - ^ SELECT int8 '-0b1000000000000000000000000000000000000000000000000000000000000000'; int8 ---------------------- @@ -1024,8 +994,6 @@ SELECT int8 '-0b1000000000000000000000000000000000000000000000000000000000000001'; ERROR: value "-0b1000000000000000000000000000000000000000000000000000000000000001" is out of range for type bigint -LINE 1: SELECT int8 '-0b10000000000000000000000000000000000000000000... - ^ SELECT int8 '-0o1000000000000000000000'; int8 ---------------------- @@ -1034,8 +1002,6 @@ SELECT int8 '-0o1000000000000000000001'; ERROR: value "-0o1000000000000000000001" is out of range for type bigint -LINE 1: SELECT int8 '-0o1000000000000000000001'; - ^ SELECT int8 '-0x8000000000000000'; int8 ---------------------- @@ -1044,8 +1010,6 @@ SELECT int8 '-0x8000000000000001'; ERROR: value "-0x8000000000000001" is out of range for type bigint -LINE 1: SELECT int8 '-0x8000000000000001'; - ^ -- underscores SELECT int8 '1_000_000'; int8 @@ -1080,13 +1044,7 @@ -- error cases SELECT int8 '_100'; ERROR: invalid input syntax for type bigint: "_100" -LINE 1: SELECT int8 '_100'; - ^ SELECT int8 '100_'; ERROR: invalid input syntax for type bigint: "100_" -LINE 1: SELECT int8 '100_'; - ^ SELECT int8 '100__000'; ERROR: invalid input syntax for type bigint: "100__000" -LINE 1: SELECT int8 '100__000'; - ^ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/oid.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/oid.out --- /tmp/cirrus-ci-build/src/test/regress/expected/oid.out 2024-02-22 13:04:49.015096000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/oid.out 2024-02-22 13:08:01.615260000 +0000 @@ -14,44 +14,24 @@ -- bad inputs INSERT INTO OID_TBL(f1) VALUES (''); ERROR: invalid input syntax for type oid: "" -LINE 1: INSERT INTO OID_TBL(f1) VALUES (''); - ^ INSERT INTO OID_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type oid: " " -LINE 1: INSERT INTO OID_TBL(f1) VALUES (' '); - ^ INSERT INTO OID_TBL(f1) VALUES ('asdfasd'); ERROR: invalid input syntax for type oid: "asdfasd" -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('asdfasd'); - ^ INSERT INTO OID_TBL(f1) VALUES ('99asdfasd'); ERROR: invalid input syntax for type oid: "99asdfasd" -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('99asdfasd'); - ^ INSERT INTO OID_TBL(f1) VALUES ('5 d'); ERROR: invalid input syntax for type oid: "5 d" -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 d'); - ^ INSERT INTO OID_TBL(f1) VALUES (' 5d'); ERROR: invalid input syntax for type oid: " 5d" -LINE 1: INSERT INTO OID_TBL(f1) VALUES (' 5d'); - ^ INSERT INTO OID_TBL(f1) VALUES ('5 5'); ERROR: invalid input syntax for type oid: "5 5" -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 5'); - ^ INSERT INTO OID_TBL(f1) VALUES (' - 500'); ERROR: invalid input syntax for type oid: " - 500" -LINE 1: INSERT INTO OID_TBL(f1) VALUES (' - 500'); - ^ INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); ERROR: value "32958209582039852935" is out of range for type oid -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); - ^ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); ERROR: value "-23582358720398502385" is out of range for type oid -LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); - ^ SELECT * FROM OID_TBL; f1 ------------ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/float4.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/float4.out --- /tmp/cirrus-ci-build/src/test/regress/expected/float4.out 2024-02-22 13:04:49.013030000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/float4.out 2024-02-22 13:08:01.795225000 +0000 @@ -10,20 +10,12 @@ -- test for over and under flow INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'); ERROR: "10e70" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'); ERROR: "-10e70" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'); ERROR: "10e-70" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'); ERROR: "-10e-70" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'::float8); ERROR: value out of range: overflow INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'::float8); @@ -34,53 +26,29 @@ ERROR: value out of range: underflow INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400'); ERROR: "10e400" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400'); ERROR: "-10e400" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400'); ERROR: "10e-400" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400'); ERROR: "-10e-400" is out of range for type real -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400'); - ^ -- bad input INSERT INTO FLOAT4_TBL(f1) VALUES (''); ERROR: invalid input syntax for type real: "" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES (''); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type real: " " -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES (' '); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz'); ERROR: invalid input syntax for type real: "xyz" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0'); ERROR: invalid input syntax for type real: "5.0.0" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0'); ERROR: invalid input syntax for type real: "5 . 0" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0'); ERROR: invalid input syntax for type real: "5. 0" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0'); ERROR: invalid input syntax for type real: " - 3.0" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0'); - ^ INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5'); ERROR: invalid input syntax for type real: "123 5" -LINE 1: INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5'); - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34.5', 'float4'); pg_input_is_valid @@ -140,16 +108,10 @@ -- bad special inputs SELECT 'N A N'::float4; ERROR: invalid input syntax for type real: "N A N" -LINE 1: SELECT 'N A N'::float4; - ^ SELECT 'NaN x'::float4; ERROR: invalid input syntax for type real: "NaN x" -LINE 1: SELECT 'NaN x'::float4; - ^ SELECT ' INFINITY x'::float4; ERROR: invalid input syntax for type real: " INFINITY x" -LINE 1: SELECT ' INFINITY x'::float4; - ^ SELECT 'Infinity'::float4 + 100.0; ?column? ---------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/float8.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/float8.out --- /tmp/cirrus-ci-build/src/test/regress/expected/float8.out 2024-02-22 13:04:49.013055000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/float8.out 2024-02-22 13:08:01.751215000 +0000 @@ -14,20 +14,12 @@ -- test for underflow and overflow handling SELECT '10e400'::float8; ERROR: "10e400" is out of range for type double precision -LINE 1: SELECT '10e400'::float8; - ^ SELECT '-10e400'::float8; ERROR: "-10e400" is out of range for type double precision -LINE 1: SELECT '-10e400'::float8; - ^ SELECT '10e-400'::float8; ERROR: "10e-400" is out of range for type double precision -LINE 1: SELECT '10e-400'::float8; - ^ SELECT '-10e-400'::float8; ERROR: "-10e-400" is out of range for type double precision -LINE 1: SELECT '-10e-400'::float8; - ^ -- test smallest normalized input SELECT float8send('2.2250738585072014E-308'::float8); float8send @@ -38,36 +30,20 @@ -- bad input INSERT INTO FLOAT8_TBL(f1) VALUES (''); ERROR: invalid input syntax for type double precision: "" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (''); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type double precision: " " -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' '); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); ERROR: invalid input syntax for type double precision: "xyz" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); ERROR: invalid input syntax for type double precision: "5.0.0" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); ERROR: invalid input syntax for type double precision: "5 . 0" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); ERROR: invalid input syntax for type double precision: "5. 0" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); ERROR: invalid input syntax for type double precision: " - 3" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); ERROR: invalid input syntax for type double precision: "123 5" -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34.5', 'float8'); pg_input_is_valid @@ -127,16 +103,10 @@ -- bad special inputs SELECT 'N A N'::float8; ERROR: invalid input syntax for type double precision: "N A N" -LINE 1: SELECT 'N A N'::float8; - ^ SELECT 'NaN x'::float8; ERROR: invalid input syntax for type double precision: "NaN x" -LINE 1: SELECT 'NaN x'::float8; - ^ SELECT ' INFINITY x'::float8; ERROR: invalid input syntax for type double precision: " INFINITY x" -LINE 1: SELECT ' INFINITY x'::float8; - ^ SELECT 'Infinity'::float8 + 100.0; ?column? ---------- @@ -833,20 +803,12 @@ -- test for over- and underflow INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); ERROR: "10e400" is out of range for type double precision -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); ERROR: "-10e400" is out of range for type double precision -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); ERROR: "10e-400" is out of range for type double precision -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); - ^ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); ERROR: "-10e-400" is out of range for type double precision -LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); - ^ DROP TABLE FLOAT8_TBL; -- Check the float8 values exported for use by other tests SELECT * FROM FLOAT8_TBL; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/bit.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/bit.out --- /tmp/cirrus-ci-build/src/test/regress/expected/bit.out 2024-02-22 13:04:49.011862000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/bit.out 2024-02-22 13:08:01.805668000 +0000 @@ -43,20 +43,12 @@ -- Literals with syntax errors SELECT b' 0'; ERROR: " " is not a valid binary digit -LINE 1: SELECT b' 0'; - ^ SELECT b'0 '; ERROR: " " is not a valid binary digit -LINE 1: SELECT b'0 '; - ^ SELECT x' 0'; ERROR: " " is not a valid hexadecimal digit -LINE 1: SELECT x' 0'; - ^ SELECT x'0 '; ERROR: " " is not a valid hexadecimal digit -LINE 1: SELECT x'0 '; - ^ -- Concatenation SELECT v, b, (v || b) AS concat FROM BIT_TABLE, VARBIT_TABLE diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/numeric.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/numeric.out --- /tmp/cirrus-ci-build/src/test/regress/expected/numeric.out 2024-02-22 13:04:49.014766000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/numeric.out 2024-02-22 13:08:02.770209000 +0000 @@ -2228,112 +2228,58 @@ -- bad inputs INSERT INTO num_input_test(n1) VALUES (' '); ERROR: invalid input syntax for type numeric: " " -LINE 1: INSERT INTO num_input_test(n1) VALUES (' '); - ^ INSERT INTO num_input_test(n1) VALUES (' 1234 %'); ERROR: invalid input syntax for type numeric: " 1234 %" -LINE 1: INSERT INTO num_input_test(n1) VALUES (' 1234 %'); - ^ INSERT INTO num_input_test(n1) VALUES ('xyz'); ERROR: invalid input syntax for type numeric: "xyz" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('xyz'); - ^ INSERT INTO num_input_test(n1) VALUES ('- 1234'); ERROR: invalid input syntax for type numeric: "- 1234" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('- 1234'); - ^ INSERT INTO num_input_test(n1) VALUES ('5 . 0'); ERROR: invalid input syntax for type numeric: "5 . 0" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('5 . 0'); - ^ INSERT INTO num_input_test(n1) VALUES ('5. 0 '); ERROR: invalid input syntax for type numeric: "5. 0 " -LINE 1: INSERT INTO num_input_test(n1) VALUES ('5. 0 '); - ^ INSERT INTO num_input_test(n1) VALUES (''); ERROR: invalid input syntax for type numeric: "" -LINE 1: INSERT INTO num_input_test(n1) VALUES (''); - ^ INSERT INTO num_input_test(n1) VALUES (' N aN '); ERROR: invalid input syntax for type numeric: " N aN " -LINE 1: INSERT INTO num_input_test(n1) VALUES (' N aN '); - ^ INSERT INTO num_input_test(n1) VALUES ('+NaN'); ERROR: invalid input syntax for type numeric: "+NaN" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('+NaN'); - ^ INSERT INTO num_input_test(n1) VALUES ('-NaN'); ERROR: invalid input syntax for type numeric: "-NaN" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('-NaN'); - ^ INSERT INTO num_input_test(n1) VALUES ('+ infinity'); ERROR: invalid input syntax for type numeric: "+ infinity" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('+ infinity'); - ^ INSERT INTO num_input_test(n1) VALUES ('_123'); ERROR: invalid input syntax for type numeric: "_123" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('_123'); - ^ INSERT INTO num_input_test(n1) VALUES ('123_'); ERROR: invalid input syntax for type numeric: "123_" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('123_'); - ^ INSERT INTO num_input_test(n1) VALUES ('12__34'); ERROR: invalid input syntax for type numeric: "12__34" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('12__34'); - ^ INSERT INTO num_input_test(n1) VALUES ('123_.456'); ERROR: invalid input syntax for type numeric: "123_.456" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('123_.456'); - ^ INSERT INTO num_input_test(n1) VALUES ('123._456'); ERROR: invalid input syntax for type numeric: "123._456" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('123._456'); - ^ INSERT INTO num_input_test(n1) VALUES ('1.2e_34'); ERROR: invalid input syntax for type numeric: "1.2e_34" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('1.2e_34'); - ^ INSERT INTO num_input_test(n1) VALUES ('1.2e34_'); ERROR: invalid input syntax for type numeric: "1.2e34_" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('1.2e34_'); - ^ INSERT INTO num_input_test(n1) VALUES ('1.2e3__4'); ERROR: invalid input syntax for type numeric: "1.2e3__4" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('1.2e3__4'); - ^ INSERT INTO num_input_test(n1) VALUES ('0b1112'); ERROR: invalid input syntax for type numeric: "0b1112" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0b1112'); - ^ INSERT INTO num_input_test(n1) VALUES ('0c1112'); ERROR: invalid input syntax for type numeric: "0c1112" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0c1112'); - ^ INSERT INTO num_input_test(n1) VALUES ('0o12345678'); ERROR: invalid input syntax for type numeric: "0o12345678" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0o12345678'); - ^ INSERT INTO num_input_test(n1) VALUES ('0x1eg'); ERROR: invalid input syntax for type numeric: "0x1eg" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0x1eg'); - ^ INSERT INTO num_input_test(n1) VALUES ('0x12.34'); ERROR: invalid input syntax for type numeric: "0x12.34" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0x12.34'); - ^ INSERT INTO num_input_test(n1) VALUES ('0x__1234'); ERROR: invalid input syntax for type numeric: "0x__1234" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0x__1234'); - ^ INSERT INTO num_input_test(n1) VALUES ('0x1234_'); ERROR: invalid input syntax for type numeric: "0x1234_" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0x1234_'); - ^ INSERT INTO num_input_test(n1) VALUES ('0x12__34'); ERROR: invalid input syntax for type numeric: "0x12__34" -LINE 1: INSERT INTO num_input_test(n1) VALUES ('0x12__34'); - ^ SELECT * FROM num_input_test; n1 ----------------------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/txid.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/txid.out --- /tmp/cirrus-ci-build/src/test/regress/expected/txid.out 2024-02-22 13:04:49.017210000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/txid.out 2024-02-22 13:08:01.646956000 +0000 @@ -24,20 +24,12 @@ -- errors select '31:12:'::txid_snapshot; ERROR: invalid input syntax for type pg_snapshot: "31:12:" -LINE 1: select '31:12:'::txid_snapshot; - ^ select '0:1:'::txid_snapshot; ERROR: invalid input syntax for type pg_snapshot: "0:1:" -LINE 1: select '0:1:'::txid_snapshot; - ^ select '12:13:0'::txid_snapshot; ERROR: invalid input syntax for type pg_snapshot: "12:13:0" -LINE 1: select '12:13:0'::txid_snapshot; - ^ select '12:16:14,13'::txid_snapshot; ERROR: invalid input syntax for type pg_snapshot: "12:16:14,13" -LINE 1: select '12:16:14,13'::txid_snapshot; - ^ create temp table snapshot_test ( nr integer, snap txid_snapshot @@ -239,8 +231,6 @@ SELECT txid_snapshot '1:9223372036854775808:3'; ERROR: invalid input syntax for type pg_snapshot: "1:9223372036854775808:3" -LINE 1: SELECT txid_snapshot '1:9223372036854775808:3'; - ^ -- test txid_current_if_assigned BEGIN; SELECT txid_current_if_assigned() IS NULL; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/uuid.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/uuid.out --- /tmp/cirrus-ci-build/src/test/regress/expected/uuid.out 2024-02-22 13:04:49.017521000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/uuid.out 2024-02-22 13:08:01.645811000 +0000 @@ -14,31 +14,19 @@ -- too long INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F'); ERROR: invalid input syntax for type uuid: "11111111-1111-1111-1111-111111111111F" -LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-111... - ^ -- too short INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}'); ERROR: invalid input syntax for type uuid: "{11111111-1111-1111-1111-11111111111}" -LINE 1: INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-11... - ^ -- valid data but invalid format INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111'); ERROR: invalid input syntax for type uuid: "111-11111-1111-1111-1111-111111111111" -LINE 1: INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-11... - ^ INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 '); ERROR: invalid input syntax for type uuid: "{22222222-2222-2222-2222-222222222222 " -LINE 1: INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-22... - ^ -- invalid data INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111'); ERROR: invalid input syntax for type uuid: "11111111-1111-1111-G111-111111111111" -LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G11... - ^ INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111'); ERROR: invalid input syntax for type uuid: "11+11111-1111-1111-1111-111111111111" -LINE 1: INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-111... - ^ -- test non-error-throwing API SELECT pg_input_is_valid('11', 'uuid'); pg_input_is_valid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/enum.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/enum.out --- /tmp/cirrus-ci-build/src/test/regress/expected/enum.out 2024-02-22 13:04:49.012878000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/enum.out 2024-02-22 13:08:01.816619000 +0000 @@ -22,8 +22,6 @@ SELECT 'mauve'::rainbow; ERROR: invalid input value for enum rainbow: "mauve" -LINE 1: SELECT 'mauve'::rainbow; - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('red', 'rainbow'); pg_input_is_valid @@ -616,8 +614,6 @@ SAVEPOINT x; SELECT 'new'::bogus; -- unsafe ERROR: unsafe use of new value "new" of enum type bogus -LINE 1: SELECT 'new'::bogus; - ^ HINT: New enum values must be committed before they can be used. ROLLBACK TO x; SELECT enum_first(null::bogus); -- safe @@ -658,8 +654,6 @@ ALTER TYPE bogon ADD VALUE 'bad'; SELECT 'bad'::bogon; ERROR: unsafe use of new value "bad" of enum type bogon -LINE 1: SELECT 'bad'::bogon; - ^ HINT: New enum values must be committed before they can be used. ROLLBACK; -- but a renamed value is safe to use later in same transaction diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/money.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/money.out --- /tmp/cirrus-ci-build/src/test/regress/expected/money.out 2024-02-22 13:04:49.014660000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/money.out 2024-02-22 13:08:01.611568000 +0000 @@ -286,12 +286,8 @@ SELECT '123456789012345678'::money; ERROR: value "123456789012345678" is out of range for type money -LINE 1: SELECT '123456789012345678'::money; - ^ SELECT '9223372036854775807'::money; ERROR: value "9223372036854775807" is out of range for type money -LINE 1: SELECT '9223372036854775807'::money; - ^ SELECT '-12345'::money; money ------------- @@ -312,12 +308,8 @@ SELECT '-123456789012345678'::money; ERROR: value "-123456789012345678" is out of range for type money -LINE 1: SELECT '-123456789012345678'::money; - ^ SELECT '-9223372036854775808'::money; ERROR: value "-9223372036854775808" is out of range for type money -LINE 1: SELECT '-9223372036854775808'::money; - ^ -- special characters SELECT '(1)'::money; money @@ -371,21 +363,13 @@ SELECT '-92233720368547758.09'::money; ERROR: value "-92233720368547758.09" is out of range for type money -LINE 1: SELECT '-92233720368547758.09'::money; - ^ SELECT '92233720368547758.08'::money; ERROR: value "92233720368547758.08" is out of range for type money -LINE 1: SELECT '92233720368547758.08'::money; - ^ -- rounding SELECT '-92233720368547758.085'::money; ERROR: value "-92233720368547758.085" is out of range for type money -LINE 1: SELECT '-92233720368547758.085'::money; - ^ SELECT '92233720368547758.075'::money; ERROR: value "92233720368547758.075" is out of range for type money -LINE 1: SELECT '92233720368547758.075'::money; - ^ -- rounding vs. truncation in division SELECT '878.08'::money / 11::float8; ?column? diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/rangetypes.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rangetypes.out --- /tmp/cirrus-ci-build/src/test/regress/expected/rangetypes.out 2024-02-22 13:04:49.015907000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rangetypes.out 2024-02-22 13:08:02.865706000 +0000 @@ -6,53 +6,33 @@ -- negative tests; should fail select ''::textrange; ERROR: malformed range literal: "" -LINE 1: select ''::textrange; - ^ DETAIL: Missing left parenthesis or bracket. select '-[a,z)'::textrange; ERROR: malformed range literal: "-[a,z)" -LINE 1: select '-[a,z)'::textrange; - ^ DETAIL: Missing left parenthesis or bracket. select '[a,z) - '::textrange; ERROR: malformed range literal: "[a,z) - " -LINE 1: select '[a,z) - '::textrange; - ^ DETAIL: Junk after right parenthesis or bracket. select '(",a)'::textrange; ERROR: malformed range literal: "(",a)" -LINE 1: select '(",a)'::textrange; - ^ DETAIL: Unexpected end of input. select '(,,a)'::textrange; ERROR: malformed range literal: "(,,a)" -LINE 1: select '(,,a)'::textrange; - ^ DETAIL: Too many commas. select '(),a)'::textrange; ERROR: malformed range literal: "(),a)" -LINE 1: select '(),a)'::textrange; - ^ DETAIL: Missing comma after lower bound. select '(a,))'::textrange; ERROR: malformed range literal: "(a,))" -LINE 1: select '(a,))'::textrange; - ^ DETAIL: Junk after right parenthesis or bracket. select '(],a)'::textrange; ERROR: malformed range literal: "(],a)" -LINE 1: select '(],a)'::textrange; - ^ DETAIL: Missing comma after lower bound. select '(a,])'::textrange; ERROR: malformed range literal: "(a,])" -LINE 1: select '(a,])'::textrange; - ^ DETAIL: Junk after right parenthesis or bracket. select '[z,a]'::textrange; ERROR: range lower bound must be less than or equal to range upper bound -LINE 1: select '[z,a]'::textrange; - ^ -- should succeed select ' empty '::textrange; textrange @@ -1544,8 +1524,6 @@ -- should fail select '[2010-01-01 01:00:00 -08, 2010-01-01 02:00:00 -05)'::tstzrange; ERROR: range lower bound must be less than or equal to range upper bound -LINE 1: select '[2010-01-01 01:00:00 -08, 2010-01-01 02:00:00 -05)':... - ^ set timezone to default; -- -- Test user-defined range of floats @@ -1628,8 +1606,6 @@ -- should fail select anyarray_anyrange_func(ARRAY[1,2], numrange(10,20)); ERROR: function anyarray_anyrange_func(integer[], numrange) does not exist -LINE 1: select anyarray_anyrange_func(ARRAY[1,2], numrange(10,20)); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyarray_anyrange_func(anyarray, anyrange); -- should fail @@ -1667,8 +1643,6 @@ select rangetypes_sql(numrange(1,10), ARRAY[2,20]); -- match failure ERROR: function rangetypes_sql(numrange, integer[]) does not exist -LINE 1: select rangetypes_sql(numrange(1,10), ARRAY[2,20]); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. create function anycompatiblearray_anycompatiblerange_func(a anycompatiblearray, r anycompatiblerange) returns anycompatible as 'select $1[1] + lower($2);' language sql; @@ -1687,8 +1661,6 @@ -- should fail select anycompatiblearray_anycompatiblerange_func(ARRAY[1.1,2], int4range(10,20)); ERROR: function anycompatiblearray_anycompatiblerange_func(numeric[], int4range) does not exist -LINE 1: select anycompatiblearray_anycompatiblerange_func(ARRAY[1.1,... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anycompatiblearray_anycompatiblerange_func(anycompatiblearray, anycompatiblerange); -- should fail diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/pg_lsn.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/pg_lsn.out --- /tmp/cirrus-ci-build/src/test/regress/expected/pg_lsn.out 2024-02-22 13:04:49.015390000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/pg_lsn.out 2024-02-22 13:08:01.626493000 +0000 @@ -8,24 +8,14 @@ -- Incorrect input INSERT INTO PG_LSN_TBL VALUES ('G/0'); ERROR: invalid input syntax for type pg_lsn: "G/0" -LINE 1: INSERT INTO PG_LSN_TBL VALUES ('G/0'); - ^ INSERT INTO PG_LSN_TBL VALUES ('-1/0'); ERROR: invalid input syntax for type pg_lsn: "-1/0" -LINE 1: INSERT INTO PG_LSN_TBL VALUES ('-1/0'); - ^ INSERT INTO PG_LSN_TBL VALUES (' 0/12345678'); ERROR: invalid input syntax for type pg_lsn: " 0/12345678" -LINE 1: INSERT INTO PG_LSN_TBL VALUES (' 0/12345678'); - ^ INSERT INTO PG_LSN_TBL VALUES ('ABCD/'); ERROR: invalid input syntax for type pg_lsn: "ABCD/" -LINE 1: INSERT INTO PG_LSN_TBL VALUES ('ABCD/'); - ^ INSERT INTO PG_LSN_TBL VALUES ('/ABCD'); ERROR: invalid input syntax for type pg_lsn: "/ABCD" -LINE 1: INSERT INTO PG_LSN_TBL VALUES ('/ABCD'); - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('16AE7F7', 'pg_lsn'); pg_input_is_valid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/regproc.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/regproc.out --- /tmp/cirrus-ci-build/src/test/regress/expected/regproc.out 2024-02-22 13:04:49.015934000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/regproc.out 2024-02-22 13:08:01.789173000 +0000 @@ -221,53 +221,29 @@ -- without schemaname SELECT regoper('||//'); ERROR: operator does not exist: ||// -LINE 1: SELECT regoper('||//'); - ^ SELECT regoperator('++(int4,int4)'); ERROR: operator does not exist: ++(int4,int4) -LINE 1: SELECT regoperator('++(int4,int4)'); - ^ SELECT regproc('know'); ERROR: function "know" does not exist -LINE 1: SELECT regproc('know'); - ^ SELECT regprocedure('absinthe(numeric)'); ERROR: function "absinthe(numeric)" does not exist -LINE 1: SELECT regprocedure('absinthe(numeric)'); - ^ SELECT regclass('pg_classes'); ERROR: relation "pg_classes" does not exist -LINE 1: SELECT regclass('pg_classes'); - ^ SELECT regtype('int3'); ERROR: type "int3" does not exist -LINE 1: SELECT regtype('int3'); - ^ -- with schemaname SELECT regoper('ng_catalog.||/'); ERROR: operator does not exist: ng_catalog.||/ -LINE 1: SELECT regoper('ng_catalog.||/'); - ^ SELECT regoperator('ng_catalog.+(int4,int4)'); ERROR: operator does not exist: ng_catalog.+(int4,int4) -LINE 1: SELECT regoperator('ng_catalog.+(int4,int4)'); - ^ SELECT regproc('ng_catalog.now'); ERROR: function "ng_catalog.now" does not exist -LINE 1: SELECT regproc('ng_catalog.now'); - ^ SELECT regprocedure('ng_catalog.abs(numeric)'); ERROR: function "ng_catalog.abs(numeric)" does not exist -LINE 1: SELECT regprocedure('ng_catalog.abs(numeric)'); - ^ SELECT regclass('ng_catalog.pg_class'); ERROR: relation "ng_catalog.pg_class" does not exist -LINE 1: SELECT regclass('ng_catalog.pg_class'); - ^ SELECT regtype('ng_catalog.int4'); ERROR: schema "ng_catalog" does not exist -LINE 1: SELECT regtype('ng_catalog.int4'); - ^ \set VERBOSITY sqlstate \\ -- error message is encoding-dependent SELECT regcollation('ng_catalog."POSIX"'); ERROR: 42704 @@ -275,36 +251,20 @@ -- schemaname not applicable SELECT regrole('regress_regrole_test'); ERROR: role "regress_regrole_test" does not exist -LINE 1: SELECT regrole('regress_regrole_test'); - ^ SELECT regrole('"regress_regrole_test"'); ERROR: role "regress_regrole_test" does not exist -LINE 1: SELECT regrole('"regress_regrole_test"'); - ^ SELECT regrole('Nonexistent'); ERROR: role "nonexistent" does not exist -LINE 1: SELECT regrole('Nonexistent'); - ^ SELECT regrole('"Nonexistent"'); ERROR: role "Nonexistent" does not exist -LINE 1: SELECT regrole('"Nonexistent"'); - ^ SELECT regrole('foo.bar'); ERROR: invalid name syntax -LINE 1: SELECT regrole('foo.bar'); - ^ SELECT regnamespace('Nonexistent'); ERROR: schema "nonexistent" does not exist -LINE 1: SELECT regnamespace('Nonexistent'); - ^ SELECT regnamespace('"Nonexistent"'); ERROR: schema "Nonexistent" does not exist -LINE 1: SELECT regnamespace('"Nonexistent"'); - ^ SELECT regnamespace('foo.bar'); ERROR: invalid name syntax -LINE 1: SELECT regnamespace('foo.bar'); - ^ /* If objects don't exist, return NULL with no error. */ -- without schemaname SELECT to_regoper('||//'); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/strings.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/strings.out --- /tmp/cirrus-ci-build/src/test/regress/expected/strings.out 2024-02-22 13:04:49.016709000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/strings.out 2024-02-22 13:08:04.489298000 +0000 @@ -196,12 +196,8 @@ SELECT E'\\xDeAdBeE'::bytea; ERROR: invalid hexadecimal data: odd number of digits -LINE 1: SELECT E'\\xDeAdBeE'::bytea; - ^ SELECT E'\\xDeAdBeEx'::bytea; ERROR: invalid hexadecimal digit: "x" -LINE 1: SELECT E'\\xDeAdBeEx'::bytea; - ^ SELECT E'\\xDe00BeEf'::bytea; bytea ------------ @@ -234,8 +230,6 @@ SELECT E'De\\678dBeEf'::bytea; ERROR: invalid input syntax for type bytea -LINE 1: SELECT E'De\\678dBeEf'::bytea; - ^ SET bytea_output TO escape; SELECT E'\\xDeAdBeEf'::bytea; bytea diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/numerology.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/numerology.out --- /tmp/cirrus-ci-build/src/test/regress/expected/numerology.out 2024-02-22 13:04:49.015061000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/numerology.out 2024-02-22 13:08:03.953029000 +0000 @@ -300,8 +300,6 @@ -- error cases SELECT _100; ERROR: column "_100" does not exist -LINE 1: SELECT _100; - ^ SELECT 100_; ERROR: trailing junk after numeric literal at or near "100_" LINE 1: SELECT 100_; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/point.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/point.out --- /tmp/cirrus-ci-build/src/test/regress/expected/point.out 2024-02-22 13:04:49.015484000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/point.out 2024-02-22 13:08:03.171994000 +0000 @@ -7,24 +7,14 @@ -- Here we just try to insert bad values. INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf'); ERROR: invalid input syntax for type point: "asdfasdf" -LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf'); - ^ INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)'); ERROR: invalid input syntax for type point: "(10.0 10.0)" -LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)'); - ^ INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 10.0) x'); ERROR: invalid input syntax for type point: "(10.0, 10.0) x" -LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 10.0) x'); - ^ INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0'); ERROR: invalid input syntax for type point: "(10.0,10.0" -LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0'); - ^ INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); -- Out of range ERROR: "1e+500" is out of range for type double precision -LINE 1: INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); - ^ SELECT * FROM POINT_TBL; f1 ------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/lseg.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/lseg.out --- /tmp/cirrus-ci-build/src/test/regress/expected/lseg.out 2024-02-22 13:04:49.014485000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/lseg.out 2024-02-22 13:08:02.988439000 +0000 @@ -15,20 +15,12 @@ -- bad values for parser testing INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)'); ERROR: invalid input syntax for type lseg: "(3asdf,2 ,3,4r2)" -LINE 1: INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)'); - ^ INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4'); ERROR: invalid input syntax for type lseg: "[1,2,3, 4" -LINE 1: INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4'); - ^ INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]'); ERROR: invalid input syntax for type lseg: "[(,2),(3,4)]" -LINE 1: INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]'); - ^ INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)'); ERROR: invalid input syntax for type lseg: "[(1,2),(3,4)" -LINE 1: INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)'); - ^ select * from LSEG_TBL; s ------------------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/line.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/line.out --- /tmp/cirrus-ci-build/src/test/regress/expected/line.out 2024-02-22 13:04:49.014464000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/line.out 2024-02-22 13:08:03.019676000 +0000 @@ -19,48 +19,26 @@ -- bad values for parser testing INSERT INTO LINE_TBL VALUES ('{}'); ERROR: invalid input syntax for type line: "{}" -LINE 1: INSERT INTO LINE_TBL VALUES ('{}'); - ^ INSERT INTO LINE_TBL VALUES ('{0'); ERROR: invalid input syntax for type line: "{0" -LINE 1: INSERT INTO LINE_TBL VALUES ('{0'); - ^ INSERT INTO LINE_TBL VALUES ('{0,0}'); ERROR: invalid input syntax for type line: "{0,0}" -LINE 1: INSERT INTO LINE_TBL VALUES ('{0,0}'); - ^ INSERT INTO LINE_TBL VALUES ('{0,0,1'); ERROR: invalid input syntax for type line: "{0,0,1" -LINE 1: INSERT INTO LINE_TBL VALUES ('{0,0,1'); - ^ INSERT INTO LINE_TBL VALUES ('{0,0,1}'); ERROR: invalid line specification: A and B cannot both be zero -LINE 1: INSERT INTO LINE_TBL VALUES ('{0,0,1}'); - ^ INSERT INTO LINE_TBL VALUES ('{0,0,1} x'); ERROR: invalid input syntax for type line: "{0,0,1} x" -LINE 1: INSERT INTO LINE_TBL VALUES ('{0,0,1} x'); - ^ INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)'); ERROR: invalid input syntax for type line: "(3asdf,2 ,3,4r2)" -LINE 1: INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)'); - ^ INSERT INTO LINE_TBL VALUES ('[1,2,3, 4'); ERROR: invalid input syntax for type line: "[1,2,3, 4" -LINE 1: INSERT INTO LINE_TBL VALUES ('[1,2,3, 4'); - ^ INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]'); ERROR: invalid input syntax for type line: "[(,2),(3,4)]" -LINE 1: INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]'); - ^ INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)'); ERROR: invalid input syntax for type line: "[(1,2),(3,4)" -LINE 1: INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)'); - ^ INSERT INTO LINE_TBL VALUES ('[(1,2),(1,2)]'); ERROR: invalid line specification: must be two distinct points -LINE 1: INSERT INTO LINE_TBL VALUES ('[(1,2),(1,2)]'); - ^ INSERT INTO LINE_TBL VALUES (line(point '(1,0)', point '(1,0)')); ERROR: invalid line specification: must be two distinct points select * from LINE_TBL; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/box.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/box.out --- /tmp/cirrus-ci-build/src/test/regress/expected/box.out 2024-02-22 13:04:49.011895000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/box.out 2024-02-22 13:08:04.518487000 +0000 @@ -26,24 +26,14 @@ -- badly formatted box inputs INSERT INTO BOX_TBL (f1) VALUES ('(2.3, 4.5)'); ERROR: invalid input syntax for type box: "(2.3, 4.5)" -LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('(2.3, 4.5)'); - ^ INSERT INTO BOX_TBL (f1) VALUES ('[1, 2, 3, 4)'); ERROR: invalid input syntax for type box: "[1, 2, 3, 4)" -LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('[1, 2, 3, 4)'); - ^ INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4]'); ERROR: invalid input syntax for type box: "(1, 2, 3, 4]" -LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4]'); - ^ INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4) x'); ERROR: invalid input syntax for type box: "(1, 2, 3, 4) x" -LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4) x'); - ^ INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad'); ERROR: invalid input syntax for type box: "asdfasdf(ad" -LINE 1: INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad'); - ^ SELECT * FROM BOX_TBL; f1 --------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/path.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/path.out --- /tmp/cirrus-ci-build/src/test/regress/expected/path.out 2024-02-22 13:04:49.015379000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/path.out 2024-02-22 13:08:03.081586000 +0000 @@ -15,24 +15,14 @@ -- bad values for parser testing INSERT INTO PATH_TBL VALUES ('[]'); ERROR: invalid input syntax for type path: "[]" -LINE 1: INSERT INTO PATH_TBL VALUES ('[]'); - ^ INSERT INTO PATH_TBL VALUES ('[(,2),(3,4)]'); ERROR: invalid input syntax for type path: "[(,2),(3,4)]" -LINE 1: INSERT INTO PATH_TBL VALUES ('[(,2),(3,4)]'); - ^ INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)'); ERROR: invalid input syntax for type path: "[(1,2),(3,4)" -LINE 1: INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)'); - ^ INSERT INTO PATH_TBL VALUES ('(1,2,3,4'); ERROR: invalid input syntax for type path: "(1,2,3,4" -LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2,3,4'); - ^ INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); ERROR: invalid input syntax for type path: "(1,2),(3,4)]" -LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); - ^ SELECT f1 AS open_path FROM PATH_TBL WHERE isopen(f1); open_path --------------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/polygon.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/polygon.out --- /tmp/cirrus-ci-build/src/test/regress/expected/polygon.out 2024-02-22 13:04:49.015497000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/polygon.out 2024-02-22 13:08:04.482440000 +0000 @@ -15,24 +15,14 @@ -- bad polygon input strings INSERT INTO POLYGON_TBL(f1) VALUES ('0.0'); ERROR: invalid input syntax for type polygon: "0.0" -LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('0.0'); - ^ INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0'); ERROR: invalid input syntax for type polygon: "(0.0 0.0" -LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0'); - ^ INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)'); ERROR: invalid input syntax for type polygon: "(0,1,2)" -LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)'); - ^ INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3'); ERROR: invalid input syntax for type polygon: "(0,1,2,3" -LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3'); - ^ INSERT INTO POLYGON_TBL(f1) VALUES ('asdf'); ERROR: invalid input syntax for type polygon: "asdf" -LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('asdf'); - ^ SELECT * FROM POLYGON_TBL; f1 ---------------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/circle.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/circle.out --- /tmp/cirrus-ci-build/src/test/regress/expected/circle.out 2024-02-22 13:04:49.012002000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/circle.out 2024-02-22 13:08:03.034952000 +0000 @@ -16,24 +16,14 @@ -- bad values INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>'); ERROR: invalid input syntax for type circle: "<(-100,0),-100>" -LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>'); - ^ INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10'); ERROR: invalid input syntax for type circle: "<(100,200),10" -LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10'); - ^ INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10> x'); ERROR: invalid input syntax for type circle: "<(100,200),10> x" -LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10> x'); - ^ INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5'); ERROR: invalid input syntax for type circle: "1abc,3,5" -LINE 1: INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5'); - ^ INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)'); ERROR: invalid input syntax for type circle: "(3,(1,2),3)" -LINE 1: INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)'); - ^ SELECT * FROM CIRCLE_TBL; f1 ---------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/date.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/date.out --- /tmp/cirrus-ci-build/src/test/regress/expected/date.out 2024-02-22 13:04:49.012325000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/date.out 2024-02-22 13:08:03.380912000 +0000 @@ -11,8 +11,6 @@ INSERT INTO DATE_TBL VALUES ('1997-02-28'); INSERT INTO DATE_TBL VALUES ('1997-02-29'); ERROR: date/time field value out of range: "1997-02-29" -LINE 1: INSERT INTO DATE_TBL VALUES ('1997-02-29'); - ^ INSERT INTO DATE_TBL VALUES ('1997-03-01'); INSERT INTO DATE_TBL VALUES ('1997-03-02'); INSERT INTO DATE_TBL VALUES ('2000-04-01'); @@ -92,18 +90,12 @@ SELECT date '1/8/1999'; ERROR: date/time field value out of range: "1/8/1999" -LINE 1: SELECT date '1/8/1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1/18/1999'; ERROR: date/time field value out of range: "1/18/1999" -LINE 1: SELECT date '1/18/1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '18/1/1999'; ERROR: date/time field value out of range: "18/1/1999" -LINE 1: SELECT date '18/1/1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01/02/03'; date @@ -137,8 +129,6 @@ SELECT date 'January 8, 99 BC'; ERROR: date/time field value out of range: "January 8, 99 BC" -LINE 1: SELECT date 'January 8, 99 BC'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '99-Jan-08'; date @@ -154,8 +144,6 @@ SELECT date '08-Jan-99'; ERROR: date/time field value out of range: "08-Jan-99" -LINE 1: SELECT date '08-Jan-99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '08-Jan-1999'; date @@ -165,8 +153,6 @@ SELECT date 'Jan-08-99'; ERROR: date/time field value out of range: "Jan-08-99" -LINE 1: SELECT date 'Jan-08-99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date 'Jan-08-1999'; date @@ -176,12 +162,8 @@ SELECT date '99-08-Jan'; ERROR: invalid input syntax for type date: "99-08-Jan" -LINE 1: SELECT date '99-08-Jan'; - ^ SELECT date '1999-08-Jan'; ERROR: invalid input syntax for type date: "1999-08-Jan" -LINE 1: SELECT date '1999-08-Jan'; - ^ SELECT date '99 Jan 08'; date ------------ @@ -196,8 +178,6 @@ SELECT date '08 Jan 99'; ERROR: date/time field value out of range: "08 Jan 99" -LINE 1: SELECT date '08 Jan 99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '08 Jan 1999'; date @@ -207,8 +187,6 @@ SELECT date 'Jan 08 99'; ERROR: date/time field value out of range: "Jan 08 99" -LINE 1: SELECT date 'Jan 08 99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date 'Jan 08 1999'; date @@ -242,23 +220,15 @@ SELECT date '08-01-99'; ERROR: date/time field value out of range: "08-01-99" -LINE 1: SELECT date '08-01-99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '08-01-1999'; ERROR: date/time field value out of range: "08-01-1999" -LINE 1: SELECT date '08-01-1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01-08-99'; ERROR: date/time field value out of range: "01-08-99" -LINE 1: SELECT date '01-08-99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01-08-1999'; ERROR: date/time field value out of range: "01-08-1999" -LINE 1: SELECT date '01-08-1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '99-08-01'; date @@ -286,23 +256,15 @@ SELECT date '08 01 99'; ERROR: date/time field value out of range: "08 01 99" -LINE 1: SELECT date '08 01 99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '08 01 1999'; ERROR: date/time field value out of range: "08 01 1999" -LINE 1: SELECT date '08 01 1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01 08 99'; ERROR: date/time field value out of range: "01 08 99" -LINE 1: SELECT date '01 08 99'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01 08 1999'; ERROR: date/time field value out of range: "01 08 1999" -LINE 1: SELECT date '01 08 1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '99 08 01'; date @@ -343,8 +305,6 @@ SELECT date '1/18/1999'; ERROR: date/time field value out of range: "1/18/1999" -LINE 1: SELECT date '1/18/1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '18/1/1999'; date @@ -390,8 +350,6 @@ SELECT date '99-Jan-08'; ERROR: date/time field value out of range: "99-Jan-08" -LINE 1: SELECT date '99-Jan-08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-Jan-08'; date @@ -425,16 +383,10 @@ SELECT date '99-08-Jan'; ERROR: invalid input syntax for type date: "99-08-Jan" -LINE 1: SELECT date '99-08-Jan'; - ^ SELECT date '1999-08-Jan'; ERROR: invalid input syntax for type date: "1999-08-Jan" -LINE 1: SELECT date '1999-08-Jan'; - ^ SELECT date '99 Jan 08'; ERROR: date/time field value out of range: "99 Jan 08" -LINE 1: SELECT date '99 Jan 08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999 Jan 08'; date @@ -468,8 +420,6 @@ SELECT date '99 08 Jan'; ERROR: invalid input syntax for type date: "99 08 Jan" -LINE 1: SELECT date '99 08 Jan'; - ^ SELECT date '1999 08 Jan'; date ------------ @@ -478,8 +428,6 @@ SELECT date '99-01-08'; ERROR: date/time field value out of range: "99-01-08" -LINE 1: SELECT date '99-01-08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-01-08'; date @@ -513,8 +461,6 @@ SELECT date '99-08-01'; ERROR: date/time field value out of range: "99-08-01" -LINE 1: SELECT date '99-08-01'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-08-01'; date @@ -524,8 +470,6 @@ SELECT date '99 01 08'; ERROR: date/time field value out of range: "99 01 08" -LINE 1: SELECT date '99 01 08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999 01 08'; date @@ -559,8 +503,6 @@ SELECT date '99 08 01'; ERROR: date/time field value out of range: "99 08 01" -LINE 1: SELECT date '99 08 01'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999 08 01'; date @@ -601,8 +543,6 @@ SELECT date '18/1/1999'; ERROR: date/time field value out of range: "18/1/1999" -LINE 1: SELECT date '18/1/1999'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '01/02/03'; date @@ -642,8 +582,6 @@ SELECT date '99-Jan-08'; ERROR: date/time field value out of range: "99-Jan-08" -LINE 1: SELECT date '99-Jan-08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-Jan-08'; date @@ -677,16 +615,10 @@ SELECT date '99-08-Jan'; ERROR: invalid input syntax for type date: "99-08-Jan" -LINE 1: SELECT date '99-08-Jan'; - ^ SELECT date '1999-08-Jan'; ERROR: invalid input syntax for type date: "1999-08-Jan" -LINE 1: SELECT date '1999-08-Jan'; - ^ SELECT date '99 Jan 08'; ERROR: invalid input syntax for type date: "99 Jan 08" -LINE 1: SELECT date '99 Jan 08'; - ^ SELECT date '1999 Jan 08'; date ------------ @@ -719,8 +651,6 @@ SELECT date '99 08 Jan'; ERROR: invalid input syntax for type date: "99 08 Jan" -LINE 1: SELECT date '99 08 Jan'; - ^ SELECT date '1999 08 Jan'; date ------------ @@ -729,8 +659,6 @@ SELECT date '99-01-08'; ERROR: date/time field value out of range: "99-01-08" -LINE 1: SELECT date '99-01-08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-01-08'; date @@ -764,8 +692,6 @@ SELECT date '99-08-01'; ERROR: date/time field value out of range: "99-08-01" -LINE 1: SELECT date '99-08-01'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999-08-01'; date @@ -775,8 +701,6 @@ SELECT date '99 01 08'; ERROR: date/time field value out of range: "99 01 08" -LINE 1: SELECT date '99 01 08'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999 01 08'; date @@ -810,8 +734,6 @@ SELECT date '99 08 01'; ERROR: date/time field value out of range: "99 08 01" -LINE 1: SELECT date '99 08 01'; - ^ HINT: Perhaps you need a different "datestyle" setting. SELECT date '1999 08 01'; date @@ -828,8 +750,6 @@ SELECT date '4714-11-23 BC'; -- out of range ERROR: date out of range: "4714-11-23 BC" -LINE 1: SELECT date '4714-11-23 BC'; - ^ SELECT date '5874897-12-31'; date --------------- @@ -838,8 +758,6 @@ SELECT date '5874898-01-01'; -- out of range ERROR: date out of range: "5874898-01-01" -LINE 1: SELECT date '5874898-01-01'; - ^ -- Test non-error-throwing API SELECT pg_input_is_valid('now', 'date'); pg_input_is_valid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/time.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/time.out --- /tmp/cirrus-ci-build/src/test/regress/expected/time.out 2024-02-22 13:04:49.016883000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/time.out 2024-02-22 13:08:03.024272000 +0000 @@ -16,8 +16,6 @@ -- this should fail (the timezone offset is not known) INSERT INTO TIME_TBL VALUES ('15:36:39 America/New_York'); ERROR: invalid input syntax for type time: "15:36:39 America/New_York" -LINE 1: INSERT INTO TIME_TBL VALUES ('15:36:39 America/New_York'); - ^ SELECT f1 AS "Time" FROM TIME_TBL; Time ------------- @@ -100,20 +98,12 @@ SELECT '24:00:00.01'::time; -- not allowed ERROR: date/time field value out of range: "24:00:00.01" -LINE 1: SELECT '24:00:00.01'::time; - ^ SELECT '23:59:60.01'::time; -- not allowed ERROR: date/time field value out of range: "23:59:60.01" -LINE 1: SELECT '23:59:60.01'::time; - ^ SELECT '24:01:00'::time; -- not allowed ERROR: date/time field value out of range: "24:01:00" -LINE 1: SELECT '24:01:00'::time; - ^ SELECT '25:00:00'::time; -- not allowed ERROR: date/time field value out of range: "25:00:00" -LINE 1: SELECT '25:00:00'::time; - ^ -- Test non-error-throwing API SELECT pg_input_is_valid('12:00:00', 'time'); pg_input_is_valid @@ -155,8 +145,6 @@ -- where we do mixed-type arithmetic. - thomas 2000-12-02 SELECT f1 + time '00:01' AS "Illegal" FROM TIME_TBL; ERROR: operator is not unique: time without time zone + time without time zone -LINE 1: SELECT f1 + time '00:01' AS "Illegal" FROM TIME_TBL; - ^ HINT: Could not choose a best candidate operator. You might need to add explicit type casts. -- -- test EXTRACT diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/timetz.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timetz.out --- /tmp/cirrus-ci-build/src/test/regress/expected/timetz.out 2024-02-22 13:04:49.016980000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timetz.out 2024-02-22 13:08:03.251561000 +0000 @@ -17,18 +17,12 @@ -- this should fail (the timezone offset is not known) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 America/New_York'); ERROR: invalid input syntax for type time with time zone: "15:36:39 America/New_York" -LINE 1: INSERT INTO TIMETZ_TBL VALUES ('15:36:39 America/New_York'); - ^ -- this should fail (timezone not specified without a date) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 m2'); ERROR: invalid input syntax for type time with time zone: "15:36:39 m2" -LINE 1: INSERT INTO TIMETZ_TBL VALUES ('15:36:39 m2'); - ^ -- this should fail (dynamic timezone abbreviation without a date) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 MSK m2'); ERROR: invalid input syntax for type time with time zone: "15:36:39 MSK m2" -LINE 1: INSERT INTO TIMETZ_TBL VALUES ('15:36:39 MSK m2'); - ^ SELECT f1 AS "Time TZ" FROM TIMETZ_TBL; Time TZ ---------------- @@ -117,20 +111,12 @@ SELECT '24:00:00.01 PDT'::timetz; -- not allowed ERROR: date/time field value out of range: "24:00:00.01 PDT" -LINE 1: SELECT '24:00:00.01 PDT'::timetz; - ^ SELECT '23:59:60.01 PDT'::timetz; -- not allowed ERROR: date/time field value out of range: "23:59:60.01 PDT" -LINE 1: SELECT '23:59:60.01 PDT'::timetz; - ^ SELECT '24:01:00 PDT'::timetz; -- not allowed ERROR: date/time field value out of range: "24:01:00 PDT" -LINE 1: SELECT '24:01:00 PDT'::timetz; - ^ SELECT '25:00:00 PDT'::timetz; -- not allowed ERROR: date/time field value out of range: "25:00:00 PDT" -LINE 1: SELECT '25:00:00 PDT'::timetz; - ^ -- Test non-error-throwing API SELECT pg_input_is_valid('12:00:00 PDT', 'timetz'); pg_input_is_valid @@ -172,8 +158,6 @@ -- where we do mixed-type arithmetic. - thomas 2000-12-02 SELECT f1 + time with time zone '00:01' AS "Illegal" FROM TIMETZ_TBL; ERROR: operator does not exist: time with time zone + time with time zone -LINE 1: SELECT f1 + time with time zone '00:01' AS "Illegal" FROM TI... - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- -- test EXTRACT diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/timestamp.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timestamp.out --- /tmp/cirrus-ci-build/src/test/regress/expected/timestamp.out 2024-02-22 13:04:49.016917000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timestamp.out 2024-02-22 13:08:04.031452000 +0000 @@ -123,8 +123,6 @@ -- this fails (even though TZ is a no-op, we still look it up) INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/Does_not_exist'); ERROR: time zone "america/does_not_exist" not recognized -LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/D... - ^ -- Test non-error-throwing API SELECT pg_input_is_valid('now', 'timestamp'); pg_input_is_valid @@ -183,8 +181,6 @@ INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997'); ERROR: date/time field value out of range: "Feb 29 17:32:01 1997" -LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997'); - ^ INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1997'); @@ -195,12 +191,8 @@ -- Currently unsupported syntax and ranges INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097'); ERROR: time zone displacement out of range: "Feb 16 17:32:01 -0097" -LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097'); - ^ INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC'); ERROR: timestamp out of range: "Feb 16 17:32:01 5097 BC" -LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC')... - ^ SELECT d1 FROM TIMESTAMP_TBL; d1 ----------------------------- @@ -280,8 +272,6 @@ SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range ERROR: timestamp out of range: "4714-11-23 23:59:59 BC" -LINE 1: SELECT '4714-11-23 23:59:59 BC'::timestamp; - ^ SELECT '294276-12-31 23:59:59'::timestamp; timestamp ---------------------------- @@ -290,8 +280,6 @@ SELECT '294277-01-01 00:00:00'::timestamp; -- out of range ERROR: timestamp out of range: "294277-01-01 00:00:00" -LINE 1: SELECT '294277-01-01 00:00:00'::timestamp; - ^ -- Demonstrate functions and operators SELECT d1 FROM TIMESTAMP_TBL WHERE d1 > timestamp without time zone '1997-01-02'; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/timestamptz.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timestamptz.out --- /tmp/cirrus-ci-build/src/test/regress/expected/timestamptz.out 2024-02-22 13:04:49.016966000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/timestamptz.out 2024-02-22 13:08:04.462213000 +0000 @@ -147,8 +147,6 @@ INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America/Does_not_exist'); ERROR: time zone "america/does_not_exist" not recognized -LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America... - ^ SELECT '19970710 173201' AT TIME ZONE 'America/Does_not_exist'; ERROR: time zone "America/Does_not_exist" not recognized -- Daylight saving time for timestamps beyond 32-bit time_t range. @@ -234,8 +232,6 @@ INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 28 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1997'); ERROR: date/time field value out of range: "Feb 29 17:32:01 1997" -LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1997'); - ^ INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mar 01 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 30 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1997'); @@ -246,12 +242,8 @@ -- Currently unsupported syntax and ranges INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 -0097'); ERROR: time zone displacement out of range: "Feb 16 17:32:01 -0097" -LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 -0097')... - ^ INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 5097 BC'); ERROR: timestamp out of range: "Feb 16 17:32:01 5097 BC" -LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 5097 BC... - ^ -- Alternative field order that we've historically supported (sort of) -- with regular and POSIXy timezone specs SELECT 'Wed Jul 11 10:51:14 America/New_York 2001'::timestamptz; @@ -376,8 +368,6 @@ SELECT '4714-11-23 23:59:59+00 BC'::timestamptz; -- out of range ERROR: timestamp out of range: "4714-11-23 23:59:59+00 BC" -LINE 1: SELECT '4714-11-23 23:59:59+00 BC'::timestamptz; - ^ SELECT '294276-12-31 23:59:59+00'::timestamptz; timestamptz -------------------------------- @@ -392,12 +382,8 @@ SELECT '294277-01-01 00:00:00+00'::timestamptz; -- out of range ERROR: timestamp out of range: "294277-01-01 00:00:00+00" -LINE 1: SELECT '294277-01-01 00:00:00+00'::timestamptz; - ^ SELECT '294277-12-31 16:00:00-08'::timestamptz; -- out of range ERROR: timestamp out of range: "294277-12-31 16:00:00-08" -LINE 1: SELECT '294277-12-31 16:00:00-08'::timestamptz; - ^ -- Demonstrate functions and operators SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 > timestamp with time zone '1997-01-02'; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/interval.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/interval.out --- /tmp/cirrus-ci-build/src/test/regress/expected/interval.out 2024-02-22 13:04:49.014032000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/interval.out 2024-02-22 13:08:04.396501000 +0000 @@ -80,12 +80,8 @@ -- badly formatted interval INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval'); ERROR: invalid input syntax for type interval: "badly formatted interval" -LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted inter... - ^ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); ERROR: invalid input syntax for type interval: "@ 30 eons ago" -LINE 1: INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); - ^ -- Test non-error-throwing API SELECT pg_input_is_valid('1.5 weeks', 'interval'); pg_input_is_valid @@ -336,20 +332,12 @@ -- these should fail as out-of-range INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483648 days'); ERROR: interval field value out of range: "2147483648 days" -LINE 1: INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483648 days'); - ^ INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483649 days'); ERROR: interval field value out of range: "-2147483649 days" -LINE 1: INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483649 days')... - ^ INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483647 years'); ERROR: interval out of range -LINE 1: INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483647 years')... - ^ INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483648 years'); ERROR: interval out of range -LINE 1: INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483648 years'... - ^ -- Test edge-case overflow detection in interval multiplication select extract(epoch from '256 microseconds'::interval * (2^55)::float8); ERROR: interval out of range @@ -601,24 +589,14 @@ SELECT '1 second 2 seconds'::interval; -- error ERROR: invalid input syntax for type interval: "1 second 2 seconds" -LINE 1: SELECT '1 second 2 seconds'::interval; - ^ SELECT '10 milliseconds 20 milliseconds'::interval; -- error ERROR: invalid input syntax for type interval: "10 milliseconds 20 milliseconds" -LINE 1: SELECT '10 milliseconds 20 milliseconds'::interval; - ^ SELECT '5.5 seconds 3 milliseconds'::interval; -- error ERROR: invalid input syntax for type interval: "5.5 seconds 3 milliseconds" -LINE 1: SELECT '5.5 seconds 3 milliseconds'::interval; - ^ SELECT '1:20:05 5 microseconds'::interval; -- error ERROR: invalid input syntax for type interval: "1:20:05 5 microseconds" -LINE 1: SELECT '1:20:05 5 microseconds'::interval; - ^ SELECT '1 day 1 day'::interval; -- error ERROR: invalid input syntax for type interval: "1 day 1 day" -LINE 1: SELECT '1 day 1 day'::interval; - ^ SELECT interval '1-2'; -- SQL year-month literal interval --------------- @@ -724,8 +702,6 @@ SELECT interval '1 2' day to minute; ERROR: invalid input syntax for type interval: "1 2" -LINE 1: SELECT interval '1 2' day to minute; - ^ SELECT interval '1 2:03' day to minute; interval ---------------- @@ -740,8 +716,6 @@ SELECT interval '1 2' day to second; ERROR: invalid input syntax for type interval: "1 2" -LINE 1: SELECT interval '1 2' day to second; - ^ SELECT interval '1 2:03' day to second; interval ---------------- @@ -756,8 +730,6 @@ SELECT interval '1 2' hour to minute; ERROR: invalid input syntax for type interval: "1 2" -LINE 1: SELECT interval '1 2' hour to minute; - ^ SELECT interval '1 2:03' hour to minute; interval ---------------- @@ -772,8 +744,6 @@ SELECT interval '1 2' hour to second; ERROR: invalid input syntax for type interval: "1 2" -LINE 1: SELECT interval '1 2' hour to second; - ^ SELECT interval '1 2:03' hour to second; interval ---------------- @@ -788,8 +758,6 @@ SELECT interval '1 2' minute to second; ERROR: invalid input syntax for type interval: "1 2" -LINE 1: SELECT interval '1 2' minute to second; - ^ SELECT interval '1 2:03' minute to second; interval ---------------- @@ -834,16 +802,10 @@ SELECT interval '123 11' day; -- not ok ERROR: invalid input syntax for type interval: "123 11" -LINE 1: SELECT interval '123 11' day; - ^ SELECT interval '123 11'; -- not ok, too ambiguous ERROR: invalid input syntax for type interval: "123 11" -LINE 1: SELECT interval '123 11'; - ^ SELECT interval '123 2:03 -2:04'; -- not ok, redundant hh:mm fields ERROR: invalid input syntax for type interval: "123 2:03 -2:04" -LINE 1: SELECT interval '123 2:03 -2:04'; - ^ -- test syntaxes for restricted precision SELECT interval(0) '1 day 01:23:45.6789'; interval @@ -877,8 +839,6 @@ SELECT interval '1 2.345' day to second(2); ERROR: invalid input syntax for type interval: "1 2.345" -LINE 1: SELECT interval '1 2.345' day to second(2); - ^ SELECT interval '1 2:03' day to second(2); interval ---------------- @@ -899,8 +859,6 @@ SELECT interval '1 2.345' hour to second(2); ERROR: invalid input syntax for type interval: "1 2.345" -LINE 1: SELECT interval '1 2.345' hour to second(2); - ^ SELECT interval '1 2:03.45678' hour to second(2); interval ------------------- @@ -915,8 +873,6 @@ SELECT interval '1 2.3456' minute to second(2); ERROR: invalid input syntax for type interval: "1 2.3456" -LINE 1: SELECT interval '1 2.3456' minute to second(2); - ^ SELECT interval '1 2:03.5678' minute to second(2); interval ------------------- @@ -931,12 +887,8 @@ SELECT interval '2562047788:00:54.775807' second(2); -- out of range ERROR: interval out of range -LINE 1: SELECT interval '2562047788:00:54.775807' second(2); - ^ SELECT interval '-2562047788:00:54.775807' second(2); -- out of range ERROR: interval out of range -LINE 1: SELECT interval '-2562047788:00:54.775807' second(2); - ^ -- test casting to restricted precision (bug #14479) SELECT f1, f1::INTERVAL DAY TO MINUTE AS "minutes", (f1 + INTERVAL '1 month')::INTERVAL MONTH::INTERVAL YEAR AS "years" @@ -1014,8 +966,6 @@ -- edge case for sign-matching rules SELECT interval ''; -- error ERROR: invalid input syntax for type interval: "" -LINE 1: SELECT interval ''; - ^ -- test outputting iso8601 intervals SET IntervalStyle to iso_8601; select interval '0' AS "zero", @@ -1106,8 +1056,6 @@ select interval 'P.Y0M3DT4H5M6S'; -- error ERROR: invalid input syntax for type interval: "P.Y0M3DT4H5M6S" -LINE 1: select interval 'P.Y0M3DT4H5M6S'; - ^ -- test a couple rounding cases that changed since 8.3 w/ HAVE_INT64_TIMESTAMP. SET IntervalStyle to postgres_verbose; select interval '-10 mons -3 days +03:55:06.70'; @@ -1222,494 +1170,252 @@ -- overflow each date/time field select interval '2147483648 years'; ERROR: interval field value out of range: "2147483648 years" -LINE 1: select interval '2147483648 years'; - ^ select interval '-2147483649 years'; ERROR: interval field value out of range: "-2147483649 years" -LINE 1: select interval '-2147483649 years'; - ^ select interval '2147483648 months'; ERROR: interval field value out of range: "2147483648 months" -LINE 1: select interval '2147483648 months'; - ^ select interval '-2147483649 months'; ERROR: interval field value out of range: "-2147483649 months" -LINE 1: select interval '-2147483649 months'; - ^ select interval '2147483648 days'; ERROR: interval field value out of range: "2147483648 days" -LINE 1: select interval '2147483648 days'; - ^ select interval '-2147483649 days'; ERROR: interval field value out of range: "-2147483649 days" -LINE 1: select interval '-2147483649 days'; - ^ select interval '2562047789 hours'; ERROR: interval field value out of range: "2562047789 hours" -LINE 1: select interval '2562047789 hours'; - ^ select interval '-2562047789 hours'; ERROR: interval field value out of range: "-2562047789 hours" -LINE 1: select interval '-2562047789 hours'; - ^ select interval '153722867281 minutes'; ERROR: interval field value out of range: "153722867281 minutes" -LINE 1: select interval '153722867281 minutes'; - ^ select interval '-153722867281 minutes'; ERROR: interval field value out of range: "-153722867281 minutes" -LINE 1: select interval '-153722867281 minutes'; - ^ select interval '9223372036855 seconds'; ERROR: interval field value out of range: "9223372036855 seconds" -LINE 1: select interval '9223372036855 seconds'; - ^ select interval '-9223372036855 seconds'; ERROR: interval field value out of range: "-9223372036855 seconds" -LINE 1: select interval '-9223372036855 seconds'; - ^ select interval '9223372036854777 millisecond'; ERROR: interval field value out of range: "9223372036854777 millisecond" -LINE 1: select interval '9223372036854777 millisecond'; - ^ select interval '-9223372036854777 millisecond'; ERROR: interval field value out of range: "-9223372036854777 millisecond" -LINE 1: select interval '-9223372036854777 millisecond'; - ^ select interval '9223372036854775808 microsecond'; ERROR: interval field value out of range: "9223372036854775808 microsecond" -LINE 1: select interval '9223372036854775808 microsecond'; - ^ select interval '-9223372036854775809 microsecond'; ERROR: interval field value out of range: "-9223372036854775809 microsecond" -LINE 1: select interval '-9223372036854775809 microsecond'; - ^ select interval 'P2147483648'; ERROR: interval field value out of range: "P2147483648" -LINE 1: select interval 'P2147483648'; - ^ select interval 'P-2147483649'; ERROR: interval field value out of range: "P-2147483649" -LINE 1: select interval 'P-2147483649'; - ^ select interval 'P1-2147483647-2147483647'; ERROR: interval out of range -LINE 1: select interval 'P1-2147483647-2147483647'; - ^ select interval 'PT2562047789'; ERROR: interval field value out of range: "PT2562047789" -LINE 1: select interval 'PT2562047789'; - ^ select interval 'PT-2562047789'; ERROR: interval field value out of range: "PT-2562047789" -LINE 1: select interval 'PT-2562047789'; - ^ -- overflow with date/time unit aliases select interval '2147483647 weeks'; ERROR: interval field value out of range: "2147483647 weeks" -LINE 1: select interval '2147483647 weeks'; - ^ select interval '-2147483648 weeks'; ERROR: interval field value out of range: "-2147483648 weeks" -LINE 1: select interval '-2147483648 weeks'; - ^ select interval '2147483647 decades'; ERROR: interval field value out of range: "2147483647 decades" -LINE 1: select interval '2147483647 decades'; - ^ select interval '-2147483648 decades'; ERROR: interval field value out of range: "-2147483648 decades" -LINE 1: select interval '-2147483648 decades'; - ^ select interval '2147483647 centuries'; ERROR: interval field value out of range: "2147483647 centuries" -LINE 1: select interval '2147483647 centuries'; - ^ select interval '-2147483648 centuries'; ERROR: interval field value out of range: "-2147483648 centuries" -LINE 1: select interval '-2147483648 centuries'; - ^ select interval '2147483647 millennium'; ERROR: interval field value out of range: "2147483647 millennium" -LINE 1: select interval '2147483647 millennium'; - ^ select interval '-2147483648 millennium'; ERROR: interval field value out of range: "-2147483648 millennium" -LINE 1: select interval '-2147483648 millennium'; - ^ select interval '1 week 2147483647 days'; ERROR: interval field value out of range: "1 week 2147483647 days" -LINE 1: select interval '1 week 2147483647 days'; - ^ select interval '-1 week -2147483648 days'; ERROR: interval field value out of range: "-1 week -2147483648 days" -LINE 1: select interval '-1 week -2147483648 days'; - ^ select interval '2147483647 days 1 week'; ERROR: interval field value out of range: "2147483647 days 1 week" -LINE 1: select interval '2147483647 days 1 week'; - ^ select interval '-2147483648 days -1 week'; ERROR: interval field value out of range: "-2147483648 days -1 week" -LINE 1: select interval '-2147483648 days -1 week'; - ^ select interval 'P1W2147483647D'; ERROR: interval field value out of range: "P1W2147483647D" -LINE 1: select interval 'P1W2147483647D'; - ^ select interval 'P-1W-2147483648D'; ERROR: interval field value out of range: "P-1W-2147483648D" -LINE 1: select interval 'P-1W-2147483648D'; - ^ select interval 'P2147483647D1W'; ERROR: interval field value out of range: "P2147483647D1W" -LINE 1: select interval 'P2147483647D1W'; - ^ select interval 'P-2147483648D-1W'; ERROR: interval field value out of range: "P-2147483648D-1W" -LINE 1: select interval 'P-2147483648D-1W'; - ^ select interval '1 decade 2147483647 years'; ERROR: interval field value out of range: "1 decade 2147483647 years" -LINE 1: select interval '1 decade 2147483647 years'; - ^ select interval '1 century 2147483647 years'; ERROR: interval field value out of range: "1 century 2147483647 years" -LINE 1: select interval '1 century 2147483647 years'; - ^ select interval '1 millennium 2147483647 years'; ERROR: interval field value out of range: "1 millennium 2147483647 years" -LINE 1: select interval '1 millennium 2147483647 years'; - ^ select interval '-1 decade -2147483648 years'; ERROR: interval field value out of range: "-1 decade -2147483648 years" -LINE 1: select interval '-1 decade -2147483648 years'; - ^ select interval '-1 century -2147483648 years'; ERROR: interval field value out of range: "-1 century -2147483648 years" -LINE 1: select interval '-1 century -2147483648 years'; - ^ select interval '-1 millennium -2147483648 years'; ERROR: interval field value out of range: "-1 millennium -2147483648 years" -LINE 1: select interval '-1 millennium -2147483648 years'; - ^ select interval '2147483647 years 1 decade'; ERROR: interval field value out of range: "2147483647 years 1 decade" -LINE 1: select interval '2147483647 years 1 decade'; - ^ select interval '2147483647 years 1 century'; ERROR: interval field value out of range: "2147483647 years 1 century" -LINE 1: select interval '2147483647 years 1 century'; - ^ select interval '2147483647 years 1 millennium'; ERROR: interval field value out of range: "2147483647 years 1 millennium" -LINE 1: select interval '2147483647 years 1 millennium'; - ^ select interval '-2147483648 years -1 decade'; ERROR: interval field value out of range: "-2147483648 years -1 decade" -LINE 1: select interval '-2147483648 years -1 decade'; - ^ select interval '-2147483648 years -1 century'; ERROR: interval field value out of range: "-2147483648 years -1 century" -LINE 1: select interval '-2147483648 years -1 century'; - ^ select interval '-2147483648 years -1 millennium'; ERROR: interval field value out of range: "-2147483648 years -1 millennium" -LINE 1: select interval '-2147483648 years -1 millennium'; - ^ -- overflowing with fractional fields - postgres format select interval '0.1 millennium 2147483647 months'; ERROR: interval field value out of range: "0.1 millennium 2147483647 months" -LINE 1: select interval '0.1 millennium 2147483647 months'; - ^ select interval '0.1 centuries 2147483647 months'; ERROR: interval field value out of range: "0.1 centuries 2147483647 months" -LINE 1: select interval '0.1 centuries 2147483647 months'; - ^ select interval '0.1 decades 2147483647 months'; ERROR: interval field value out of range: "0.1 decades 2147483647 months" -LINE 1: select interval '0.1 decades 2147483647 months'; - ^ select interval '0.1 yrs 2147483647 months'; ERROR: interval field value out of range: "0.1 yrs 2147483647 months" -LINE 1: select interval '0.1 yrs 2147483647 months'; - ^ select interval '-0.1 millennium -2147483648 months'; ERROR: interval field value out of range: "-0.1 millennium -2147483648 months" -LINE 1: select interval '-0.1 millennium -2147483648 months'; - ^ select interval '-0.1 centuries -2147483648 months'; ERROR: interval field value out of range: "-0.1 centuries -2147483648 months" -LINE 1: select interval '-0.1 centuries -2147483648 months'; - ^ select interval '-0.1 decades -2147483648 months'; ERROR: interval field value out of range: "-0.1 decades -2147483648 months" -LINE 1: select interval '-0.1 decades -2147483648 months'; - ^ select interval '-0.1 yrs -2147483648 months'; ERROR: interval field value out of range: "-0.1 yrs -2147483648 months" -LINE 1: select interval '-0.1 yrs -2147483648 months'; - ^ select interval '2147483647 months 0.1 millennium'; ERROR: interval field value out of range: "2147483647 months 0.1 millennium" -LINE 1: select interval '2147483647 months 0.1 millennium'; - ^ select interval '2147483647 months 0.1 centuries'; ERROR: interval field value out of range: "2147483647 months 0.1 centuries" -LINE 1: select interval '2147483647 months 0.1 centuries'; - ^ select interval '2147483647 months 0.1 decades'; ERROR: interval field value out of range: "2147483647 months 0.1 decades" -LINE 1: select interval '2147483647 months 0.1 decades'; - ^ select interval '2147483647 months 0.1 yrs'; ERROR: interval field value out of range: "2147483647 months 0.1 yrs" -LINE 1: select interval '2147483647 months 0.1 yrs'; - ^ select interval '-2147483648 months -0.1 millennium'; ERROR: interval field value out of range: "-2147483648 months -0.1 millennium" -LINE 1: select interval '-2147483648 months -0.1 millennium'; - ^ select interval '-2147483648 months -0.1 centuries'; ERROR: interval field value out of range: "-2147483648 months -0.1 centuries" -LINE 1: select interval '-2147483648 months -0.1 centuries'; - ^ select interval '-2147483648 months -0.1 decades'; ERROR: interval field value out of range: "-2147483648 months -0.1 decades" -LINE 1: select interval '-2147483648 months -0.1 decades'; - ^ select interval '-2147483648 months -0.1 yrs'; ERROR: interval field value out of range: "-2147483648 months -0.1 yrs" -LINE 1: select interval '-2147483648 months -0.1 yrs'; - ^ select interval '0.1 months 2147483647 days'; ERROR: interval field value out of range: "0.1 months 2147483647 days" -LINE 1: select interval '0.1 months 2147483647 days'; - ^ select interval '-0.1 months -2147483648 days'; ERROR: interval field value out of range: "-0.1 months -2147483648 days" -LINE 1: select interval '-0.1 months -2147483648 days'; - ^ select interval '2147483647 days 0.1 months'; ERROR: interval field value out of range: "2147483647 days 0.1 months" -LINE 1: select interval '2147483647 days 0.1 months'; - ^ select interval '-2147483648 days -0.1 months'; ERROR: interval field value out of range: "-2147483648 days -0.1 months" -LINE 1: select interval '-2147483648 days -0.1 months'; - ^ select interval '0.5 weeks 2147483647 days'; ERROR: interval field value out of range: "0.5 weeks 2147483647 days" -LINE 1: select interval '0.5 weeks 2147483647 days'; - ^ select interval '-0.5 weeks -2147483648 days'; ERROR: interval field value out of range: "-0.5 weeks -2147483648 days" -LINE 1: select interval '-0.5 weeks -2147483648 days'; - ^ select interval '2147483647 days 0.5 weeks'; ERROR: interval field value out of range: "2147483647 days 0.5 weeks" -LINE 1: select interval '2147483647 days 0.5 weeks'; - ^ select interval '-2147483648 days -0.5 weeks'; ERROR: interval field value out of range: "-2147483648 days -0.5 weeks" -LINE 1: select interval '-2147483648 days -0.5 weeks'; - ^ select interval '0.01 months 9223372036854775807 microseconds'; ERROR: interval field value out of range: "0.01 months 9223372036854775807 microseconds" -LINE 1: select interval '0.01 months 9223372036854775807 microsecond... - ^ select interval '-0.01 months -9223372036854775808 microseconds'; ERROR: interval field value out of range: "-0.01 months -9223372036854775808 microseconds" -LINE 1: select interval '-0.01 months -9223372036854775808 microseco... - ^ select interval '9223372036854775807 microseconds 0.01 months'; ERROR: interval field value out of range: "9223372036854775807 microseconds 0.01 months" -LINE 1: select interval '9223372036854775807 microseconds 0.01 month... - ^ select interval '-9223372036854775808 microseconds -0.01 months'; ERROR: interval field value out of range: "-9223372036854775808 microseconds -0.01 months" -LINE 1: select interval '-9223372036854775808 microseconds -0.01 mon... - ^ select interval '0.1 weeks 9223372036854775807 microseconds'; ERROR: interval field value out of range: "0.1 weeks 9223372036854775807 microseconds" -LINE 1: select interval '0.1 weeks 9223372036854775807 microseconds'... - ^ select interval '-0.1 weeks -9223372036854775808 microseconds'; ERROR: interval field value out of range: "-0.1 weeks -9223372036854775808 microseconds" -LINE 1: select interval '-0.1 weeks -9223372036854775808 microsecond... - ^ select interval '9223372036854775807 microseconds 0.1 weeks'; ERROR: interval field value out of range: "9223372036854775807 microseconds 0.1 weeks" -LINE 1: select interval '9223372036854775807 microseconds 0.1 weeks'... - ^ select interval '-9223372036854775808 microseconds -0.1 weeks'; ERROR: interval field value out of range: "-9223372036854775808 microseconds -0.1 weeks" -LINE 1: select interval '-9223372036854775808 microseconds -0.1 week... - ^ select interval '0.1 days 9223372036854775807 microseconds'; ERROR: interval field value out of range: "0.1 days 9223372036854775807 microseconds" -LINE 1: select interval '0.1 days 9223372036854775807 microseconds'; - ^ select interval '-0.1 days -9223372036854775808 microseconds'; ERROR: interval field value out of range: "-0.1 days -9223372036854775808 microseconds" -LINE 1: select interval '-0.1 days -9223372036854775808 microseconds... - ^ select interval '9223372036854775807 microseconds 0.1 days'; ERROR: interval field value out of range: "9223372036854775807 microseconds 0.1 days" -LINE 1: select interval '9223372036854775807 microseconds 0.1 days'; - ^ select interval '-9223372036854775808 microseconds -0.1 days'; ERROR: interval field value out of range: "-9223372036854775808 microseconds -0.1 days" -LINE 1: select interval '-9223372036854775808 microseconds -0.1 days... - ^ -- overflowing with fractional fields - ISO8601 format select interval 'P0.1Y2147483647M'; ERROR: interval field value out of range: "P0.1Y2147483647M" -LINE 1: select interval 'P0.1Y2147483647M'; - ^ select interval 'P-0.1Y-2147483648M'; ERROR: interval field value out of range: "P-0.1Y-2147483648M" -LINE 1: select interval 'P-0.1Y-2147483648M'; - ^ select interval 'P2147483647M0.1Y'; ERROR: interval field value out of range: "P2147483647M0.1Y" -LINE 1: select interval 'P2147483647M0.1Y'; - ^ select interval 'P-2147483648M-0.1Y'; ERROR: interval field value out of range: "P-2147483648M-0.1Y" -LINE 1: select interval 'P-2147483648M-0.1Y'; - ^ select interval 'P0.1M2147483647D'; ERROR: interval field value out of range: "P0.1M2147483647D" -LINE 1: select interval 'P0.1M2147483647D'; - ^ select interval 'P-0.1M-2147483648D'; ERROR: interval field value out of range: "P-0.1M-2147483648D" -LINE 1: select interval 'P-0.1M-2147483648D'; - ^ select interval 'P2147483647D0.1M'; ERROR: interval field value out of range: "P2147483647D0.1M" -LINE 1: select interval 'P2147483647D0.1M'; - ^ select interval 'P-2147483648D-0.1M'; ERROR: interval field value out of range: "P-2147483648D-0.1M" -LINE 1: select interval 'P-2147483648D-0.1M'; - ^ select interval 'P0.5W2147483647D'; ERROR: interval field value out of range: "P0.5W2147483647D" -LINE 1: select interval 'P0.5W2147483647D'; - ^ select interval 'P-0.5W-2147483648D'; ERROR: interval field value out of range: "P-0.5W-2147483648D" -LINE 1: select interval 'P-0.5W-2147483648D'; - ^ select interval 'P2147483647D0.5W'; ERROR: interval field value out of range: "P2147483647D0.5W" -LINE 1: select interval 'P2147483647D0.5W'; - ^ select interval 'P-2147483648D-0.5W'; ERROR: interval field value out of range: "P-2147483648D-0.5W" -LINE 1: select interval 'P-2147483648D-0.5W'; - ^ select interval 'P0.01MT2562047788H54.775807S'; ERROR: interval field value out of range: "P0.01MT2562047788H54.775807S" -LINE 1: select interval 'P0.01MT2562047788H54.775807S'; - ^ select interval 'P-0.01MT-2562047788H-54.775808S'; ERROR: interval field value out of range: "P-0.01MT-2562047788H-54.775808S" -LINE 1: select interval 'P-0.01MT-2562047788H-54.775808S'; - ^ select interval 'P0.1DT2562047788H54.775807S'; ERROR: interval field value out of range: "P0.1DT2562047788H54.775807S" -LINE 1: select interval 'P0.1DT2562047788H54.775807S'; - ^ select interval 'P-0.1DT-2562047788H-54.775808S'; ERROR: interval field value out of range: "P-0.1DT-2562047788H-54.775808S" -LINE 1: select interval 'P-0.1DT-2562047788H-54.775808S'; - ^ select interval 'PT2562047788.1H54.775807S'; ERROR: interval field value out of range: "PT2562047788.1H54.775807S" -LINE 1: select interval 'PT2562047788.1H54.775807S'; - ^ select interval 'PT-2562047788.1H-54.775808S'; ERROR: interval field value out of range: "PT-2562047788.1H-54.775808S" -LINE 1: select interval 'PT-2562047788.1H-54.775808S'; - ^ select interval 'PT2562047788H0.1M54.775807S'; ERROR: interval field value out of range: "PT2562047788H0.1M54.775807S" -LINE 1: select interval 'PT2562047788H0.1M54.775807S'; - ^ select interval 'PT-2562047788H-0.1M-54.775808S'; ERROR: interval field value out of range: "PT-2562047788H-0.1M-54.775808S" -LINE 1: select interval 'PT-2562047788H-0.1M-54.775808S'; - ^ -- overflowing with fractional fields - ISO8601 alternative format select interval 'P0.1-2147483647-00'; ERROR: interval field value out of range: "P0.1-2147483647-00" -LINE 1: select interval 'P0.1-2147483647-00'; - ^ select interval 'P00-0.1-2147483647'; ERROR: interval field value out of range: "P00-0.1-2147483647" -LINE 1: select interval 'P00-0.1-2147483647'; - ^ select interval 'P00-0.01-00T2562047788:00:54.775807'; ERROR: interval field value out of range: "P00-0.01-00T2562047788:00:54.775807" -LINE 1: select interval 'P00-0.01-00T2562047788:00:54.775807'; - ^ select interval 'P00-00-0.1T2562047788:00:54.775807'; ERROR: interval field value out of range: "P00-00-0.1T2562047788:00:54.775807" -LINE 1: select interval 'P00-00-0.1T2562047788:00:54.775807'; - ^ select interval 'PT2562047788.1:00:54.775807'; ERROR: interval field value out of range: "PT2562047788.1:00:54.775807" -LINE 1: select interval 'PT2562047788.1:00:54.775807'; - ^ select interval 'PT2562047788:01.:54.775807'; ERROR: interval field value out of range: "PT2562047788:01.:54.775807" -LINE 1: select interval 'PT2562047788:01.:54.775807'; - ^ -- overflowing with fractional fields - SQL standard format select interval '0.1 2562047788:0:54.775807'; ERROR: interval field value out of range: "0.1 2562047788:0:54.775807" -LINE 1: select interval '0.1 2562047788:0:54.775807'; - ^ select interval '0.1 2562047788:0:54.775808 ago'; ERROR: interval field value out of range: "0.1 2562047788:0:54.775808 ago" -LINE 1: select interval '0.1 2562047788:0:54.775808 ago'; - ^ select interval '2562047788.1:0:54.775807'; ERROR: interval field value out of range: "2562047788.1:0:54.775807" -LINE 1: select interval '2562047788.1:0:54.775807'; - ^ select interval '2562047788.1:0:54.775808 ago'; ERROR: interval field value out of range: "2562047788.1:0:54.775808 ago" -LINE 1: select interval '2562047788.1:0:54.775808 ago'; - ^ select interval '2562047788:0.1:54.775807'; ERROR: invalid input syntax for type interval: "2562047788:0.1:54.775807" -LINE 1: select interval '2562047788:0.1:54.775807'; - ^ select interval '2562047788:0.1:54.775808 ago'; ERROR: invalid input syntax for type interval: "2562047788:0.1:54.775808 ago" -LINE 1: select interval '2562047788:0.1:54.775808 ago'; - ^ -- overflowing using AGO with INT_MIN select interval '-2147483648 months ago'; ERROR: interval field value out of range: "-2147483648 months ago" -LINE 1: select interval '-2147483648 months ago'; - ^ select interval '-2147483648 days ago'; ERROR: interval field value out of range: "-2147483648 days ago" -LINE 1: select interval '-2147483648 days ago'; - ^ select interval '-9223372036854775808 microseconds ago'; ERROR: interval field value out of range: "-9223372036854775808 microseconds ago" -LINE 1: select interval '-9223372036854775808 microseconds ago'; - ^ select interval '-2147483648 months -2147483648 days -9223372036854775808 microseconds ago'; ERROR: interval field value out of range: "-2147483648 months -2147483648 days -9223372036854775808 microseconds ago" -LINE 1: select interval '-2147483648 months -2147483648 days -922337... - ^ -- overflowing using make_interval select make_interval(years := 178956971); ERROR: interval out of range @@ -2230,57 +1936,31 @@ -- "ago" can only appear once at the end of an interval. SELECT INTERVAL '42 days 2 seconds ago ago'; ERROR: invalid input syntax for type interval: "42 days 2 seconds ago ago" -LINE 1: SELECT INTERVAL '42 days 2 seconds ago ago'; - ^ SELECT INTERVAL '2 minutes ago 5 days'; ERROR: invalid input syntax for type interval: "2 minutes ago 5 days" -LINE 1: SELECT INTERVAL '2 minutes ago 5 days'; - ^ -- consecutive and dangling units are not allowed. SELECT INTERVAL 'hour 5 months'; ERROR: invalid input syntax for type interval: "hour 5 months" -LINE 1: SELECT INTERVAL 'hour 5 months'; - ^ SELECT INTERVAL '1 year months days 5 hours'; ERROR: invalid input syntax for type interval: "1 year months days 5 hours" -LINE 1: SELECT INTERVAL '1 year months days 5 hours'; - ^ -- unacceptable reserved words in interval. Only "infinity", "+infinity" and -- "-infinity" are allowed. SELECT INTERVAL 'now'; ERROR: invalid input syntax for type interval: "now" -LINE 1: SELECT INTERVAL 'now'; - ^ SELECT INTERVAL 'today'; ERROR: invalid input syntax for type interval: "today" -LINE 1: SELECT INTERVAL 'today'; - ^ SELECT INTERVAL 'tomorrow'; ERROR: invalid input syntax for type interval: "tomorrow" -LINE 1: SELECT INTERVAL 'tomorrow'; - ^ SELECT INTERVAL 'allballs'; ERROR: invalid input syntax for type interval: "allballs" -LINE 1: SELECT INTERVAL 'allballs'; - ^ SELECT INTERVAL 'epoch'; ERROR: invalid input syntax for type interval: "epoch" -LINE 1: SELECT INTERVAL 'epoch'; - ^ SELECT INTERVAL 'yesterday'; ERROR: invalid input syntax for type interval: "yesterday" -LINE 1: SELECT INTERVAL 'yesterday'; - ^ -- infinity specification should be the only thing SELECT INTERVAL 'infinity years'; ERROR: invalid input syntax for type interval: "infinity years" -LINE 1: SELECT INTERVAL 'infinity years'; - ^ SELECT INTERVAL 'infinity ago'; ERROR: invalid input syntax for type interval: "infinity ago" -LINE 1: SELECT INTERVAL 'infinity ago'; - ^ SELECT INTERVAL '+infinity -infinity'; ERROR: invalid input syntax for type interval: "+infinity -infinity" -LINE 1: SELECT INTERVAL '+infinity -infinity'; - ^ diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/inet.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/inet.out --- /tmp/cirrus-ci-build/src/test/regress/expected/inet.out 2024-02-22 13:04:49.013656000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/inet.out 2024-02-22 13:08:04.251063000 +0000 @@ -25,23 +25,15 @@ -- check that CIDR rejects invalid input: INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.168.1.226'); ERROR: invalid cidr value: "192.168.1.2/30" -LINE 1: INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.1... - ^ DETAIL: Value has bits set to right of mask. INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1.2.3.4'); ERROR: invalid input syntax for type cidr: "1234::1234::1234" -LINE 1: INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1... - ^ -- check that CIDR rejects invalid input when converting from text: INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226'); ERROR: invalid cidr value: "192.168.1.2/30" -LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), ... - ^ DETAIL: Value has bits set to right of mask. INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226'); ERROR: invalid cidr value: "ffff:ffff:ffff:ffff::/24" -LINE 1: INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:fff... - ^ DETAIL: Value has bits set to right of mask. SELECT c AS cidr, i AS inet FROM INET_TBL; cidr | inet diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/macaddr.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/macaddr.out --- /tmp/cirrus-ci-build/src/test/regress/expected/macaddr.out 2024-02-22 13:04:49.014496000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/macaddr.out 2024-02-22 13:08:03.204046000 +0000 @@ -11,12 +11,8 @@ INSERT INTO macaddr_data VALUES (7, '08002b010203'); INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid ERROR: invalid input syntax for type macaddr: "0800:2b01:0203" -LINE 1: INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); - ^ INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid ERROR: invalid input syntax for type macaddr: "not even close" -LINE 1: INSERT INTO macaddr_data VALUES (9, 'not even close'); - ^ INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04'); INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02'); INSERT INTO macaddr_data VALUES (12, '08:00:2a:01:02:03'); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/macaddr8.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/macaddr8.out --- /tmp/cirrus-ci-build/src/test/regress/expected/macaddr8.out 2024-02-22 13:04:49.014508000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/macaddr8.out 2024-02-22 13:08:03.591887000 +0000 @@ -41,60 +41,32 @@ SELECT '123 08:00:2b:01:02:03'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03" -LINE 1: SELECT '123 08:00:2b:01:02:03'::macaddr8; - ^ SELECT '08:00:2b:01:02:03 123'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03 123" -LINE 1: SELECT '08:00:2b:01:02:03 123'::macaddr8; - ^ SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03:04:05" -LINE 1: SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; - ^ SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05 123" -LINE 1: SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; - ^ SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05:06:07" -LINE 1: SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; - ^ SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08-00-2b-01-02-03-04-05-06-07" -LINE 1: SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; - ^ SELECT '08002b:01020304050607'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08002b:01020304050607" -LINE 1: SELECT '08002b:01020304050607'::macaddr8; - ^ SELECT '08002b01020304050607'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08002b01020304050607" -LINE 1: SELECT '08002b01020304050607'::macaddr8; - ^ SELECT '0z002b0102030405'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "0z002b0102030405" -LINE 1: SELECT '0z002b0102030405'::macaddr8; - ^ SELECT '08002b010203xyza'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08002b010203xyza" -LINE 1: SELECT '08002b010203xyza'::macaddr8; - ^ SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05" -LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8; - ^ SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05" -LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8; - ^ SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05" -LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8; - ^ SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05" -LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8; - ^ -- test converting a MAC address to modified EUI-64 for inclusion -- in an ipv6 address SELECT macaddr8_set7bit('00:08:2b:01:02:03'::macaddr8); @@ -114,8 +86,6 @@ INSERT INTO macaddr8_data VALUES (8, '0800:2b01:0203'); INSERT INTO macaddr8_data VALUES (9, 'not even close'); -- invalid ERROR: invalid input syntax for type macaddr8: "not even close" -LINE 1: INSERT INTO macaddr8_data VALUES (9, 'not even close'); - ^ INSERT INTO macaddr8_data VALUES (10, '08:00:2b:01:02:04'); INSERT INTO macaddr8_data VALUES (11, '08:00:2b:01:02:02'); INSERT INTO macaddr8_data VALUES (12, '08:00:2a:01:02:03'); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/multirangetypes.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/multirangetypes.out --- /tmp/cirrus-ci-build/src/test/regress/expected/multirangetypes.out 2024-02-22 13:04:49.014686000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/multirangetypes.out 2024-02-22 13:08:04.799936000 +0000 @@ -5,73 +5,45 @@ -- negative tests; should fail select ''::textmultirange; ERROR: malformed multirange literal: "" -LINE 1: select ''::textmultirange; - ^ DETAIL: Missing left brace. select '{,}'::textmultirange; ERROR: malformed multirange literal: "{,}" -LINE 1: select '{,}'::textmultirange; - ^ DETAIL: Expected range start. select '{(,)}.'::textmultirange; ERROR: malformed multirange literal: "{(,)}." -LINE 1: select '{(,)}.'::textmultirange; - ^ DETAIL: Junk after closing right brace. select '{[a,c),}'::textmultirange; ERROR: malformed multirange literal: "{[a,c),}" -LINE 1: select '{[a,c),}'::textmultirange; - ^ DETAIL: Expected range start. select '{,[a,c)}'::textmultirange; ERROR: malformed multirange literal: "{,[a,c)}" -LINE 1: select '{,[a,c)}'::textmultirange; - ^ DETAIL: Expected range start. select '{-[a,z)}'::textmultirange; ERROR: malformed multirange literal: "{-[a,z)}" -LINE 1: select '{-[a,z)}'::textmultirange; - ^ DETAIL: Expected range start. select '{[a,z) - }'::textmultirange; ERROR: malformed multirange literal: "{[a,z) - }" -LINE 1: select '{[a,z) - }'::textmultirange; - ^ DETAIL: Expected comma or end of multirange. select '{(",a)}'::textmultirange; ERROR: malformed multirange literal: "{(",a)}" -LINE 1: select '{(",a)}'::textmultirange; - ^ DETAIL: Unexpected end of input. select '{(,,a)}'::textmultirange; ERROR: malformed range literal: "(,,a)" -LINE 1: select '{(,,a)}'::textmultirange; - ^ DETAIL: Too many commas. select '{(),a)}'::textmultirange; ERROR: malformed range literal: "()" -LINE 1: select '{(),a)}'::textmultirange; - ^ DETAIL: Missing comma after lower bound. select '{(a,))}'::textmultirange; ERROR: malformed multirange literal: "{(a,))}" -LINE 1: select '{(a,))}'::textmultirange; - ^ DETAIL: Expected comma or end of multirange. select '{(],a)}'::textmultirange; ERROR: malformed range literal: "(]" -LINE 1: select '{(],a)}'::textmultirange; - ^ DETAIL: Missing comma after lower bound. select '{(a,])}'::textmultirange; ERROR: malformed multirange literal: "{(a,])}" -LINE 1: select '{(a,])}'::textmultirange; - ^ DETAIL: Expected comma or end of multirange. select '{[z,a]}'::textmultirange; ERROR: range lower bound must be less than or equal to range upper bound -LINE 1: select '{[z,a]}'::textmultirange; - ^ -- should succeed select '{}'::textmultirange; textmultirange @@ -3094,8 +3066,6 @@ create type textrange2 as range(subtype=text, multirange_type_name=_textrange1, collation="C"); select multirange_of_text(textrange2('a','Z')); -- should fail ERROR: function multirange_of_text(textrange2) does not exist -LINE 1: select multirange_of_text(textrange2('a','Z')); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select multirange_of_text(textrange1('a','Z')) @> 'b'::text; ERROR: range lower bound must be less than or equal to range upper bound @@ -3158,8 +3128,6 @@ -- should fail select anyarray_anymultirange_func(ARRAY[1,2], nummultirange(numrange(10,20))); ERROR: function anyarray_anymultirange_func(integer[], nummultirange) does not exist -LINE 1: select anyarray_anymultirange_func(ARRAY[1,2], nummultirange... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyarray_anymultirange_func(anyarray, anymultirange); -- should fail @@ -3197,8 +3165,6 @@ select multirangetypes_sql(nummultirange(numrange(1,10)), ARRAY[2,20]); -- match failure ERROR: function multirangetypes_sql(nummultirange, integer[]) does not exist -LINE 1: select multirangetypes_sql(nummultirange(numrange(1,10)), AR... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. create function anycompatiblearray_anycompatiblemultirange_func(a anycompatiblearray, mr anycompatiblemultirange) returns anycompatible as 'select $1[1] + lower($2);' language sql; @@ -3217,8 +3183,6 @@ -- should fail select anycompatiblearray_anycompatiblemultirange_func(ARRAY[1.1,2], multirange(int4range(10,20))); ERROR: function anycompatiblearray_anycompatiblemultirange_func(numeric[], int4multirange) does not exist -LINE 1: select anycompatiblearray_anycompatiblemultirange_func(ARRAY... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anycompatiblearray_anycompatiblemultirange_func(anycompatiblearray, anycompatiblemultirange); create function anycompatiblerange_anycompatiblemultirange_func(r anycompatiblerange, mr anycompatiblemultirange) @@ -3232,8 +3196,6 @@ -- should fail select anycompatiblerange_anycompatiblemultirange_func(numrange(1,2), multirange(int4range(10,20))); ERROR: function anycompatiblerange_anycompatiblemultirange_func(numrange, int4multirange) does not exist -LINE 1: select anycompatiblerange_anycompatiblemultirange_func(numra... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anycompatiblerange_anycompatiblemultirange_func(anycompatiblerange, anycompatiblemultirange); -- should fail diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/geometry.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/geometry.out --- /tmp/cirrus-ci-build/src/test/regress/expected/geometry.out 2024-02-22 13:04:49.013316000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/geometry.out 2024-02-22 13:08:05.586888000 +0000 @@ -1775,8 +1775,6 @@ SELECT p.f1, l.s, l.s # p.f1 AS intersection FROM LSEG_TBL l, POINT_TBL p; ERROR: operator does not exist: lseg # point -LINE 1: SELECT p.f1, l.s, l.s # p.f1 AS intersection - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- Length SELECT s, @-@ s FROM LSEG_TBL; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/horology.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/horology.out --- /tmp/cirrus-ci-build/src/test/regress/expected/horology.out 2024-02-22 13:04:49.013497000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/horology.out 2024-02-22 13:08:05.531576000 +0000 @@ -98,8 +98,6 @@ -- should fail in mdy mode: SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'; ERROR: date/time field value out of range: "27/12/2001 04:05:06.789-08" -LINE 1: SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'... - ^ HINT: Perhaps you need a different "datestyle" setting. set datestyle to dmy; SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'; @@ -260,8 +258,6 @@ -- time with time zone should accept a date for DST resolution purposes SELECT time with time zone 'T040506.789 America/Los_Angeles'; ERROR: invalid input syntax for type time with time zone: "T040506.789 America/Los_Angeles" -LINE 1: SELECT time with time zone 'T040506.789 America/Los_Angeles'... - ^ SELECT time with time zone '2001-12-27 T040506.789 America/Los_Angeles'; timetz ----------------- @@ -291,107 +287,57 @@ -- test error on dangling Julian units SELECT date '1995-08-06 J J J'; ERROR: invalid input syntax for type date: "1995-08-06 J J J" -LINE 1: SELECT date '1995-08-06 J J J'; - ^ SELECT date 'J J 1520447'; ERROR: invalid input syntax for type date: "J J 1520447" -LINE 1: SELECT date 'J J 1520447'; - ^ -- We used to accept this input style, but it was based on a misreading -- of ISO8601, and it was never documented anyway SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789+08'; ERROR: invalid input syntax for type timestamp with time zone: "Y2001M12D27H04M05S06.789+08" -LINE 1: SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789+08... - ^ SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789-08'; ERROR: invalid input syntax for type timestamp with time zone: "Y2001M12D27H04MM05S06.789-08" -LINE 1: SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789-0... - ^ -- conflicting fields should throw errors SELECT date '1995-08-06 epoch'; ERROR: invalid input syntax for type date: "1995-08-06 epoch" -LINE 1: SELECT date '1995-08-06 epoch'; - ^ SELECT date '1995-08-06 infinity'; ERROR: invalid input syntax for type date: "1995-08-06 infinity" -LINE 1: SELECT date '1995-08-06 infinity'; - ^ SELECT date '1995-08-06 -infinity'; ERROR: invalid input syntax for type date: "1995-08-06 -infinity" -LINE 1: SELECT date '1995-08-06 -infinity'; - ^ SELECT date 'today infinity'; ERROR: invalid input syntax for type date: "today infinity" -LINE 1: SELECT date 'today infinity'; - ^ SELECT date '-infinity infinity'; ERROR: invalid input syntax for type date: "-infinity infinity" -LINE 1: SELECT date '-infinity infinity'; - ^ SELECT timestamp '1995-08-06 epoch'; ERROR: invalid input syntax for type timestamp: "1995-08-06 epoch" -LINE 1: SELECT timestamp '1995-08-06 epoch'; - ^ SELECT timestamp '1995-08-06 infinity'; ERROR: invalid input syntax for type timestamp: "1995-08-06 infinity" -LINE 1: SELECT timestamp '1995-08-06 infinity'; - ^ SELECT timestamp '1995-08-06 -infinity'; ERROR: invalid input syntax for type timestamp: "1995-08-06 -infinity" -LINE 1: SELECT timestamp '1995-08-06 -infinity'; - ^ SELECT timestamp 'epoch 01:01:01'; ERROR: invalid input syntax for type timestamp: "epoch 01:01:01" -LINE 1: SELECT timestamp 'epoch 01:01:01'; - ^ SELECT timestamp 'infinity 01:01:01'; ERROR: invalid input syntax for type timestamp: "infinity 01:01:01" -LINE 1: SELECT timestamp 'infinity 01:01:01'; - ^ SELECT timestamp '-infinity 01:01:01'; ERROR: invalid input syntax for type timestamp: "-infinity 01:01:01" -LINE 1: SELECT timestamp '-infinity 01:01:01'; - ^ SELECT timestamp 'now epoch'; ERROR: invalid input syntax for type timestamp: "now epoch" -LINE 1: SELECT timestamp 'now epoch'; - ^ SELECT timestamp '-infinity infinity'; ERROR: invalid input syntax for type timestamp: "-infinity infinity" -LINE 1: SELECT timestamp '-infinity infinity'; - ^ SELECT timestamptz '1995-08-06 epoch'; ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 epoch" -LINE 1: SELECT timestamptz '1995-08-06 epoch'; - ^ SELECT timestamptz '1995-08-06 infinity'; ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 infinity" -LINE 1: SELECT timestamptz '1995-08-06 infinity'; - ^ SELECT timestamptz '1995-08-06 -infinity'; ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 -infinity" -LINE 1: SELECT timestamptz '1995-08-06 -infinity'; - ^ SELECT timestamptz 'epoch 01:01:01'; ERROR: invalid input syntax for type timestamp with time zone: "epoch 01:01:01" -LINE 1: SELECT timestamptz 'epoch 01:01:01'; - ^ SELECT timestamptz 'infinity 01:01:01'; ERROR: invalid input syntax for type timestamp with time zone: "infinity 01:01:01" -LINE 1: SELECT timestamptz 'infinity 01:01:01'; - ^ SELECT timestamptz '-infinity 01:01:01'; ERROR: invalid input syntax for type timestamp with time zone: "-infinity 01:01:01" -LINE 1: SELECT timestamptz '-infinity 01:01:01'; - ^ SELECT timestamptz 'now epoch'; ERROR: invalid input syntax for type timestamp with time zone: "now epoch" -LINE 1: SELECT timestamptz 'now epoch'; - ^ SELECT timestamptz '-infinity infinity'; ERROR: invalid input syntax for type timestamp with time zone: "-infinity infinity" -LINE 1: SELECT timestamptz '-infinity infinity'; - ^ -- -- date, time arithmetic -- @@ -434,8 +380,6 @@ SELECT date '1991-02-03' - time with time zone '04:05:06 UTC' AS "Subtract Time UTC"; ERROR: operator does not exist: date - time with time zone -LINE 1: SELECT date '1991-02-03' - time with time zone '04:05:06 UTC... - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- -- timestamp, interval arithmetic @@ -1023,12 +967,8 @@ SELECT CAST(time with time zone '01:02-08' AS interval) AS "+00:01"; ERROR: cannot cast type time with time zone to interval -LINE 1: SELECT CAST(time with time zone '01:02-08' AS interval) AS "... - ^ SELECT CAST(interval '02:03' AS time with time zone) AS "02:03:00-08"; ERROR: cannot cast type interval to time with time zone -LINE 1: SELECT CAST(interval '02:03' AS time with time zone) AS "02:... - ^ SELECT time with time zone '01:30-08' - interval '02:01' AS "23:29:00-08"; 23:29:00-08 ------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/tstypes.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tstypes.out --- /tmp/cirrus-ci-build/src/test/regress/expected/tstypes.out 2024-02-22 13:04:49.017177000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tstypes.out 2024-02-22 13:08:05.150807000 +0000 @@ -87,8 +87,6 @@ SELECT $$'' '1' '2'$$::tsvector; -- error, empty lexeme is not allowed ERROR: syntax error in tsvector: "'' '1' '2'" -LINE 1: SELECT $$'' '1' '2'$$::tsvector; - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('foo', 'tsvector'); pg_input_is_valid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/expressions.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/expressions.out --- /tmp/cirrus-ci-build/src/test/regress/expected/expressions.out 2024-02-22 13:04:49.012975000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/expressions.out 2024-02-22 13:08:05.541596000 +0000 @@ -216,8 +216,6 @@ -- an = operator, not about cast failure. select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); ERROR: operator does not exist: point = box -LINE 1: select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- -- Tests for ScalarArrayOpExpr with a hashfn diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/xid.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/xid.out --- /tmp/cirrus-ci-build/src/test/regress/expected/xid.out 2024-02-22 13:04:49.017736000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/xid.out 2024-02-22 13:08:05.527781000 +0000 @@ -16,20 +16,12 @@ -- garbage values select ''::xid; ERROR: invalid input syntax for type xid: "" -LINE 1: select ''::xid; - ^ select 'asdf'::xid; ERROR: invalid input syntax for type xid: "asdf" -LINE 1: select 'asdf'::xid; - ^ select ''::xid8; ERROR: invalid input syntax for type xid8: "" -LINE 1: select ''::xid8; - ^ select 'asdf'::xid8; ERROR: invalid input syntax for type xid8: "asdf" -LINE 1: select 'asdf'::xid8; - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('42', 'xid'); pg_input_is_valid @@ -108,23 +100,15 @@ -- we don't want relational operators for xid, due to use of modular arithmetic select '1'::xid < '2'::xid; ERROR: operator does not exist: xid < xid -LINE 1: select '1'::xid < '2'::xid; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. select '1'::xid <= '2'::xid; ERROR: operator does not exist: xid <= xid -LINE 1: select '1'::xid <= '2'::xid; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. select '1'::xid > '2'::xid; ERROR: operator does not exist: xid > xid -LINE 1: select '1'::xid > '2'::xid; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. select '1'::xid >= '2'::xid; ERROR: operator does not exist: xid >= xid -LINE 1: select '1'::xid >= '2'::xid; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- we want them for xid8 though select '1'::xid8 < '2'::xid8, '2'::xid8 < '2'::xid8, '2'::xid8 < '1'::xid8; @@ -196,20 +180,12 @@ -- errors select '31:12:'::pg_snapshot; ERROR: invalid input syntax for type pg_snapshot: "31:12:" -LINE 1: select '31:12:'::pg_snapshot; - ^ select '0:1:'::pg_snapshot; ERROR: invalid input syntax for type pg_snapshot: "0:1:" -LINE 1: select '0:1:'::pg_snapshot; - ^ select '12:13:0'::pg_snapshot; ERROR: invalid input syntax for type pg_snapshot: "12:13:0" -LINE 1: select '12:13:0'::pg_snapshot; - ^ select '12:16:14,13'::pg_snapshot; ERROR: invalid input syntax for type pg_snapshot: "12:16:14,13" -LINE 1: select '12:16:14,13'::pg_snapshot; - ^ -- also try it with non-error-throwing API select pg_input_is_valid('12:13:', 'pg_snapshot'); pg_input_is_valid @@ -442,8 +418,6 @@ SELECT pg_snapshot '1:9223372036854775808:3'; ERROR: invalid input syntax for type pg_snapshot: "1:9223372036854775808:3" -LINE 1: SELECT pg_snapshot '1:9223372036854775808:3'; - ^ -- test pg_current_xact_id_if_assigned BEGIN; SELECT pg_current_xact_id_if_assigned() IS NULL; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/insert.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/insert.out --- /tmp/cirrus-ci-build/src/test/regress/expected/insert.out 2024-02-22 13:04:49.013909000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/insert.out 2024-02-22 13:08:06.402218000 +0000 @@ -23,20 +23,12 @@ -- insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT); ERROR: INSERT has more target columns than expressions -LINE 1: insert into inserttest (col1, col2, col3) values (DEFAULT, D... - ^ insert into inserttest (col1, col2, col3) values (1, 2); ERROR: INSERT has more target columns than expressions -LINE 1: insert into inserttest (col1, col2, col3) values (1, 2); - ^ insert into inserttest (col1) values (1, 2); ERROR: INSERT has more expressions than target columns -LINE 1: insert into inserttest (col1) values (1, 2); - ^ insert into inserttest (col1) values (DEFAULT, DEFAULT); ERROR: INSERT has more expressions than target columns -LINE 1: insert into inserttest (col1) values (DEFAULT, DEFAULT); - ^ select * from inserttest; col1 | col2 | col3 ------+------+--------- @@ -115,15 +107,11 @@ insert into inserttest (f2[1], f2[2]) select 7,8; insert into inserttest (f2[1], f2[2]) values (1,default); -- not supported ERROR: cannot set an array element to DEFAULT -LINE 1: insert into inserttest (f2[1], f2[2]) values (1,default); - ^ insert into inserttest (f3.if1, f3.if2) values (1,array['foo']); insert into inserttest (f3.if1, f3.if2) values (1,'{foo}'), (2,'{bar}'); insert into inserttest (f3.if1, f3.if2) select 3, '{baz,quux}'; insert into inserttest (f3.if1, f3.if2) values (1,default); -- not supported ERROR: cannot set a subfield to DEFAULT -LINE 1: insert into inserttest (f3.if1, f3.if2) values (1,default); - ^ insert into inserttest (f3.if2[1], f3.if2[2]) values ('foo', 'bar'); insert into inserttest (f3.if2[1], f3.if2[2]) values ('foo', 'bar'), ('baz', 'quux'); insert into inserttest (f3.if2[1], f3.if2[2]) select 'bear', 'beer'; @@ -714,16 +702,10 @@ create table mcrparted (a int, b int, c int) partition by range (a, abs(b), c); create table mcrparted0 partition of mcrparted for values from (minvalue, 0, 0) to (1, maxvalue, maxvalue); ERROR: every bound following MINVALUE must also be MINVALUE -LINE 1: ...partition of mcrparted for values from (minvalue, 0, 0) to (... - ^ create table mcrparted2 partition of mcrparted for values from (10, 6, minvalue) to (10, maxvalue, minvalue); ERROR: every bound following MAXVALUE must also be MAXVALUE -LINE 1: ...r values from (10, 6, minvalue) to (10, maxvalue, minvalue); - ^ create table mcrparted4 partition of mcrparted for values from (21, minvalue, 0) to (30, 20, minvalue); ERROR: every bound following MINVALUE must also be MINVALUE -LINE 1: ...ition of mcrparted for values from (21, minvalue, 0) to (30,... - ^ -- check multi-column range partitioning expression enforces the same -- constraint as what tuple-routing would determine it to be create table mcrparted0 partition of mcrparted for values from (minvalue, minvalue, minvalue) to (1, maxvalue, maxvalue); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/insert_conflict.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/insert_conflict.out --- /tmp/cirrus-ci-build/src/test/regress/expected/insert_conflict.out 2024-02-22 13:04:49.013932000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/insert_conflict.out 2024-02-22 13:08:05.994244000 +0000 @@ -226,8 +226,6 @@ -- Fails (no unique index inference specification, required for do update variant): insert into insertconflicttest values (1, 'Apple') on conflict do update set fruit = excluded.fruit; ERROR: ON CONFLICT DO UPDATE requires inference specification or constraint name -LINE 1: ...nsert into insertconflicttest values (1, 'Apple') on conflic... - ^ HINT: For example, ON CONFLICT (column_name). -- inference succeeds: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruit; @@ -240,20 +238,14 @@ -- RETURNING: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruit RETURNING excluded.fruit; ERROR: invalid reference to FROM-clause entry for table "excluded" -LINE 1: ...y) do update set fruit = excluded.fruit RETURNING excluded.f... - ^ DETAIL: There is an entry for table "excluded", but it cannot be referenced from this part of the query. -- Only suggest .* column when inference element misspelled: insert into insertconflicttest values (1, 'Apple') on conflict (keyy) do update set fruit = excluded.fruit; ERROR: column "keyy" does not exist -LINE 1: ...nsertconflicttest values (1, 'Apple') on conflict (keyy) do ... - ^ HINT: Perhaps you meant to reference the column "insertconflicttest.key" or the column "excluded.key". -- Have useful HINT for EXCLUDED.* RTE within UPDATE: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruitt; ERROR: column excluded.fruitt does not exist -LINE 1: ... 'Apple') on conflict (key) do update set fruit = excluded.f... - ^ HINT: Perhaps you meant to reference the column "excluded.fruit". -- inference fails: insert into insertconflicttest values (3, 'Kiwi') on conflict (key, fruit) do update set fruit = excluded.fruit; @@ -269,14 +261,10 @@ insert into insertconflicttest AS ict values (6, 'Passionfruit') on conflict (key) do update set fruit = ict.fruit; -- ok, alias insert into insertconflicttest AS ict values (6, 'Passionfruit') on conflict (key) do update set fruit = insertconflicttest.fruit; -- error, references aliased away name ERROR: invalid reference to FROM-clause entry for table "insertconflicttest" -LINE 1: ...onfruit') on conflict (key) do update set fruit = insertconf... - ^ HINT: Perhaps you meant to reference the table alias "ict". -- Check helpful hint when qualifying set column with target table insert into insertconflicttest values (3, 'Kiwi') on conflict (key, fruit) do update set insertconflicttest.fruit = 'Mango'; ERROR: column "insertconflicttest" of relation "insertconflicttest" does not exist -LINE 1: ...3, 'Kiwi') on conflict (key, fruit) do update set insertconf... - ^ HINT: SET target columns cannot be qualified with the relation name. drop index key_index; -- @@ -455,8 +443,6 @@ insert into syscolconflicttest values (1); insert into syscolconflicttest values (1) on conflict (key) do update set data = excluded.ctid::text; ERROR: column excluded.ctid does not exist -LINE 1: ...values (1) on conflict (key) do update set data = excluded.c... - ^ drop table syscolconflicttest; -- -- Previous tests all managed to not test any expressions requiring @@ -597,8 +583,6 @@ -- error, ambiguous insert into excluded values(1, '2') on conflict (key) do update set data = excluded.data RETURNING *; ERROR: table reference "excluded" is ambiguous -LINE 1: ...es(1, '2') on conflict (key) do update set data = excluded.d... - ^ -- ok, aliased insert into excluded AS target values(1, '2') on conflict (key) do update set data = excluded.data RETURNING *; key | data diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_procedure.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_procedure.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_procedure.out 2024-02-22 13:04:49.012648000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_procedure.out 2024-02-22 13:08:06.524891000 +0000 @@ -1,12 +1,8 @@ CALL nonexistent(); -- error ERROR: procedure nonexistent() does not exist -LINE 1: CALL nonexistent(); - ^ HINT: No procedure matches the given name and argument types. You might need to add explicit type casts. CALL random(); -- error ERROR: random() is not a procedure -LINE 1: CALL random(); - ^ HINT: To call a function, use SELECT. CREATE FUNCTION cp_testfunc1(a int) RETURNS int LANGUAGE SQL AS $$ SELECT a $$; CREATE TABLE cp_test (a int, b text); @@ -51,8 +47,6 @@ SELECT ptest1('x'); -- error ERROR: ptest1(unknown) is a procedure -LINE 1: SELECT ptest1('x'); - ^ HINT: To call a procedure, use CALL. CALL ptest1('a'); -- ok CALL ptest1('xy' || 'zzy'); -- ok, constant-folded arg @@ -234,8 +228,6 @@ -- ... and it had better match the type of the parameter CALL ptest9(1./0.); -- error ERROR: procedure ptest9(numeric) does not exist -LINE 1: CALL ptest9(1./0.); - ^ HINT: No procedure matches the given name and argument types. You might need to add explicit type casts. -- check named-parameter matching CREATE PROCEDURE ptest10(OUT a int, IN b int, IN c int) @@ -319,22 +311,14 @@ -- various error cases CALL version(); -- error: not a procedure ERROR: version() is not a procedure -LINE 1: CALL version(); - ^ HINT: To call a function, use SELECT. CALL sum(1); -- error: not a procedure ERROR: sum(integer) is not a procedure -LINE 1: CALL sum(1); - ^ HINT: To call a function, use SELECT. CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT INTO cp_test VALUES (1, 'a') $$; ERROR: invalid attribute in procedure definition -LINE 1: CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT I... - ^ CREATE PROCEDURE ptestx() LANGUAGE SQL STRICT AS $$ INSERT INTO cp_test VALUES (1, 'a') $$; ERROR: invalid attribute in procedure definition -LINE 1: CREATE PROCEDURE ptestx() LANGUAGE SQL STRICT AS $$ INSERT I... - ^ CREATE PROCEDURE ptestx(a VARIADIC int[], b OUT int) LANGUAGE SQL AS $$ SELECT a[1] $$; ERROR: VARIADIC parameter must be the last parameter @@ -343,8 +327,6 @@ ERROR: procedure OUT parameters cannot appear after one with a default value ALTER PROCEDURE ptest1(text) STRICT; ERROR: invalid attribute in procedure definition -LINE 1: ALTER PROCEDURE ptest1(text) STRICT; - ^ ALTER FUNCTION ptest1(text) VOLATILE; -- error: not a function ERROR: ptest1(text) is not a function ALTER PROCEDURE cp_testfunc1(int) VOLATILE; -- error: not a procedure diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_table.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_table.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_table.out 2024-02-22 13:04:49.012698000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_table.out 2024-02-22 13:08:07.023395000 +0000 @@ -40,15 +40,11 @@ CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK ERROR: only temporary relations may be created in temporary schemas -LINE 1: CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); - ^ CREATE TABLE pg_temp.implicitly_temp (a int primary key); -- OK CREATE TEMP TABLE explicitly_temp (a int primary key); -- also OK CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key); -- also OK CREATE TEMP TABLE public.temp_to_perm (a int primary key); -- not OK ERROR: cannot create temporary relation in non-temporary schema -LINE 1: CREATE TEMP TABLE public.temp_to_perm (a int primary key); - ^ DROP TABLE unlogged1, public.unlogged2; CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; @@ -96,36 +92,22 @@ -- invalid use of column reference in default expressions CREATE TABLE default_expr_column (id int DEFAULT (id)); ERROR: cannot use column reference in DEFAULT expression -LINE 1: CREATE TABLE default_expr_column (id int DEFAULT (id)); - ^ CREATE TABLE default_expr_column (id int DEFAULT (bar.id)); ERROR: cannot use column reference in DEFAULT expression -LINE 1: CREATE TABLE default_expr_column (id int DEFAULT (bar.id)); - ^ CREATE TABLE default_expr_agg_column (id int DEFAULT (avg(id))); ERROR: cannot use column reference in DEFAULT expression -LINE 1: ...TE TABLE default_expr_agg_column (id int DEFAULT (avg(id))); - ^ -- invalid column definition CREATE TABLE default_expr_non_column (a int DEFAULT (avg(non_existent))); ERROR: cannot use column reference in DEFAULT expression -LINE 1: ...TABLE default_expr_non_column (a int DEFAULT (avg(non_existe... - ^ -- invalid use of aggregate CREATE TABLE default_expr_agg (a int DEFAULT (avg(1))); ERROR: aggregate functions are not allowed in DEFAULT expressions -LINE 1: CREATE TABLE default_expr_agg (a int DEFAULT (avg(1))); - ^ -- invalid use of subquery CREATE TABLE default_expr_agg (a int DEFAULT (select 1)); ERROR: cannot use subquery in DEFAULT expression -LINE 1: CREATE TABLE default_expr_agg (a int DEFAULT (select 1)); - ^ -- invalid use of set-returning function CREATE TABLE default_expr_agg (a int DEFAULT (generate_series(1,3))); ERROR: set-returning functions are not allowed in DEFAULT expressions -LINE 1: CREATE TABLE default_expr_agg (a int DEFAULT (generate_serie... - ^ -- Verify that subtransaction rollback restores rd_createSubid. BEGIN; CREATE TABLE remember_create_subid (c int); @@ -193,15 +175,11 @@ a int ) PARTITION BY RANGE (b); ERROR: column "b" named in partition key does not exist -LINE 3: ) PARTITION BY RANGE (b); - ^ -- cannot use system columns in partition key CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (xmin); ERROR: cannot use system column "xmin" in partition key -LINE 3: ) PARTITION BY RANGE (xmin); - ^ -- cannot use pseudotypes CREATE TABLE partitioned ( a int, @@ -364,8 +342,6 @@ NOTICE: drop cascades to table partitioned table partitioned; -- gone ERROR: relation "partitioned" does not exist -LINE 1: table partitioned; - ^ -- likewise for columns used in partition expressions create domain intdom1 as int; create table partitioned ( @@ -382,8 +358,6 @@ NOTICE: drop cascades to table partitioned table partitioned; -- gone ERROR: relation "partitioned" does not exist -LINE 1: table partitioned; - ^ -- -- Partitions -- @@ -409,40 +383,22 @@ -- forbidden expressions for partition bound with list partitioned table CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (somename); ERROR: cannot use column reference in partition bound expression -LINE 1: ...expr_fail PARTITION OF list_parted FOR VALUES IN (somename); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (somename.somename); ERROR: cannot use column reference in partition bound expression -LINE 1: ...expr_fail PARTITION OF list_parted FOR VALUES IN (somename.s... - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (a); ERROR: cannot use column reference in partition bound expression -LINE 1: ..._bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (a); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(a)); ERROR: cannot use column reference in partition bound expression -LINE 1: ...s_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(a)); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(somename)); ERROR: cannot use column reference in partition bound expression -LINE 1: ..._fail PARTITION OF list_parted FOR VALUES IN (sum(somename))... - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(1)); ERROR: aggregate functions are not allowed in partition bound -LINE 1: ...s_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(1)); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN ((select 1)); ERROR: cannot use subquery in partition bound -LINE 1: ...expr_fail PARTITION OF list_parted FOR VALUES IN ((select 1)... - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (generate_series(4, 6)); ERROR: set-returning functions are not allowed in partition bound -LINE 1: ...expr_fail PARTITION OF list_parted FOR VALUES IN (generate_s... - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN ((1+1) collate "POSIX"); ERROR: collations are not supported by type integer -LINE 1: ...ail PARTITION OF list_parted FOR VALUES IN ((1+1) collate "P... - ^ -- syntax does not allow empty list of values for list partitions CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES IN (); ERROR: syntax error at or near ")" @@ -451,27 +407,19 @@ -- trying to specify range for list partitioned table CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES FROM (1) TO (2); ERROR: invalid bound specification for a list partition -LINE 1: ...BLE fail_part PARTITION OF list_parted FOR VALUES FROM (1) T... - ^ -- trying to specify modulus and remainder for list partitioned table CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); ERROR: invalid bound specification for a list partition -LINE 1: ...BLE fail_part PARTITION OF list_parted FOR VALUES WITH (MODU... - ^ -- check default partition cannot be created more than once CREATE TABLE part_default PARTITION OF list_parted DEFAULT; CREATE TABLE fail_default_part PARTITION OF list_parted DEFAULT; ERROR: partition "fail_default_part" conflicts with existing default partition "part_default" -LINE 1: ...TE TABLE fail_default_part PARTITION OF list_parted DEFAULT; - ^ -- specified literal can't be cast to the partition column data type CREATE TABLE bools ( a bool ) PARTITION BY LIST (a); CREATE TABLE bools_true PARTITION OF bools FOR VALUES IN (1); ERROR: specified value cannot be cast to type boolean for column "a" -LINE 1: ...REATE TABLE bools_true PARTITION OF bools FOR VALUES IN (1); - ^ DROP TABLE bools; -- specified literal can be cast, and the cast might not be immutable CREATE TABLE moneyp ( @@ -489,8 +437,6 @@ -- fails due to overlap: CREATE TABLE bigintp_10_2 PARTITION OF bigintp FOR VALUES IN ('10'); ERROR: partition "bigintp_10_2" would overlap partition "bigintp_10" -LINE 1: ...ABLE bigintp_10_2 PARTITION OF bigintp FOR VALUES IN ('10'); - ^ DROP TABLE bigintp; CREATE TABLE range_parted ( a date @@ -499,53 +445,33 @@ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (somename) TO ('2019-01-01'); ERROR: cannot use column reference in partition bound expression -LINE 2: FOR VALUES FROM (somename) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (somename.somename) TO ('2019-01-01'); ERROR: cannot use column reference in partition bound expression -LINE 2: FOR VALUES FROM (somename.somename) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (a) TO ('2019-01-01'); ERROR: cannot use column reference in partition bound expression -LINE 2: FOR VALUES FROM (a) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max(a)) TO ('2019-01-01'); ERROR: cannot use column reference in partition bound expression -LINE 2: FOR VALUES FROM (max(a)) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max(somename)) TO ('2019-01-01'); ERROR: cannot use column reference in partition bound expression -LINE 2: FOR VALUES FROM (max(somename)) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max('2019-02-01'::date)) TO ('2019-01-01'); ERROR: aggregate functions are not allowed in partition bound -LINE 2: FOR VALUES FROM (max('2019-02-01'::date)) TO ('2019-01-01'... - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM ((select 1)) TO ('2019-01-01'); ERROR: cannot use subquery in partition bound -LINE 2: FOR VALUES FROM ((select 1)) TO ('2019-01-01'); - ^ CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (generate_series(1, 3)) TO ('2019-01-01'); ERROR: set-returning functions are not allowed in partition bound -LINE 2: FOR VALUES FROM (generate_series(1, 3)) TO ('2019-01-01'); - ^ -- trying to specify list for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES IN ('a'); ERROR: invalid bound specification for a range partition -LINE 1: ...BLE fail_part PARTITION OF range_parted FOR VALUES IN ('a'); - ^ -- trying to specify modulus and remainder for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); ERROR: invalid bound specification for a range partition -LINE 1: ...LE fail_part PARTITION OF range_parted FOR VALUES WITH (MODU... - ^ -- each of start and end bounds must have same number of values as the -- length of the partition key CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES FROM ('a', 1) TO ('z'); @@ -558,8 +484,6 @@ -- trying to specify modulus and remainder for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); ERROR: invalid bound specification for a range partition -LINE 1: ...LE fail_part PARTITION OF range_parted FOR VALUES WITH (MODU... - ^ -- check partition bound syntax for the hash partition CREATE TABLE hash_parted ( a int @@ -579,18 +503,12 @@ -- overlapping remainders CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODULUS 100, REMAINDER 3); ERROR: partition "fail_part" would overlap partition "hpart_4" -LINE 1: ...BLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODU... - ^ -- trying to specify range for the hash partitioned table CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES FROM ('a', 1) TO ('z'); ERROR: invalid bound specification for a hash partition -LINE 1: ...BLE fail_part PARTITION OF hash_parted FOR VALUES FROM ('a',... - ^ -- trying to specify list value for the hash partitioned table CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES IN (1000); ERROR: invalid bound specification for a hash partition -LINE 1: ...BLE fail_part PARTITION OF hash_parted FOR VALUES IN (1000); - ^ -- trying to create default partition for the hash partitioned table CREATE TABLE fail_default_part PARTITION OF hash_parted DEFAULT; ERROR: a hash-partitioned table may not have a default partition @@ -620,12 +538,8 @@ CREATE TABLE list_parted2_def PARTITION OF list_parted2 DEFAULT; CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN (null); ERROR: partition "fail_part" would overlap partition "part_null_z" -LINE 1: ...LE fail_part PARTITION OF list_parted2 FOR VALUES IN (null); - ^ CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN ('b', 'c'); ERROR: partition "fail_part" would overlap partition "part_ab" -LINE 1: ...ail_part PARTITION OF list_parted2 FOR VALUES IN ('b', 'c'); - ^ -- check default partition overlap INSERT INTO list_parted2 VALUES('X'); CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN ('W', 'X', 'Y'); @@ -636,46 +550,30 @@ -- trying to create range partition with empty range CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (0); ERROR: empty range bound specified for partition "fail_part" -LINE 1: ..._part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (0); - ^ DETAIL: Specified lower bound (1) is greater than or equal to upper bound (0). -- note that the range '[1, 1)' has no elements CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (1); ERROR: empty range bound specified for partition "fail_part" -LINE 1: ..._part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (1); - ^ DETAIL: Specified lower bound (1) is greater than or equal to upper bound (1). CREATE TABLE part0 PARTITION OF range_parted2 FOR VALUES FROM (minvalue) TO (1); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (minvalue) TO (2); ERROR: partition "fail_part" would overlap partition "part0" -LINE 1: ..._part PARTITION OF range_parted2 FOR VALUES FROM (minvalue) ... - ^ CREATE TABLE part1 PARTITION OF range_parted2 FOR VALUES FROM (1) TO (10); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (-1) TO (1); ERROR: partition "fail_part" would overlap partition "part0" -LINE 1: ..._part PARTITION OF range_parted2 FOR VALUES FROM (-1) TO (1)... - ^ CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (9) TO (maxvalue); ERROR: partition "fail_part" would overlap partition "part1" -LINE 1: ..._part PARTITION OF range_parted2 FOR VALUES FROM (9) TO (max... - ^ CREATE TABLE part2 PARTITION OF range_parted2 FOR VALUES FROM (20) TO (30); CREATE TABLE part3 PARTITION OF range_parted2 FOR VALUES FROM (30) TO (40); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (10) TO (30); ERROR: partition "fail_part" would overlap partition "part2" -LINE 1: ...art PARTITION OF range_parted2 FOR VALUES FROM (10) TO (30); - ^ CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (10) TO (50); ERROR: partition "fail_part" would overlap partition "part2" -LINE 1: ...art PARTITION OF range_parted2 FOR VALUES FROM (10) TO (50); - ^ -- Create a default partition for range partitioned table CREATE TABLE range2_default PARTITION OF range_parted2 DEFAULT; -- More than one default partition is not allowed, so this should give error CREATE TABLE fail_default_part PARTITION OF range_parted2 DEFAULT; ERROR: partition "fail_default_part" conflicts with existing default partition "range2_default" -LINE 1: ... TABLE fail_default_part PARTITION OF range_parted2 DEFAULT; - ^ -- Check if the range for default partitions overlap INSERT INTO range_parted2 VALUES (85); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (80) TO (90); @@ -689,23 +587,17 @@ CREATE TABLE part00 PARTITION OF range_parted3 FOR VALUES FROM (0, minvalue) TO (0, maxvalue); CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (0, minvalue) TO (0, 1); ERROR: partition "fail_part" would overlap partition "part00" -LINE 1: ..._part PARTITION OF range_parted3 FOR VALUES FROM (0, minvalu... - ^ CREATE TABLE part10 PARTITION OF range_parted3 FOR VALUES FROM (1, minvalue) TO (1, 1); CREATE TABLE part11 PARTITION OF range_parted3 FOR VALUES FROM (1, 1) TO (1, 10); CREATE TABLE part12 PARTITION OF range_parted3 FOR VALUES FROM (1, 10) TO (1, maxvalue); CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (1, 10) TO (1, 20); ERROR: partition "fail_part" would overlap partition "part12" -LINE 1: ...rt PARTITION OF range_parted3 FOR VALUES FROM (1, 10) TO (1,... - ^ CREATE TABLE range3_default PARTITION OF range_parted3 DEFAULT; -- cannot create a partition that says column b is allowed to range -- from -infinity to +infinity, while there exist partitions that have -- more specific ranges CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (1, minvalue) TO (1, maxvalue); ERROR: partition "fail_part" would overlap partition "part10" -LINE 1: ..._part PARTITION OF range_parted3 FOR VALUES FROM (1, minvalu... - ^ -- check for partition bound overlap and other invalid specifications for the hash partition CREATE TABLE hash_parted2 ( a varchar @@ -717,8 +609,6 @@ -- overlap with part_4 CREATE TABLE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 2, REMAINDER 1); ERROR: partition "fail_part" would overlap partition "h2part_4" -LINE 1: ...LE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODU... - ^ -- modulus must be greater than zero CREATE TABLE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 0, REMAINDER 1); ERROR: modulus for hash partition must be an integer value greater than zero @@ -795,8 +685,6 @@ -- specify PARTITION BY for a partition CREATE TABLE fail_part_col_not_found PARTITION OF parted FOR VALUES IN ('c') PARTITION BY RANGE (c); ERROR: column "c" named in partition key does not exist -LINE 1: ...TITION OF parted FOR VALUES IN ('c') PARTITION BY RANGE (c); - ^ CREATE TABLE part_c PARTITION OF parted (b WITH OPTIONS NOT NULL DEFAULT 0) FOR VALUES IN ('c') PARTITION BY RANGE ((b)); -- create a level-2 partition CREATE TABLE part_c_1_10 PARTITION OF part_c FOR VALUES FROM (1) TO (10); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_type.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_type.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_type.out 2024-02-22 13:04:49.012727000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_type.out 2024-02-22 13:08:06.526306000 +0000 @@ -120,23 +120,11 @@ "Passedbyvalue" ); WARNING: type attribute "Internallength" not recognized -LINE 2: "Internallength" = 4, - ^ WARNING: type attribute "Input" not recognized -LINE 3: "Input" = int42_in, - ^ WARNING: type attribute "Output" not recognized -LINE 4: "Output" = int42_out, - ^ WARNING: type attribute "Alignment" not recognized -LINE 5: "Alignment" = int4, - ^ WARNING: type attribute "Default" not recognized -LINE 6: "Default" = 42, - ^ WARNING: type attribute "Passedbyvalue" not recognized -LINE 7: "Passedbyvalue" - ^ ERROR: type input function must be specified -- invalid: input/output function incompatibility CREATE TYPE bogus_type (INPUT = array_in, @@ -210,8 +198,6 @@ -- (we have borrowed numeric's typmod functions) CREATE TEMP TABLE mytab (foo widget(42,13,7)); -- should fail ERROR: invalid NUMERIC type modifier -LINE 1: CREATE TEMP TABLE mytab (foo widget(42,13,7)); - ^ CREATE TEMP TABLE mytab (foo widget(42,13)); SELECT format_type(atttypid,atttypmod) FROM pg_attribute WHERE attrelid = 'mytab'::regclass AND attnum > 0; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_index.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_index.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_index.out 2024-02-22 13:04:49.012429000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_index.out 2024-02-22 13:08:09.422406000 +0000 @@ -1579,14 +1579,10 @@ CREATE UNIQUE INDEX cwi_uniq3_idx ON cwi_test(a desc); ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq3_idx; -- fail ERROR: index "cwi_uniq3_idx" column number 1 does not have default sorting behavior -LINE 1: ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq3_idx; - ^ DETAIL: Cannot create a primary key or unique constraint using such an index. CREATE UNIQUE INDEX cwi_uniq4_idx ON cwi_test(b collate "POSIX"); ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq4_idx; -- fail ERROR: index "cwi_uniq4_idx" column number 1 does not have default sorting behavior -LINE 1: ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq4_idx; - ^ DETAIL: Cannot create a primary key or unique constraint using such an index. DROP TABLE cwi_test; -- ADD CONSTRAINT USING INDEX is forbidden on partitioned tables diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_view.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_view.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_view.out 2024-02-22 13:04:49.012762000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_view.out 2024-02-22 13:08:07.967004000 +0000 @@ -1874,8 +1874,6 @@ select 'foo'::text = any((select array['abc','def','foo']::text[])); -- fail ERROR: operator does not exist: text = text[] -LINE 1: select 'foo'::text = any((select array['abc','def','foo']::t... - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. select 'foo'::text = any((select array['abc','def','foo']::text[])::text[]); ?column? diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_function_sql.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_function_sql.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_function_sql.out 2024-02-22 13:04:49.012374000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_function_sql.out 2024-02-22 13:08:09.967073000 +0000 @@ -302,8 +302,6 @@ LANGUAGE SQL RETURN x > 1; ERROR: operator does not exist: date > integer -LINE 3: RETURN x > 1; - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- tricky parsing CREATE FUNCTION functest_S_15(x int) RETURNS boolean @@ -701,8 +699,7 @@ CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT $2;'; ERROR: there is no parameter $2 -LINE 2: AS 'SELECT $2;'; - ^ +CONTEXT: SQL function "test1" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'a', 'b'; ERROR: only one AS item needed for language "sql" diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_cast.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_cast.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_cast.out 2024-02-22 13:04:49.012348000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_cast.out 2024-02-22 13:08:09.636477000 +0000 @@ -24,15 +24,11 @@ $$ SELECT 1; $$; SELECT casttestfunc('foo'::text); -- fails, as there's no cast ERROR: function casttestfunc(text) does not exist -LINE 1: SELECT casttestfunc('foo'::text); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. -- Try binary coercion cast CREATE CAST (text AS casttesttype) WITHOUT FUNCTION; SELECT casttestfunc('foo'::text); -- doesn't work, as the cast is explicit ERROR: function casttestfunc(text) does not exist -LINE 1: SELECT casttestfunc('foo'::text); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. SELECT casttestfunc('foo'::text::casttesttype); -- should work casttestfunc @@ -52,8 +48,6 @@ -- Try I/O conversion cast. SELECT 1234::int4::casttesttype; -- No cast yet, should fail ERROR: cannot cast type integer to casttesttype -LINE 1: SELECT 1234::int4::casttesttype; - ^ CREATE CAST (int4 AS casttesttype) WITH INOUT; SELECT 1234::int4::casttesttype; -- Should work now casttesttype diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/constraints.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/constraints.out --- /tmp/cirrus-ci-build/src/test/regress/expected/constraints.out 2024-02-22 13:04:49.012207000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/constraints.out 2024-02-22 13:08:10.596693000 +0000 @@ -230,8 +230,6 @@ altitude int, CHECK (NOT (is_capital AND ctid::text = 'sys_col_check_tbl'))); ERROR: system column "ctid" reference in check constraint is invalid -LINE 3: CHECK (NOT (is_capital AND ctid::text = 'sys_col_check... - ^ -- -- Check inheritance of defaults and constraints -- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/triggers.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/triggers.out --- /tmp/cirrus-ci-build/src/test/regress/expected/triggers.out 2024-02-22 13:04:49.017061000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/triggers.out 2024-02-22 13:08:12.558868000 +0000 @@ -709,26 +709,18 @@ FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE trigger_func('error_ins_old'); ERROR: INSERT trigger's WHEN condition cannot reference OLD values -LINE 2: FOR EACH ROW WHEN (OLD.a <> NEW.a) - ^ CREATE TRIGGER error_del_when BEFORE DELETE OR UPDATE ON main_table FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE trigger_func('error_del_new'); ERROR: DELETE trigger's WHEN condition cannot reference NEW values -LINE 2: FOR EACH ROW WHEN (OLD.a <> NEW.a) - ^ CREATE TRIGGER error_del_when BEFORE INSERT OR UPDATE ON main_table FOR EACH ROW WHEN (NEW.tableoid <> 0) EXECUTE PROCEDURE trigger_func('error_when_sys_column'); ERROR: BEFORE trigger's WHEN condition cannot reference NEW system columns -LINE 2: FOR EACH ROW WHEN (NEW.tableoid <> 0) - ^ CREATE TRIGGER error_stmt_when BEFORE UPDATE OF a ON main_table FOR EACH STATEMENT WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE PROCEDURE trigger_func('error_stmt_when'); ERROR: statement trigger's WHEN condition cannot reference column values -LINE 2: FOR EACH STATEMENT WHEN (OLD.* IS DISTINCT FROM NEW.*) - ^ -- check dependency restrictions ALTER TABLE main_table DROP COLUMN b; ERROR: cannot drop column b of table main_table because other objects depend on it diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/vacuum.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/vacuum.out --- /tmp/cirrus-ci-build/src/test/regress/expected/vacuum.out 2024-02-22 13:04:49.017541000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/vacuum.out 2024-02-22 13:08:10.340513000 +0000 @@ -111,15 +111,11 @@ VACUUM (PARALLEL 0) pvactst; -- disable parallel vacuum VACUUM (PARALLEL -1) pvactst; -- error ERROR: parallel workers for vacuum must be between 0 and 1024 -LINE 1: VACUUM (PARALLEL -1) pvactst; - ^ VACUUM (PARALLEL 2, INDEX_CLEANUP FALSE) pvactst; VACUUM (PARALLEL 2, FULL TRUE) pvactst; -- error, cannot use both PARALLEL and FULL ERROR: VACUUM FULL cannot be performed in parallel VACUUM (PARALLEL) pvactst; -- error, cannot use PARALLEL option without parallel degree ERROR: parallel option requires a value between 0 and 1024 -LINE 1: VACUUM (PARALLEL) pvactst; - ^ -- Test different combinations of parallel and full options for temporary tables CREATE TEMPORARY TABLE tmp (a int PRIMARY KEY); CREATE INDEX tmp_idx1 ON tmp (a); @@ -253,8 +249,6 @@ ^ ANALYZE (nonexistentarg) does_not_exit; ERROR: unrecognized ANALYZE option "nonexistentarg" -LINE 1: ANALYZE (nonexistentarg) does_not_exit; - ^ -- ensure argument order independence, and that SKIP_LOCKED on non-existing -- relation still errors out. Suppress WARNING messages caused by concurrent -- autovacuums. diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/errors.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/errors.out --- /tmp/cirrus-ci-build/src/test/regress/expected/errors.out 2024-02-22 13:04:49.012907000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/errors.out 2024-02-22 13:08:09.653300000 +0000 @@ -23,13 +23,9 @@ -- no such relation select * from nonesuch; ERROR: relation "nonesuch" does not exist -LINE 1: select * from nonesuch; - ^ -- bad name in target list select nonesuch from pg_database; ERROR: column "nonesuch" does not exist -LINE 1: select nonesuch from pg_database; - ^ -- empty distinct list isn't OK select distinct from pg_database; ERROR: syntax error at or near "from" @@ -38,18 +34,12 @@ -- bad attribute name on lhs of operator select * from pg_database where nonesuch = pg_database.datname; ERROR: column "nonesuch" does not exist -LINE 1: select * from pg_database where nonesuch = pg_database.datna... - ^ -- bad attribute name on rhs of operator select * from pg_database where pg_database.datname = nonesuch; ERROR: column "nonesuch" does not exist -LINE 1: ...ect * from pg_database where pg_database.datname = nonesuch; - ^ -- bad attribute name in select distinct on select distinct on (foobar) * from pg_database; ERROR: column "foobar" does not exist -LINE 1: select distinct on (foobar) * from pg_database; - ^ -- grouping with FOR UPDATE select null from pg_database group by datname for update; ERROR: FOR UPDATE is not allowed with GROUP BY clause @@ -65,8 +55,6 @@ -- no such relation delete from nonesuch; ERROR: relation "nonesuch" does not exist -LINE 1: delete from nonesuch; - ^ -- -- DROP -- missing relation name (this had better not wildcard!) diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/select_into.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_into.out --- /tmp/cirrus-ci-build/src/test/regress/expected/select_into.out 2024-02-22 13:04:49.016450000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_into.out 2024-02-22 13:08:14.872032000 +0000 @@ -164,20 +164,14 @@ -- DECLARE foo CURSOR FOR SELECT 1 INTO int4_tbl; ERROR: SELECT ... INTO is not allowed here -LINE 1: DECLARE foo CURSOR FOR SELECT 1 INTO int4_tbl; - ^ COPY (SELECT 1 INTO frak UNION SELECT 2) TO 'blob'; ERROR: COPY (SELECT INTO) is not supported SELECT * FROM (SELECT 1 INTO f) bar; ERROR: SELECT ... INTO is not allowed here -LINE 1: SELECT * FROM (SELECT 1 INTO f) bar; - ^ CREATE VIEW foo AS SELECT 1 INTO int4_tbl; ERROR: views must not contain SELECT INTO INSERT INTO int4_tbl SELECT 1 INTO f; ERROR: SELECT ... INTO is not allowed here -LINE 1: INSERT INTO int4_tbl SELECT 1 INTO f; - ^ -- Test CREATE TABLE AS ... IF NOT EXISTS CREATE TABLE ctas_ine_tbl AS SELECT 1; CREATE TABLE ctas_ine_tbl AS SELECT 1 / 0; -- error diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/select_distinct_on.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_distinct_on.out --- /tmp/cirrus-ci-build/src/test/regress/expected/select_distinct_on.out 2024-02-22 13:04:49.016347000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_distinct_on.out 2024-02-22 13:08:14.122217000 +0000 @@ -17,8 +17,6 @@ FROM onek ORDER BY string4 using <, two using <, ten using <; ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY expressions -LINE 1: SELECT DISTINCT ON (string4, ten) string4, two, ten - ^ SELECT DISTINCT ON (string4, ten) string4, ten, two FROM onek ORDER BY string4 using <, ten using >, two using <; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/select_implicit_2.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_implicit.out --- /tmp/cirrus-ci-build/src/test/regress/expected/select_implicit_2.out 2024-02-22 13:04:49.016440000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_implicit.out 2024-02-22 13:08:14.323363000 +0000 @@ -45,8 +45,6 @@ -- failure expected SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b; ERROR: column "test_missing_target.b" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: ...ECT count(*) FROM test_missing_target GROUP BY a ORDER BY b; - ^ -- w/o existing GROUP BY target and w/o existing same ORDER BY target SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b; count @@ -117,16 +115,12 @@ -- failure expected SELECT c, count(*) FROM test_missing_target GROUP BY 3; ERROR: GROUP BY position 3 is not in select list -LINE 1: SELECT c, count(*) FROM test_missing_target GROUP BY 3; - ^ -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition -- failure expected SELECT count(*) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY b ORDER BY b; ERROR: column reference "b" is ambiguous -LINE 3: GROUP BY b ORDER BY b; - ^ -- order w/ target under ambiguous condition -- failure NOT expected SELECT a, a FROM test_missing_target @@ -243,8 +237,6 @@ -- failure expected SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b; ERROR: column "test_missing_target.b" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: ...ECT count(a) FROM test_missing_target GROUP BY a ORDER BY b; - ^ -- w/o existing GROUP BY target and w/o existing same ORDER BY target SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2; count @@ -296,8 +288,6 @@ WHERE x.a = y.a GROUP BY b/2 ORDER BY b/2; ERROR: column reference "b" is ambiguous -LINE 3: GROUP BY b/2 ORDER BY b/2; - ^ -- group w/ existing GROUP BY target under ambiguous condition SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a @@ -315,8 +305,6 @@ WHERE x.a = y.a GROUP BY x.b/2; ERROR: column reference "b" is ambiguous -LINE 1: SELECT count(b) FROM test_missing_target x, test_missing_tar... - ^ -- group w/o existing GROUP BY target under ambiguous condition -- into a table CREATE TABLE test_missing_target3 AS diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/select_having_2.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_having.out --- /tmp/cirrus-ci-build/src/test/regress/expected/select_having_2.out 2024-02-22 13:04:49.016383000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/select_having.out 2024-02-22 13:08:14.322669000 +0000 @@ -65,12 +65,8 @@ -- errors: ungrouped column references SELECT a FROM test_having HAVING min(a) < max(a); ERROR: column "test_having.a" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT a FROM test_having HAVING min(a) < max(a); - ^ SELECT 1 AS one FROM test_having HAVING a > 1; ERROR: column "test_having.a" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT 1 AS one FROM test_having HAVING a > 1; - ^ -- the really degenerate case: need not scan table at all SELECT 1 AS one FROM test_having HAVING 1 > 2; one diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/subselect.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/subselect.out --- /tmp/cirrus-ci-build/src/test/regress/expected/subselect.out 2024-02-22 13:04:49.016769000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/subselect.out 2024-02-22 13:08:15.295281000 +0000 @@ -897,8 +897,6 @@ -- this fails by default, of course select * from int8_tbl where q1 in (select c1 from inner_text); ERROR: operator does not exist: bigint = text -LINE 1: select * from int8_tbl where q1 in (select c1 from inner_tex... - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. begin; -- make an operator to allow it to succeed diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/union.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/union.out --- /tmp/cirrus-ci-build/src/test/regress/expected/union.out 2024-02-22 13:04:49.017285000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/union.out 2024-02-22 13:08:15.341531000 +0000 @@ -908,8 +908,6 @@ -- This should fail, because q2 isn't a name of an EXCEPT output column SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1; ERROR: column "q2" does not exist -LINE 1: ... int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1... - ^ DETAIL: There is a column named "q2" in table "*SELECT* 2", but it cannot be referenced from this part of the query. -- But this should work: SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1))) ORDER BY 1; @@ -1067,8 +1065,6 @@ -- This should fail, but it should produce an error cursor SELECT '3.4'::numeric UNION SELECT 'foo'; ERROR: invalid input syntax for type numeric: "foo" -LINE 1: SELECT '3.4'::numeric UNION SELECT 'foo'; - ^ -- -- Test that expression-index constraints can be pushed down through -- UNION or UNION ALL diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/join.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/join.out --- /tmp/cirrus-ci-build/src/test/regress/expected/join.out 2024-02-22 13:04:49.014131000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/join.out 2024-02-22 13:08:16.318108000 +0000 @@ -341,8 +341,6 @@ SELECT i, k, t FROM J1_TBL CROSS JOIN J2_TBL; ERROR: column reference "i" is ambiguous -LINE 1: SELECT i, k, t - ^ -- resolve previous ambiguity by specifying the table name SELECT t1.i, k, t FROM J1_TBL t1 CROSS JOIN J2_TBL t2; @@ -1636,8 +1634,6 @@ SELECT * FROM (J1_TBL JOIN J2_TBL USING (i)) AS x WHERE J1_TBL.t = 'one'; -- error ERROR: invalid reference to FROM-clause entry for table "j1_tbl" -LINE 1: ... * FROM (J1_TBL JOIN J2_TBL USING (i)) AS x WHERE J1_TBL.t =... - ^ DETAIL: There is an entry for table "j1_tbl", but it cannot be referenced from this part of the query. SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.i = 1; -- ok i | j | t | k @@ -1647,12 +1643,8 @@ SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.t = 'one'; -- error ERROR: column x.t does not exist -LINE 1: ...CT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.t = 'one... - ^ SELECT * FROM (J1_TBL JOIN J2_TBL USING (i) AS x) AS xx WHERE x.i = 1; -- error (XXX could use better hint) ERROR: missing FROM-clause entry for table "x" -LINE 1: ...ROM (J1_TBL JOIN J2_TBL USING (i) AS x) AS xx WHERE x.i = 1; - ^ SELECT * FROM J1_TBL a1 JOIN J2_TBL a2 USING (i) AS a1; -- error ERROR: table name "a1" specified more than once SELECT x.* FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE J1_TBL.t = 'one'; @@ -2859,8 +2851,6 @@ -- Test matching of column name with wrong alias select t1.x from t1 join t3 on (t1.a = t3.x); ERROR: column t1.x does not exist -LINE 1: select t1.x from t1 join t3 on (t1.a = t3.x); - ^ HINT: Perhaps you meant to reference the column "t3.x". -- Test matching of locking clause with wrong alias select t1.*, t2.*, unnamed_join.* from @@ -2881,20 +2871,14 @@ t1 join t2 using (a) as foo, t3 as unnamed_join for update of foo; ERROR: FOR UPDATE cannot be applied to a join -LINE 3: for update of foo; - ^ select bar.*, unnamed_join.* from (t1 join t2 using (a) as foo) as bar, t3 as unnamed_join for update of foo; ERROR: relation "foo" in FOR UPDATE clause not found in FROM clause -LINE 3: for update of foo; - ^ select bar.*, unnamed_join.* from (t1 join t2 using (a) as foo) as bar, t3 as unnamed_join for update of bar; ERROR: FOR UPDATE cannot be applied to a join -LINE 3: for update of bar; - ^ -- -- regression test for 8.1 merge right join bug -- @@ -6144,13 +6128,9 @@ select * from int8_tbl x join (int4_tbl x cross join int4_tbl y) j on q1 = f1; -- error ERROR: column reference "f1" is ambiguous -LINE 2: ..._tbl x join (int4_tbl x cross join int4_tbl y) j on q1 = f1; - ^ select * from int8_tbl x join (int4_tbl x cross join int4_tbl y) j on q1 = y.f1; -- error ERROR: invalid reference to FROM-clause entry for table "y" -LINE 2: ...bl x join (int4_tbl x cross join int4_tbl y) j on q1 = y.f1; - ^ DETAIL: There is an entry for table "y", but it cannot be referenced from this part of the query. select * from int8_tbl x join (int4_tbl x cross join int4_tbl y(ff)) j on q1 = f1; -- ok @@ -7192,26 +7172,18 @@ select t1.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t1" suggestion ERROR: column t1.uunique1 does not exist -LINE 1: select t1.uunique1 from - ^ HINT: Perhaps you meant to reference the column "t1.unique1". select t2.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t2" suggestion ERROR: column t2.uunique1 does not exist -LINE 1: select t2.uunique1 from - ^ HINT: Perhaps you meant to reference the column "t2.unique1". select uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, suggest both at once ERROR: column "uunique1" does not exist -LINE 1: select uunique1 from - ^ HINT: Perhaps you meant to reference the column "t1.unique1" or the column "t2.unique1". select ctid from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, need qualification ERROR: column "ctid" does not exist -LINE 1: select ctid from - ^ DETAIL: There are columns named "ctid", but they are in tables that cannot be referenced from this part of the query. HINT: Try using a table-qualified name. -- @@ -7223,8 +7195,6 @@ indexrelid from pg_index i) atts on atts.attnum = a.attnum where schemaname != 'pg_catalog'; ERROR: column atts.relid does not exist -LINE 1: select atts.relid::regclass, s.* from pg_stats s join - ^ -- Test bug in rangetable flattening explain (verbose, costs off) select 1 from @@ -8307,68 +8277,46 @@ -- test some error cases where LATERAL should have been used but wasn't select f1,g from int4_tbl a, (select f1 as g) ss; ERROR: column "f1" does not exist -LINE 1: select f1,g from int4_tbl a, (select f1 as g) ss; - ^ DETAIL: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query. HINT: To reference that column, you must mark this subquery with LATERAL. select f1,g from int4_tbl a, (select a.f1 as g) ss; ERROR: invalid reference to FROM-clause entry for table "a" -LINE 1: select f1,g from int4_tbl a, (select a.f1 as g) ss; - ^ DETAIL: There is an entry for table "a", but it cannot be referenced from this part of the query. HINT: To reference that table, you must mark this subquery with LATERAL. select f1,g from int4_tbl a cross join (select f1 as g) ss; ERROR: column "f1" does not exist -LINE 1: select f1,g from int4_tbl a cross join (select f1 as g) ss; - ^ DETAIL: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query. HINT: To reference that column, you must mark this subquery with LATERAL. select f1,g from int4_tbl a cross join (select a.f1 as g) ss; ERROR: invalid reference to FROM-clause entry for table "a" -LINE 1: select f1,g from int4_tbl a cross join (select a.f1 as g) ss... - ^ DETAIL: There is an entry for table "a", but it cannot be referenced from this part of the query. HINT: To reference that table, you must mark this subquery with LATERAL. -- SQL:2008 says the left table is in scope but illegal to access here select f1,g from int4_tbl a right join lateral generate_series(0, a.f1) g on true; ERROR: invalid reference to FROM-clause entry for table "a" -LINE 1: ... int4_tbl a right join lateral generate_series(0, a.f1) g on... - ^ DETAIL: The combining JOIN type must be INNER or LEFT for a LATERAL reference. select f1,g from int4_tbl a full join lateral generate_series(0, a.f1) g on true; ERROR: invalid reference to FROM-clause entry for table "a" -LINE 1: ...m int4_tbl a full join lateral generate_series(0, a.f1) g on... - ^ DETAIL: The combining JOIN type must be INNER or LEFT for a LATERAL reference. -- check we complain about ambiguous table references select * from int8_tbl x cross join (int4_tbl x cross join lateral (select x.f1) ss); ERROR: table reference "x" is ambiguous -LINE 2: ...cross join (int4_tbl x cross join lateral (select x.f1) ss); - ^ -- LATERAL can be used to put an aggregate into the FROM clause of its query select 1 from tenk1 a, lateral (select max(a.unique1) from int4_tbl b) ss; ERROR: aggregate functions are not allowed in FROM clause of their own query level -LINE 1: select 1 from tenk1 a, lateral (select max(a.unique1) from i... - ^ -- check behavior of LATERAL in UPDATE/DELETE create temp table xx1 as select f1 as x1, -f1 as x2 from int4_tbl; -- error, can't do this: update xx1 set x2 = f1 from (select * from int4_tbl where f1 = x1) ss; ERROR: column "x1" does not exist -LINE 1: ... set x2 = f1 from (select * from int4_tbl where f1 = x1) ss; - ^ DETAIL: There is a column named "x1" in table "xx1", but it cannot be referenced from this part of the query. update xx1 set x2 = f1 from (select * from int4_tbl where f1 = xx1.x1) ss; ERROR: invalid reference to FROM-clause entry for table "xx1" -LINE 1: ...t x2 = f1 from (select * from int4_tbl where f1 = xx1.x1) ss... - ^ DETAIL: There is an entry for table "xx1", but it cannot be referenced from this part of the query. -- can't do it even with LATERAL: update xx1 set x2 = f1 from lateral (select * from int4_tbl where f1 = x1) ss; ERROR: invalid reference to FROM-clause entry for table "xx1" -LINE 1: ...= f1 from lateral (select * from int4_tbl where f1 = x1) ss; - ^ HINT: There is an entry for table "xx1", but it cannot be referenced from this part of the query. -- we might in future allow something like this, but for now it's an error: update xx1 set x2 = f1 from xx1, lateral (select * from int4_tbl where f1 = x1) ss; @@ -8376,18 +8324,12 @@ -- also errors: delete from xx1 using (select * from int4_tbl where f1 = x1) ss; ERROR: column "x1" does not exist -LINE 1: ...te from xx1 using (select * from int4_tbl where f1 = x1) ss; - ^ DETAIL: There is a column named "x1" in table "xx1", but it cannot be referenced from this part of the query. delete from xx1 using (select * from int4_tbl where f1 = xx1.x1) ss; ERROR: invalid reference to FROM-clause entry for table "xx1" -LINE 1: ...from xx1 using (select * from int4_tbl where f1 = xx1.x1) ss... - ^ DETAIL: There is an entry for table "xx1", but it cannot be referenced from this part of the query. delete from xx1 using lateral (select * from int4_tbl where f1 = x1) ss; ERROR: invalid reference to FROM-clause entry for table "xx1" -LINE 1: ...xx1 using lateral (select * from int4_tbl where f1 = x1) ss; - ^ HINT: There is an entry for table "xx1", but it cannot be referenced from this part of the query. -- -- test LATERAL reference propagation down a multi-level inheritance hierarchy diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/aggregates.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/aggregates.out --- /tmp/cirrus-ci-build/src/test/regress/expected/aggregates.out 2024-02-22 13:04:49.011667000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/aggregates.out 2024-02-22 13:08:16.128604000 +0000 @@ -675,8 +675,6 @@ having exists (select 1 from onek b where sum(distinct a.four + b.four) = b.four); ERROR: aggregate functions are not allowed in WHERE -LINE 4: where sum(distinct a.four + b.four) = b.four)... - ^ -- Test handling of sublinks within outer-level aggregates. -- Per bug report from Daniel Grace. select @@ -1276,18 +1274,12 @@ -- check for correct detection of nested-aggregate errors select max(min(unique1)) from tenk1; ERROR: aggregate function calls cannot be nested -LINE 1: select max(min(unique1)) from tenk1; - ^ select (select max(min(unique1)) from int8_tbl) from tenk1; ERROR: aggregate function calls cannot be nested -LINE 1: select (select max(min(unique1)) from int8_tbl) from tenk1; - ^ select avg((select avg(a1.col1 order by (select avg(a2.col2) from tenk1 a3)) from tenk1 a1(col1))) from tenk1 a2(col2); ERROR: aggregate function calls cannot be nested -LINE 1: select avg((select avg(a1.col1 order by (select avg(a2.col2)... - ^ -- -- Test removal of redundant GROUP BY columns -- @@ -1420,8 +1412,6 @@ -- only this one should fail: select t1.f1 from t1 left join t2 using (f1) group by f1; ERROR: column "t1.f1" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: select t1.f1 from t1 left join t2 using (f1) group by f1; - ^ -- check case where we have to inject nullingrels into coerced join alias select f1, count(*) from t1 x(x0,x1) left join (t1 left join t2 using(f1)) on (x0 = 0) @@ -1831,23 +1821,15 @@ select aggfns(distinct a,b,c order by i) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select aggfns(distinct a,b,c order by i) - ^ select aggfns(distinct a,b,c order by a,b+1) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select aggfns(distinct a,b,c order by a,b+1) - ^ select aggfns(distinct a,b,c order by a,b,i,c) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select aggfns(distinct a,b,c order by a,b,i,c) - ^ select aggfns(distinct a,a,c order by a,b) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select aggfns(distinct a,a,c order by a,b) - ^ -- string_agg tests select string_agg(a,',') from (values('aaaa'),('bbbb'),('cccc')) g(a); string_agg @@ -1882,12 +1864,8 @@ select string_agg(distinct f1::text, ',' order by f1) from varchar_tbl; -- not ok ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select string_agg(distinct f1::text, ',' order by f1) from v... - ^ select string_agg(distinct f1, ',' order by f1::text) from varchar_tbl; -- not ok ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list -LINE 1: select string_agg(distinct f1, ',' order by f1::text) from v... - ^ select string_agg(distinct f1::text, ',' order by f1::text) from varchar_tbl; -- ok string_agg ------------ @@ -2151,20 +2129,12 @@ -- check for correct detection of nested-aggregate errors in FILTER select max(unique1) filter (where sum(ten) > 0) from tenk1; ERROR: aggregate functions are not allowed in FILTER -LINE 1: select max(unique1) filter (where sum(ten) > 0) from tenk1; - ^ select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; ERROR: aggregate function calls cannot be nested -LINE 1: select (select max(unique1) filter (where sum(ten) > 0) from... - ^ select max(unique1) filter (where bool_or(ten > 0)) from tenk1; ERROR: aggregate functions are not allowed in FILTER -LINE 1: select max(unique1) filter (where bool_or(ten > 0)) from ten... - ^ select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; ERROR: aggregate function calls cannot be nested -LINE 1: select (select max(unique1) filter (where bool_or(ten > 0)) ... - ^ -- ordered-set aggregates select p, percentile_cont(p) within group (order by x::float8) from generate_series(1,5) x, @@ -2195,15 +2165,11 @@ (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; ERROR: sum is not an ordered-set aggregate, so it cannot have WITHIN GROUP -LINE 1: select p, sum() within group (order by x::float8) -- error - ^ select p, percentile_cont(p,p) -- error from generate_series(1,5) x, (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; ERROR: WITHIN GROUP is required for ordered-set aggregate percentile_cont -LINE 1: select p, percentile_cont(p,p) -- error - ^ select percentile_cont(0.5) within group (order by b) from aggtest; percentile_cont ------------------ @@ -2331,40 +2297,26 @@ -- ordered-set aggs can't use ungrouped vars in direct args: select rank(x) within group (order by x) from generate_series(1,5) x; ERROR: column "x.x" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: select rank(x) within group (order by x) from generate_serie... - ^ DETAIL: Direct arguments of an ordered-set aggregate must use only grouped columns. -- outer-level agg can't use a grouped arg of a lower level, either: select array(select percentile_disc(a) within group (order by x) from (values (0.3),(0.7)) v(a) group by a) from generate_series(1,5) g(x); ERROR: outer-level aggregate cannot contain a lower-level variable in its direct arguments -LINE 1: select array(select percentile_disc(a) within group (order b... - ^ -- agg in the direct args is a grouping violation, too: select rank(sum(x)) within group (order by x) from generate_series(1,5) x; ERROR: aggregate function calls cannot be nested -LINE 1: select rank(sum(x)) within group (order by x) from generate_... - ^ -- hypothetical-set type unification and argument-count failures: select rank(3) within group (order by x) from (values ('fred'),('jim')) v(x); ERROR: WITHIN GROUP types text and integer cannot be matched -LINE 1: select rank(3) within group (order by x) from (values ('fred... - ^ select rank(3) within group (order by stringu1,stringu2) from tenk1; ERROR: function rank(integer, name, name) does not exist -LINE 1: select rank(3) within group (order by stringu1,stringu2) fro... - ^ HINT: To use the hypothetical-set aggregate rank, the number of hypothetical direct arguments (here 1) must match the number of ordering columns (here 2). select rank('fred') within group (order by x) from generate_series(1,5) x; ERROR: invalid input syntax for type integer: "fred" -LINE 1: select rank('fred') within group (order by x) from generate_... - ^ select rank('adam'::text collate "C") within group (order by x collate "POSIX") from (values ('fred'),('jim')) v(x); ERROR: collation mismatch between explicit collations "C" and "POSIX" -LINE 1: ...adam'::text collate "C") within group (order by x collate "P... - ^ -- hypothetical-set type unification successes: select rank('adam'::varchar) within group (order by x) from (values ('fred'),('jim')) v(x); rank diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/transactions.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/transactions.out --- /tmp/cirrus-ci-build/src/test/regress/expected/transactions.out 2024-02-22 13:04:49.017000000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/transactions.out 2024-02-22 13:08:15.071857000 +0000 @@ -206,8 +206,6 @@ SELECT * FROM trans_bar; -- shouldn't exist ERROR: relation "trans_bar" does not exist -LINE 1: SELECT * FROM trans_bar; - ^ SELECT * FROM trans_barbaz; -- should be empty a --- @@ -224,8 +222,6 @@ SAVEPOINT one; INSERT into trans_bar VALUES (1); ERROR: relation "trans_bar" does not exist -LINE 1: INSERT into trans_bar VALUES (1); - ^ ROLLBACK TO one; RELEASE SAVEPOINT one; SAVEPOINT two; @@ -257,8 +253,6 @@ SAVEPOINT one; SELECT trans_foo; ERROR: column "trans_foo" does not exist -LINE 1: SELECT trans_foo; - ^ ROLLBACK TO SAVEPOINT one; RELEASE SAVEPOINT one; SAVEPOINT two; @@ -306,8 +300,6 @@ INSERT INTO savepoints VALUES (5); SELECT trans_foo; ERROR: column "trans_foo" does not exist -LINE 1: SELECT trans_foo; - ^ COMMIT; SELECT * FROM savepoints; a @@ -743,8 +735,6 @@ INSERT INTO trans_abc VALUES ('error'); ERROR: invalid input syntax for type integer: "error" -LINE 1: INSERT INTO trans_abc VALUES ('error'); - ^ INSERT INTO trans_abc VALUES (3); -- check it's really aborted ERROR: current transaction is aborted, commands ignored until end of transaction block COMMIT AND CHAIN; -- TBLOCK_ABORT_END @@ -790,8 +780,6 @@ SAVEPOINT x; INSERT INTO trans_abc VALUES ('error'); ERROR: invalid input syntax for type integer: "error" -LINE 1: INSERT INTO trans_abc VALUES ('error'); - ^ COMMIT AND CHAIN; -- TBLOCK_ABORT_PENDING SHOW transaction_isolation; transaction_isolation @@ -935,8 +923,6 @@ INSERT INTO trans_abc VALUES ('error'); ERROR: invalid input syntax for type integer: "error" -LINE 1: INSERT INTO trans_abc VALUES ('error'); - ^ ROLLBACK AND CHAIN; -- TBLOCK_ABORT_END SHOW transaction_isolation; transaction_isolation diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/arrays.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/arrays.out --- /tmp/cirrus-ci-build/src/test/regress/expected/arrays.out 2024-02-22 13:04:49.011831000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/arrays.out 2024-02-22 13:08:15.267103000 +0000 @@ -38,13 +38,9 @@ VALUES ('{}', '{3,4}', '{foo,bar}', '{bar,foo}'); INSERT INTO arrtest (b[2]) VALUES(now()); -- error, type mismatch ERROR: subscripted assignment to "b" requires type integer but expression is of type timestamp with time zone -LINE 1: INSERT INTO arrtest (b[2]) VALUES(now()); - ^ HINT: You will need to rewrite or cast the expression. INSERT INTO arrtest (b[1:2]) VALUES(now()); -- error, type mismatch ERROR: subscripted assignment to "b" requires type integer[] but expression is of type timestamp with time zone -LINE 1: INSERT INTO arrtest (b[1:2]) VALUES(now()); - ^ HINT: You will need to rewrite or cast the expression. SELECT * FROM arrtest; a | b | c | d | e | f | g @@ -273,8 +269,6 @@ -- Un-subscriptable type SELECT (now())[1]; ERROR: cannot subscript type timestamp with time zone because it does not support subscripting -LINE 1: SELECT (now())[1]; - ^ -- test slices with empty lower and/or upper index CREATE TEMP TABLE arrtest_s ( a int2[], @@ -1304,12 +1298,8 @@ -- errors select 33 * any ('{1,2,3}'); ERROR: op ANY/ALL (array) requires operator to yield boolean -LINE 1: select 33 * any ('{1,2,3}'); - ^ select 33 * any (44); ERROR: op ANY/ALL (array) requires array on right side -LINE 1: select 33 * any (44); - ^ -- nulls select 33 = any (null::int[]); ?column? @@ -1490,159 +1480,95 @@ -- none of the following should be accepted select '{{1,{2}},{2,3}}'::text[]; ERROR: malformed array literal: "{{1,{2}},{2,3}}" -LINE 1: select '{{1,{2}},{2,3}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select E'{{1,2},\\{2,3}}'::text[]; ERROR: malformed array literal: "{{1,2},\{2,3}}" -LINE 1: select E'{{1,2},\\{2,3}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{"a"b}'::text[]; ERROR: malformed array literal: "{"a"b}" -LINE 1: select '{"a"b}'::text[]; - ^ DETAIL: Incorrectly quoted array element. select '{a"b"}'::text[]; ERROR: malformed array literal: "{a"b"}" -LINE 1: select '{a"b"}'::text[]; - ^ DETAIL: Incorrectly quoted array element. select '{"a""b"}'::text[]; ERROR: malformed array literal: "{"a""b"}" -LINE 1: select '{"a""b"}'::text[]; - ^ DETAIL: Incorrectly quoted array element. select '{{"1 2" x},{3}}'::text[]; ERROR: malformed array literal: "{{"1 2" x},{3}}" -LINE 1: select '{{"1 2" x},{3}}'::text[]; - ^ DETAIL: Incorrectly quoted array element. select '{{"1 2"} x,{3}}'::text[]; ERROR: malformed array literal: "{{"1 2"} x,{3}}" -LINE 1: select '{{"1 2"} x,{3}}'::text[]; - ^ DETAIL: Unexpected array element. select '{}}'::text[]; ERROR: malformed array literal: "{}}" -LINE 1: select '{}}'::text[]; - ^ DETAIL: Junk after closing right brace. select '{ }}'::text[]; ERROR: malformed array literal: "{ }}" -LINE 1: select '{ }}'::text[]; - ^ DETAIL: Junk after closing right brace. select '}{'::text[]; ERROR: malformed array literal: "}{" -LINE 1: select '}{'::text[]; - ^ DETAIL: Array value must start with "{" or dimension information. select '{foo{}}'::text[]; ERROR: malformed array literal: "{foo{}}" -LINE 1: select '{foo{}}'::text[]; - ^ DETAIL: Unexpected "{" character. select '{"foo"{}}'::text[]; ERROR: malformed array literal: "{"foo"{}}" -LINE 1: select '{"foo"{}}'::text[]; - ^ DETAIL: Unexpected "{" character. select '{foo,,bar}'::text[]; ERROR: malformed array literal: "{foo,,bar}" -LINE 1: select '{foo,,bar}'::text[]; - ^ DETAIL: Unexpected "," character. select '{{1},{{2}}}'::text[]; ERROR: malformed array literal: "{{1},{{2}}}" -LINE 1: select '{{1},{{2}}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{{{1}},{2}}'::text[]; ERROR: malformed array literal: "{{{1}},{2}}" -LINE 1: select '{{{1}},{2}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{{},{{}}}'::text[]; ERROR: malformed array literal: "{{},{{}}}" -LINE 1: select '{{},{{}}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{{{}},{}}'::text[]; ERROR: malformed array literal: "{{{}},{}}" -LINE 1: select '{{{}},{}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{{1},{}}'::text[]; ERROR: malformed array literal: "{{1},{}}" -LINE 1: select '{{1},{}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '{{},{1}}'::text[]; ERROR: malformed array literal: "{{},{1}}" -LINE 1: select '{{},{1}}'::text[]; - ^ DETAIL: Multidimensional arrays must have sub-arrays with matching dimensions. select '[1:0]={}'::int[]; ERROR: upper bound cannot be less than lower bound -LINE 1: select '[1:0]={}'::int[]; - ^ select '[2147483646:2147483647]={1,2}'::int[]; ERROR: array upper bound is too large: 2147483647 -LINE 1: select '[2147483646:2147483647]={1,2}'::int[]; - ^ select '[1:-1]={}'::int[]; ERROR: upper bound cannot be less than lower bound -LINE 1: select '[1:-1]={}'::int[]; - ^ select '[2]={1}'::int[]; ERROR: malformed array literal: "[2]={1}" -LINE 1: select '[2]={1}'::int[]; - ^ DETAIL: Specified array dimensions do not match array contents. select '[1:]={1}'::int[]; ERROR: malformed array literal: "[1:]={1}" -LINE 1: select '[1:]={1}'::int[]; - ^ DETAIL: Missing array dimension value. select '[:1]={1}'::int[]; ERROR: malformed array literal: "[:1]={1}" -LINE 1: select '[:1]={1}'::int[]; - ^ DETAIL: "[" must introduce explicitly-specified array dimensions. select array[]; ERROR: cannot determine type of empty array -LINE 1: select array[]; - ^ HINT: Explicitly cast to the desired type, for example ARRAY[]::integer[]. select '{{1,},{1},}'::text[]; ERROR: malformed array literal: "{{1,},{1},}" -LINE 1: select '{{1,},{1},}'::text[]; - ^ DETAIL: Unexpected "}" character. select '{{1,},{1}}'::text[]; ERROR: malformed array literal: "{{1,},{1}}" -LINE 1: select '{{1,},{1}}'::text[]; - ^ DETAIL: Unexpected "}" character. select '{{1,}}'::text[]; ERROR: malformed array literal: "{{1,}}" -LINE 1: select '{{1,}}'::text[]; - ^ DETAIL: Unexpected "}" character. select '{1,}'::text[]; ERROR: malformed array literal: "{1,}" -LINE 1: select '{1,}'::text[]; - ^ DETAIL: Unexpected "}" character. select '[21474836488:21474836489]={1,2}'::int[]; ERROR: array bound is out of integer range -LINE 1: select '[21474836488:21474836489]={1,2}'::int[]; - ^ select '[-2147483649:-2147483648]={1,2}'::int[]; ERROR: array bound is out of integer range -LINE 1: select '[-2147483649:-2147483648]={1,2}'::int[]; - ^ -- none of the above should be accepted -- all of the following should be accepted select '{}'::text[]; @@ -2615,8 +2541,6 @@ -- error cases SELECT width_bucket('5'::text, ARRAY[3, 4]::integer[]); ERROR: function width_bucket(text, integer[]) does not exist -LINE 1: SELECT width_bucket('5'::text, ARRAY[3, 4]::integer[]); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. SELECT width_bucket(5, ARRAY[3, 4, NULL]); ERROR: thresholds array must not contain NULLs diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/update.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/update.out --- /tmp/cirrus-ci-build/src/test/regress/expected/update.out 2024-02-22 13:04:49.017307000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/update.out 2024-02-22 13:08:15.966493000 +0000 @@ -47,8 +47,6 @@ -- error, you're not supposed to qualify the target column UPDATE update_test t SET t.b = t.b + 10 WHERE t.a = 10; ERROR: column "t" of relation "update_test" does not exist -LINE 1: UPDATE update_test t SET t.b = t.b + 10 WHERE t.a = 10; - ^ HINT: SET target columns cannot be qualified with the relation name. -- -- Test VALUES in FROM @@ -66,8 +64,6 @@ UPDATE update_test SET a = v.* FROM (VALUES(100, 20)) AS v(i, j) WHERE update_test.b = v.j; ERROR: column "a" is of type integer but expression is of type record -LINE 1: UPDATE update_test SET a = v.* FROM (VALUES(100, 20)) AS v(i... - ^ HINT: You will need to rewrite or cast the expression. -- -- Test multiple-set-clause syntax @@ -153,14 +149,10 @@ UPDATE update_test SET (a,b) = (v.*) FROM (VALUES(21, 101)) AS v(i, j) WHERE update_test.a = v.i; ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or ROW() expression -LINE 1: UPDATE update_test SET (a,b) = (v.*) FROM (VALUES(21, 101)) ... - ^ -- if an alias for the target table is specified, don't allow references -- to the original table name UPDATE update_test AS t SET b = update_test.b + 10 WHERE t.a = 10; ERROR: invalid reference to FROM-clause entry for table "update_test" -LINE 1: UPDATE update_test AS t SET b = update_test.b + 10 WHERE t.a... - ^ HINT: Perhaps you meant to reference the table alias "t". -- Make sure that we can update to a TOASTed value. UPDATE update_test SET c = repeat('x', 10000) WHERE c = 'car'; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/delete.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/delete.out --- /tmp/cirrus-ci-build/src/test/regress/expected/delete.out 2024-02-22 13:04:49.012785000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/delete.out 2024-02-22 13:08:14.251127000 +0000 @@ -12,8 +12,6 @@ -- to be referenced DELETE FROM delete_test dt WHERE delete_test.a > 25; ERROR: invalid reference to FROM-clause entry for table "delete_test" -LINE 1: DELETE FROM delete_test dt WHERE delete_test.a > 25; - ^ HINT: Perhaps you meant to reference the table alias "dt". SELECT id, a, char_length(b) FROM delete_test; id | a | char_length diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/namespace.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/namespace.out --- /tmp/cirrus-ci-build/src/test/regress/expected/namespace.out 2024-02-22 13:04:49.014718000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/namespace.out 2024-02-22 13:08:14.521734000 +0000 @@ -24,8 +24,6 @@ CREATE SCHEMA test_ns_schema_2 CREATE VIEW abc_view AS SELECT c FROM abc; ERROR: column "c" does not exist -LINE 2: CREATE VIEW abc_view AS SELECT c FROM abc; - ^ COMMIT; SHOW search_path; search_path diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/prepared_xacts.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/prepared_xacts.out --- /tmp/cirrus-ci-build/src/test/regress/expected/prepared_xacts.out 2024-02-22 13:04:49.015654000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/prepared_xacts.out 2024-02-22 13:08:14.905724000 +0000 @@ -199,8 +199,6 @@ -- Table doesn't exist, the creation hasn't been committed yet SELECT * FROM pxtest2; ERROR: relation "pxtest2" does not exist -LINE 1: SELECT * FROM pxtest2; - ^ -- There should be two prepared transactions SELECT gid FROM pg_prepared_xacts; gid @@ -255,8 +253,6 @@ COMMIT PREPARED 'regress-two'; SELECT * FROM pxtest3; ERROR: relation "pxtest3" does not exist -LINE 1: SELECT * FROM pxtest3; - ^ -- There should be no prepared transactions SELECT gid FROM pg_prepared_xacts; gid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/collate.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/collate.out --- /tmp/cirrus-ci-build/src/test/regress/expected/collate.out 2024-02-22 13:04:49.012093000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/collate.out 2024-02-22 13:08:18.200566000 +0000 @@ -27,8 +27,6 @@ b text ); ERROR: collations are not supported by type integer -LINE 2: a int COLLATE "C", - ^ CREATE TABLE collate_test_like ( LIKE collate_test1 ); @@ -68,8 +66,6 @@ SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "POSIX"; -- fail ERROR: collation mismatch between explicit collations "C" and "POSIX" -LINE 1: ...* FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "P... - ^ CREATE DOMAIN testdomain_p AS text COLLATE "POSIX"; CREATE DOMAIN testdomain_i AS int COLLATE "POSIX"; -- fail ERROR: collations are not supported by type integer @@ -365,8 +361,6 @@ -- In aggregates, ORDER BY expressions don't affect aggregate's collation SELECT string_agg(x COLLATE "C", y COLLATE "POSIX") FROM collate_test10; -- fail ERROR: collation mismatch between explicit collations "C" and "POSIX" -LINE 1: SELECT string_agg(x COLLATE "C", y COLLATE "POSIX") FROM col... - ^ SELECT array_agg(x COLLATE "C" ORDER BY y COLLATE "POSIX") FROM collate_test10; array_agg ----------- @@ -381,8 +375,6 @@ SELECT array_agg(a ORDER BY x||y) FROM collate_test10; -- fail ERROR: collation mismatch between implicit collations "C" and "POSIX" -LINE 1: SELECT array_agg(a ORDER BY x||y) FROM collate_test10; - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test1 ORDER BY 2; a | b @@ -439,8 +431,6 @@ SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collate_test2 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "C" and "POSIX" -LINE 1: SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collat... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. SELECT a, b COLLATE "C" FROM collate_test1 UNION SELECT a, b FROM collate_test2 ORDER BY 2; -- ok a | b @@ -453,13 +443,9 @@ SELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM collate_test2 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "C" and "POSIX" -LINE 1: ...ELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM col... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM collate_test2 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "C" and "POSIX" -LINE 1: SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM colla... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. CREATE TABLE test_u AS SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test2; -- fail ERROR: no collation was derived for column "b" with collatable type text @@ -477,8 +463,6 @@ select x, y from collate_test10 order by x || y; -- not so ok ERROR: collation mismatch between implicit collations "C" and "POSIX" -LINE 1: select x, y from collate_test10 order by x || y; - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. -- collation mismatch between recursive and non-recursive term WITH RECURSIVE foo(x) AS @@ -487,8 +471,6 @@ SELECT (x || 'c') COLLATE "POSIX" FROM foo WHERE length(x) < 10) SELECT * FROM foo; ERROR: recursive query "foo" column 1 has collation "C" in non-recursive term but collation "POSIX" overall -LINE 2: (SELECT x FROM (VALUES('a' COLLATE "C"),('b')) t(x) - ^ HINT: Use the COLLATE clause to set the collation of the non-recursive term. SELECT a, b, a < b as lt FROM (VALUES ('a', 'B'), ('A', 'b' COLLATE "C")) v(a,b); @@ -596,8 +578,6 @@ ERROR: collations are not supported by type integer CREATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "POSIX")); -- fail ERROR: collations are not supported by type integer -LINE 1: ...ATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "P... - ^ SELECT relname, pg_get_indexdef(oid) FROM pg_class WHERE relname LIKE 'collate_test%_idx%' ORDER BY 1; relname | pg_get_indexdef --------------------+------------------------------------------------------------------------------------------------------------------- @@ -663,8 +643,6 @@ -- invalid: non-lowercase quoted identifiers CREATE COLLATION case_coll ("Lc_Collate" = "POSIX", "Lc_Ctype" = "POSIX"); ERROR: collation attribute "Lc_Collate" not recognized -LINE 1: CREATE COLLATION case_coll ("Lc_Collate" = "POSIX", "Lc_Ctyp... - ^ -- 9.1 bug with useless COLLATE in an expression subject to length coercion CREATE TEMP TABLE vctable (f1 varchar(25)); INSERT INTO vctable VALUES ('foo' COLLATE "C"); @@ -705,33 +683,21 @@ -- LC_COLLATE CREATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LC_COLLATE = "NONSENSE", LC_CTYPE = "POSIX"); ERROR: conflicting or redundant options -LINE 1: ...ATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LC_COLLATE... - ^ -- LC_CTYPE CREATE COLLATION coll_dup_chk (LC_CTYPE = "POSIX", LC_CTYPE = "NONSENSE", LC_COLLATE = "POSIX"); ERROR: conflicting or redundant options -LINE 1: ...REATE COLLATION coll_dup_chk (LC_CTYPE = "POSIX", LC_CTYPE =... - ^ -- PROVIDER CREATE COLLATION coll_dup_chk (PROVIDER = icu, PROVIDER = NONSENSE, LC_COLLATE = "POSIX", LC_CTYPE = "POSIX"); ERROR: conflicting or redundant options -LINE 1: CREATE COLLATION coll_dup_chk (PROVIDER = icu, PROVIDER = NO... - ^ -- LOCALE CREATE COLLATION case_sensitive (LOCALE = '', LOCALE = "NONSENSE"); ERROR: conflicting or redundant options -LINE 1: CREATE COLLATION case_sensitive (LOCALE = '', LOCALE = "NONS... - ^ -- DETERMINISTIC CREATE COLLATION coll_dup_chk (DETERMINISTIC = TRUE, DETERMINISTIC = NONSENSE, LOCALE = ''); ERROR: conflicting or redundant options -LINE 1: ...ATE COLLATION coll_dup_chk (DETERMINISTIC = TRUE, DETERMINIS... - ^ -- VERSION CREATE COLLATION coll_dup_chk (VERSION = '1', VERSION = "NONSENSE", LOCALE = ''); ERROR: conflicting or redundant options -LINE 1: CREATE COLLATION coll_dup_chk (VERSION = '1', VERSION = "NON... - ^ -- LOCALE conflicts with LC_COLLATE and LC_CTYPE CREATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LC_CTYPE = "POSIX", LOCALE = ''); ERROR: conflicting or redundant options diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/tablesample.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tablesample.out --- /tmp/cirrus-ci-build/src/test/regress/expected/tablesample.out 2024-02-22 13:04:49.016793000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tablesample.out 2024-02-22 13:08:17.699770000 +0000 @@ -282,8 +282,6 @@ -- errors SELECT id FROM test_tablesample TABLESAMPLE FOOBAR (1); ERROR: tablesample method foobar does not exist -LINE 1: SELECT id FROM test_tablesample TABLESAMPLE FOOBAR (1); - ^ SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (NULL); ERROR: TABLESAMPLE parameter cannot be null SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (NULL); @@ -298,8 +296,6 @@ ERROR: sample percentage must be between 0 and 100 SELECT id FROM test_tablesample_v1 TABLESAMPLE BERNOULLI (1); ERROR: TABLESAMPLE clause can only be applied to tables and materialized views -LINE 1: SELECT id FROM test_tablesample_v1 TABLESAMPLE BERNOULLI (1)... - ^ INSERT INTO test_tablesample_v1 VALUES(1); ERROR: cannot insert into view "test_tablesample_v1" DETAIL: Views containing TABLESAMPLE are not automatically updatable. @@ -307,8 +303,6 @@ WITH query_select AS (SELECT * FROM test_tablesample) SELECT * FROM query_select TABLESAMPLE BERNOULLI (5.5) REPEATABLE (1); ERROR: TABLESAMPLE clause can only be applied to tables and materialized views -LINE 2: SELECT * FROM query_select TABLESAMPLE BERNOULLI (5.5) REPEA... - ^ SELECT q.* FROM (SELECT * FROM test_tablesample) as q TABLESAMPLE BERNOULLI (5); ERROR: syntax error at or near "TABLESAMPLE" LINE 1: ...CT q.* FROM (SELECT * FROM test_tablesample) as q TABLESAMPL... diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/groupingsets.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/groupingsets.out --- /tmp/cirrus-ci-build/src/test/regress/expected/groupingsets.out 2024-02-22 13:04:49.013390000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/groupingsets.out 2024-02-22 13:08:18.581955000 +0000 @@ -551,8 +551,6 @@ from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by rollup (a,b)) s; ERROR: aggregate functions are not allowed in FROM clause of their own query level -LINE 3: lateral (select a, b, sum(v.x) from gstest_data(v.x) ... - ^ -- min max optimization should still work with GROUP BY () explain (costs off) select min(unique1) from tenk1 GROUP BY (); @@ -749,8 +747,6 @@ -- Agg level check. This query should error out. select (select grouping(a,b) from gstest2) from gstest2 group by a,b; ERROR: arguments to GROUPING must be grouping expressions of the associated query level -LINE 1: select (select grouping(a,b) from gstest2) from gstest2 grou... - ^ --Nested queries select a, b, sum(c), count(*) from gstest2 group by grouping sets (rollup(a,b),a); a | b | sum | count @@ -1336,15 +1332,11 @@ from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by grouping sets (a,b)) s; ERROR: aggregate functions are not allowed in FROM clause of their own query level -LINE 3: lateral (select a, b, sum(v.x) from gstest_data(v.x) ... - ^ explain (costs off) select * from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by grouping sets (a,b)) s; ERROR: aggregate functions are not allowed in FROM clause of their own query level -LINE 4: lateral (select a, b, sum(v.x) from gstest_data(v.x... - ^ -- Tests for chained aggregates select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a,b),(a+1,b+1),(a+2,b+2)) order by 3,6; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/identity.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/identity.out --- /tmp/cirrus-ci-build/src/test/regress/expected/identity.out 2024-02-22 13:04:49.013518000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/identity.out 2024-02-22 13:08:19.109083000 +0000 @@ -58,13 +58,9 @@ -- duplicate identity CREATE TABLE itest_err_2 (a int generated always as identity generated by default as identity); ERROR: multiple identity specifications for column "a" of table "itest_err_2" -LINE 1: ...E itest_err_2 (a int generated always as identity generated ... - ^ -- cannot have default and identity CREATE TABLE itest_err_3 (a int default 5 generated by default as identity); ERROR: both default and identity specified for column "a" of table "itest_err_3" -LINE 1: CREATE TABLE itest_err_3 (a int default 5 generated by defau... - ^ -- cannot combine serial and identity CREATE TABLE itest_err_4 (a serial generated by default as identity); ERROR: both default and identity specified for column "a" of table "itest_err_4" @@ -276,8 +272,6 @@ -- check that sequence is removed SELECT sequence_name FROM itest4_a_seq; ERROR: relation "itest4_a_seq" does not exist -LINE 1: SELECT sequence_name FROM itest4_a_seq; - ^ -- test views CREATE TABLE itest10 (a int generated by default as identity, b text); CREATE TABLE itest11 (a int generated always as identity, b text); @@ -815,12 +809,8 @@ -- Identity columns must be NOT NULL (cf bug #16913) CREATE TABLE itest15 (id integer GENERATED ALWAYS AS IDENTITY NULL); -- fail ERROR: conflicting NULL/NOT NULL declarations for column "id" of table "itest15" -LINE 1: ...ABLE itest15 (id integer GENERATED ALWAYS AS IDENTITY NULL); - ^ CREATE TABLE itest15 (id integer NULL GENERATED ALWAYS AS IDENTITY); -- fail ERROR: conflicting NULL/NOT NULL declarations for column "id" of table "itest15" -LINE 1: CREATE TABLE itest15 (id integer NULL GENERATED ALWAYS AS ID... - ^ CREATE TABLE itest15 (id integer GENERATED ALWAYS AS IDENTITY NOT NULL); DROP TABLE itest15; CREATE TABLE itest15 (id integer NOT NULL GENERATED ALWAYS AS IDENTITY); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/generated.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/generated.out --- /tmp/cirrus-ci-build/src/test/regress/expected/generated.out 2024-02-22 13:04:49.013215000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/generated.out 2024-02-22 13:08:19.698014000 +0000 @@ -33,31 +33,21 @@ -- duplicate generated CREATE TABLE gtest_err_1 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED GENERATED ALWAYS AS (a * 3) STORED); ERROR: multiple generation clauses specified for column "b" of table "gtest_err_1" -LINE 1: ...ARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED GENERATED ... - ^ -- references to other generated columns, including self-references CREATE TABLE gtest_err_2a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (b * 2) STORED); ERROR: cannot use generated column "b" in column generation expression -LINE 1: ...2a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (b * 2) STO... - ^ DETAIL: A generated column cannot reference another generated column. CREATE TABLE gtest_err_2b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED, c int GENERATED ALWAYS AS (b * 3) STORED); ERROR: cannot use generated column "b" in column generation expression -LINE 1: ...AYS AS (a * 2) STORED, c int GENERATED ALWAYS AS (b * 3) STO... - ^ DETAIL: A generated column cannot reference another generated column. -- a whole-row var is a self-reference on steroids, so disallow that too CREATE TABLE gtest_err_2c (a int PRIMARY KEY, b int GENERATED ALWAYS AS (num_nulls(gtest_err_2c)) STORED); ERROR: cannot use whole-row variable in column generation expression -LINE 2: b int GENERATED ALWAYS AS (num_nulls(gtest_err_2c)) STOR... - ^ DETAIL: This would cause the generated column to depend on its own value. -- invalid reference CREATE TABLE gtest_err_3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STORED); ERROR: column "c" does not exist -LINE 1: ..._3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STO... - ^ -- generation expression must be immutable CREATE TABLE gtest_err_4 (a int PRIMARY KEY, b double precision GENERATED ALWAYS AS (random()) STORED); ERROR: generation expression is not immutable @@ -67,35 +57,21 @@ -- cannot have default/identity and generated CREATE TABLE gtest_err_5a (a int PRIMARY KEY, b int DEFAULT 5 GENERATED ALWAYS AS (a * 2) STORED); ERROR: both default and generation expression specified for column "b" of table "gtest_err_5a" -LINE 1: ... gtest_err_5a (a int PRIMARY KEY, b int DEFAULT 5 GENERATED ... - ^ CREATE TABLE gtest_err_5b (a int PRIMARY KEY, b int GENERATED ALWAYS AS identity GENERATED ALWAYS AS (a * 2) STORED); ERROR: both identity and generation expression specified for column "b" of table "gtest_err_5b" -LINE 1: ...t PRIMARY KEY, b int GENERATED ALWAYS AS identity GENERATED ... - ^ -- reference to system column not allowed in generated column -- (except tableoid, which we test below) CREATE TABLE gtest_err_6a (a int PRIMARY KEY, b bool GENERATED ALWAYS AS (xmin <> 37) STORED); ERROR: cannot use system column "xmin" in column generation expression -LINE 1: ...a (a int PRIMARY KEY, b bool GENERATED ALWAYS AS (xmin <> 37... - ^ -- various prohibited constructs CREATE TABLE gtest_err_7a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (avg(a)) STORED); ERROR: aggregate functions are not allowed in column generation expressions -LINE 1: ...7a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (avg(a)) ST... - ^ CREATE TABLE gtest_err_7b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (row_number() OVER (ORDER BY a)) STORED); ERROR: window functions are not allowed in column generation expressions -LINE 1: ...7b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (row_number... - ^ CREATE TABLE gtest_err_7c (a int PRIMARY KEY, b int GENERATED ALWAYS AS ((SELECT a)) STORED); ERROR: cannot use subquery in column generation expression -LINE 1: ...7c (a int PRIMARY KEY, b int GENERATED ALWAYS AS ((SELECT a)... - ^ CREATE TABLE gtest_err_7d (a int PRIMARY KEY, b int GENERATED ALWAYS AS (generate_series(1, a)) STORED); ERROR: set-returning functions are not allowed in column generation expressions -LINE 1: ...7d (a int PRIMARY KEY, b int GENERATED ALWAYS AS (generate_s... - ^ -- GENERATED BY DEFAULT not allowed CREATE TABLE gtest_err_8 (a int PRIMARY KEY, b int GENERATED BY DEFAULT AS (a * 2) STORED); ERROR: for a generated column, GENERATED ALWAYS must be specified @@ -952,13 +928,9 @@ -- generated columns in partition key (not allowed) CREATE TABLE gtest_part_key (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE (f3); ERROR: cannot use generated column in partition key -LINE 1: ...ENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE (f3); - ^ DETAIL: Column "f3" is a generated column. CREATE TABLE gtest_part_key (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE ((f3 * 3)); ERROR: cannot use generated column in partition key -LINE 1: ...ED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE ((f3 * 3)); - ^ DETAIL: Column "f3" is a generated column. -- ALTER TABLE ... ADD COLUMN CREATE TABLE gtest25 (a int PRIMARY KEY); @@ -1217,16 +1189,12 @@ WHEN (NEW.b < 0) -- error EXECUTE PROCEDURE gtest_trigger_func(); ERROR: BEFORE trigger's WHEN condition cannot reference NEW generated columns -LINE 3: WHEN (NEW.b < 0) -- error - ^ DETAIL: Column "b" is a generated column. CREATE TRIGGER gtest2b BEFORE INSERT OR UPDATE ON gtest26 FOR EACH ROW WHEN (NEW.* IS NOT NULL) -- error EXECUTE PROCEDURE gtest_trigger_func(); ERROR: BEFORE trigger's WHEN condition cannot reference NEW generated columns -LINE 3: WHEN (NEW.* IS NOT NULL) -- error - ^ DETAIL: A whole-row reference is used and the table contains generated columns. CREATE TRIGGER gtest2 BEFORE INSERT ON gtest26 FOR EACH ROW diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_table_like.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_table_like.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_table_like.out 2024-02-22 13:04:49.012714000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/create_table_like.out 2024-02-22 13:08:21.612211000 +0000 @@ -10,8 +10,6 @@ CREATE TABLE ctlb (bb TEXT) INHERITS (ctla); CREATE TABLE foo (LIKE nonexistent); ERROR: relation "nonexistent" does not exist -LINE 1: CREATE TABLE foo (LIKE nonexistent); - ^ CREATE TABLE inhe (ee text, LIKE inhx) inherits (ctlb); INSERT INTO inhe VALUES ('ee-col1', 'ee-col2', DEFAULT, 'ee-col4'); SELECT * FROM inhe; /* Columns aa, bb, xx value NULL, ee */ @@ -515,8 +513,6 @@ CREATE SEQUENCE ctlseq1; CREATE TABLE ctlt10 (LIKE ctlseq1); -- fail ERROR: relation "ctlseq1" is invalid in LIKE clause -LINE 1: CREATE TABLE ctlt10 (LIKE ctlseq1); - ^ DETAIL: This operation is not supported for sequences. CREATE VIEW ctlv1 AS SELECT * FROM ctlt4; CREATE TABLE ctlt11 (LIKE ctlv1); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/merge.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/merge.out --- /tmp/cirrus-ci-build/src/test/regress/expected/merge.out 2024-02-22 13:04:49.014608000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/merge.out 2024-02-22 13:08:21.525367000 +0000 @@ -130,8 +130,6 @@ WHEN MATCHED THEN DELETE ) SELECT * FROM foo; ERROR: MERGE not supported in WITH query -LINE 1: WITH foo AS ( - ^ -- used in COPY COPY ( MERGE INTO target USING source ON (true) @@ -204,8 +202,6 @@ WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; ERROR: invalid reference to FROM-clause entry for table "t" -LINE 2: USING (SELECT * FROM source WHERE t.tid > sid) s - ^ DETAIL: There is an entry for table "t", but it cannot be referenced from this part of the query. -- -- initial tests @@ -625,8 +621,6 @@ WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (t.tid, s.delta); ERROR: invalid reference to FROM-clause entry for table "t" -LINE 5: INSERT (tid, balance) VALUES (t.tid, s.delta); - ^ DETAIL: There is an entry for table "t", but it cannot be referenced from this part of the query. -- and again with a constant ON clause BEGIN; @@ -636,8 +630,6 @@ WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (t.tid, s.delta); ERROR: invalid reference to FROM-clause entry for table "t" -LINE 5: INSERT (tid, balance) VALUES (t.tid, s.delta); - ^ DETAIL: There is an entry for table "t", but it cannot be referenced from this part of the query. SELECT * FROM target ORDER BY tid; ERROR: current transaction is aborted, commands ignored until end of transaction block @@ -731,8 +723,6 @@ WHEN NOT MATCHED AND t.balance = 100 THEN INSERT (tid) VALUES (s.sid); ERROR: invalid reference to FROM-clause entry for table "t" -LINE 3: WHEN NOT MATCHED AND t.balance = 100 THEN - ^ DETAIL: There is an entry for table "t", but it cannot be referenced from this part of the query. SELECT * FROM wq_target; ERROR: current transaction is aborted, commands ignored until end of transaction block @@ -840,8 +830,6 @@ WHEN MATCHED AND t.xmin = t.xmax THEN UPDATE SET balance = t.balance + s.balance; ERROR: cannot use system column "xmin" in MERGE WHEN condition -LINE 3: WHEN MATCHED AND t.xmin = t.xmax THEN - ^ MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.tableoid >= 0 THEN @@ -1272,8 +1260,6 @@ WHEN MATCHED AND tid < 2 THEN DELETE; ERROR: column reference "balance" is ambiguous -LINE 5: UPDATE SET balance = balance + delta - ^ ROLLBACK; BEGIN; INSERT INTO sq_source (sid, balance, delta) VALUES (-1, -1, -10); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/misc_functions.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/misc_functions.out --- /tmp/cirrus-ci-build/src/test/regress/expected/misc_functions.out 2024-02-22 13:04:49.014637000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/misc_functions.out 2024-02-22 13:08:21.165573000 +0000 @@ -129,13 +129,9 @@ -- should fail, one or more arguments is required SELECT num_nonnulls(); ERROR: function num_nonnulls() does not exist -LINE 1: SELECT num_nonnulls(); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. SELECT num_nulls(); ERROR: function num_nulls() does not exist -LINE 1: SELECT num_nulls(); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. -- -- canonicalize_path() diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/tsrf.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tsrf.out --- /tmp/cirrus-ci-build/src/test/regress/expected/tsrf.out 2024-02-22 13:04:49.017142000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tsrf.out 2024-02-22 13:08:21.059840000 +0000 @@ -44,8 +44,6 @@ -- but we've traditionally rejected the same in FROM SELECT * FROM generate_series(1, generate_series(1, 3)); ERROR: set-returning functions must appear at top level of FROM -LINE 1: SELECT * FROM generate_series(1, generate_series(1, 3)); - ^ -- srf, with two SRF arguments SELECT generate_series(generate_series(1,3), generate_series(2, 4)); generate_series @@ -231,19 +229,13 @@ -- SRFs are not allowed if they'd need to be conditionally executed SELECT q1, case when q1 > 0 then generate_series(1,3) else 0 end FROM int8_tbl; ERROR: set-returning functions are not allowed in CASE -LINE 1: SELECT q1, case when q1 > 0 then generate_series(1,3) else 0... - ^ HINT: You might be able to move the set-returning function into a LATERAL FROM item. SELECT q1, coalesce(generate_series(1,3), 0) FROM int8_tbl; ERROR: set-returning functions are not allowed in COALESCE -LINE 1: SELECT q1, coalesce(generate_series(1,3), 0) FROM int8_tbl; - ^ HINT: You might be able to move the set-returning function into a LATERAL FROM item. -- SRFs are not allowed in aggregate arguments SELECT min(generate_series(1, 3)) FROM few; ERROR: aggregate function calls cannot contain set-returning function calls -LINE 1: SELECT min(generate_series(1, 3)) FROM few; - ^ HINT: You might be able to move the set-returning function into a LATERAL FROM item. -- ... unless they're within a sub-select SELECT sum((3 = ANY(SELECT generate_series(1,4)))::int); @@ -262,8 +254,6 @@ -- SRFs are not allowed in window function arguments, either SELECT min(generate_series(1, 3)) OVER() FROM few; ERROR: window function calls cannot contain set-returning function calls -LINE 1: SELECT min(generate_series(1, 3)) OVER() FROM few; - ^ HINT: You might be able to move the set-returning function into a LATERAL FROM item. -- SRFs are normally computed after window functions SELECT id,lag(id) OVER(), count(*) OVER(), generate_series(1,3) FROM few; @@ -492,18 +482,12 @@ -- SRFs are not allowed in UPDATE (they once were, but it was nonsense) UPDATE fewmore SET data = generate_series(4,9); ERROR: set-returning functions are not allowed in UPDATE -LINE 1: UPDATE fewmore SET data = generate_series(4,9); - ^ -- SRFs are not allowed in RETURNING INSERT INTO fewmore VALUES(1) RETURNING generate_series(1,3); ERROR: set-returning functions are not allowed in RETURNING -LINE 1: INSERT INTO fewmore VALUES(1) RETURNING generate_series(1,3)... - ^ -- nor standalone VALUES (but surely this is a bug?) VALUES(1, generate_series(1,2)); ERROR: set-returning functions are not allowed in VALUES -LINE 1: VALUES(1, generate_series(1,2)); - ^ -- We allow tSRFs that are not at top level SELECT int4mul(generate_series(1,2), 10); int4mul @@ -523,8 +507,6 @@ -- but SRFs in function RTEs must be at top level (annoying restriction) SELECT * FROM int4mul(generate_series(1,2), 10); ERROR: set-returning functions must appear at top level of FROM -LINE 1: SELECT * FROM int4mul(generate_series(1,2), 10); - ^ -- DISTINCT ON is evaluated before tSRF evaluation if SRF is not -- referenced either in ORDER BY or in the DISTINCT ON list. The ORDER -- BY reference can be implicitly generated, if there's no other ORDER BY. @@ -613,8 +595,6 @@ -- SRFs are not allowed in LIMIT. SELECT 1 LIMIT generate_series(1,3); ERROR: set-returning functions are not allowed in LIMIT -LINE 1: SELECT 1 LIMIT generate_series(1,3); - ^ -- tSRF in correlated subquery, referencing table outside SELECT (SELECT generate_series(1,3) LIMIT 1 OFFSET few.id) FROM few; generate_series diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/tid.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tid.out --- /tmp/cirrus-ci-build/src/test/regress/expected/tid.out 2024-02-22 13:04:49.015181000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/tid.out 2024-02-22 13:08:21.064297000 +0000 @@ -11,12 +11,8 @@ SELECT '(4294967296,1)'::tid; -- error ERROR: invalid input syntax for type tid: "(4294967296,1)" -LINE 1: SELECT '(4294967296,1)'::tid; - ^ SELECT '(1,65536)'::tid; -- error ERROR: invalid input syntax for type tid: "(1,65536)" -LINE 1: SELECT '(1,65536)'::tid; - ^ -- Also try it with non-error-throwing API SELECT pg_input_is_valid('(0)', 'tid'); pg_input_is_valid diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/collate.icu.utf8.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/collate.icu.utf8.out --- /tmp/cirrus-ci-build/src/test/regress/expected/collate.icu.utf8.out 2024-02-22 13:04:49.012043000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/collate.icu.utf8.out 2024-02-22 13:08:21.551918000 +0000 @@ -27,22 +27,16 @@ b text COLLATE "ja_JP.eucjp-x-icu" ); ERROR: collation "ja_JP.eucjp-x-icu" for encoding "UTF8" does not exist -LINE 3: b text COLLATE "ja_JP.eucjp-x-icu" - ^ CREATE TABLE collate_test_fail ( a int, b text COLLATE "foo-x-icu" ); ERROR: collation "foo-x-icu" for encoding "UTF8" does not exist -LINE 3: b text COLLATE "foo-x-icu" - ^ CREATE TABLE collate_test_fail ( a int COLLATE "en-x-icu", b text ); ERROR: collations are not supported by type integer -LINE 2: a int COLLATE "en-x-icu", - ^ CREATE TABLE collate_test_like ( LIKE collate_test1 ); @@ -115,8 +109,6 @@ SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "en-x-icu"; ERROR: collation mismatch between explicit collations "C" and "en-x-icu" -LINE 1: ...* FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "e... - ^ CREATE DOMAIN testdomain_sv AS text COLLATE "sv-x-icu"; CREATE DOMAIN testdomain_i AS int COLLATE "sv-x-icu"; -- fails ERROR: collations are not supported by type integer @@ -726,8 +718,6 @@ SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "en-x-icu" and "C" -LINE 1: SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collat... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. SELECT a, b COLLATE "C" FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- ok a | b @@ -740,13 +730,9 @@ SELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "en-x-icu" and "C" -LINE 1: ...ELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM col... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail ERROR: collation mismatch between implicit collations "en-x-icu" and "C" -LINE 1: SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM colla... - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. CREATE TABLE test_u AS SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3; -- fail ERROR: no collation was derived for column "b" with collatable type text @@ -764,8 +750,6 @@ select x, y from collate_test10 order by x || y; -- not so ok ERROR: collation mismatch between implicit collations "en-x-icu" and "tr-x-icu" -LINE 1: select x, y from collate_test10 order by x || y; - ^ HINT: You can choose the collation by applying the COLLATE clause to one or both expressions. -- collation mismatch between recursive and non-recursive term WITH RECURSIVE foo(x) AS @@ -774,8 +758,6 @@ SELECT (x || 'c') COLLATE "de-x-icu" FROM foo WHERE length(x) < 10) SELECT * FROM foo; ERROR: recursive query "foo" column 1 has collation "en-x-icu" in non-recursive term but collation "de-x-icu" overall -LINE 2: (SELECT x FROM (VALUES('a' COLLATE "en-x-icu"),('b')) t(x... - ^ HINT: Use the COLLATE clause to set the collation of the non-recursive term. -- casting SELECT CAST('42' AS text COLLATE "C"); @@ -972,8 +954,6 @@ ERROR: collations are not supported by type integer CREATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "C")); -- fail ERROR: collations are not supported by type integer -LINE 1: ...ATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "C... - ^ SELECT relname, pg_get_indexdef(oid) FROM pg_class WHERE relname LIKE 'collate_test%_idx%' ORDER BY 1; relname | pg_get_indexdef --------------------+------------------------------------------------------------------------------------------------------------------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/without_overlaps.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/without_overlaps.out --- /tmp/cirrus-ci-build/src/test/regress/expected/without_overlaps.out 2024-02-22 13:04:49.017713000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/without_overlaps.out 2024-02-22 13:08:21.296991000 +0000 @@ -18,8 +18,6 @@ CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) ); ERROR: column "valid_at" named in key does not exist -LINE 3: CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOU... - ^ -- PK with a non-range column: CREATE TABLE temporal_rng ( id int4range, @@ -125,8 +123,6 @@ CONSTRAINT temporal_rng3_uq UNIQUE (id, valid_at WITHOUT OVERLAPS) ); ERROR: column "valid_at" named in key does not exist -LINE 3: CONSTRAINT temporal_rng3_uq UNIQUE (id, valid_at WITHOUT OV... - ^ -- UNIQUE with a non-range column: CREATE TABLE temporal_rng3 ( id int4range, @@ -224,8 +220,6 @@ ADD CONSTRAINT temporal3_pk PRIMARY KEY USING INDEX idx_temporal3_uq; ERROR: "idx_temporal3_uq" is not a unique index -LINE 2: ADD CONSTRAINT temporal3_pk - ^ DETAIL: Cannot create a primary key or unique constraint using such an index. DROP TABLE temporal3; -- UNIQUE with USING INDEX (not possible): @@ -238,8 +232,6 @@ ADD CONSTRAINT temporal3_uq UNIQUE USING INDEX idx_temporal3_uq; ERROR: "idx_temporal3_uq" is not a unique index -LINE 2: ADD CONSTRAINT temporal3_uq - ^ DETAIL: Cannot create a primary key or unique constraint using such an index. DROP TABLE temporal3; -- UNIQUE with USING [UNIQUE] INDEX (possible but not a temporal constraint): diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/rules.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rules.out --- /tmp/cirrus-ci-build/src/test/regress/expected/rules.out 2024-02-22 13:04:49.016285000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rules.out 2024-02-22 13:08:22.439128000 +0000 @@ -1192,8 +1192,6 @@ create rule rules_foorule as on insert to rules_foo where f1 < 100 do instead insert into rules_foo2 values (f1); ERROR: column "f1" does not exist -LINE 2: do instead insert into rules_foo2 values (f1); - ^ DETAIL: There are columns named "f1", but they are in tables that cannot be referenced from this part of the query. HINT: Try using a table-qualified name. -- this is the correct way: @@ -2923,8 +2921,6 @@ create or replace rule r1 as on update to rules_base do instead select * from rules_base where f1 = 11 for update of old; -- error ERROR: relation "old" in FOR UPDATE clause not found in FROM clause -LINE 2: select * from rules_base where f1 = 11 for update of old; - ^ drop table rules_base; -- test various flavors of pg_get_viewdef() select pg_get_viewdef('shoe'::regclass) as unpretty; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/psql.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/psql.out --- /tmp/cirrus-ci-build/src/test/regress/expected/psql.out 2024-02-22 13:04:49.015766000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/psql.out 2024-02-22 13:08:22.475461000 +0000 @@ -121,8 +121,6 @@ -- parse error SELECT foo \bind \g ERROR: column "foo" does not exist -LINE 1: SELECT foo - ^ -- tcop error SELECT 1 \; SELECT 2 \bind \g ERROR: cannot insert multiple commands into a prepared statement @@ -239,8 +237,6 @@ -- subject command should not have executed TABLE bububu; -- fail ERROR: relation "bububu" does not exist -LINE 1: TABLE bububu; - ^ -- query buffer should remain unchanged SELECT 1 AS x, 'Hello', 2 AS y, true AS "dirty\name" \gdesc @@ -5399,8 +5395,6 @@ DROP TABLE ac_test; SELECT * FROM ac_test; -- should be gone now ERROR: relation "ac_test" does not exist -LINE 1: SELECT * FROM ac_test; - ^ -- ON_ERROR_ROLLBACK \set ON_ERROR_ROLLBACK on CREATE TABLE oer_test (a int); @@ -5408,8 +5402,6 @@ INSERT INTO oer_test VALUES (1); INSERT INTO oer_test VALUES ('foo'); ERROR: invalid input syntax for type integer: "foo" -LINE 1: INSERT INTO oer_test VALUES ('foo'); - ^ INSERT INTO oer_test VALUES (3); COMMIT; SELECT * FROM oer_test; @@ -5448,8 +5440,6 @@ -- ECHO errors \set ECHO errors ERROR: relation "notexists" does not exist -LINE 1: SELECT * FROM notexists; - ^ STATEMENT: SELECT * FROM notexists; -- -- combined queries @@ -5735,8 +5725,6 @@ BEGIN; CREATE TABLE bla(s NO_SUCH_TYPE); -- fails ERROR: type "no_such_type" does not exist -LINE 1: CREATE TABLE bla(s NO_SUCH_TYPE); - ^ CREATE TABLE bla(s TEXT); -- succeeds SELECT psql_error('oops!'); -- fails ERROR: error oops! diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/publication.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/publication.out --- /tmp/cirrus-ci-build/src/test/regress/expected/publication.out 2024-02-22 13:04:49.015818000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/publication.out 2024-02-22 13:08:25.227089000 +0000 @@ -27,8 +27,6 @@ ERROR: unrecognized value for publication option "publish": "cluster" CREATE PUBLICATION testpub_xxx WITH (publish_via_partition_root = 'true', publish_via_partition_root = '0'); ERROR: conflicting or redundant options -LINE 1: ...ub_xxx WITH (publish_via_partition_root = 'true', publish_vi... - ^ \dRp List of publications Name | Owner | All tables | Inserts | Updates | Deletes | Truncates | Via root @@ -420,40 +418,28 @@ -- fail - publication WHERE clause must be boolean ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (1234); ERROR: argument of PUBLICATION WHERE must be type boolean, not type integer -LINE 1: ...PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (1234); - ^ -- fail - aggregate functions not allowed in WHERE clause ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (e < AVG(e)); ERROR: aggregate functions are not allowed in WHERE -LINE 1: ...ATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (e < AVG(e)); - ^ -- fail - user-defined operators are not allowed CREATE FUNCTION testpub_rf_func1(integer, integer) RETURNS boolean AS $$ SELECT hashint4($1) > $2 $$ LANGUAGE SQL; CREATE OPERATOR =#> (PROCEDURE = testpub_rf_func1, LEFTARG = integer, RIGHTARG = integer); CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl3 WHERE (e =#> 27); ERROR: invalid publication WHERE expression -LINE 1: ...ICATION testpub6 FOR TABLE testpub_rf_tbl3 WHERE (e =#> 27); - ^ DETAIL: User-defined operators are not allowed. -- fail - user-defined functions are not allowed CREATE FUNCTION testpub_rf_func2() RETURNS integer AS $$ BEGIN RETURN 123; END; $$ LANGUAGE plpgsql; ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a >= testpub_rf_func2()); ERROR: invalid publication WHERE expression -LINE 1: ...ON testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a >= testpub_rf... - ^ DETAIL: User-defined or built-in mutable functions are not allowed. -- fail - non-immutable functions are not allowed. random() is volatile. ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a < random()); ERROR: invalid publication WHERE expression -LINE 1: ...ION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a < random()); - ^ DETAIL: User-defined or built-in mutable functions are not allowed. -- fail - user-defined collations are not allowed CREATE COLLATION user_collation FROM "C"; ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (b < '2' COLLATE user_collation); ERROR: invalid publication WHERE expression -LINE 1: ...ICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (b < '2' CO... - ^ DETAIL: User-defined collations are not allowed. -- ok - NULLIF is allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (NULLIF(1,2) = a); @@ -471,22 +457,16 @@ CREATE TABLE rf_bug (id serial, description text, status rf_bug_status); CREATE PUBLICATION testpub6 FOR TABLE rf_bug WHERE (status = 'open') WITH (publish = 'insert'); ERROR: invalid publication WHERE expression -LINE 1: ...EATE PUBLICATION testpub6 FOR TABLE rf_bug WHERE (status = '... - ^ DETAIL: User-defined types are not allowed. DROP TABLE rf_bug; DROP TYPE rf_bug_status; -- fail - row filter expression is not simple CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELECT generate_series(1,5))); ERROR: invalid publication WHERE expression -LINE 1: ...ICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELE... - ^ DETAIL: Only columns, constants, built-in operators, built-in data types, built-in collations, and immutable built-in functions are allowed. -- fail - system columns are not allowed CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE ('(0,1)'::tid = ctid); ERROR: invalid publication WHERE expression -LINE 1: ...tpub6 FOR TABLE testpub_rf_tbl1 WHERE ('(0,1)'::tid = ctid); - ^ DETAIL: System columns are not allowed. -- ok - conditional expressions are allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl5 WHERE (a IS DOCUMENT); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/foreign_data.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/foreign_data.out --- /tmp/cirrus-ci-build/src/test/regress/expected/foreign_data.out 2024-02-22 13:04:49.013104000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/foreign_data.out 2024-02-22 13:08:26.870914000 +0000 @@ -103,8 +103,6 @@ ERROR: function invalid_fdw_handler must return type fdw_handler CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR ERROR: conflicting or redundant options -LINE 1: ...GN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER in... - ^ CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler; DROP FOREIGN DATA WRAPPER test_fdw; -- ALTER FOREIGN DATA WRAPPER @@ -214,8 +212,6 @@ ERROR: function invalid_fdw_handler must return type fdw_handler ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler HANDLER anything; -- ERROR ERROR: conflicting or redundant options -LINE 1: ...FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler HANDLER an... - ^ ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler; WARNING: changing the foreign-data wrapper handler can change behavior of existing foreign tables DROP FUNCTION invalid_fdw_handler(); @@ -703,8 +699,6 @@ c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR ERROR: primary key constraints are not supported on foreign tables -LINE 2: c1 integer OPTIONS ("param 1" 'val1') PRIMARY KEY, - ^ CREATE TABLE ref_table (id integer PRIMARY KEY); CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') REFERENCES ref_table (id), @@ -712,8 +706,6 @@ c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR ERROR: foreign key constraints are not supported on foreign tables -LINE 2: c1 integer OPTIONS ("param 1" 'val1') REFERENCES ref_table ... - ^ DROP TABLE ref_table; CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') NOT NULL, @@ -722,8 +714,6 @@ UNIQUE (c3) ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR ERROR: unique constraints are not supported on foreign tables -LINE 5: UNIQUE (c3) - ^ CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') NOT NULL, c2 text OPTIONS (param2 'val2', param3 'val3') CHECK (c2 <> ''), @@ -879,8 +869,6 @@ DROP TABLE use_ft1_column_type; ALTER FOREIGN TABLE ft1 ADD PRIMARY KEY (c7); -- ERROR ERROR: primary key constraints are not supported on foreign tables -LINE 1: ALTER FOREIGN TABLE ft1 ADD PRIMARY KEY (c7); - ^ ALTER FOREIGN TABLE ft1 ADD CONSTRAINT ft1_c9_check CHECK (c9 < 0) NOT VALID; ALTER FOREIGN TABLE ft1 ALTER CONSTRAINT ft1_c9_check DEFERRABLE; -- ERROR ERROR: ALTER action ALTER CONSTRAINT cannot be performed on relation "ft1" diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/window.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/window.out --- /tmp/cirrus-ci-build/src/test/regress/expected/window.out 2024-02-22 13:04:49.017660000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/window.out 2024-02-22 13:08:26.217321000 +0000 @@ -1993,8 +1993,6 @@ unique1, four FROM tenk1, (values (1)) as unbounded(x) WHERE unique1 < 10; ERROR: argument of ROWS must not contain variables -LINE 1: SELECT sum(unique1) over (rows between unbounded.x preceding... - ^ DROP FUNCTION unbounded; -- Check overflow behavior for various integer sizes select x, last_value(x) over (order by x::smallint range between current row and 2147450884 following) @@ -2300,8 +2298,6 @@ window w as (order by f_numeric range between 1 preceding and 1.1::float8 following); -- currently unsupported ERROR: RANGE with offset PRECEDING/FOLLOWING is not supported for column type numeric and offset type double precision -LINE 4: 1 preceding and 1.1::float8 following); - ^ HINT: Cast the offset value to an appropriate type. select id, f_numeric, first_value(id) over w, last_value(id) over w from numerics @@ -2943,23 +2939,15 @@ select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; ERROR: RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column -LINE 1: select sum(salary) over (order by enroll_date, salary range ... - ^ select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; ERROR: RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column -LINE 1: select sum(salary) over (range between '1 year'::interval pr... - ^ select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; ERROR: RANGE with offset PRECEDING/FOLLOWING is not supported for column type text -LINE 1: ... sum(salary) over (order by depname range between '1 year'::... - ^ select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following exclude ties), salary, enroll_date from empsalary; ERROR: RANGE with offset PRECEDING/FOLLOWING is not supported for column type date and offset type integer -LINE 1: ...ll_date) over (order by enroll_date range between 1 precedin... - ^ HINT: Cast the offset value to an appropriate type. select max(enroll_date) over (order by salary range between -1 preceding and 2 following exclude ties), salary, enroll_date from empsalary; @@ -2970,8 +2958,6 @@ select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; ERROR: RANGE with offset PRECEDING/FOLLOWING is not supported for column type integer and offset type interval -LINE 1: ...(enroll_date) over (order by salary range between '1 year'::... - ^ HINT: Cast the offset value to an appropriate type. select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following exclude ties), salary, enroll_date from empsalary; @@ -3531,8 +3517,6 @@ range between 1 preceding and 1 following) from t1 where f1 = f2; -- error, must have order by ERROR: RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column -LINE 1: select f1, sum(f1) over (partition by f1 - ^ explain (costs off) select f1, sum(f1) over (partition by f1 order by f2 range between 1 preceding and 1 following) @@ -3577,8 +3561,6 @@ groups between 1 preceding and 1 following) from t1 where f1 = f2; -- error, must have order by ERROR: GROUPS mode requires an ORDER BY clause -LINE 1: select f1, sum(f1) over (partition by f1 - ^ explain (costs off) select f1, sum(f1) over (partition by f1 order by f2 groups between 1 preceding and 1 following) @@ -3629,49 +3611,31 @@ -- can't order by another window function SELECT rank() OVER (ORDER BY rank() OVER (ORDER BY random())); ERROR: window functions are not allowed in window definitions -LINE 1: SELECT rank() OVER (ORDER BY rank() OVER (ORDER BY random())... - ^ -- some other errors SELECT * FROM empsalary WHERE row_number() OVER (ORDER BY salary) < 10; ERROR: window functions are not allowed in WHERE -LINE 1: SELECT * FROM empsalary WHERE row_number() OVER (ORDER BY sa... - ^ SELECT * FROM empsalary INNER JOIN tenk1 ON row_number() OVER (ORDER BY salary) < 10; ERROR: window functions are not allowed in JOIN conditions -LINE 1: SELECT * FROM empsalary INNER JOIN tenk1 ON row_number() OVE... - ^ SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GROUP BY 1; ERROR: window functions are not allowed in GROUP BY -LINE 1: SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GRO... - ^ SELECT * FROM rank() OVER (ORDER BY random()); ERROR: syntax error at or near "ORDER" LINE 1: SELECT * FROM rank() OVER (ORDER BY random()); ^ DELETE FROM empsalary WHERE (rank() OVER (ORDER BY random())) > 10; ERROR: window functions are not allowed in WHERE -LINE 1: DELETE FROM empsalary WHERE (rank() OVER (ORDER BY random())... - ^ DELETE FROM empsalary RETURNING rank() OVER (ORDER BY random()); ERROR: window functions are not allowed in RETURNING -LINE 1: DELETE FROM empsalary RETURNING rank() OVER (ORDER BY random... - ^ SELECT count(*) OVER w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY unique1); ERROR: window "w" is already defined -LINE 1: ...w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY ... - ^ SELECT rank() OVER (PARTITION BY four, ORDER BY ten) FROM tenk1; ERROR: syntax error at or near "ORDER" LINE 1: SELECT rank() OVER (PARTITION BY four, ORDER BY ten) FROM te... ^ SELECT count() OVER () FROM tenk1; ERROR: count(*) must be used to call a parameterless aggregate function -LINE 1: SELECT count() OVER () FROM tenk1; - ^ SELECT generate_series(1, 100) OVER () FROM empsalary; ERROR: OVER specified, but generate_series is not a window function nor an aggregate function -LINE 1: SELECT generate_series(1, 100) OVER () FROM empsalary; - ^ SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1; ERROR: argument of ntile must be greater than zero SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/functional_deps.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/functional_deps.out --- /tmp/cirrus-ci-build/src/test/regress/expected/functional_deps.out 2024-02-22 13:04:49.013188000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/functional_deps.out 2024-02-22 13:08:25.931450000 +0000 @@ -27,22 +27,16 @@ FROM articles GROUP BY title; ERROR: column "articles.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT id, keywords, title, body, created - ^ -- group by unique nullable (fail) SELECT id, keywords, title, body, created FROM articles GROUP BY body; ERROR: column "articles.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT id, keywords, title, body, created - ^ -- group by something else (fail) SELECT id, keywords, title, body, created FROM articles GROUP BY keywords; ERROR: column "articles.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT id, keywords, title, body, created - ^ -- multiple tables -- group by primary key (OK) SELECT a.id, a.keywords, a.title, a.body, a.created @@ -59,8 +53,6 @@ WHERE a.id = aic.article_id AND aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id, aic.category_id; ERROR: column "a.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT a.id, a.keywords, a.title, a.body, a.created - ^ -- JOIN syntax -- group by left table's primary key (OK) SELECT a.id, a.keywords, a.title, a.body, a.created @@ -77,8 +69,6 @@ WHERE aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id, aic.category_id; ERROR: column "a.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT a.id, a.keywords, a.title, a.body, a.created - ^ -- group by right table's (composite) primary key (OK) SELECT aic.changed FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id @@ -94,8 +84,6 @@ WHERE aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id; ERROR: column "aic.changed" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT aic.changed - ^ -- example from documentation CREATE TEMP TABLE products (product_id int, name text, price numeric); CREATE TEMP TABLE sales (product_id int, units int); @@ -112,8 +100,6 @@ FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id; ERROR: column "p.name" must appear in the GROUP BY clause or be used in an aggregate function -LINE 1: SELECT product_id, p.name, (sum(s.units) * p.price) AS sales - ^ ALTER TABLE products ADD PRIMARY KEY (product_id); -- OK now SELECT product_id, p.name, (sum(s.units) * p.price) AS sales @@ -168,8 +154,6 @@ FROM articles GROUP BY body; ERROR: column "articles.id" must appear in the GROUP BY clause or be used in an aggregate function -LINE 2: SELECT id, keywords, title, body, created - ^ -- OK CREATE TEMP VIEW fdv1 AS SELECT id, keywords, title, body, created diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/json.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/json.out --- /tmp/cirrus-ci-build/src/test/regress/expected/json.out 2024-02-22 13:04:49.014187000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/json.out 2024-02-22 13:08:28.299093000 +0000 @@ -7,8 +7,6 @@ SELECT $$''$$::json; -- ERROR, single quotes are not allowed ERROR: invalid input syntax for type json -LINE 1: SELECT $$''$$::json; - ^ DETAIL: Token "'" is invalid. CONTEXT: JSON data, line 1: '... SELECT '"abc"'::json; -- OK @@ -19,15 +17,11 @@ SELECT '"abc'::json; -- ERROR, quotes not closed ERROR: invalid input syntax for type json -LINE 1: SELECT '"abc'::json; - ^ DETAIL: Token ""abc" is invalid. CONTEXT: JSON data, line 1: "abc SELECT '"abc def"'::json; -- ERROR, unescaped newline in string constant ERROR: invalid input syntax for type json -LINE 1: SELECT '"abc - ^ DETAIL: Character with value 0x0a must be escaped. CONTEXT: JSON data, line 1: "abc SELECT '"\n\"\\"'::json; -- OK, legal escapes @@ -38,8 +32,6 @@ SELECT '"\v"'::json; -- ERROR, not a valid JSON escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\v"'::json; - ^ DETAIL: Escape sequence "\v" is invalid. CONTEXT: JSON data, line 1: "\v... -- Check fast path for longer strings (at least 16 bytes long) @@ -71,8 +63,6 @@ SELECT '01'::json; -- ERROR, not valid according to JSON spec ERROR: invalid input syntax for type json -LINE 1: SELECT '01'::json; - ^ DETAIL: Token "01" is invalid. CONTEXT: JSON data, line 1: 01 SELECT '0.1'::json; -- OK @@ -101,20 +91,14 @@ SELECT '1f2'::json; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '1f2'::json; - ^ DETAIL: Token "1f2" is invalid. CONTEXT: JSON data, line 1: 1f2 SELECT '0.x1'::json; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '0.x1'::json; - ^ DETAIL: Token "0.x1" is invalid. CONTEXT: JSON data, line 1: 0.x1 SELECT '1.3ex100'::json; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '1.3ex100'::json; - ^ DETAIL: Token "1.3ex100" is invalid. CONTEXT: JSON data, line 1: 1.3ex100 -- Arrays. @@ -138,20 +122,14 @@ SELECT '[1,2,]'::json; -- ERROR, trailing comma ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,2,]'::json; - ^ DETAIL: Expected JSON value, but found "]". CONTEXT: JSON data, line 1: [1,2,] SELECT '[1,2'::json; -- ERROR, no closing bracket ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,2'::json; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: [1,2 SELECT '[1,[2]'::json; -- ERROR, no closing bracket ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,[2]'::json; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: [1,[2] -- Objects. @@ -163,8 +141,6 @@ SELECT '{"abc"}'::json; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"}'::json; - ^ DETAIL: Expected ":", but found "}". CONTEXT: JSON data, line 1: {"abc"} SELECT '{"abc":1}'::json; -- OK @@ -175,26 +151,18 @@ SELECT '{1:"abc"}'::json; -- ERROR, keys must be strings ERROR: invalid input syntax for type json -LINE 1: SELECT '{1:"abc"}'::json; - ^ DETAIL: Expected string or "}", but found "1". CONTEXT: JSON data, line 1: {1... SELECT '{"abc",1}'::json; -- ERROR, wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc",1}'::json; - ^ DETAIL: Expected ":", but found ",". CONTEXT: JSON data, line 1: {"abc",... SELECT '{"abc"=1}'::json; -- ERROR, totally wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"=1}'::json; - ^ DETAIL: Token "=" is invalid. CONTEXT: JSON data, line 1: {"abc"=... SELECT '{"abc"::1}'::json; -- ERROR, another wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"::1}'::json; - ^ DETAIL: Expected JSON value, but found ":". CONTEXT: JSON data, line 1: {"abc"::... SELECT '{"abc":1,"def":2,"ghi":[3,4],"hij":{"klm":5,"nop":[6]}}'::json; -- OK @@ -205,14 +173,10 @@ SELECT '{"abc":1:2}'::json; -- ERROR, colon in wrong spot ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc":1:2}'::json; - ^ DETAIL: Expected "," or "}", but found ":". CONTEXT: JSON data, line 1: {"abc":1:... SELECT '{"abc":1,3}'::json; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc":1,3}'::json; - ^ DETAIL: Expected string, but found "3". CONTEXT: JSON data, line 1: {"abc":1,3... -- Recursion. @@ -251,38 +215,26 @@ SELECT 'true false'::json; -- ERROR, too many values ERROR: invalid input syntax for type json -LINE 1: SELECT 'true false'::json; - ^ DETAIL: Expected end of input, but found "false". CONTEXT: JSON data, line 1: true false SELECT 'true, false'::json; -- ERROR, too many values ERROR: invalid input syntax for type json -LINE 1: SELECT 'true, false'::json; - ^ DETAIL: Expected end of input, but found ",". CONTEXT: JSON data, line 1: true,... SELECT 'truf'::json; -- ERROR, not a keyword ERROR: invalid input syntax for type json -LINE 1: SELECT 'truf'::json; - ^ DETAIL: Token "truf" is invalid. CONTEXT: JSON data, line 1: truf SELECT 'trues'::json; -- ERROR, not a keyword ERROR: invalid input syntax for type json -LINE 1: SELECT 'trues'::json; - ^ DETAIL: Token "trues" is invalid. CONTEXT: JSON data, line 1: trues SELECT ''::json; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT ''::json; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: SELECT ' '::json; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT ' '::json; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: -- Multi-line JSON input to check ERROR reporting @@ -306,8 +258,6 @@ "three": true}'::json; ERROR: invalid input syntax for type json -LINE 1: SELECT '{ - ^ DETAIL: Expected JSON value, but found ",". CONTEXT: JSON data, line 3: "two":,... SELECT '{ @@ -315,8 +265,6 @@ "two":"two", "averyveryveryveryveryveryveryveryveryverylongfieldname":}'::json; ERROR: invalid input syntax for type json -LINE 1: SELECT '{ - ^ DETAIL: Expected JSON value, but found "}". CONTEXT: JSON data, line 4: ...yveryveryveryveryveryveryveryverylongfieldname":} -- ERROR missing value for last field diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/jsonb.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonb.out --- /tmp/cirrus-ci-build/src/test/regress/expected/jsonb.out 2024-02-22 13:04:49.014290000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonb.out 2024-02-22 13:08:28.733139000 +0000 @@ -14,8 +14,6 @@ SELECT $$''$$::jsonb; -- ERROR, single quotes are not allowed ERROR: invalid input syntax for type json -LINE 1: SELECT $$''$$::jsonb; - ^ DETAIL: Token "'" is invalid. CONTEXT: JSON data, line 1: '... SELECT '"abc"'::jsonb; -- OK @@ -26,15 +24,11 @@ SELECT '"abc'::jsonb; -- ERROR, quotes not closed ERROR: invalid input syntax for type json -LINE 1: SELECT '"abc'::jsonb; - ^ DETAIL: Token ""abc" is invalid. CONTEXT: JSON data, line 1: "abc SELECT '"abc def"'::jsonb; -- ERROR, unescaped newline in string constant ERROR: invalid input syntax for type json -LINE 1: SELECT '"abc - ^ DETAIL: Character with value 0x0a must be escaped. CONTEXT: JSON data, line 1: "abc SELECT '"\n\"\\"'::jsonb; -- OK, legal escapes @@ -45,8 +39,6 @@ SELECT '"\v"'::jsonb; -- ERROR, not a valid JSON escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\v"'::jsonb; - ^ DETAIL: Escape sequence "\v" is invalid. CONTEXT: JSON data, line 1: "\v... -- see json_encoding test for input with unicode escapes @@ -65,8 +57,6 @@ SELECT '01'::jsonb; -- ERROR, not valid according to JSON spec ERROR: invalid input syntax for type json -LINE 1: SELECT '01'::jsonb; - ^ DETAIL: Token "01" is invalid. CONTEXT: JSON data, line 1: 01 SELECT '0.1'::jsonb; -- OK @@ -95,20 +85,14 @@ SELECT '1f2'::jsonb; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '1f2'::jsonb; - ^ DETAIL: Token "1f2" is invalid. CONTEXT: JSON data, line 1: 1f2 SELECT '0.x1'::jsonb; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '0.x1'::jsonb; - ^ DETAIL: Token "0.x1" is invalid. CONTEXT: JSON data, line 1: 0.x1 SELECT '1.3ex100'::jsonb; -- ERROR ERROR: invalid input syntax for type json -LINE 1: SELECT '1.3ex100'::jsonb; - ^ DETAIL: Token "1.3ex100" is invalid. CONTEXT: JSON data, line 1: 1.3ex100 -- Arrays. @@ -132,20 +116,14 @@ SELECT '[1,2,]'::jsonb; -- ERROR, trailing comma ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,2,]'::jsonb; - ^ DETAIL: Expected JSON value, but found "]". CONTEXT: JSON data, line 1: [1,2,] SELECT '[1,2'::jsonb; -- ERROR, no closing bracket ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,2'::jsonb; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: [1,2 SELECT '[1,[2]'::jsonb; -- ERROR, no closing bracket ERROR: invalid input syntax for type json -LINE 1: SELECT '[1,[2]'::jsonb; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: [1,[2] -- Objects. @@ -157,8 +135,6 @@ SELECT '{"abc"}'::jsonb; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"}'::jsonb; - ^ DETAIL: Expected ":", but found "}". CONTEXT: JSON data, line 1: {"abc"} SELECT '{"abc":1}'::jsonb; -- OK @@ -169,26 +145,18 @@ SELECT '{1:"abc"}'::jsonb; -- ERROR, keys must be strings ERROR: invalid input syntax for type json -LINE 1: SELECT '{1:"abc"}'::jsonb; - ^ DETAIL: Expected string or "}", but found "1". CONTEXT: JSON data, line 1: {1... SELECT '{"abc",1}'::jsonb; -- ERROR, wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc",1}'::jsonb; - ^ DETAIL: Expected ":", but found ",". CONTEXT: JSON data, line 1: {"abc",... SELECT '{"abc"=1}'::jsonb; -- ERROR, totally wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"=1}'::jsonb; - ^ DETAIL: Token "=" is invalid. CONTEXT: JSON data, line 1: {"abc"=... SELECT '{"abc"::1}'::jsonb; -- ERROR, another wrong separator ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc"::1}'::jsonb; - ^ DETAIL: Expected JSON value, but found ":". CONTEXT: JSON data, line 1: {"abc"::... SELECT '{"abc":1,"def":2,"ghi":[3,4],"hij":{"klm":5,"nop":[6]}}'::jsonb; -- OK @@ -199,14 +167,10 @@ SELECT '{"abc":1:2}'::jsonb; -- ERROR, colon in wrong spot ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc":1:2}'::jsonb; - ^ DETAIL: Expected "," or "}", but found ":". CONTEXT: JSON data, line 1: {"abc":1:... SELECT '{"abc":1,3}'::jsonb; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT '{"abc":1,3}'::jsonb; - ^ DETAIL: Expected string, but found "3". CONTEXT: JSON data, line 1: {"abc":1,3... -- Recursion. @@ -245,38 +209,26 @@ SELECT 'true false'::jsonb; -- ERROR, too many values ERROR: invalid input syntax for type json -LINE 1: SELECT 'true false'::jsonb; - ^ DETAIL: Expected end of input, but found "false". CONTEXT: JSON data, line 1: true false SELECT 'true, false'::jsonb; -- ERROR, too many values ERROR: invalid input syntax for type json -LINE 1: SELECT 'true, false'::jsonb; - ^ DETAIL: Expected end of input, but found ",". CONTEXT: JSON data, line 1: true,... SELECT 'truf'::jsonb; -- ERROR, not a keyword ERROR: invalid input syntax for type json -LINE 1: SELECT 'truf'::jsonb; - ^ DETAIL: Token "truf" is invalid. CONTEXT: JSON data, line 1: truf SELECT 'trues'::jsonb; -- ERROR, not a keyword ERROR: invalid input syntax for type json -LINE 1: SELECT 'trues'::jsonb; - ^ DETAIL: Token "trues" is invalid. CONTEXT: JSON data, line 1: trues SELECT ''::jsonb; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT ''::jsonb; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: SELECT ' '::jsonb; -- ERROR, no value ERROR: invalid input syntax for type json -LINE 1: SELECT ' '::jsonb; - ^ DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: -- Multi-line JSON input to check ERROR reporting @@ -296,8 +248,6 @@ "three": true}'::jsonb; ERROR: invalid input syntax for type json -LINE 1: SELECT '{ - ^ DETAIL: Expected JSON value, but found ",". CONTEXT: JSON data, line 3: "two":,... SELECT '{ @@ -305,8 +255,6 @@ "two":"two", "averyveryveryveryveryveryveryveryveryverylongfieldname":}'::jsonb; ERROR: invalid input syntax for type json -LINE 1: SELECT '{ - ^ DETAIL: Expected JSON value, but found "}". CONTEXT: JSON data, line 4: ...yveryveryveryveryveryveryveryverylongfieldname":} -- ERROR missing value for last field @@ -4977,8 +4925,6 @@ select ('[1, "2", null]'::jsonb)[1.0]; ERROR: subscript type numeric is not supported -LINE 1: select ('[1, "2", null]'::jsonb)[1.0]; - ^ HINT: jsonb subscript must be coercible to either integer or text. select ('[1, "2", null]'::jsonb)[2]; jsonb @@ -5067,20 +5013,12 @@ -- slices are not supported select ('{"a": 1}'::jsonb)['a':'b']; ERROR: jsonb subscript does not support slices -LINE 1: select ('{"a": 1}'::jsonb)['a':'b']; - ^ select ('[1, "2", null]'::jsonb)[1:2]; ERROR: jsonb subscript does not support slices -LINE 1: select ('[1, "2", null]'::jsonb)[1:2]; - ^ select ('[1, "2", null]'::jsonb)[:2]; ERROR: jsonb subscript does not support slices -LINE 1: select ('[1, "2", null]'::jsonb)[:2]; - ^ select ('[1, "2", null]'::jsonb)[1:]; ERROR: jsonb subscript does not support slices -LINE 1: select ('[1, "2", null]'::jsonb)[1:]; - ^ select ('[1, "2", null]'::jsonb)[:]; ERROR: jsonb subscript does not support slices create TEMP TABLE test_jsonb_subscript ( diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/json_encoding.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/json_encoding.out --- /tmp/cirrus-ci-build/src/test/regress/expected/json_encoding.out 2024-02-22 13:04:49.014200000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/json_encoding.out 2024-02-22 13:08:28.168675000 +0000 @@ -18,20 +18,14 @@ -- basic unicode input SELECT '"\u"'::json; -- ERROR, incomplete escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u"'::json; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u" SELECT '"\u00"'::json; -- ERROR, incomplete escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u00"'::json; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u00" SELECT '"\u000g"'::json; -- ERROR, g is not a hex digit ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u000g"'::json; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u000g... SELECT '"\u0000"'::json; -- OK, legal escape @@ -132,20 +126,14 @@ -- basic unicode input SELECT '"\u"'::jsonb; -- ERROR, incomplete escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u"'::jsonb; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u" SELECT '"\u00"'::jsonb; -- ERROR, incomplete escape ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u00"'::jsonb; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u00" SELECT '"\u000g"'::jsonb; -- ERROR, g is not a hex digit ERROR: invalid input syntax for type json -LINE 1: SELECT '"\u000g"'::jsonb; - ^ DETAIL: "\u" must be followed by four hexadecimal digits. CONTEXT: JSON data, line 1: "\u000g... SELECT '"\u0045"'::jsonb; -- OK, legal escape @@ -156,8 +144,6 @@ SELECT '"\u0000"'::jsonb; -- ERROR, we don't support U+0000 ERROR: unsupported Unicode escape sequence -LINE 1: SELECT '"\u0000"'::jsonb; - ^ DETAIL: \u0000 cannot be converted to text. CONTEXT: JSON data, line 1: "\u0000... -- use octet_length here so we don't get an odd unicode char in the @@ -177,26 +163,18 @@ SELECT jsonb '{ "a": "\ud83d\ud83d" }' -> 'a'; -- 2 high surrogates in a row ERROR: invalid input syntax for type json -LINE 1: SELECT jsonb '{ "a": "\ud83d\ud83d" }' -> 'a'; - ^ DETAIL: Unicode high surrogate must not follow a high surrogate. CONTEXT: JSON data, line 1: { "a": "\ud83d\ud83d... SELECT jsonb '{ "a": "\ude04\ud83d" }' -> 'a'; -- surrogates in wrong order ERROR: invalid input syntax for type json -LINE 1: SELECT jsonb '{ "a": "\ude04\ud83d" }' -> 'a'; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. CONTEXT: JSON data, line 1: { "a": "\ude04... SELECT jsonb '{ "a": "\ud83dX" }' -> 'a'; -- orphan high surrogate ERROR: invalid input syntax for type json -LINE 1: SELECT jsonb '{ "a": "\ud83dX" }' -> 'a'; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. CONTEXT: JSON data, line 1: { "a": "\ud83dX... SELECT jsonb '{ "a": "\ude04X" }' -> 'a'; -- orphan low surrogate ERROR: invalid input syntax for type json -LINE 1: SELECT jsonb '{ "a": "\ude04X" }' -> 'a'; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. CONTEXT: JSON data, line 1: { "a": "\ude04... -- handling of simple unicode escapes @@ -220,8 +198,6 @@ SELECT jsonb '{ "a": "null \u0000 escape" }' as fails; ERROR: unsupported Unicode escape sequence -LINE 1: SELECT jsonb '{ "a": "null \u0000 escape" }' as fails; - ^ DETAIL: \u0000 cannot be converted to text. CONTEXT: JSON data, line 1: { "a": "null \u0000... SELECT jsonb '{ "a": "null \\u0000 escape" }' as not_an_escape; @@ -250,8 +226,6 @@ SELECT jsonb '{ "a": "null \u0000 escape" }' ->> 'a' as fails; ERROR: unsupported Unicode escape sequence -LINE 1: SELECT jsonb '{ "a": "null \u0000 escape" }' ->> 'a' as fai... - ^ DETAIL: \u0000 cannot be converted to text. CONTEXT: JSON data, line 1: { "a": "null \u0000... SELECT jsonb '{ "a": "null \\u0000 escape" }' ->> 'a' as not_an_escape; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/jsonpath.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonpath.out --- /tmp/cirrus-ci-build/src/test/regress/expected/jsonpath.out 2024-02-22 13:04:49.014378000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonpath.out 2024-02-22 13:08:28.194045000 +0000 @@ -1,8 +1,6 @@ --jsonpath io select ''::jsonpath; ERROR: invalid input syntax for type jsonpath: "" -LINE 1: select ''::jsonpath; - ^ select '$'::jsonpath; jsonpath ---------- @@ -317,8 +315,6 @@ select 'last'::jsonpath; ERROR: LAST is allowed only in array subscripts -LINE 1: select 'last'::jsonpath; - ^ select '"last"'::jsonpath; jsonpath ---------- @@ -333,8 +329,6 @@ select '$ ? (last > 0)'::jsonpath; ERROR: LAST is allowed only in array subscripts -LINE 1: select '$ ? (last > 0)'::jsonpath; - ^ select '$[last]'::jsonpath; jsonpath ---------- @@ -355,8 +349,6 @@ select '1.type()'::jsonpath; ERROR: trailing junk after numeric literal at or near "1.t" of jsonpath input -LINE 1: select '1.type()'::jsonpath; - ^ select '(1).type()'::jsonpath; jsonpath ------------ @@ -497,8 +489,6 @@ select '$ ? (@ like_regex "(invalid pattern")'::jsonpath; ERROR: invalid regular expression: parentheses () not balanced -LINE 1: select '$ ? (@ like_regex "(invalid pattern")'::jsonpath; - ^ select '$ ? (@ like_regex "pattern")'::jsonpath; jsonpath ---------------------------- @@ -531,8 +521,6 @@ select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath; ERROR: XQuery "x" flag (expanded regular expressions) is not implemented -LINE 1: select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath; - ^ select '$ ? (@ like_regex "pattern" flag "q")'::jsonpath; jsonpath ------------------------------------- @@ -553,8 +541,6 @@ select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath; ERROR: invalid input syntax for type jsonpath -LINE 1: select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath; - ^ DETAIL: Unrecognized flag character "a" in LIKE_REGEX predicate. select '$ < 1'::jsonpath; jsonpath @@ -570,8 +556,6 @@ select '@ + 1'::jsonpath; ERROR: @ is not allowed in root expressions -LINE 1: select '@ + 1'::jsonpath; - ^ select '($).a.b'::jsonpath; jsonpath ----------- @@ -923,12 +907,8 @@ select '00'::jsonpath; ERROR: trailing junk after numeric literal at or near "00" of jsonpath input -LINE 1: select '00'::jsonpath; - ^ select '0755'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0755'::jsonpath; - ^ select '0.0'::jsonpath; jsonpath ---------- @@ -1009,24 +989,14 @@ select '1a'::jsonpath; ERROR: trailing junk after numeric literal at or near "1a" of jsonpath input -LINE 1: select '1a'::jsonpath; - ^ select '1e'::jsonpath; ERROR: trailing junk after numeric literal at or near "1e" of jsonpath input -LINE 1: select '1e'::jsonpath; - ^ select '1.e'::jsonpath; ERROR: trailing junk after numeric literal at or near "1.e" of jsonpath input -LINE 1: select '1.e'::jsonpath; - ^ select '1.2a'::jsonpath; ERROR: trailing junk after numeric literal at or near "1.2a" of jsonpath input -LINE 1: select '1.2a'::jsonpath; - ^ select '1.2e'::jsonpath; ERROR: trailing junk after numeric literal at or near "1.2e" of jsonpath input -LINE 1: select '1.2e'::jsonpath; - ^ select '1.2.e'::jsonpath; jsonpath ----------- @@ -1071,8 +1041,6 @@ select '1.2e3a'::jsonpath; ERROR: trailing junk after numeric literal at or near "1.2e3a" of jsonpath input -LINE 1: select '1.2e3a'::jsonpath; - ^ select '1.2.e3'::jsonpath; jsonpath ------------ @@ -1137,40 +1105,22 @@ -- error cases select '0b'::jsonpath; ERROR: trailing junk after numeric literal at or near "0b" of jsonpath input -LINE 1: select '0b'::jsonpath; - ^ select '1b'::jsonpath; ERROR: trailing junk after numeric literal at or near "1b" of jsonpath input -LINE 1: select '1b'::jsonpath; - ^ select '0b0x'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0b0x'::jsonpath; - ^ select '0o'::jsonpath; ERROR: trailing junk after numeric literal at or near "0o" of jsonpath input -LINE 1: select '0o'::jsonpath; - ^ select '1o'::jsonpath; ERROR: trailing junk after numeric literal at or near "1o" of jsonpath input -LINE 1: select '1o'::jsonpath; - ^ select '0o0x'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0o0x'::jsonpath; - ^ select '0x'::jsonpath; ERROR: trailing junk after numeric literal at or near "0x" of jsonpath input -LINE 1: select '0x'::jsonpath; - ^ select '1x'::jsonpath; ERROR: trailing junk after numeric literal at or near "1x" of jsonpath input -LINE 1: select '1x'::jsonpath; - ^ select '0x0y'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0x0y'::jsonpath; - ^ -- underscores select '1_000_000'::jsonpath; jsonpath @@ -1229,49 +1179,27 @@ -- error cases select '_100'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '_100'::jsonpath; - ^ select '100_'::jsonpath; ERROR: trailing junk after numeric literal at or near "100_" of jsonpath input -LINE 1: select '100_'::jsonpath; - ^ select '100__000'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '100__000'::jsonpath; - ^ select '_1_000.5'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '_1_000.5'::jsonpath; - ^ select '1_000_.5'::jsonpath; ERROR: trailing junk after numeric literal at or near "1_000_" of jsonpath input -LINE 1: select '1_000_.5'::jsonpath; - ^ select '1_000._5'::jsonpath; ERROR: trailing junk after numeric literal at or near "1_000._" of jsonpath input -LINE 1: select '1_000._5'::jsonpath; - ^ select '1_000.5_'::jsonpath; ERROR: trailing junk after numeric literal at or near "1_000.5_" of jsonpath input -LINE 1: select '1_000.5_'::jsonpath; - ^ select '1_000.5e_1'::jsonpath; ERROR: trailing junk after numeric literal at or near "1_000.5e" of jsonpath input -LINE 1: select '1_000.5e_1'::jsonpath; - ^ -- underscore after prefix not allowed in JavaScript (but allowed in SQL) select '0b_10_0101'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0b_10_0101'::jsonpath; - ^ select '0o_273'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0o_273'::jsonpath; - ^ select '0x_42F'::jsonpath; ERROR: syntax error at end of jsonpath input -LINE 1: select '0x_42F'::jsonpath; - ^ -- test non-error-throwing API SELECT str as jsonpath, pg_input_is_valid(str,'jsonpath') as ok, diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/jsonpath_encoding.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonpath_encoding.out --- /tmp/cirrus-ci-build/src/test/regress/expected/jsonpath_encoding.out 2024-02-22 13:04:49.014389000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonpath_encoding.out 2024-02-22 13:08:28.163976000 +0000 @@ -18,20 +18,12 @@ -- basic unicode input SELECT '"\u"'::jsonpath; -- ERROR, incomplete escape ERROR: invalid Unicode escape sequence at or near "\u" of jsonpath input -LINE 1: SELECT '"\u"'::jsonpath; - ^ SELECT '"\u00"'::jsonpath; -- ERROR, incomplete escape ERROR: invalid Unicode escape sequence at or near "\u00" of jsonpath input -LINE 1: SELECT '"\u00"'::jsonpath; - ^ SELECT '"\u000g"'::jsonpath; -- ERROR, g is not a hex digit ERROR: invalid Unicode escape sequence at or near "\u000" of jsonpath input -LINE 1: SELECT '"\u000g"'::jsonpath; - ^ SELECT '"\u0000"'::jsonpath; -- OK, legal escape ERROR: unsupported Unicode escape sequence -LINE 1: SELECT '"\u0000"'::jsonpath; - ^ DETAIL: \u0000 cannot be converted to text. SELECT '"\uaBcD"'::jsonpath; -- OK, uppercase and lower case both OK jsonpath @@ -48,23 +40,15 @@ select '"\ud83d\ud83d"'::jsonpath; -- 2 high surrogates in a row ERROR: invalid input syntax for type jsonpath -LINE 1: select '"\ud83d\ud83d"'::jsonpath; - ^ DETAIL: Unicode high surrogate must not follow a high surrogate. select '"\ude04\ud83d"'::jsonpath; -- surrogates in wrong order ERROR: invalid input syntax for type jsonpath -LINE 1: select '"\ude04\ud83d"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. select '"\ud83dX"'::jsonpath; -- orphan high surrogate ERROR: invalid input syntax for type jsonpath -LINE 1: select '"\ud83dX"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. select '"\ude04X"'::jsonpath; -- orphan low surrogate ERROR: invalid input syntax for type jsonpath -LINE 1: select '"\ude04X"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. --handling of simple unicode escapes select '"the Copyright \u00a9 sign"'::jsonpath as correct_in_utf8; @@ -87,8 +71,6 @@ select '"null \u0000 escape"'::jsonpath as not_unescaped; ERROR: unsupported Unicode escape sequence -LINE 1: select '"null \u0000 escape"'::jsonpath as not_unescaped; - ^ DETAIL: \u0000 cannot be converted to text. select '"null \\u0000 escape"'::jsonpath as not_an_escape; not_an_escape @@ -100,20 +82,12 @@ -- basic unicode input SELECT '$."\u"'::jsonpath; -- ERROR, incomplete escape ERROR: invalid Unicode escape sequence at or near "\u" of jsonpath input -LINE 1: SELECT '$."\u"'::jsonpath; - ^ SELECT '$."\u00"'::jsonpath; -- ERROR, incomplete escape ERROR: invalid Unicode escape sequence at or near "\u00" of jsonpath input -LINE 1: SELECT '$."\u00"'::jsonpath; - ^ SELECT '$."\u000g"'::jsonpath; -- ERROR, g is not a hex digit ERROR: invalid Unicode escape sequence at or near "\u000" of jsonpath input -LINE 1: SELECT '$."\u000g"'::jsonpath; - ^ SELECT '$."\u0000"'::jsonpath; -- OK, legal escape ERROR: unsupported Unicode escape sequence -LINE 1: SELECT '$."\u0000"'::jsonpath; - ^ DETAIL: \u0000 cannot be converted to text. SELECT '$."\uaBcD"'::jsonpath; -- OK, uppercase and lower case both OK jsonpath @@ -130,23 +104,15 @@ select '$."\ud83d\ud83d"'::jsonpath; -- 2 high surrogates in a row ERROR: invalid input syntax for type jsonpath -LINE 1: select '$."\ud83d\ud83d"'::jsonpath; - ^ DETAIL: Unicode high surrogate must not follow a high surrogate. select '$."\ude04\ud83d"'::jsonpath; -- surrogates in wrong order ERROR: invalid input syntax for type jsonpath -LINE 1: select '$."\ude04\ud83d"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. select '$."\ud83dX"'::jsonpath; -- orphan high surrogate ERROR: invalid input syntax for type jsonpath -LINE 1: select '$."\ud83dX"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. select '$."\ude04X"'::jsonpath; -- orphan low surrogate ERROR: invalid input syntax for type jsonpath -LINE 1: select '$."\ude04X"'::jsonpath; - ^ DETAIL: Unicode low surrogate must follow a high surrogate. --handling of simple unicode escapes select '$."the Copyright \u00a9 sign"'::jsonpath as correct_in_utf8; @@ -169,8 +135,6 @@ select '$."null \u0000 escape"'::jsonpath as not_unescaped; ERROR: unsupported Unicode escape sequence -LINE 1: select '$."null \u0000 escape"'::jsonpath as not_unescaped; - ^ DETAIL: \u0000 cannot be converted to text. select '$."null \\u0000 escape"'::jsonpath as not_an_escape; not_an_escape diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/jsonb_jsonpath.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonb_jsonpath.out --- /tmp/cirrus-ci-build/src/test/regress/expected/jsonb_jsonpath.out 2024-02-22 13:04:49.014357000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/jsonb_jsonpath.out 2024-02-22 13:08:28.329416000 +0000 @@ -2098,8 +2098,6 @@ select jsonb_path_query('"2023-08-15"', '$.date(2)'); ERROR: syntax error at or near "2" of jsonpath input -LINE 1: select jsonb_path_query('"2023-08-15"', '$.date(2)'); - ^ -- Test .decimal() select jsonb_path_query('null', '$.decimal()'); ERROR: jsonpath item method .decimal() can only be applied to a string or numeric value @@ -2652,12 +2650,8 @@ select jsonb_path_query('"12:34:56.789"', '$.time(-1)'); ERROR: syntax error at or near "-" of jsonpath input -LINE 1: select jsonb_path_query('"12:34:56.789"', '$.time(-1)'); - ^ select jsonb_path_query('"12:34:56.789"', '$.time(2.0)'); ERROR: syntax error at or near "2.0" of jsonpath input -LINE 1: select jsonb_path_query('"12:34:56.789"', '$.time(2.0)'); - ^ select jsonb_path_query('"12:34:56.789"', '$.time(12345678901)'); ERROR: time precision of jsonpath item method .time() is out of range for type integer select jsonb_path_query('"12:34:56.789"', '$.time(0)'); @@ -2734,12 +2728,8 @@ ERROR: time_tz format is not recognized: "2023-08-15 12:34:56" select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(-1)'); ERROR: syntax error at or near "-" of jsonpath input -LINE 1: select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(... - ^ select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(2.0)'); ERROR: syntax error at or near "2.0" of jsonpath input -LINE 1: select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(... - ^ select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(12345678901)'); ERROR: time precision of jsonpath item method .time_tz() is out of range for type integer select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(0)'); @@ -2822,12 +2812,8 @@ ERROR: timestamp format is not recognized: "12:34:56 +05:30" select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(-1)'); ERROR: syntax error at or near "-" of jsonpath input -LINE 1: ...ect jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timesta... - ^ select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(2.0)'); ERROR: syntax error at or near "2.0" of jsonpath input -LINE 1: ...ect jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timesta... - ^ select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(12345678901)'); ERROR: time precision of jsonpath item method .timestamp() is out of range for type integer select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(0)'); @@ -2913,12 +2899,8 @@ ERROR: timestamp_tz format is not recognized: "12:34:56 +05:30" select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(-1)'); ERROR: syntax error at or near "-" of jsonpath input -LINE 1: ...nb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timesta... - ^ select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(2.0)'); ERROR: syntax error at or near "2.0" of jsonpath input -LINE 1: ...nb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timesta... - ^ select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(12345678901)'); ERROR: time precision of jsonpath item method .timestamp_tz() is out of range for type integer select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(0)'); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/sqljson.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/sqljson.out --- /tmp/cirrus-ci-build/src/test/regress/expected/sqljson.out 2024-02-22 13:04:49.016608000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/sqljson.out 2024-02-22 13:08:28.262411000 +0000 @@ -23,8 +23,6 @@ SELECT JSON('{ "a" : 1 } ' FORMAT JSON ENCODING UTF8); ERROR: JSON ENCODING clause is only allowed for bytea input type -LINE 1: SELECT JSON('{ "a" : 1 } ' FORMAT JSON ENCODING UTF8); - ^ SELECT JSON('{ "a" : 1 } '::bytea FORMAT JSON ENCODING UTF8); json -------------- @@ -51,12 +49,8 @@ SELECT JSON(' 1 '::json WITH UNIQUE KEYS); ERROR: cannot use non-string types with WITH UNIQUE KEYS clause -LINE 1: SELECT JSON(' 1 '::json WITH UNIQUE KEYS); - ^ SELECT JSON(123); ERROR: cannot cast type integer to json -LINE 1: SELECT JSON(123); - ^ SELECT JSON('{"a": 1, "a": 2}'); json ------------------ @@ -333,8 +327,6 @@ SELECT JSON_OBJECT(RETURNING text FORMAT JSON ENCODING UTF8); ERROR: cannot set JSON encoding for non-bytea output types -LINE 1: SELECT JSON_OBJECT(RETURNING text FORMAT JSON ENCODING UTF8)... - ^ SELECT JSON_OBJECT(RETURNING text FORMAT JSON ENCODING INVALID_ENCODING); ERROR: unrecognized JSON encoding: invalid_encoding SELECT JSON_OBJECT(RETURNING bytea); @@ -357,22 +349,14 @@ SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF16); ERROR: unsupported JSON encoding -LINE 1: SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF1... - ^ HINT: Only UTF8 JSON encoding is supported. SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF32); ERROR: unsupported JSON encoding -LINE 1: SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF3... - ^ HINT: Only UTF8 JSON encoding is supported. SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON); ERROR: cannot use non-string types with explicit FORMAT JSON clause -LINE 1: SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON); - ^ SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON ENCODING UTF8); ERROR: JSON ENCODING clause is only allowed for bytea input type -LINE 1: SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON ENCODING UTF... - ^ SELECT JSON_OBJECT('foo': NULL::json FORMAT JSON); json_object ---------------- @@ -381,8 +365,6 @@ SELECT JSON_OBJECT('foo': NULL::json FORMAT JSON ENCODING UTF8); ERROR: JSON ENCODING clause is only allowed for bytea input type -LINE 1: SELECT JSON_OBJECT('foo': NULL::json FORMAT JSON ENCODING UT... - ^ SELECT JSON_OBJECT('foo': NULL::jsonb FORMAT JSON); json_object --------------- @@ -391,8 +373,6 @@ SELECT JSON_OBJECT('foo': NULL::jsonb FORMAT JSON ENCODING UTF8); ERROR: JSON ENCODING clause is only allowed for bytea input type -LINE 1: SELECT JSON_OBJECT('foo': NULL::jsonb FORMAT JSON ENCODING U... - ^ SELECT JSON_OBJECT(NULL: 1); ERROR: null value not allowed for object key SELECT JSON_OBJECT('a': 2 + 3); @@ -614,8 +594,6 @@ SELECT JSON_ARRAY(RETURNING text FORMAT JSON ENCODING UTF8); ERROR: cannot set JSON encoding for non-bytea output types -LINE 1: SELECT JSON_ARRAY(RETURNING text FORMAT JSON ENCODING UTF8); - ^ SELECT JSON_ARRAY(RETURNING text FORMAT JSON ENCODING INVALID_ENCODING); ERROR: unrecognized JSON encoding: invalid_encoding SELECT JSON_ARRAY(RETURNING bytea); @@ -638,13 +616,9 @@ SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF16); ERROR: unsupported JSON encoding -LINE 1: SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF16... - ^ HINT: Only UTF8 JSON encoding is supported. SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF32); ERROR: unsupported JSON encoding -LINE 1: SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF32... - ^ HINT: Only UTF8 JSON encoding is supported. SELECT JSON_ARRAY('aaa', 111, true, array[1,2,3], NULL, json '{"a": [1]}', jsonb '["a",3]'); json_array @@ -736,16 +710,10 @@ -- Should fail SELECT JSON_ARRAY(SELECT FROM (VALUES (1)) foo(i)); ERROR: subquery must return only one column -LINE 1: SELECT JSON_ARRAY(SELECT FROM (VALUES (1)) foo(i)); - ^ SELECT JSON_ARRAY(SELECT i, i FROM (VALUES (1)) foo(i)); ERROR: subquery must return only one column -LINE 1: SELECT JSON_ARRAY(SELECT i, i FROM (VALUES (1)) foo(i)); - ^ SELECT JSON_ARRAY(SELECT * FROM (VALUES (1, 2)) foo(i, j)); ERROR: subquery must return only one column -LINE 1: SELECT JSON_ARRAY(SELECT * FROM (VALUES (1, 2)) foo(i, j)); - ^ -- JSON_ARRAYAGG() SELECT JSON_ARRAYAGG(i) IS NULL, JSON_ARRAYAGG(i RETURNING jsonb) IS NULL diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/plpgsql.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/plpgsql.out --- /tmp/cirrus-ci-build/src/test/regress/expected/plpgsql.out 2024-02-22 13:04:49.015467000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/plpgsql.out 2024-02-22 13:08:30.531509000 +0000 @@ -1846,8 +1846,6 @@ select f1(int4range(42, 49), 11, 4.5) as fail; -- range type doesn't fit ERROR: function f1(int4range, integer, numeric) does not exist -LINE 1: select f1(int4range(42, 49), 11, 4.5) as fail; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function f1(x anycompatiblerange, y anycompatible, z anycompatible); -- fail, can't infer type: @@ -1900,8 +1898,6 @@ select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2.2], 42, 34.5); -- fail ERROR: function f1(integer, numeric[], integer, numeric) does not exist -LINE 2: from f1(11, array[1, 2.2], 42, 34.5); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function f1(a anyelement, b anyarray, c anycompatible, d anycompatible); @@ -3071,8 +3067,6 @@ ^ select shadowtest(1); ERROR: function shadowtest(integer) does not exist -LINE 1: select shadowtest(1); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. reset plpgsql.extra_errors; reset plpgsql.extra_warnings; @@ -4327,8 +4321,6 @@ PL/pgSQL function rttest() line 3 at RETURN QUERY select * from no_such_table; ERROR: relation "no_such_table" does not exist -LINE 1: select * from no_such_table; - ^ drop function rttest(); -- Test for proper cleanup at subtransaction exit. This example -- exposed a bug in PG 8.2. diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/copy2.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/copy2.out --- /tmp/cirrus-ci-build/src/test/regress/expected/copy2.out 2024-02-22 13:04:49.012264000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/copy2.out 2024-02-22 13:08:29.611915000 +0000 @@ -31,56 +31,30 @@ -- redundant options COPY x from stdin (format CSV, FORMAT CSV); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (format CSV, FORMAT CSV); - ^ COPY x from stdin (freeze off, freeze on); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (freeze off, freeze on); - ^ COPY x from stdin (delimiter ',', delimiter ','); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (delimiter ',', delimiter ','); - ^ COPY x from stdin (null ' ', null ' '); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (null ' ', null ' '); - ^ COPY x from stdin (header off, header on); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (header off, header on); - ^ COPY x from stdin (quote ':', quote ':'); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (quote ':', quote ':'); - ^ COPY x from stdin (escape ':', escape ':'); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (escape ':', escape ':'); - ^ COPY x from stdin (force_quote (a), force_quote *); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (force_quote (a), force_quote *); - ^ COPY x from stdin (force_not_null (a), force_not_null (b)); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (force_not_null (a), force_not_null (b)); - ^ COPY x from stdin (force_null (a), force_null (b)); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (force_null (a), force_null (b)); - ^ COPY x from stdin (convert_selectively (a), convert_selectively (b)); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (convert_selectively (a), convert_selectiv... - ^ COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii'); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii... - ^ COPY x from stdin (on_error ignore, on_error ignore); ERROR: conflicting or redundant options -LINE 1: COPY x from stdin (on_error ignore, on_error ignore); - ^ -- incorrect options COPY x to stdin (format BINARY, delimiter ','); ERROR: cannot specify DELIMITER in BINARY mode @@ -90,8 +64,6 @@ ERROR: only ON_ERROR STOP is allowed in BINARY mode COPY x from stdin (on_error unsupported); ERROR: COPY ON_ERROR "unsupported" not recognized -LINE 1: COPY x from stdin (on_error unsupported); - ^ COPY x to stdin (format TEXT, force_quote(a)); ERROR: COPY FORCE_QUOTE requires CSV mode COPY x from stdin (format CSV, force_quote(a)); @@ -106,8 +78,6 @@ ERROR: COPY FORCE_NULL cannot be used with COPY TO COPY x to stdin (format BINARY, on_error unsupported); ERROR: COPY ON_ERROR cannot be used with COPY TO -LINE 1: COPY x to stdin (format BINARY, on_error unsupported); - ^ -- too many columns in column list: should fail COPY x (a, b, c, d, e, d, c) from stdin; ERROR: column "d" specified more than once @@ -137,24 +107,14 @@ COPY x from stdin WHERE a > 60003; COPY x from stdin WHERE f > 60003; ERROR: column "f" does not exist -LINE 1: COPY x from stdin WHERE f > 60003; - ^ COPY x from stdin WHERE a = max(x.b); ERROR: aggregate functions are not allowed in COPY FROM WHERE conditions -LINE 1: COPY x from stdin WHERE a = max(x.b); - ^ COPY x from stdin WHERE a IN (SELECT 1 FROM x); ERROR: cannot use subquery in COPY FROM WHERE condition -LINE 1: COPY x from stdin WHERE a IN (SELECT 1 FROM x); - ^ COPY x from stdin WHERE a IN (generate_series(1,5)); ERROR: set-returning functions are not allowed in COPY FROM WHERE conditions -LINE 1: COPY x from stdin WHERE a IN (generate_series(1,5)); - ^ COPY x from stdin WHERE a = row_number() over(b); ERROR: window functions are not allowed in COPY FROM WHERE conditions -LINE 1: COPY x from stdin WHERE a = row_number() over(b); - ^ -- check results of copy in SELECT * FROM x; a | b | c | d | e @@ -568,15 +528,11 @@ BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL *, FORCE_NOT_NULL(b)); ERROR: conflicting or redundant options -LINE 1: ...c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL *, FORCE_NOT_... - ^ ROLLBACK; -- should fail with "conflicting or redundant options" error BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL *, FORCE_NULL(b)); ERROR: conflicting or redundant options -LINE 1: ... b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL *, FORCE_NULL... - ^ ROLLBACK; \pset null '' -- test case with whole-row Var in a check constraint diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/temp.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/temp.out --- /tmp/cirrus-ci-build/src/test/regress/expected/temp.out 2024-02-22 13:04:49.016829000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/temp.out 2024-02-22 13:08:29.384018000 +0000 @@ -45,8 +45,6 @@ \c SELECT * FROM temptest; ERROR: relation "temptest" does not exist -LINE 1: SELECT * FROM temptest; - ^ -- Test ON COMMIT DELETE ROWS CREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS; -- while we're here, verify successful truncation of index with SQL function @@ -98,8 +96,6 @@ COMMIT; SELECT * FROM temptest; ERROR: relation "temptest" does not exist -LINE 1: SELECT * FROM temptest; - ^ BEGIN; CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1; SELECT * FROM temptest; @@ -111,8 +107,6 @@ COMMIT; SELECT * FROM temptest; ERROR: relation "temptest" does not exist -LINE 1: SELECT * FROM temptest; - ^ -- Test it with a CHECK condition that produces a toasted pg_constraint entry BEGIN; do $$ @@ -131,8 +125,6 @@ COMMIT; SELECT * FROM temptest; ERROR: relation "temptest" does not exist -LINE 1: SELECT * FROM temptest; - ^ -- ON COMMIT is only allowed for TEMP CREATE TABLE temptest(col int) ON COMMIT DELETE ROWS; ERROR: ON COMMIT can only be used on temporary tables @@ -227,8 +219,6 @@ -- function-syntax invocation of types matches rules for functions select nonempty(''); ERROR: function nonempty(unknown) does not exist -LINE 1: select nonempty(''); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select pg_temp.nonempty(''); ERROR: value for domain nonempty violates check constraint "nonempty_check" diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/domain.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/domain.out --- /tmp/cirrus-ci-build/src/test/regress/expected/domain.out 2024-02-22 13:04:49.012818000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/domain.out 2024-02-22 13:08:29.917931000 +0000 @@ -498,8 +498,6 @@ ERROR: value for domain posint violates check constraint "posint_check" insert into pitable values('{0}'); -- fail ERROR: value for domain posint violates check constraint "posint_check" -LINE 1: insert into pitable values('{0}'); - ^ update pitable set f1[1] = f1[1] + 1; update pitable set f1[1] = 0; -- fail ERROR: value for domain posint violates check constraint "posint_check" @@ -528,13 +526,9 @@ create table dposintatable (f1 dposinta[]); insert into dposintatable values(array[array[42]]); -- fail ERROR: column "f1" is of type dposinta[] but expression is of type integer[] -LINE 1: insert into dposintatable values(array[array[42]]); - ^ HINT: You will need to rewrite or cast the expression. insert into dposintatable values(array[array[42]::posint[]]); -- still fail ERROR: column "f1" is of type dposinta[] but expression is of type posint[] -LINE 1: insert into dposintatable values(array[array[42]::posint[]])... - ^ HINT: You will need to rewrite or cast the expression. insert into dposintatable values(array[array[42]::dposinta]); -- but this works select f1, f1[1], (f1[1])[1] from dposintatable; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/rangefuncs.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rangefuncs.out --- /tmp/cirrus-ci-build/src/test/regress/expected/rangefuncs.out 2024-02-22 13:04:49.015882000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rangefuncs.out 2024-02-22 13:08:29.883446000 +0000 @@ -1871,8 +1871,6 @@ select * from array_to_set(array['one', 'two']); -- fail ERROR: a column definition list is required for functions returning "record" -LINE 1: select * from array_to_set(array['one', 'two']); - ^ -- after-the-fact coercion of the columns is now possible, too select * from array_to_set(array['one', 'two']) as t(f1 numeric(4,2),f2 text); f1 | f2 @@ -1952,8 +1950,6 @@ select * from testrngfunc(); -- fail ERROR: a column definition list is required for functions returning "record" -LINE 1: select * from testrngfunc(); - ^ drop function testrngfunc(); create function testrngfunc() returns setof record as $$ insert into rngfunc values (1,2), (3,4) returning *; @@ -1974,8 +1970,6 @@ select * from testrngfunc(); -- fail ERROR: a column definition list is required for functions returning "record" -LINE 1: select * from testrngfunc(); - ^ drop function testrngfunc(); -- Check that typmod imposed by a composite type is honored create type rngfunc_type as (f1 numeric(35,6), f2 numeric(35,2)); @@ -2156,16 +2150,10 @@ -- Check a couple of error cases while we're here select * from testrngfunc() as t(f1 int8,f2 int8); -- fail, composite result ERROR: a column definition list is redundant for a function returning a named composite type -LINE 1: select * from testrngfunc() as t(f1 int8,f2 int8); - ^ select * from pg_get_keywords() as t(f1 int8,f2 int8); -- fail, OUT params ERROR: a column definition list is redundant for a function with OUT parameters -LINE 1: select * from pg_get_keywords() as t(f1 int8,f2 int8); - ^ select * from sin(3) as t(f1 int8,f2 int8); -- fail, scalar result type ERROR: a column definition list is only allowed for functions returning "record" -LINE 1: select * from sin(3) as t(f1 int8,f2 int8); - ^ drop type rngfunc_type cascade; NOTICE: drop cascades to function testrngfunc() -- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/prepare.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/prepare.out --- /tmp/cirrus-ci-build/src/test/regress/expected/prepare.out 2024-02-22 13:04:49.015643000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/prepare.out 2024-02-22 13:08:28.976648000 +0000 @@ -113,14 +113,10 @@ -- wrong param types EXECUTE q3(5::smallint, 10.5::float, false, 4::bigint, 'bytea'); ERROR: parameter $3 of type boolean cannot be coerced to the expected type double precision -LINE 1: EXECUTE q3(5::smallint, 10.5::float, false, 4::bigint, 'byte... - ^ HINT: You will need to rewrite or cast the expression. -- invalid type PREPARE q4(nonexistenttype) AS SELECT $1; ERROR: type "nonexistenttype" does not exist -LINE 1: PREPARE q4(nonexistenttype) AS SELECT $1; - ^ -- create table as execute PREPARE q5(int, text) AS SELECT * FROM tenk1 WHERE unique1 = $1 OR stringu1 = $2 diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/truncate.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/truncate.out --- /tmp/cirrus-ci-build/src/test/regress/expected/truncate.out 2024-02-22 13:04:49.017077000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/truncate.out 2024-02-22 13:08:29.650066000 +0000 @@ -448,8 +448,6 @@ DROP TABLE truncate_a; SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped ERROR: relation "truncate_a_id1" does not exist -LINE 1: SELECT nextval('truncate_a_id1'); - ^ -- partitioned table CREATE TABLE truncparted (a int, b char) PARTITION BY LIST (a); -- error, can't truncate a partitioned table diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/alter_table.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/alter_table.out --- /tmp/cirrus-ci-build/src/test/regress/expected/alter_table.out 2024-02-22 13:04:49.011772000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/alter_table.out 2024-02-22 13:08:31.810672000 +0000 @@ -139,8 +139,6 @@ ALTER TABLE attmp RENAME TO attmp_new2; SELECT * FROM attmp; -- should fail ERROR: relation "attmp" does not exist -LINE 1: SELECT * FROM attmp; - ^ SELECT * FROM attmp_new; attmptable ------------ @@ -1294,20 +1292,12 @@ select * from atacc1 order by a; ERROR: column "a" does not exist -LINE 1: select * from atacc1 order by a; - ^ select * from atacc1 order by "........pg.dropped.1........"; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: select * from atacc1 order by "........pg.dropped.1........"... - ^ select * from atacc1 group by a; ERROR: column "a" does not exist -LINE 1: select * from atacc1 group by a; - ^ select * from atacc1 group by "........pg.dropped.1........"; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: select * from atacc1 group by "........pg.dropped.1........"... - ^ select atacc1.* from atacc1; b | c | d ---+---+--- @@ -1316,12 +1306,8 @@ select a from atacc1; ERROR: column "a" does not exist -LINE 1: select a from atacc1; - ^ select atacc1.a from atacc1; ERROR: column atacc1.a does not exist -LINE 1: select atacc1.a from atacc1; - ^ select b,c,d from atacc1; b | c | d ---+---+--- @@ -1330,97 +1316,53 @@ select a,b,c,d from atacc1; ERROR: column "a" does not exist -LINE 1: select a,b,c,d from atacc1; - ^ select * from atacc1 where a = 1; ERROR: column "a" does not exist -LINE 1: select * from atacc1 where a = 1; - ^ select "........pg.dropped.1........" from atacc1; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: select "........pg.dropped.1........" from atacc1; - ^ select atacc1."........pg.dropped.1........" from atacc1; ERROR: column atacc1.........pg.dropped.1........ does not exist -LINE 1: select atacc1."........pg.dropped.1........" from atacc1; - ^ select "........pg.dropped.1........",b,c,d from atacc1; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: select "........pg.dropped.1........",b,c,d from atacc1; - ^ select * from atacc1 where "........pg.dropped.1........" = 1; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: select * from atacc1 where "........pg.dropped.1........" = ... - ^ -- UPDATEs update atacc1 set a = 3; ERROR: column "a" of relation "atacc1" does not exist -LINE 1: update atacc1 set a = 3; - ^ update atacc1 set b = 2 where a = 3; ERROR: column "a" does not exist -LINE 1: update atacc1 set b = 2 where a = 3; - ^ update atacc1 set "........pg.dropped.1........" = 3; ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist -LINE 1: update atacc1 set "........pg.dropped.1........" = 3; - ^ update atacc1 set b = 2 where "........pg.dropped.1........" = 3; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: update atacc1 set b = 2 where "........pg.dropped.1........"... - ^ -- INSERTs insert into atacc1 values (10, 11, 12, 13); ERROR: INSERT has more expressions than target columns -LINE 1: insert into atacc1 values (10, 11, 12, 13); - ^ insert into atacc1 values (default, 11, 12, 13); ERROR: INSERT has more expressions than target columns -LINE 1: insert into atacc1 values (default, 11, 12, 13); - ^ insert into atacc1 values (11, 12, 13); insert into atacc1 (a) values (10); ERROR: column "a" of relation "atacc1" does not exist -LINE 1: insert into atacc1 (a) values (10); - ^ insert into atacc1 (a) values (default); ERROR: column "a" of relation "atacc1" does not exist -LINE 1: insert into atacc1 (a) values (default); - ^ insert into atacc1 (a,b,c,d) values (10,11,12,13); ERROR: column "a" of relation "atacc1" does not exist -LINE 1: insert into atacc1 (a,b,c,d) values (10,11,12,13); - ^ insert into atacc1 (a,b,c,d) values (default,11,12,13); ERROR: column "a" of relation "atacc1" does not exist -LINE 1: insert into atacc1 (a,b,c,d) values (default,11,12,13); - ^ insert into atacc1 (b,c,d) values (11,12,13); insert into atacc1 ("........pg.dropped.1........") values (10); ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist -LINE 1: insert into atacc1 ("........pg.dropped.1........") values (... - ^ insert into atacc1 ("........pg.dropped.1........") values (default); ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist -LINE 1: insert into atacc1 ("........pg.dropped.1........") values (... - ^ insert into atacc1 ("........pg.dropped.1........",b,c,d) values (10,11,12,13); ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist -LINE 1: insert into atacc1 ("........pg.dropped.1........",b,c,d) va... - ^ insert into atacc1 ("........pg.dropped.1........",b,c,d) values (default,11,12,13); ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exist -LINE 1: insert into atacc1 ("........pg.dropped.1........",b,c,d) va... - ^ -- DELETEs delete from atacc1 where a = 3; ERROR: column "a" does not exist -LINE 1: delete from atacc1 where a = 3; - ^ delete from atacc1 where "........pg.dropped.1........" = 3; ERROR: column "........pg.dropped.1........" does not exist -LINE 1: delete from atacc1 where "........pg.dropped.1........" = 3; - ^ delete from atacc1; -- try dropping a non-existent column, should fail alter table atacc1 drop bar; @@ -1705,8 +1647,6 @@ alter table c1 drop column f1; select f1 from c1; ERROR: column "f1" does not exist -LINE 1: select f1 from c1; - ^ HINT: Perhaps you meant to reference the column "c1.f2". drop table p1 cascade; NOTICE: drop cascades to table c1 @@ -1719,8 +1659,6 @@ -- c1.f1 is dropped now, since there is no local definition for it select f1 from c1; ERROR: column "f1" does not exist -LINE 1: select f1 from c1; - ^ HINT: Perhaps you meant to reference the column "c1.f2". drop table p1 cascade; NOTICE: drop cascades to table c1 @@ -3913,8 +3851,6 @@ CREATE TABLE fail_part (LIKE list_parted); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES FROM (1) TO (10); ERROR: invalid bound specification for a list partition -LINE 1: ...list_parted ATTACH PARTITION fail_part FOR VALUES FROM (1) T... - ^ DROP TABLE fail_part; -- check that the table being attached exists ALTER TABLE list_parted ATTACH PARTITION nonexistent FOR VALUES IN (1); @@ -4015,8 +3951,6 @@ CREATE TABLE fail_part (LIKE part_1 INCLUDING CONSTRAINTS); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); ERROR: partition "fail_part" would overlap partition "part_1" -LINE 1: ...LE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); - ^ DROP TABLE fail_part; -- check that an existing table can be attached as a default partition CREATE TABLE def_part (LIKE list_parted INCLUDING CONSTRAINTS); @@ -4026,8 +3960,6 @@ CREATE TABLE fail_def_part (LIKE part_1 INCLUDING CONSTRAINTS); ALTER TABLE list_parted ATTACH PARTITION fail_def_part DEFAULT; ERROR: partition "fail_def_part" conflicts with existing default partition "def_part" -LINE 1: ...ER TABLE list_parted ATTACH PARTITION fail_def_part DEFAULT; - ^ -- check validation when attaching list partitions CREATE TABLE list_parted2 ( a int, @@ -4097,8 +4029,6 @@ CREATE TABLE partr_def2 (LIKE part1 INCLUDING CONSTRAINTS); ALTER TABLE range_parted ATTACH PARTITION partr_def2 DEFAULT; ERROR: partition "partr_def2" conflicts with existing default partition "partr_def1" -LINE 1: ...LTER TABLE range_parted ATTACH PARTITION partr_def2 DEFAULT; - ^ -- Overlapping partitions cannot be attached, hence, following should give error INSERT INTO partr_def1 VALUES (2, 10); CREATE TABLE part3 (LIKE range_parted); @@ -4219,12 +4149,8 @@ CREATE TABLE fail_part (LIKE hpart_1); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 8, REMAINDER 4); ERROR: partition "fail_part" would overlap partition "hpart_1" -LINE 1: ...hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODU... - ^ ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 8, REMAINDER 0); ERROR: partition "fail_part" would overlap partition "hpart_1" -LINE 1: ...hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODU... - ^ DROP TABLE fail_part; -- check validation when attaching hash partitions -- check that violating rows are correctly reported diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/sequence.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/sequence.out --- /tmp/cirrus-ci-build/src/test/regress/expected/sequence.out 2024-02-22 13:04:49.016575000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/sequence.out 2024-02-22 13:08:29.732475000 +0000 @@ -42,8 +42,6 @@ ERROR: sequence type must be smallint, integer, or bigint CREATE SEQUENCE sequence_testx AS nosuchtype; ERROR: type "nosuchtype" does not exist -LINE 1: CREATE SEQUENCE sequence_testx AS nosuchtype; - ^ CREATE SEQUENCE sequence_testx AS smallint MAXVALUE 100000; ERROR: MAXVALUE (100000) is out of range for sequence data type smallint CREATE SEQUENCE sequence_testx AS smallint MINVALUE -100000; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/polymorphism.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/polymorphism.out --- /tmp/cirrus-ci-build/src/test/regress/expected/polymorphism.out 2024-02-22 13:04:49.015544000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/polymorphism.out 2024-02-22 13:08:29.811616000 +0000 @@ -13,12 +13,7 @@ select polyf(point(3,4)); -- fail for lack of + operator ERROR: operator does not exist: point + integer -LINE 2: select x + 1 - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -QUERY: - select x + 1 - CONTEXT: SQL function "polyf" during inlining drop function polyf(x anyelement); create function polyf(x anyelement) returns anyarray as $$ @@ -93,8 +88,6 @@ select polyf(int4range(42, 49), 11, 4.5) as fail; -- range type doesn't fit ERROR: function polyf(int4range, integer, numeric) does not exist -LINE 1: select polyf(int4range(42, 49), 11, 4.5) as fail; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function polyf(x anycompatiblerange, y anycompatible, z anycompatible); create function polyf(x anycompatiblemultirange, y anycompatible, z anycompatible) returns anycompatiblearray as $$ @@ -108,8 +101,6 @@ select polyf(multirange(int4range(42, 49)), 11, 4.5) as fail; -- range type doesn't fit ERROR: function polyf(int4multirange, integer, numeric) does not exist -LINE 1: select polyf(multirange(int4range(42, 49)), 11, 4.5) as fail... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function polyf(x anycompatiblemultirange, y anycompatible, z anycompatible); -- fail, can't infer type: @@ -174,8 +165,6 @@ select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2.2], 42, 34.5); -- fail ERROR: function polyf(integer, numeric[], integer, numeric) does not exist -LINE 2: from polyf(11, array[1, 2.2], 42, 34.5); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function polyf(a anyelement, b anyarray, c anycompatible, d anycompatible); @@ -960,8 +949,6 @@ select * from array_in('{1,2,3}','int4'::regtype,-1); -- this not ERROR: function "array_in" in FROM has unsupported return type anyarray -LINE 1: select * from array_in('{1,2,3}','int4'::regtype,-1); - ^ select anyrange_in('[10,20)','int4range'::regtype,-1); ERROR: cannot accept a value of type anyrange -- test variadic polymorphic functions @@ -988,8 +975,6 @@ select myleast(); -- fail ERROR: function myleast() does not exist -LINE 1: select myleast(); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. -- test with variadic call parameter select myleast(variadic array[1,2,3,4,-1]); @@ -1058,18 +1043,12 @@ select formarray(1.1, array[1.2,55.5]); -- fail without variadic ERROR: function formarray(numeric, numeric[]) does not exist -LINE 1: select formarray(1.1, array[1.2,55.5]); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select formarray(1, 'x'::text); -- fail, type mismatch ERROR: function formarray(integer, text) does not exist -LINE 1: select formarray(1, 'x'::text); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select formarray(1, variadic array['x'::text]); -- fail, type mismatch ERROR: function formarray(integer, text[]) does not exist -LINE 1: select formarray(1, variadic array['x'::text]); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function formarray(anyelement, variadic anyarray); -- test pg_typeof() function @@ -1152,8 +1131,6 @@ select dfunc(10, 20, 30); -- fail ERROR: function dfunc(integer, integer, integer) does not exist -LINE 1: select dfunc(10, 20, 30); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function dfunc(); -- fail ERROR: function dfunc() does not exist @@ -1199,8 +1176,6 @@ $$ language sql; select dfunc(); -- fail: which dfunc should be called? int or text ERROR: function dfunc() is not unique -LINE 1: select dfunc(); - ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. select dfunc('Hi'); -- ok dfunc @@ -1238,18 +1213,12 @@ -- with 0 to 2 arguments. select dfunc(); -- fail ERROR: function dfunc() is not unique -LINE 1: select dfunc(); - ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. select dfunc(1); -- fail ERROR: function dfunc(integer) is not unique -LINE 1: select dfunc(1); - ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. select dfunc(1, 2); -- fail ERROR: function dfunc(integer, integer) is not unique -LINE 1: select dfunc(1, 2); - ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. select dfunc(1, 2, 3); -- ok dfunc @@ -1304,8 +1273,6 @@ $$ select array_upper($1, 1) $$ language sql; select dfunc(); -- fail ERROR: function dfunc() does not exist -LINE 1: select dfunc(); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select dfunc(10); dfunc @@ -1365,8 +1332,6 @@ -- dfunc(narg=2) and dfunc(narg=3) are ambiguous select dfunc(1); -- fail ERROR: function dfunc(integer) is not unique -LINE 1: select dfunc(1); - ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. -- but this works since the ambiguous functions aren't preferred anyway select dfunc('Hi'); @@ -1411,8 +1376,6 @@ select * from dfunc(0); -- fail ERROR: function dfunc(integer) does not exist -LINE 1: select * from dfunc(0); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select * from dfunc(1,2); a | b | c | d @@ -1434,26 +1397,16 @@ select * from dfunc(x := 20, b := 10, x := 30); -- fail, duplicate name ERROR: argument name "x" used more than once -LINE 1: select * from dfunc(x := 20, b := 10, x := 30); - ^ select * from dfunc(10, b := 20, 30); -- fail, named args must be last ERROR: positional argument cannot follow named argument -LINE 1: select * from dfunc(10, b := 20, 30); - ^ select * from dfunc(x := 10, b := 20, c := 30); -- fail, unknown param ERROR: function dfunc(x => integer, b => integer, c => integer) does not exist -LINE 1: select * from dfunc(x := 10, b := 20, c := 30); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select * from dfunc(10, 10, a := 20); -- fail, a overlaps positional parameter ERROR: function dfunc(integer, integer, a => integer) does not exist -LINE 1: select * from dfunc(10, 10, a := 20); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select * from dfunc(1,c := 2,d := 3); -- fail, no value for b ERROR: function dfunc(integer, c => integer, d => integer) does not exist -LINE 1: select * from dfunc(1,c := 2,d := 3); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function dfunc(int, int, int, int); -- test with different parameter types @@ -1493,8 +1446,6 @@ select * from dfunc('Hello World', c := 20, b := '2009-07-25'::date); -- fail ERROR: function dfunc(unknown, c => integer, b => date) does not exist -LINE 1: select * from dfunc('Hello World', c := 20, b := '2009-07-25... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function dfunc(varchar, numeric, date); -- test out parameters with named params @@ -1830,8 +1781,6 @@ select x, pg_typeof(x) from anyctest(11, point(1,2)) x; -- fail ERROR: function anyctest(integer, point) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, point(1,2)) x; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest('11', '12.3') x; -- defaults to text x | pg_typeof @@ -1858,8 +1807,6 @@ select x, pg_typeof(x) from anyctest(11, array[1,2]) x; -- fail ERROR: function anyctest(integer, integer[]) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, array[1,2]) x; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(anycompatible, anycompatible); create function anyctest(anycompatible, anycompatiblearray) @@ -1892,13 +1839,9 @@ select x, pg_typeof(x) from anyctest(11, array[point(1,2)]) x; -- fail ERROR: function anyctest(integer, point[]) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, array[point(1,2)]) ... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest(11, 12) x; -- fail ERROR: function anyctest(integer, integer) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, 12) x; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(anycompatible, anycompatiblearray); create function anyctest(anycompatible, anycompatiblerange) @@ -1919,13 +1862,9 @@ select x, pg_typeof(x) from anyctest(11, 12) x; -- fail ERROR: function anyctest(integer, integer) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, 12) x; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest(11.2, int4range(4,7)) x; -- fail ERROR: function anyctest(numeric, int4range) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11.2, int4range(4,7)) x... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest(11.2, '[4,7)') x; -- fail ERROR: could not determine polymorphic type anycompatiblerange because input has type unknown @@ -1942,8 +1881,6 @@ select x, pg_typeof(x) from anyctest(int4range(11,12), numrange(4,7)) x; -- fail ERROR: function anyctest(int4range, numrange) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(int4range(11,12), numra... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(anycompatiblerange, anycompatiblerange); -- fail, can't infer result type: @@ -1971,13 +1908,9 @@ select x, pg_typeof(x) from anyctest(11, 12) x; -- fail ERROR: function anyctest(integer, integer) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, 12) x; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest(11.2, multirange(int4range(4,7))) x; -- fail ERROR: function anyctest(numeric, int4multirange) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11.2, multirange(int4ra... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select x, pg_typeof(x) from anyctest(11.2, '{[4,7)}') x; -- fail ERROR: could not determine polymorphic type anycompatiblemultirange because input has type unknown @@ -1994,8 +1927,6 @@ select x, pg_typeof(x) from anyctest(multirange(int4range(11,12)), multirange(numrange(4,7))) x; -- fail ERROR: function anyctest(int4multirange, nummultirange) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(multirange(int4range(11... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(anycompatiblemultirange, anycompatiblemultirange); -- fail, can't infer result type: @@ -2023,8 +1954,6 @@ select x, pg_typeof(x) from anyctest(array[11], array[1,2]) x; -- fail ERROR: function anyctest(integer[], integer[]) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(array[11], array[1,2]) ... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(anycompatiblenonarray, anycompatiblenonarray); create function anyctest(a anyelement, b anyarray, @@ -2052,8 +1981,6 @@ select x, pg_typeof(x) from anyctest(11, array[1, 2.2], 42, 34.5) x; -- fail ERROR: function anyctest(integer, numeric[], integer, numeric) does not exist -LINE 1: select x, pg_typeof(x) from anyctest(11, array[1, 2.2], 42, ... - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. drop function anyctest(a anyelement, b anyarray, c anycompatible, d anycompatible); @@ -2081,8 +2008,6 @@ select x, pg_typeof(x) from anyctest(11, '12.2') x; -- fail ERROR: invalid input syntax for type integer: "12.2" -LINE 1: select x, pg_typeof(x) from anyctest(11, '12.2') x; - ^ select x, pg_typeof(x) from anyctest(variadic array[11, 12]) x; x | pg_typeof ---------+----------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/rowtypes.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rowtypes.out --- /tmp/cirrus-ci-build/src/test/regress/expected/rowtypes.out 2024-02-22 13:04:49.016226000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/rowtypes.out 2024-02-22 13:08:29.506012000 +0000 @@ -45,18 +45,12 @@ select '(Joe)'::fullname; -- bad ERROR: malformed record literal: "(Joe)" -LINE 1: select '(Joe)'::fullname; - ^ DETAIL: Too few columns. select '(Joe,,)'::fullname; -- bad ERROR: malformed record literal: "(Joe,,)" -LINE 1: select '(Joe,,)'::fullname; - ^ DETAIL: Too many columns. select '[]'::fullname; -- bad ERROR: malformed record literal: "[]" -LINE 1: select '[]'::fullname; - ^ DETAIL: Missing left parenthesis. select ' (Joe,Blow) '::fullname; -- ok, extra whitespace fullname @@ -66,8 +60,6 @@ select '(Joe,Blow) /'::fullname; -- bad ERROR: malformed record literal: "(Joe,Blow) /" -LINE 1: select '(Joe,Blow) /'::fullname; - ^ DETAIL: Junk after right parenthesis. -- test non-error-throwing API SELECT pg_input_is_valid('(1,2)', 'complex'); @@ -112,8 +104,6 @@ select f1, q.c1 from quadtable; -- fails, q is a table reference ERROR: missing FROM-clause entry for table "q" -LINE 1: select f1, q.c1 from quadtable; - ^ select f1, (q).c1, (qq.q).c1.i from quadtable qq; f1 | c1 | i ----+-----------+----- @@ -152,8 +142,6 @@ update quadtable set q.c1.r = 12 where f1 = 2; update quadtable set q.c1 = 12; -- error, type mismatch ERROR: subfield "c1" is of type complex but expression is of type integer -LINE 1: update quadtable set q.c1 = 12; - ^ HINT: You will need to rewrite or cast the expression. select * from quadtable; f1 | q @@ -264,8 +252,6 @@ select ROW('ABC','DEF') ~~ ROW('DEF','ABC') as fail; ERROR: could not determine interpretation of row comparison operator ~~ -LINE 1: select ROW('ABC','DEF') ~~ ROW('DEF','ABC') as fail; - ^ HINT: Row comparison operators must be associated with btree operator families. -- Comparisons of ROW() expressions can cope with some type mismatches select ROW(1,2) = ROW(1,2::int8); @@ -497,8 +483,6 @@ select (row(1, 2.0)).nosuch; -- fail ERROR: could not identify column "nosuch" in record data type -LINE 1: select (row(1, 2.0)).nosuch; - ^ select (row(1, 2.0)).*; f1 | f2 ----+----- @@ -513,8 +497,6 @@ select (r).f3 from (select row(1, 2.0) as r) ss; -- fail ERROR: could not identify column "f3" in record data type -LINE 1: select (r).f3 from (select row(1, 2.0) as r) ss; - ^ select (r).* from (select row(1, 2.0) as r) ss; f1 | f2 ----+----- @@ -536,8 +518,6 @@ select ROW() = ROW(); ERROR: cannot compare rows of zero length -LINE 1: select ROW() = ROW(); - ^ -- Check ability to create arrays of anonymous rowtypes select array[ row(1,2), row(3,4), row(5,6) ]; array @@ -565,8 +545,6 @@ insert into cc values('("(4,5)",6)'); select * from cc order by f1; -- fail, but should complain about cantcompare ERROR: could not identify an ordering operator for type cantcompare -LINE 1: select * from cc order by f1; - ^ HINT: Use an explicit ordering operator or modify the query. -- -- Tests for record_{eq,cmp} @@ -908,9 +886,8 @@ insert into compos values (v); -- fail $$ language sql; ERROR: column "f1" is of type integer but expression is of type compos -LINE 2: insert into compos values (v); -- fail - ^ HINT: You will need to rewrite or cast the expression. +CONTEXT: SQL function "fcompos1" create function fcompos1(v compos) returns void as $$ insert into compos values (v.*); $$ language sql; @@ -963,13 +940,9 @@ select text(fullname) from fullname; -- error ERROR: function text(fullname) does not exist -LINE 1: select text(fullname) from fullname; - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select fullname.text from fullname; -- error ERROR: column fullname.text does not exist -LINE 1: select fullname.text from fullname; - ^ -- same, but RECORD instead of named composite type: select cast (row('Jim', 'Beam') as text); row @@ -985,13 +958,9 @@ select text(row('Jim', 'Beam')); -- error ERROR: function text(record) does not exist -LINE 1: select text(row('Jim', 'Beam')); - ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select (row('Jim', 'Beam')).text; -- error ERROR: could not identify column "text" in record data type -LINE 1: select (row('Jim', 'Beam')).text; - ^ -- -- Check the equivalence of functional and column notation -- @@ -1308,8 +1277,6 @@ -- composite type columns can't directly be accessed (error) SELECT d.a FROM (SELECT compositetable AS d FROM compositetable) s; ERROR: missing FROM-clause entry for table "d" -LINE 1: SELECT d.a FROM (SELECT compositetable AS d FROM compositeta... - ^ -- but can be accessed with proper parens SELECT (d).a, (d).b FROM (SELECT compositetable AS d FROM compositetable) s; a | b @@ -1320,13 +1287,9 @@ -- system columns can't be accessed in composite types (error) SELECT (d).ctid FROM (SELECT compositetable AS d FROM compositetable) s; ERROR: column "ctid" not found in data type compositetable -LINE 1: SELECT (d).ctid FROM (SELECT compositetable AS d FROM compos... - ^ -- accessing non-existing column in NULL datum errors out SELECT (NULL::compositetable).nonexistent; ERROR: column "nonexistent" not found in data type compositetable -LINE 1: SELECT (NULL::compositetable).nonexistent; - ^ -- existing column in a NULL composite yield NULL SELECT (NULL::compositetable).a; a @@ -1337,6 +1300,4 @@ -- oids can't be accessed in composite types (error) SELECT (NULL::compositetable).oid; ERROR: column "oid" not found in data type compositetable -LINE 1: SELECT (NULL::compositetable).oid; - ^ DROP TABLE compositetable; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/returning.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/returning.out --- /tmp/cirrus-ci-build/src/test/regress/expected/returning.out 2024-02-22 13:04:49.015983000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/returning.out 2024-02-22 13:08:29.123509000 +0000 @@ -340,8 +340,6 @@ INSERT INTO foo AS bar DEFAULT VALUES RETURNING foo.*; -- fails, wrong name ERROR: invalid reference to FROM-clause entry for table "foo" -LINE 1: INSERT INTO foo AS bar DEFAULT VALUES RETURNING foo.*; - ^ HINT: Perhaps you meant to reference the table alias "bar". INSERT INTO foo AS bar DEFAULT VALUES RETURNING bar.*; -- ok f1 | f2 | f3 | f4 diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/with.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/with.out --- /tmp/cirrus-ci-build/src/test/regress/expected/with.out 2024-02-22 13:04:49.017698000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/with.out 2024-02-22 13:08:29.737297000 +0000 @@ -173,8 +173,6 @@ ) SELECT n, pg_typeof(n) FROM t; ERROR: operator does not exist: text + integer -LINE 4: SELECT n+1 FROM t WHERE n < 10 - ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- Deeply nested WITH caused a list-munging problem in v13 -- Detection of cross-references and self-references @@ -913,8 +911,6 @@ ) search depth first by foo, tar set seq select * from search_graph; ERROR: search column "foo" not in WITH query column list -LINE 7: ) search depth first by foo, tar set seq - ^ with recursive search_graph(f, t, label) as ( select * from graph0 g union all @@ -924,8 +920,6 @@ ) search depth first by f, t set label select * from search_graph; ERROR: search sequence column name "label" already used in WITH query column list -LINE 7: ) search depth first by f, t set label - ^ with recursive search_graph(f, t, label) as ( select * from graph0 g union all @@ -935,8 +929,6 @@ ) search depth first by f, t, f set seq select * from search_graph; ERROR: search column "f" specified more than once -LINE 7: ) search depth first by f, t, f set seq - ^ with recursive search_graph(f, t, label) as ( select * from graph0 g union all @@ -1458,8 +1450,6 @@ ) cycle foo, tar set is_cycle using path select * from search_graph; ERROR: cycle column "foo" not in WITH query column list -LINE 7: ) cycle foo, tar set is_cycle using path - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1469,8 +1459,6 @@ ) cycle f, t set is_cycle to true default 55 using path select * from search_graph; ERROR: CYCLE types boolean and integer cannot be matched -LINE 7: ) cycle f, t set is_cycle to true default 55 using path - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1489,8 +1477,6 @@ ) cycle f, t set label to true default false using path select * from search_graph; ERROR: cycle mark column name "label" already used in WITH query column list -LINE 7: ) cycle f, t set label to true default false using path - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1500,8 +1486,6 @@ ) cycle f, t set is_cycle to true default false using label select * from search_graph; ERROR: cycle path column name "label" already used in WITH query column list -LINE 7: ) cycle f, t set is_cycle to true default false using label - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1511,8 +1495,6 @@ ) cycle f, t set foo to true default false using foo select * from search_graph; ERROR: cycle mark column name and cycle path column name are the same -LINE 7: ) cycle f, t set foo to true default false using foo - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1522,8 +1504,6 @@ ) cycle f, t, f set is_cycle to true default false using path select * from search_graph; ERROR: cycle column "f" specified more than once -LINE 7: ) cycle f, t, f set is_cycle to true default false using pat... - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1534,8 +1514,6 @@ cycle f, t set foo to true default false using path select * from search_graph; ERROR: search sequence column name and cycle mark column name are the same -LINE 7: ) search depth first by f, t set foo - ^ with recursive search_graph(f, t, label) as ( select * from graph g union all @@ -1546,8 +1524,6 @@ cycle f, t set is_cycle to true default false using foo select * from search_graph; ERROR: search sequence column name and cycle path column name are the same -LINE 7: ) search depth first by f, t set foo - ^ -- test ruleutils and view expansion create temp view v_cycle1 as with recursive search_graph(f, t, label) as ( @@ -1976,42 +1952,28 @@ WITH x(n, b) AS (SELECT 1) SELECT * FROM x; ERROR: WITH query "x" has 1 columns available but 2 columns specified -LINE 1: WITH x(n, b) AS (SELECT 1) - ^ -- INTERSECT WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT SELECT n+1 FROM x) SELECT * FROM x; ERROR: recursive query "x" does not have the form non-recursive-term UNION [ALL] recursive-term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT SELECT n+1 FROM x... - ^ WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT ALL SELECT n+1 FROM x) SELECT * FROM x; ERROR: recursive query "x" does not have the form non-recursive-term UNION [ALL] recursive-term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT ALL SELECT n+1 FR... - ^ -- EXCEPT WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT SELECT n+1 FROM x) SELECT * FROM x; ERROR: recursive query "x" does not have the form non-recursive-term UNION [ALL] recursive-term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT SELECT n+1 FROM x) - ^ WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT ALL SELECT n+1 FROM x) SELECT * FROM x; ERROR: recursive query "x" does not have the form non-recursive-term UNION [ALL] recursive-term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT ALL SELECT n+1 FROM ... - ^ -- no non-recursive term WITH RECURSIVE x(n) AS (SELECT n FROM x) SELECT * FROM x; ERROR: recursive query "x" does not have the form non-recursive-term UNION [ALL] recursive-term -LINE 1: WITH RECURSIVE x(n) AS (SELECT n FROM x) - ^ -- recursive term in the left hand side (strictly speaking, should allow this) WITH RECURSIVE x(n) AS (SELECT n FROM x UNION ALL SELECT 1) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within its non-recursive term -LINE 1: WITH RECURSIVE x(n) AS (SELECT n FROM x UNION ALL SELECT 1) - ^ CREATE TEMPORARY TABLE y (a INTEGER); INSERT INTO y SELECT generate_series(1, 10); -- LEFT JOIN @@ -2020,54 +1982,38 @@ SELECT x.n+1 FROM y LEFT JOIN x ON x.n = y.a WHERE n < 10) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within an outer join -LINE 3: SELECT x.n+1 FROM y LEFT JOIN x ON x.n = y.a WHERE n < 10) - ^ -- RIGHT JOIN WITH RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x RIGHT JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within an outer join -LINE 3: SELECT x.n+1 FROM x RIGHT JOIN y ON x.n = y.a WHERE n < 10) - ^ -- FULL JOIN WITH RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x FULL JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within an outer join -LINE 3: SELECT x.n+1 FROM x FULL JOIN y ON x.n = y.a WHERE n < 10) - ^ -- subquery WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x WHERE n IN (SELECT * FROM x)) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within a subquery -LINE 2: WHERE n IN (SELECT * FROM x)) - ^ -- aggregate functions WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT count(*) FROM x) SELECT * FROM x; ERROR: aggregate functions are not allowed in a recursive query's recursive term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT count(*) F... - ^ WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT sum(n) FROM x) SELECT * FROM x; ERROR: aggregate functions are not allowed in a recursive query's recursive term -LINE 1: WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT sum(n) FRO... - ^ -- ORDER BY WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x ORDER BY 1) SELECT * FROM x; ERROR: ORDER BY in a recursive query is not implemented -LINE 1: ...VE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x ORDER BY 1) - ^ -- LIMIT/OFFSET WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x LIMIT 10 OFFSET 1) SELECT * FROM x; ERROR: OFFSET in a recursive query is not implemented -LINE 1: ... AS (SELECT 1 UNION ALL SELECT n+1 FROM x LIMIT 10 OFFSET 1) - ^ -- FOR UPDATE WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x FOR UPDATE) SELECT * FROM x; @@ -2078,16 +2024,12 @@ SELECT (SELECT * FROM x) FROM x WHERE id < 5 ) SELECT * FROM x; ERROR: recursive reference to query "x" must not appear within a subquery -LINE 3: SELECT (SELECT * FROM x) FROM x WHERE id < 5 - ^ -- mutual recursive query (not implemented) WITH RECURSIVE x (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM y WHERE id < 5), y (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM x WHERE id < 5) SELECT * FROM x; ERROR: mutual recursion between WITH items is not implemented -LINE 2: x (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM y WHERE id ... - ^ -- non-linear recursion is not allowed WITH RECURSIVE foo(i) AS (values (1) @@ -2097,8 +2039,6 @@ SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; ERROR: recursive reference to query "foo" must not appear more than once -LINE 6: SELECT i+1 FROM foo WHERE i < 5) - ^ WITH RECURSIVE foo(i) AS (values (1) UNION ALL @@ -2108,8 +2048,6 @@ SELECT i+1 FROM foo WHERE i < 5) AS t ) SELECT * FROM foo; ERROR: recursive reference to query "foo" must not appear more than once -LINE 7: SELECT i+1 FROM foo WHERE i < 5) AS t - ^ WITH RECURSIVE foo(i) AS (values (1) UNION ALL @@ -2118,8 +2056,6 @@ SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; ERROR: recursive reference to query "foo" must not appear within EXCEPT -LINE 6: SELECT i+1 FROM foo WHERE i < 5) - ^ WITH RECURSIVE foo(i) AS (values (1) UNION ALL @@ -2128,8 +2064,6 @@ SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; ERROR: recursive reference to query "foo" must not appear more than once -LINE 6: SELECT i+1 FROM foo WHERE i < 5) - ^ -- Wrong type induced from non-recursive term WITH RECURSIVE foo(i) AS (SELECT i FROM (VALUES(1),(2)) t(i) @@ -2137,8 +2071,6 @@ SELECT (i+1)::numeric(10,0) FROM foo WHERE i < 10) SELECT * FROM foo; ERROR: recursive query "foo" column 1 has type integer in non-recursive term but type numeric overall -LINE 2: (SELECT i FROM (VALUES(1),(2)) t(i) - ^ HINT: Cast the output of the non-recursive term to the correct type. -- rejects different typmod, too (should we allow this?) WITH RECURSIVE foo(i) AS @@ -2147,8 +2079,6 @@ SELECT (i+1)::numeric(10,0) FROM foo WHERE i < 10) SELECT * FROM foo; ERROR: recursive query "foo" column 1 has type numeric(3,0) in non-recursive term but type numeric overall -LINE 2: (SELECT i::numeric(3,0) FROM (VALUES(1),(2)) t(i) - ^ HINT: Cast the output of the non-recursive term to the correct type. -- disallow OLD/NEW reference in CTE CREATE TEMPORARY TABLE x (n integer); @@ -2294,8 +2224,6 @@ ) SELECT * FROM outermost ORDER BY 1; ERROR: relation "outermost" does not exist -LINE 4: SELECT * FROM outermost -- fail - ^ DETAIL: There is a WITH item named "outermost", but it cannot be referenced from this part of the query. HINT: Use WITH RECURSIVE, or re-order the WITH items to remove forward references. WITH RECURSIVE outermost(x) AS ( @@ -2318,8 +2246,6 @@ ) SELECT * FROM outermost ORDER BY 1; ERROR: recursive reference to query "outermost" must not appear within a subquery -LINE 2: WITH innermost as (SELECT 2 FROM outermost) -- fail - ^ -- -- This test will fail with the old implementation of PARAM_EXEC parameter -- assignment, because the "q1" Var passed down to A's targetlist subselect @@ -3483,24 +3409,18 @@ ) VALUES(FALSE); ERROR: recursive query "t" must not contain data-modifying statements -LINE 1: WITH RECURSIVE t AS ( - ^ -- no RETURNING in a referenced data-modifying WITH WITH t AS ( INSERT INTO y VALUES(0) ) SELECT * FROM t; ERROR: WITH query "t" does not have a RETURNING clause -LINE 4: SELECT * FROM t; - ^ -- data-modifying WITH allowed only at the top level SELECT * FROM ( WITH t AS (UPDATE y SET a=a+1 RETURNING *) SELECT * FROM t ) ss; ERROR: WITH clause containing a data-modifying statement must be at the top level -LINE 2: WITH t AS (UPDATE y SET a=a+1 RETURNING *) - ^ -- most variants of rules aren't allowed CREATE RULE y_rule AS ON INSERT TO y WHERE a=0 DO INSTEAD DELETE FROM y; WITH t AS ( @@ -3552,8 +3472,6 @@ -- check sane response to attempt to modify CTE relation WITH with_test AS (SELECT 42) INSERT INTO with_test VALUES (1); ERROR: relation "with_test" does not exist -LINE 1: WITH with_test AS (SELECT 42) INSERT INTO with_test VALUES (... - ^ -- check response to attempt to modify table with same name as a CTE (perhaps -- surprisingly it works, because CTEs don't hide tables from data-modifying -- statements) diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/xml.out /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/xml.out --- /tmp/cirrus-ci-build/src/test/regress/expected/xml.out 2024-02-22 13:04:49.017766000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/recovery/027_stream_regress/data/results/xml.out 2024-02-22 13:08:29.841635000 +0000 @@ -6,8 +6,6 @@ INSERT INTO xmltest VALUES (2, 'two'); INSERT INTO xmltest VALUES (3, '' IS NOT DOCUMENT; ERROR: invalid XML content -LINE 1: SELECT '<>' IS NOT DOCUMENT; - ^ DETAIL: line 1: StartTag: invalid element name <> ^ @@ -744,15 +732,11 @@ EXECUTE foo ('bad'); ERROR: invalid XML document -LINE 1: EXECUTE foo ('bad'); - ^ DETAIL: line 1: Start tag expected, '<' not found bad ^ SELECT xml ''; ERROR: invalid XML document -LINE 1: SELECT xml ''; - ^ DETAIL: line 1: Extra content at the end of the document ^ @@ -789,22 +773,16 @@ SELECT xml ' oops '; ERROR: invalid XML content -LINE 1: SELECT xml ' oops '; - ^ DETAIL: line 1: StartTag: invalid element name oops ^ SELECT xml ' '; ERROR: invalid XML content -LINE 1: SELECT xml ' '; - ^ DETAIL: line 1: StartTag: invalid element name ^ SELECT xml ''; ERROR: invalid XML content -LINE 1: SELECT xml ''; - ^ DETAIL: line 1: Extra content at the end of the document ^