diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/test_setup.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/test_setup.out --- /tmp/cirrus-ci-build/src/test/regress/expected/test_setup.out 2025-11-08 11:16:02.310239422 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/test_setup.out 2025-11-08 11:22:30.976592937 +0000 @@ -205,6 +205,7 @@ RETURNS bool AS :'regresslib', 'binary_coercible' LANGUAGE C STRICT STABLE PARALLEL SAFE; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Use hand-rolled hash functions and operator classes to get predictable -- result on different machines. The hash function for int4 simply returns -- the sum of the values passed to it and the one for text returns the length diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/type_sanity.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/type_sanity.out --- /tmp/cirrus-ci-build/src/test/regress/expected/type_sanity.out 2025-11-08 11:16:02.314255804 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/type_sanity.out 2025-11-08 11:22:37.016714985 +0000 @@ -595,6 +595,7 @@ CREATE FUNCTION is_catalog_text_unique_index_oid(oid) RETURNS bool AS :'regresslib', 'is_catalog_text_unique_index_oid' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory SELECT indexrelid::regclass FROM pg_index WHERE (is_catalog_text_unique_index_oid(indexrelid) <> @@ -602,10 +603,10 @@ indexrelid < 16384 AND EXISTS (SELECT 1 FROM pg_attribute WHERE attrelid = indexrelid AND atttypid = 'text'::regtype))); - indexrelid ------------- -(0 rows) - +ERROR: function is_catalog_text_unique_index_oid(oid) does not exist +LINE 3: WHERE (is_catalog_text_unique_index_oid(indexrelid) <> + ^ +DETAIL: There is no function of that name. -- **************** pg_range **************** -- Look for illegal values in pg_range fields. SELECT r.rngtypid, r.rngsubtype diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/opr_sanity.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/opr_sanity.out --- /tmp/cirrus-ci-build/src/test/regress/expected/opr_sanity.out 2025-11-08 11:16:02.278108364 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/opr_sanity.out 2025-11-08 11:22:38.684749080 +0000 @@ -989,10 +989,10 @@ OR (c.castsource = 'character'::regtype AND p.proargtypes[0] = 'text'::regtype)) OR NOT binary_coercible(p.prorettype, c.casttarget)); - oid | castsource | casttarget | castfunc | castcontext | castmethod ------+------------+------------+----------+-------------+------------ -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 5: OR NOT (binary_coercible(c.castsource, p.proargtypes[0]... + ^ +DETAIL: There is no function of that name. SELECT c.* FROM pg_cast c, pg_proc p WHERE c.castfunc = p.oid AND @@ -1285,10 +1285,10 @@ OR NOT binary_coercible(p1.prorettype, o1.oprresult) OR NOT binary_coercible(o1.oprleft, p1.proargtypes[0]) OR NOT binary_coercible(o1.oprright, p1.proargtypes[1])); - oid | oprname | oid | proname ------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: OR NOT binary_coercible(p1.prorettype, o1.oprresult) + ^ +DETAIL: There is no function of that name. SELECT o1.oid, o1.oprname, p1.oid, p1.proname FROM pg_operator AS o1, pg_proc AS p1 WHERE o1.oprcode = p1.oid AND @@ -1297,10 +1297,10 @@ OR NOT binary_coercible(p1.prorettype, o1.oprresult) OR NOT binary_coercible(o1.oprright, p1.proargtypes[0]) OR o1.oprleft != 0); - oid | oprname | oid | proname ------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: OR NOT binary_coercible(p1.prorettype, o1.oprresult) + ^ +DETAIL: There is no function of that name. -- If the operator is mergejoinable or hashjoinable, its underlying function -- should not be volatile. SELECT o1.oid, o1.oprname, p1.oid, p1.proname @@ -1524,10 +1524,10 @@ -- we could carry the check further, but 4 args is enough for now OR (p.pronargs > 4) ); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 9: OR NOT binary_coercible(ptr.prorettype, a.aggtranstype) + ^ +DETAIL: There is no function of that name. -- Cross-check finalfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, pfn.oid, pfn.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS pfn @@ -1547,10 +1547,10 @@ -- we could carry the check further, but 4 args is enough for now OR (pfn.pronargs > 4) ); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: NOT binary_coercible(pfn.prorettype, p.prorettype) OR + ^ +DETAIL: There is no function of that name. -- If transfn is strict then either initval should be non-NULL, or -- input type should match transtype so that the first non-null input -- can be assigned as the state value. @@ -1560,10 +1560,10 @@ a.aggtransfn = ptr.oid AND ptr.proisstrict AND a.agginitval IS NULL AND NOT binary_coercible(p.proargtypes[0], a.aggtranstype); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: NOT binary_coercible(p.proargtypes[0], a.aggtranstype); + ^ +DETAIL: There is no function of that name. -- Check for inconsistent specifications of moving-aggregate columns. SELECT ctid, aggfnoid::oid FROM pg_aggregate as a @@ -1612,10 +1612,10 @@ -- we could carry the check further, but 3 args is enough for now OR (p.pronargs > 3) ); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 9: OR NOT binary_coercible(ptr.prorettype, a.aggmtranstype... + ^ +DETAIL: There is no function of that name. -- Cross-check minvtransfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr @@ -1636,10 +1636,10 @@ -- we could carry the check further, but 3 args is enough for now OR (p.pronargs > 3) ); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 9: OR NOT binary_coercible(ptr.prorettype, a.aggmtranstype... + ^ +DETAIL: There is no function of that name. -- Cross-check mfinalfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, pfn.oid, pfn.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS pfn @@ -1659,10 +1659,10 @@ -- we could carry the check further, but 4 args is enough for now OR (pfn.pronargs > 4) ); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: NOT binary_coercible(pfn.prorettype, p.prorettype) OR + ^ +DETAIL: There is no function of that name. -- If mtransfn is strict then either minitval should be non-NULL, or -- input type should match mtranstype so that the first non-null input -- can be assigned as the state value. @@ -1672,10 +1672,10 @@ a.aggmtransfn = ptr.oid AND ptr.proisstrict AND a.aggminitval IS NULL AND NOT binary_coercible(p.proargtypes[0], a.aggmtranstype); - aggfnoid | proname | oid | proname -----------+---------+-----+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 6: NOT binary_coercible(p.proargtypes[0], a.aggmtranstype); + ^ +DETAIL: There is no function of that name. -- mtransfn and minvtransfn should have same strictness setting. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname, iptr.oid, iptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr, pg_proc AS iptr @@ -1696,10 +1696,10 @@ p.prorettype != p.proargtypes[0] OR p.prorettype != p.proargtypes[1] OR NOT binary_coercible(a.aggtranstype, p.proargtypes[0])); - aggfnoid | proname -----------+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 7: NOT binary_coercible(a.aggtranstype, p.proargtypes[0]))... + ^ +DETAIL: There is no function of that name. -- Check that no combine function for an INTERNAL transtype is strict. SELECT a.aggfnoid, p.proname FROM pg_aggregate as a, pg_proc as p @@ -2122,10 +2122,10 @@ WHERE NOT EXISTS(SELECT 1 FROM pg_amop AS a1 WHERE a1.amopfamily = c1.opcfamily AND binary_coercible(c1.opcintype, a1.amoplefttype)); - opcname | opcfamily ----------+----------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 5: AND binary_coercible(c1.opcintype, a1.amo... + ^ +DETAIL: There is no function of that name. -- Check that each operator listed in pg_amop has an associated opclass, -- that is one whose opcintype matches oprleft (possibly by coercion). -- Otherwise the operator is useless because it cannot be matched to an index. @@ -2137,10 +2137,10 @@ WHERE NOT EXISTS(SELECT 1 FROM pg_opclass AS c1 WHERE c1.opcfamily = a1.amopfamily AND binary_coercible(c1.opcintype, a1.amoplefttype)); - amopfamily | amopstrategy | amopopr -------------+--------------+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 5: AND binary_coercible(c1.opcintype, a1.amo... + ^ +DETAIL: There is no function of that name. -- Operators that are primary members of opclasses must be immutable (else -- it suggests that the index ordering isn't fixed). Operators that are -- cross-type members need only be stable, since they are just shorthands @@ -2264,10 +2264,10 @@ pg_opclass opc WHERE a.attrelid = indrelid AND a.attnum = ikey AND opc.oid = iclass AND (NOT binary_coercible(atttypid, opcintype) OR icoll != attcollation); - indexrelid | indrelid | attname | atttypid | opcname -------------+----------+---------+----------+--------- -(0 rows) - +ERROR: function binary_coercible(oid, oid) does not exist +LINE 8: (NOT binary_coercible(atttypid, opcintype) OR icoll !=... + ^ +DETAIL: There is no function of that name. -- For system catalogs, be even tighter: nearly all indexes should be -- exact type matches not binary-coercible matches. At this writing -- the only exception is an OID index on a regproc column. diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_function_c.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_function_c.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_function_c.out 2025-11-08 11:16:02.233928160 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_function_c.out 2025-11-08 11:22:41.476806495 +0000 @@ -14,6 +14,7 @@ -- is checked in many other test scripts.) -- LOAD :'regresslib'; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS 'nosuchfile'; @@ -23,12 +24,12 @@ \set VERBOSITY sqlstate CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS :'regresslib', 'nosuchsymbol'; -ERROR: 42883 +ERROR: 58P01 \set VERBOSITY default SELECT regexp_replace(:'LAST_ERROR_MESSAGE', 'file ".*"', 'file "..."'); - regexp_replace ------------------------------------------------------- - could not find function "nosuchsymbol" in file "..." + regexp_replace +-------------------------------------------------------- + could not access file "...": No such file or directory (1 row) CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_type.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_type.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_type.out 2025-11-08 11:16:02.237944542 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_type.out 2025-11-08 11:22:41.676810623 +0000 @@ -15,11 +15,12 @@ LANGUAGE C STRICT IMMUTABLE; NOTICE: type "widget" is not yet defined DETAIL: Creating a shell type definition. +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory CREATE FUNCTION widget_out(widget) RETURNS cstring AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; -NOTICE: argument type widget is only a shell +ERROR: type widget does not exist LINE 1: CREATE FUNCTION widget_out(widget) ^ CREATE FUNCTION int44in(cstring) @@ -28,11 +29,12 @@ LANGUAGE C STRICT IMMUTABLE; NOTICE: type "city_budget" is not yet defined DETAIL: Creating a shell type definition. +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory CREATE FUNCTION int44out(city_budget) RETURNS cstring AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; -NOTICE: argument type city_budget is only a shell +ERROR: type city_budget does not exist LINE 1: CREATE FUNCTION int44out(city_budget) ^ CREATE TYPE widget ( @@ -43,6 +45,8 @@ typmod_out = numerictypmodout, alignment = double ); +ERROR: type "widget" does not exist +HINT: Create the type as a shell type, then create its I/O functions, then do a full CREATE TYPE. CREATE TYPE city_budget ( internallength = 16, input = int44in, @@ -51,6 +55,8 @@ category = 'x', -- just to verify the system will take it preferred = true -- ditto ); +ERROR: type "city_budget" does not exist +HINT: Create the type as a shell type, then create its I/O functions, then do a full CREATE TYPE. -- Test creation and destruction of shell types CREATE TYPE shell; CREATE TYPE shell; -- fail, type already present @@ -219,26 +225,27 @@ -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) CREATE TEMP TABLE mytab (foo widget(42,13,7)); -- should fail -ERROR: invalid NUMERIC type modifier +ERROR: type "widget" does not exist LINE 1: CREATE TEMP TABLE mytab (foo widget(42,13,7)); ^ CREATE TEMP TABLE mytab (foo widget(42,13)); +ERROR: type "widget" does not exist +LINE 1: CREATE TEMP TABLE mytab (foo widget(42,13)); + ^ SELECT format_type(atttypid,atttypmod) FROM pg_attribute WHERE attrelid = 'mytab'::regclass AND attnum > 0; - format_type ---------------- - widget(42,13) -(1 row) - +ERROR: relation "mytab" does not exist +LINE 2: WHERE attrelid = 'mytab'::regclass AND attnum > 0; + ^ -- might as well exercise the widget type while we're here INSERT INTO mytab VALUES ('(1,2,3)'), ('(-44,5.5,12)'); +ERROR: relation "mytab" does not exist +LINE 1: INSERT INTO mytab VALUES ('(1,2,3)'), ('(-44,5.5,12)'); + ^ TABLE mytab; - foo --------------- - (1,2,3) - (-44,5.5,12) -(2 rows) - +ERROR: relation "mytab" does not exist +LINE 1: TABLE mytab; + ^ -- and test format_type() a bit more, too select format_type('varchar'::regtype, 42); format_type @@ -261,34 +268,25 @@ -- Test non-error-throwing APIs using widget, which still throws errors SELECT pg_input_is_valid('(1,2,3)', 'widget'); - pg_input_is_valid -------------------- - t -(1 row) - +ERROR: type "widget" does not exist SELECT pg_input_is_valid('(1,2)', 'widget'); -- hard error expected -ERROR: invalid input syntax for type widget: "(1,2)" +ERROR: type "widget" does not exist SELECT pg_input_is_valid('{"(1,2,3)"}', 'widget[]'); - pg_input_is_valid -------------------- - t -(1 row) - +ERROR: type "widget[]" does not exist SELECT pg_input_is_valid('{"(1,2)"}', 'widget[]'); -- hard error expected -ERROR: invalid input syntax for type widget: "(1,2)" +ERROR: type "widget[]" does not exist SELECT pg_input_is_valid('("(1,2,3)")', 'mytab'); - pg_input_is_valid -------------------- - t -(1 row) - +ERROR: type "mytab" does not exist SELECT pg_input_is_valid('("(1,2)")', 'mytab'); -- hard error expected -ERROR: invalid input syntax for type widget: "(1,2)" +ERROR: type "mytab" does not exist -- Test creation of an operator over a user-defined type CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool AS :'regresslib' LANGUAGE C STRICT; +ERROR: type widget does not exist +LINE 1: CREATE FUNCTION pt_in_widget(point, widget) + ^ CREATE OPERATOR <% ( leftarg = point, rightarg = widget, @@ -296,29 +294,31 @@ commutator = >% , negator = >=% ); +ERROR: type "widget" does not exist SELECT point '(1,2)' <% widget '(0,0,3)' AS t, point '(1,2)' <% widget '(0,0,1)' AS f; - t | f ----+--- - t | f -(1 row) - +ERROR: type "widget" does not exist +LINE 1: SELECT point '(1,2)' <% widget '(0,0,3)' AS t, + ^ -- exercise city_budget type CREATE TABLE city ( name name, location box, budget city_budget ); +ERROR: type "city_budget" does not exist +LINE 4: budget city_budget + ^ INSERT INTO city VALUES ('Podunk', '(1,2),(3,4)', '100,127,1000'), ('Gotham', '(1000,34),(1100,334)', '123456,127,-1000,6789'); +ERROR: relation "city" does not exist +LINE 1: INSERT INTO city VALUES + ^ TABLE city; - name | location | budget ---------+----------------------+----------------------- - Podunk | (3,4),(1,2) | 100,127,1000,0 - Gotham | (1100,334),(1000,34) | 123456,127,-1000,6789 -(2 rows) - +ERROR: relation "city" does not exist +LINE 1: TABLE city; + ^ -- -- Test CREATE/ALTER TYPE using a type that's compatible with varchar, -- so we can re-use those support functions diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/create_view.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_view.out --- /tmp/cirrus-ci-build/src/test/regress/expected/create_view.out 2025-11-08 11:16:02.237944542 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/create_view.out 2025-11-08 11:22:46.388908524 +0000 @@ -12,6 +12,7 @@ RETURNS point AS :'regresslib' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory CREATE TABLE real_city ( pop int4, cname text, @@ -33,6 +34,10 @@ interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE ih.thepath ?# r.thepath; +ERROR: function interpt_pp(path, path) does not exist +LINE 3: interpt_pp(ih.thepath, r.thepath) AS exit + ^ +DETAIL: There is no function of that name. CREATE VIEW toyemp AS SELECT name, age, location, 12*salary AS annualsal FROM emp; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/triggers.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/triggers.out --- /tmp/cirrus-ci-build/src/test/regress/expected/triggers.out 2025-11-08 11:16:02.314255804 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/triggers.out 2025-11-08 11:22:58.453164099 +0000 @@ -9,11 +9,13 @@ RETURNS trigger AS :'regresslib' LANGUAGE C; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Check behavior when trigger returns unmodified trigtuple create table trigtest (f1 int, f2 text); create trigger trigger_return_old before insert or delete or update on trigtest for each row execute procedure trigger_return_old(); +ERROR: function trigger_return_old() does not exist insert into trigtest values(1, 'foo'); select * from trigtest; f1 | f2 @@ -23,9 +25,9 @@ update trigtest set f2 = f2 || 'bar'; select * from trigtest; - f1 | f2 -----+----- - 1 | foo + f1 | f2 +----+-------- + 1 | foobar (1 row) delete from trigtest; @@ -49,9 +51,9 @@ update trigtest set f2 = f2 || 'bar'; select * from trigtest; - f1 | f2 -----+----- - 10 | foo + f1 | f2 +-----+-------- + 100 | foobar (1 row) delete from trigtest; @@ -72,9 +74,9 @@ update trigtest set f2 = f2 || 'bar'; select * from trigtest; - f1 | f2 -------+----- - 1000 | foo + f1 | f2 +-------+-------- + 10000 | foobar (1 row) delete from trigtest; @@ -93,9 +95,9 @@ update trigtest set f2 = f2 || 'bar'; select * from trigtest; - f1 | f2 ------+----- - 100 | foo + f1 | f2 +-----+-------- + 100 | foobar (1 row) delete from trigtest; @@ -113,6 +115,7 @@ create trigger trigger_return_old before insert or delete or update on trigtest for each row execute procedure trigger_return_old(); +ERROR: function trigger_return_old() does not exist insert into trigtest values(1); select * from trigtest; a | b | c @@ -130,32 +133,31 @@ update trigtest set a = 2 where a = 1 returning *; a | b | c | d ---+---+-------+---- - 1 | t | xyzzy | 42 + 2 | t | xyzzy | 42 (1 row) select * from trigtest; a | b | c | d ---+---+-------+---- - 1 | t | xyzzy | 42 + 2 | t | xyzzy | 42 (1 row) alter table trigtest drop column b; select * from trigtest; a | c | d ---+-------+---- - 1 | xyzzy | 42 + 2 | xyzzy | 42 (1 row) update trigtest set a = 2 where a = 1 returning *; - a | c | d ----+-------+---- - 1 | xyzzy | 42 -(1 row) + a | c | d +---+---+--- +(0 rows) select * from trigtest; a | c | d ---+-------+---- - 1 | xyzzy | 42 + 2 | xyzzy | 42 (1 row) drop table trigtest; diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/lock.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/lock.out --- /tmp/cirrus-ci-build/src/test/regress/expected/lock.out 2025-11-08 11:16:02.266059217 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/lock.out 2025-11-08 11:23:10.053415600 +0000 @@ -244,9 +244,9 @@ RETURNS bool AS :'regresslib' LANGUAGE C; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory SELECT test_atomic_ops(); - test_atomic_ops ------------------ - t -(1 row) - +ERROR: function test_atomic_ops() does not exist +LINE 1: SELECT test_atomic_ops(); + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/alter_generic.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/alter_generic.out --- /tmp/cirrus-ci-build/src/test/regress/expected/alter_generic.out 2025-11-08 11:16:02.221879014 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/alter_generic.out 2025-11-08 11:23:46.814240054 +0000 @@ -9,6 +9,7 @@ RETURNS void AS :'regresslib', 'test_opclass_options_func' LANGUAGE C; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Clean up in case a prior regression run failed SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_alter_generic_user1; @@ -522,7 +523,9 @@ ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 (int4, int2) btint42cmp(int4, int2); ERROR: left and right associated data types for operator class options parsing functions must match ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 (int4) test_opclass_options_func(internal); -- Ok +ERROR: function test_opclass_options_func(internal) does not exist ALTER OPERATOR FAMILY alt_opf19 USING btree DROP FUNCTION 5 (int4, int4); +ERROR: function 5(integer,integer) does not exist in operator family "alt_opf19" DROP OPERATOR FAMILY alt_opf19 USING btree; -- -- Statistics diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/misc.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/misc.out --- /tmp/cirrus-ci-build/src/test/regress/expected/misc.out 2025-11-08 11:16:02.266059217 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/misc.out 2025-11-08 11:23:52.086183933 +0000 @@ -11,10 +11,12 @@ RETURNS bool AS :'regresslib' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory CREATE FUNCTION reverse_name(name) RETURNS name AS :'regresslib' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- -- BTREE -- @@ -44,11 +46,19 @@ FROM onek WHERE onek.stringu1 = 'JBAAAA' and onek.stringu1 = tmp.stringu1; +ERROR: function reverse_name(name) does not exist +LINE 2: SET stringu1 = reverse_name(onek.stringu1) + ^ +DETAIL: There is no function of that name. UPDATE tmp SET stringu1 = reverse_name(onek2.stringu1) FROM onek2 WHERE onek2.stringu1 = 'JCAAAA' and onek2.stringu1 = tmp.stringu1; +ERROR: function reverse_name(name) does not exist +LINE 2: SET stringu1 = reverse_name(onek2.stringu1) + ^ +DETAIL: There is no function of that name. DROP TABLE tmp; --UPDATE person* -- SET age = age + 1; @@ -338,16 +348,10 @@ (1 row) SELECT name, overpaid(emp.*) FROM emp; - name | overpaid ---------+---------- - sharon | t - sam | t - bill | t - jeff | f - cim | f - linda | f -(6 rows) - +ERROR: function overpaid(emp) does not exist +LINE 1: SELECT name, overpaid(emp.*) FROM emp; + ^ +DETAIL: There is no function of that name. -- -- Try a few cases with SQL-spec row constructor expressions -- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/misc_functions.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/misc_functions.out --- /tmp/cirrus-ci-build/src/test/regress/expected/misc_functions.out 2025-11-08 11:16:02.270075600 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/misc_functions.out 2025-11-08 11:23:46.874241425 +0000 @@ -215,138 +215,117 @@ RETURNS text AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory SELECT test_canonicalize_path('/'); - test_canonicalize_path ------------------------- - / -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/./abc/def/'); - test_canonicalize_path ------------------------- - /abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/./abc/def/'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/./../abc/def'); - test_canonicalize_path ------------------------- - /abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/./../abc/def'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/./../../abc/def/'); - test_canonicalize_path ------------------------- - /abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/./../../abc/def/'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/abc/.././def/ghi'); - test_canonicalize_path ------------------------- - /def/ghi -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/abc/.././def/ghi'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/abc/./../def/ghi//'); - test_canonicalize_path ------------------------- - /def/ghi -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/abc/./../def/ghi//'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/abc/def/../..'); - test_canonicalize_path ------------------------- - / -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/abc/def/../..'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/abc/def/../../..'); - test_canonicalize_path ------------------------- - / -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/abc/def/../../..'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('/abc/def/../../../../ghi/jkl'); - test_canonicalize_path ------------------------- - /ghi/jkl -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('/abc/def/../../../../ghi/jkl'... + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('.'); - test_canonicalize_path ------------------------- - . -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('.'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('./'); - test_canonicalize_path ------------------------- - . -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('./'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('./abc/..'); - test_canonicalize_path ------------------------- - . -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('./abc/..'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('abc/../'); - test_canonicalize_path ------------------------- - . -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('abc/../'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('abc/../def'); - test_canonicalize_path ------------------------- - def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('abc/../def'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('..'); - test_canonicalize_path ------------------------- - .. -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('..'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('../abc/def'); - test_canonicalize_path ------------------------- - ../abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('../abc/def'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('../abc/..'); - test_canonicalize_path ------------------------- - .. -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('../abc/..'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('../abc/../def'); - test_canonicalize_path ------------------------- - ../def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('../abc/../def'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('../abc/../../def/ghi'); - test_canonicalize_path ------------------------- - ../../def/ghi -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('../abc/../../def/ghi'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('./abc/./def/.'); - test_canonicalize_path ------------------------- - abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('./abc/./def/.'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('./abc/././def/.'); - test_canonicalize_path ------------------------- - abc/def -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('./abc/././def/.'); + ^ +DETAIL: There is no function of that name. SELECT test_canonicalize_path('./abc/./def/.././ghi/../../../jkl/mno'); - test_canonicalize_path ------------------------- - ../jkl/mno -(1 row) - +ERROR: function test_canonicalize_path(unknown) does not exist +LINE 1: SELECT test_canonicalize_path('./abc/./def/.././ghi/../../..... + ^ +DETAIL: There is no function of that name. -- -- pg_log_backend_memory_contexts() -- @@ -632,45 +611,40 @@ RETURNS internal AS :'regresslib', 'test_support_func' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory ALTER FUNCTION my_int_eq(int, int) SUPPORT test_support_func; +ERROR: function test_support_func(internal) does not exist EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN tenk1 b ON a.unique1 = b.unique1 WHERE my_int_eq(a.unique2, 42); - QUERY PLAN -------------------------------------------------- - Nested Loop - -> Seq Scan on tenk1 a - Filter: my_int_eq(unique2, 42) - -> Index Scan using tenk1_unique1 on tenk1 b - Index Cond: (unique1 = a.unique1) -(5 rows) + QUERY PLAN +---------------------------------------------- + Hash Join + Hash Cond: (b.unique1 = a.unique1) + -> Seq Scan on tenk1 b + -> Hash + -> Seq Scan on tenk1 a + Filter: my_int_eq(unique2, 42) +(6 rows) -- Also test non-default rowcount estimate CREATE FUNCTION my_gen_series(int, int) RETURNS SETOF integer LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE AS $$generate_series_int4$$ SUPPORT test_support_func; +ERROR: function test_support_func(internal) does not exist EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN my_gen_series(1,1000) g ON a.unique1 = g; - QUERY PLAN ----------------------------------------- - Hash Join - Hash Cond: (g.g = a.unique1) - -> Function Scan on my_gen_series g - -> Hash - -> Seq Scan on tenk1 a -(5 rows) - +ERROR: function my_gen_series(integer, integer) does not exist +LINE 2: SELECT * FROM tenk1 a JOIN my_gen_series(1,1000) g ON a.uniq... + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN my_gen_series(1,10) g ON a.unique1 = g; - QUERY PLAN -------------------------------------------------- - Nested Loop - -> Function Scan on my_gen_series g - -> Index Scan using tenk1_unique1 on tenk1 a - Index Cond: (unique1 = g.g) -(4 rows) - +ERROR: function my_gen_series(integer, integer) does not exist +LINE 2: SELECT * FROM tenk1 a JOIN my_gen_series(1,10) g ON a.unique... + ^ +DETAIL: There is no function of that name. -- -- Test the SupportRequestRows support function for generate_series_timestamp() -- @@ -939,12 +913,12 @@ RETURNS void AS :'regresslib' LANGUAGE C; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory SELECT test_relpath(); - test_relpath --------------- - -(1 row) - +ERROR: function test_relpath() does not exist +LINE 1: SELECT test_relpath(); + ^ +DETAIL: There is no function of that name. -- pg_replication_origin.roname limit SELECT pg_replication_origin_create('regress_' || repeat('a', 505)); ERROR: replication origin name is too long diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/select_views.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/select_views.out --- /tmp/cirrus-ci-build/src/test/regress/expected/select_views.out 2025-11-08 11:16:02.302206657 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/select_views.out 2025-11-08 11:24:38.245075008 +0000 @@ -341,906 +341,9 @@ (333 rows) SELECT name, #thepath FROM iexit ORDER BY name COLLATE "C", 2; - name | ?column? -------------------------------------+---------- - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 4 - I- 580 | 4 - I- 580 | 4 - I- 580 | 4 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 22 - I- 580 | 22 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 6 - I- 580 Ramp | 6 - I- 580 Ramp | 6 - I- 580 Ramp | 7 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 5 - I- 580/I-680 Ramp | 6 - I- 580/I-680 Ramp | 6 - I- 580/I-680 Ramp | 6 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 3 - I- 680 | 3 - I- 680 | 3 - I- 680 | 4 - I- 680 | 4 - I- 680 | 4 - I- 680 | 5 - I- 680 | 5 - I- 680 | 5 - I- 680 | 7 - I- 680 | 7 - I- 680 | 7 - I- 680 | 7 - I- 680 | 8 - I- 680 | 8 - I- 680 | 8 - I- 680 | 8 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 4 - I- 680 Ramp | 4 - I- 680 Ramp | 4 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 3 - I- 80 | 3 - I- 80 | 3 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 11 - I- 80 | 11 - I- 80 | 11 - I- 80 | 11 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 8 - I- 880 Ramp | 8 - I- 880 Ramp | 8 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 4 - I- 980 | 4 - I- 980 | 5 - I- 980 | 5 - I- 980 | 7 - I- 980 | 7 - I- 980 | 7 - I- 980 | 7 - I- 980 | 12 - I- 980 Ramp | 3 - I- 980 Ramp | 3 - I- 980 Ramp | 3 - I- 980 Ramp | 7 -(896 rows) - +ERROR: relation "iexit" does not exist +LINE 1: SELECT name, #thepath FROM iexit ORDER BY name COLLATE "C", ... + ^ SELECT * FROM toyemp WHERE name = 'sharon'; name | age | location | annualsal --------+-----+----------+----------- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/foreign_data.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/foreign_data.out --- /tmp/cirrus-ci-build/src/test/regress/expected/foreign_data.out 2025-11-08 11:16:02.245977306 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/foreign_data.out 2025-11-08 11:24:42.025012968 +0000 @@ -9,6 +9,7 @@ RETURNS fdw_handler AS :'regresslib', 'test_fdw_handler' LANGUAGE C; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Clean up in case a prior regression run failed -- Suppress NOTICE messages when roles don't exist SET client_min_messages TO 'warning'; @@ -102,11 +103,11 @@ CREATE FOREIGN DATA WRAPPER test_fdw HANDLER invalid_fdw_handler; -- ERROR 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... - ^ +ERROR: function test_fdw_handler() does not exist CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler; +ERROR: function test_fdw_handler() does not exist DROP FOREIGN DATA WRAPPER test_fdw; +ERROR: foreign-data wrapper "test_fdw" does not exist -- ALTER FOREIGN DATA WRAPPER ALTER FOREIGN DATA WRAPPER foo OPTIONS (nonexistent 'fdw'); -- ERROR ERROR: invalid option "nonexistent" @@ -213,11 +214,9 @@ ALTER FOREIGN DATA WRAPPER foo HANDLER invalid_fdw_handler; -- ERROR 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... - ^ +ERROR: function test_fdw_handler() does not exist ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler; -WARNING: changing the foreign-data wrapper handler can change behavior of existing foreign tables +ERROR: function test_fdw_handler() does not exist DROP FUNCTION invalid_fdw_handler(); -- DROP FOREIGN DATA WRAPPER DROP FOREIGN DATA WRAPPER nonexistent; -- ERROR @@ -225,12 +224,12 @@ DROP FOREIGN DATA WRAPPER IF EXISTS nonexistent; NOTICE: foreign-data wrapper "nonexistent" does not exist, skipping \dew+ - List of foreign-data wrappers - Name | Owner | Handler | Validator | Access privileges | FDW options | Description -------------+---------------------------+------------------+--------------------------+-------------------+------------------------------+------------- - dummy | regress_foreign_data_user | - | - | | | useless - foo | regress_test_role_super | test_fdw_handler | - | | (b '3', c '4', a '2', d '5') | - postgresql | regress_foreign_data_user | - | postgresql_fdw_validator | | | + List of foreign-data wrappers + Name | Owner | Handler | Validator | Access privileges | FDW options | Description +------------+---------------------------+---------+--------------------------+-------------------+------------------------------+------------- + dummy | regress_foreign_data_user | - | - | | | useless + foo | regress_test_role_super | - | - | | (b '3', c '4', a '2', d '5') | + postgresql | regress_foreign_data_user | - | postgresql_fdw_validator | | | (3 rows) DROP ROLE regress_test_role_super; -- ERROR diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/indirect_toast.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/indirect_toast.out --- /tmp/cirrus-ci-build/src/test/regress/expected/indirect_toast.out 2025-11-08 11:16:02.254010070 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/indirect_toast.out 2025-11-08 11:24:39.041061609 +0000 @@ -9,6 +9,7 @@ RETURNS record AS :'regresslib' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory -- Other compression algorithms may cause the compressed data to be stored -- inline. pglz guarantees that the data is externalized, so stick to it. SET default_toast_compression = 'pglz'; @@ -19,14 +20,10 @@ INSERT INTO indtoasttest(descr, f1, f2) VALUES('one-toasted,one-null', NULL, repeat('1234567890',50000)); -- check whether indirect tuples works on the most basic level SELECT descr, substring(make_tuple_indirect(indtoasttest)::text, 1, 200) FROM indtoasttest; - descr | substring --------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - two-compressed | (two-compressed,0,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 - two-toasted | (two-toasted,0,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 - one-compressed,one-null | ("one-compressed,one-null",0,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - one-toasted,one-null | ("one-toasted,one-null",0,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 -(4 rows) - +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: SELECT descr, substring(make_tuple_indirect(indtoasttest)::t... + ^ +DETAIL: There is no function of that name. -- modification without changing varlenas UPDATE indtoasttest SET cnt = cnt +1 RETURNING substring(indtoasttest::text, 1, 200); substring @@ -101,65 +98,61 @@ EXECUTE PROCEDURE update_using_indirect(); -- modification without changing varlenas UPDATE indtoasttest SET cnt = cnt +1 RETURNING substring(indtoasttest::text, 1, 200); - substring ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,5,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 - (two-toasted,5,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 - ("one-compressed,one-null",5,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",5,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 -(4 rows) - +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: NEW := make_tuple_indirect(NEW) + ^ +DETAIL: There is no function of that name. +QUERY: NEW := make_tuple_indirect(NEW) +CONTEXT: PL/pgSQL function update_using_indirect() line 3 at assignment -- modification without modifying assigned value UPDATE indtoasttest SET cnt = cnt +1, f1 = f1 RETURNING substring(indtoasttest::text, 1, 200); - substring ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,6,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 - (two-toasted,6,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 - ("one-compressed,one-null",6,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",6,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 -(4 rows) - +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: NEW := make_tuple_indirect(NEW) + ^ +DETAIL: There is no function of that name. +QUERY: NEW := make_tuple_indirect(NEW) +CONTEXT: PL/pgSQL function update_using_indirect() line 3 at assignment -- modification modifying, but effectively not changing UPDATE indtoasttest SET cnt = cnt +1, f1 = f1||'' RETURNING substring(indtoasttest::text, 1, 200); - substring ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,7,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 - (two-toasted,7,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 - ("one-compressed,one-null",7,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",7,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 -(4 rows) - +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: NEW := make_tuple_indirect(NEW) + ^ +DETAIL: There is no function of that name. +QUERY: NEW := make_tuple_indirect(NEW) +CONTEXT: PL/pgSQL function update_using_indirect() line 3 at assignment UPDATE indtoasttest SET cnt = cnt +1, f1 = '-'||f1||'-' RETURNING substring(indtoasttest::text, 1, 200); - substring ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - (two-toasted,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 - ("one-compressed,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 -(4 rows) - +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: NEW := make_tuple_indirect(NEW) + ^ +DETAIL: There is no function of that name. +QUERY: NEW := make_tuple_indirect(NEW) +CONTEXT: PL/pgSQL function update_using_indirect() line 3 at assignment INSERT INTO indtoasttest(descr, f1, f2) VALUES('one-toasted,one-null, via indirect', repeat('1234567890',30000), NULL); +ERROR: function make_tuple_indirect(indtoasttest) does not exist +LINE 1: NEW := make_tuple_indirect(NEW) + ^ +DETAIL: There is no function of that name. +QUERY: NEW := make_tuple_indirect(NEW) +CONTEXT: PL/pgSQL function update_using_indirect() line 3 at assignment SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; substring ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - (two-toasted,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 - ("one-compressed,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 - ("one-toasted,one-null, via indirect",0,1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 -(5 rows) + (two-compressed,4,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 + (two-toasted,4,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 + ("one-compressed,one-null",4,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 + ("one-toasted,one-null",4,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 +(4 rows) -- check we didn't screw with main/toast tuple visibility VACUUM FREEZE indtoasttest; SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; substring ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - (two-compressed,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - (two-toasted,8,--123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 - ("one-compressed,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - ("one-toasted,one-null",8,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 - ("one-toasted,one-null, via indirect",0,1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 -(5 rows) + (two-compressed,4,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 + (two-toasted,4,-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234 + ("one-compressed,one-null",4,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 + ("one-toasted,one-null",4,,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 +(4 rows) DROP TABLE indtoasttest; DROP FUNCTION update_using_indirect(); diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/copy2.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/copy2.out --- /tmp/cirrus-ci-build/src/test/regress/expected/copy2.out 2025-11-08 11:16:02.229911777 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/copy2.out 2025-11-08 11:24:53.676845074 +0000 @@ -803,25 +803,58 @@ -- test datatype error that can't be handled as soft: should fail CREATE TABLE hard_err(foo widget); +ERROR: type "widget" does not exist +LINE 1: CREATE TABLE hard_err(foo widget); + ^ COPY hard_err FROM STDIN WITH (on_error ignore); -ERROR: invalid input syntax for type widget: "1" -CONTEXT: COPY hard_err, line 1, column foo: "1" +ERROR: relation "hard_err" does not exist +1 +\. +invalid command \. -- test missing data: should fail COPY check_ign_err FROM STDIN WITH (on_error ignore); -ERROR: missing data for column "k" -CONTEXT: COPY check_ign_err, line 1: "1 {1}" +ERROR: syntax error at or near "1" +LINE 1: 1 + ^ +1 {1} +\. +invalid command \. -- test extra data: should fail COPY check_ign_err FROM STDIN WITH (on_error ignore); -ERROR: extra data after last expected column -CONTEXT: COPY check_ign_err, line 1: "1 {1} 3 abc" +ERROR: syntax error at or near "1" +LINE 1: 1 {1} + ^ +1 {1} 3 abc +\. +invalid command \. -- tests for reject_limit option COPY check_ign_err FROM STDIN WITH (on_error ignore, reject_limit 3); -ERROR: skipped more than REJECT_LIMIT (3) rows due to data type incompatibility -CONTEXT: COPY check_ign_err, line 5, column n: "" +ERROR: syntax error at or near "1" +LINE 1: 1 {1} 3 abc + ^ +6 {6} 6 +a {7} 7 +8 {8} 8888888888 +9 {a, 9} 9 +10 {10} 10 +\. +invalid command \. COPY check_ign_err FROM STDIN WITH (on_error ignore, reject_limit 4); -NOTICE: 4 rows were skipped due to data type incompatibility +ERROR: syntax error at or near "6" +LINE 1: 6 {6} 6 + ^ +6 {6} 6 +a {7} 7 +8 {8} 8888888888 +9 {a, 9} 9 +10 {10} 10 +\. +invalid command \. -- clean up DROP TABLE forcetest; +ERROR: syntax error at or near "6" +LINE 1: 6 {6} 6 + ^ DROP TABLE vistest; DROP FUNCTION truncate_in_subxact(); DROP TABLE x, y; @@ -838,6 +871,7 @@ DROP TABLE check_ign_err2; DROP DOMAIN dcheck_ign_err2; DROP TABLE hard_err; +ERROR: table "hard_err" does not exist -- -- COPY FROM ... DEFAULT -- diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/conversion.out /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/conversion.out --- /tmp/cirrus-ci-build/src/test/regress/expected/conversion.out 2025-11-08 11:16:02.229911777 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_plan_advice/tmp_check/results/conversion.out 2025-11-08 11:24:52.224864147 +0000 @@ -8,13 +8,16 @@ CREATE FUNCTION test_enc_setup() RETURNS void AS :'regresslib', 'test_enc_setup' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory SELECT FROM test_enc_setup(); --- -(1 row) - +ERROR: function test_enc_setup() does not exist +LINE 1: SELECT FROM test_enc_setup(); + ^ +DETAIL: There is no function of that name. CREATE FUNCTION test_enc_conversion(bytea, name, name, bool, validlen OUT int, result OUT bytea) AS :'regresslib', 'test_enc_conversion' LANGUAGE C STRICT; +ERROR: could not access file "/usr/local/pgsql/lib/regress.so": No such file or directory CREATE USER regress_conversion_user WITH NOCREATEDB NOCREATEROLE; SET SESSION AUTHORIZATION regress_conversion_user; CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; @@ -114,33 +117,12 @@ ('\xfa9a9a8a8a', '5-byte'); -- Test UTF-8 verification slow path select description, (test_conv(inbytes, 'utf8', 'utf8')).* from utf8_verification_inputs; - description | result | errorat | error -------------------------------------+------------+--------------+---------------------------------------------------------------- - NUL byte | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - bare continuation | \x | \xaf | invalid byte sequence for encoding "UTF8": 0xaf - missing second byte in 2-byte char | \x | \xc5 | invalid byte sequence for encoding "UTF8": 0xc5 - smallest 2-byte overlong | \x | \xc080 | invalid byte sequence for encoding "UTF8": 0xc0 0x80 - largest 2-byte overlong | \x | \xc1bf | invalid byte sequence for encoding "UTF8": 0xc1 0xbf - next 2-byte after overlongs | \xc280 | | - largest 2-byte | \xdfbf | | - missing third byte in 3-byte char | \x | \xe9af | invalid byte sequence for encoding "UTF8": 0xe9 0xaf - smallest 3-byte overlong | \x | \xe08080 | invalid byte sequence for encoding "UTF8": 0xe0 0x80 0x80 - largest 3-byte overlong | \x | \xe09fbf | invalid byte sequence for encoding "UTF8": 0xe0 0x9f 0xbf - next 3-byte after overlong | \xe0a080 | | - last before surrogates | \xed9fbf | | - smallest surrogate | \x | \xeda080 | invalid byte sequence for encoding "UTF8": 0xed 0xa0 0x80 - largest surrogate | \x | \xedbfbf | invalid byte sequence for encoding "UTF8": 0xed 0xbf 0xbf - next after surrogates | \xee8080 | | - largest 3-byte | \xefbfbf | | - missing fourth byte in 4-byte char | \x | \xf1afbf | invalid byte sequence for encoding "UTF8": 0xf1 0xaf 0xbf - smallest 4-byte overlong | \x | \xf0808080 | invalid byte sequence for encoding "UTF8": 0xf0 0x80 0x80 0x80 - largest 4-byte overlong | \x | \xf08fbfbf | invalid byte sequence for encoding "UTF8": 0xf0 0x8f 0xbf 0xbf - next 4-byte after overlong | \xf0908080 | | - largest 4-byte | \xf48fbfbf | | - smallest too large | \x | \xf4908080 | invalid byte sequence for encoding "UTF8": 0xf4 0x90 0x80 0x80 - 5-byte | \x | \xfa9a9a8a8a | invalid byte sequence for encoding "UTF8": 0xfa -(23 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test UTF-8 verification with ASCII padding appended to provide -- coverage for algorithms that work on multiple bytes at a time. -- The error message for a sequence starting with a 4-byte lead @@ -170,10 +152,12 @@ using (description) where p.error is distinct from b.error order by description; - description | orig_error | error_after_padding --------------+------------+--------------------- -(0 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test ASCII verification in fast path where incomplete -- UTF-8 sequences fall at the end of the preceding chunk. with test_bytes as ( @@ -197,10 +181,12 @@ using (description) where p.error is distinct from b.error order by description; - description | orig_error | error_after_padding --------------+------------+--------------------- -(0 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test cases where UTF-8 sequences within short text -- come after the fast path returns. with test_bytes as ( @@ -224,10 +210,12 @@ using (description) where p.error is distinct from b.error order by description; - description | orig_error | error_after_padding --------------+------------+--------------------- -(0 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test cases where incomplete UTF-8 sequences fall at the -- end of the part checked by the fast path. with test_bytes as ( @@ -251,10 +239,12 @@ using (description) where p.error is distinct from b.error order by description; - description | orig_error | error_after_padding --------------+------------+--------------------- -(0 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement CREATE TABLE utf8_inputs (inbytes bytea, description text); insert into utf8_inputs values ('\x666f6f', 'valid, pure ASCII'), @@ -272,132 +262,55 @@ ('\x666f6fe8b1', 'incomplete character at end'); -- Test UTF-8 verification select description, (test_conv(inbytes, 'utf8', 'utf8')).* from utf8_inputs; - description | result | errorat | error -------------------------------------------------------+----------------------+--------------+----------------------------------------------------------- - valid, pure ASCII | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | | - valid, cyrillic | \xd184d0bed0be | | - valid, kanji/Chinese | \x666f6fe8b1a1 | | - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | | - only first half of combined char in EUC_JIS_2004 | \xe382ab | | - incomplete combination when converted EUC_JIS_2004 | \xe382ab | \xe382 | invalid byte sequence for encoding "UTF8": 0xe3 0x82 - valid, Hangul, Korean | \xecbd94eb81bceba6ac | | - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | | - invalid byte sequence | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from UTF-8 select description, inbytes, (test_conv(inbytes, 'utf8', 'euc_jis_2004')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------------+----------------------+------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \xa9daa9ec | | - valid, cyrillic | \xd184d0bed0be | \xa7e6a7e0a7e0 | | - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6fbedd | | - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \xa5f7 | | - only first half of combined char in EUC_JIS_2004 | \xe382ab | \xa5ab | | - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \x | \xe382abe382 | invalid byte sequence for encoding "UTF8": 0xe3 0x82 - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x | \xecbd94eb81bceba6ac | character with byte sequence 0xec 0xbd 0x94 in encoding "UTF8" has no equivalent in encoding "EUC_JIS_2004" - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f | \xefa8aa | character with byte sequence 0xef 0xa8 0xaa in encoding "UTF8" has no equivalent in encoding "EUC_JIS_2004" - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'utf8', 'latin1')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------+----------------------+------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \xe4f6 | | - valid, cyrillic | \xd184d0bed0be | \x | \xd184d0bed0be | character with byte sequence 0xd1 0x84 in encoding "UTF8" has no equivalent in encoding "LATIN1" - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6f | \xe8b1a1 | character with byte sequence 0xe8 0xb1 0xa1 in encoding "UTF8" has no equivalent in encoding "LATIN1" - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \x | \xe382abe3829a | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN1" - only first half of combined char in EUC_JIS_2004 | \xe382ab | \x | \xe382ab | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN1" - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \x | \xe382abe382 | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN1" - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x | \xecbd94eb81bceba6ac | character with byte sequence 0xec 0xbd 0x94 in encoding "UTF8" has no equivalent in encoding "LATIN1" - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f | \xefa8aa | character with byte sequence 0xef 0xa8 0xaa in encoding "UTF8" has no equivalent in encoding "LATIN1" - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'utf8', 'latin2')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------+----------------------+------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \xe4f6 | | - valid, cyrillic | \xd184d0bed0be | \x | \xd184d0bed0be | character with byte sequence 0xd1 0x84 in encoding "UTF8" has no equivalent in encoding "LATIN2" - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6f | \xe8b1a1 | character with byte sequence 0xe8 0xb1 0xa1 in encoding "UTF8" has no equivalent in encoding "LATIN2" - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \x | \xe382abe3829a | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN2" - only first half of combined char in EUC_JIS_2004 | \xe382ab | \x | \xe382ab | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN2" - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \x | \xe382abe382 | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN2" - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x | \xecbd94eb81bceba6ac | character with byte sequence 0xec 0xbd 0x94 in encoding "UTF8" has no equivalent in encoding "LATIN2" - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f | \xefa8aa | character with byte sequence 0xef 0xa8 0xaa in encoding "UTF8" has no equivalent in encoding "LATIN2" - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'utf8', 'latin5')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------+----------------------+------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \xe4f6 | | - valid, cyrillic | \xd184d0bed0be | \x | \xd184d0bed0be | character with byte sequence 0xd1 0x84 in encoding "UTF8" has no equivalent in encoding "LATIN5" - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6f | \xe8b1a1 | character with byte sequence 0xe8 0xb1 0xa1 in encoding "UTF8" has no equivalent in encoding "LATIN5" - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \x | \xe382abe3829a | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN5" - only first half of combined char in EUC_JIS_2004 | \xe382ab | \x | \xe382ab | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN5" - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \x | \xe382abe382 | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "LATIN5" - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x | \xecbd94eb81bceba6ac | character with byte sequence 0xec 0xbd 0x94 in encoding "UTF8" has no equivalent in encoding "LATIN5" - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f | \xefa8aa | character with byte sequence 0xef 0xa8 0xaa in encoding "UTF8" has no equivalent in encoding "LATIN5" - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'utf8', 'koi8r')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------+----------------------+------------------------------------------------------------------------------------------------------ - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \x | \xc3a4c3b6 | character with byte sequence 0xc3 0xa4 in encoding "UTF8" has no equivalent in encoding "KOI8R" - valid, cyrillic | \xd184d0bed0be | \xc6cfcf | | - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6f | \xe8b1a1 | character with byte sequence 0xe8 0xb1 0xa1 in encoding "UTF8" has no equivalent in encoding "KOI8R" - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \x | \xe382abe3829a | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "KOI8R" - only first half of combined char in EUC_JIS_2004 | \xe382ab | \x | \xe382ab | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "KOI8R" - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \x | \xe382abe382 | character with byte sequence 0xe3 0x82 0xab in encoding "UTF8" has no equivalent in encoding "KOI8R" - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x | \xecbd94eb81bceba6ac | character with byte sequence 0xec 0xbd 0x94 in encoding "UTF8" has no equivalent in encoding "KOI8R" - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f | \xefa8aa | character with byte sequence 0xef 0xa8 0xaa in encoding "UTF8" has no equivalent in encoding "KOI8R" - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'utf8', 'gb18030')).* from utf8_inputs; - description | inbytes | result | errorat | error -------------------------------------------------------+----------------------+----------------------------+--------------+----------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid, extra latin chars | \xc3a4c3b6 | \x81308a3181308b32 | | - valid, cyrillic | \xd184d0bed0be | \xa7e6a7e0a7e0 | | - valid, kanji/Chinese | \x666f6fe8b1a1 | \x666f6fcff3 | | - valid, two chars that combine to one in EUC_JIS_2004 | \xe382abe3829a | \xa5ab8139a732 | | - only first half of combined char in EUC_JIS_2004 | \xe382ab | \xa5ab | | - incomplete combination when converted EUC_JIS_2004 | \xe382abe382 | \xa5ab | \xe382 | invalid byte sequence for encoding "UTF8": 0xe3 0x82 - valid, Hangul, Korean | \xecbd94eb81bceba6ac | \x8334e5398238c4338330b335 | | - valid, needs mapping function to convert to GB18030 | \x666f6fefa8aa | \x666f6f84309c38 | | - invalid byte sequence | \x66e8b1ff6f6f | \x66 | \xe8b1ff6f6f | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0xff - invalid, NUL byte | \x66006f | \x66 | \x006f | invalid byte sequence for encoding "UTF8": 0x00 - invalid, NUL byte | \x666f6fe8b100 | \x666f6f | \xe8b100 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 0x00 - incomplete character at end | \x666f6fe8b1 | \x666f6f | \xe8b1 | invalid byte sequence for encoding "UTF8": 0xe8 0xb1 -(13 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- EUC_JIS_2004 -- @@ -413,32 +326,20 @@ ('\xbe04', 'invalid byte sequence'); -- Test EUC_JIS_2004 verification select description, inbytes, (test_conv(inbytes, 'euc_jis_2004', 'euc_jis_2004')).* from euc_jis_2004_inputs; - description | inbytes | result | errorat | error ----------------------------------------+----------------+--------------+----------+-------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fbedd | \x666f6fbedd | | - valid, translates to two UTF-8 chars | \xa5f7 | \xa5f7 | | - incomplete char | \xbeddbe | \xbedd | \xbe | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe - invalid, NUL byte | \x666f6f00bedd | \x666f6f | \x00bedd | invalid byte sequence for encoding "EUC_JIS_2004": 0x00 - invalid, NUL byte | \x666f6fbe00dd | \x666f6f | \xbe00dd | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe 0x00 - invalid, NUL byte | \x666f6fbedd00 | \x666f6fbedd | \x00 | invalid byte sequence for encoding "EUC_JIS_2004": 0x00 - invalid byte sequence | \xbe04 | \x | \xbe04 | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe 0x04 -(8 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from EUC_JIS_2004 select description, inbytes, (test_conv(inbytes, 'euc_jis_2004', 'utf8')).* from euc_jis_2004_inputs; - description | inbytes | result | errorat | error ----------------------------------------+----------------+----------------+----------+-------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fbedd | \x666f6fe8b1a1 | | - valid, translates to two UTF-8 chars | \xa5f7 | \xe382abe3829a | | - incomplete char | \xbeddbe | \xe8b1a1 | \xbe | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe - invalid, NUL byte | \x666f6f00bedd | \x666f6f | \x00bedd | invalid byte sequence for encoding "EUC_JIS_2004": 0x00 - invalid, NUL byte | \x666f6fbe00dd | \x666f6f | \xbe00dd | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe 0x00 - invalid, NUL byte | \x666f6fbedd00 | \x666f6fe8b1a1 | \x00 | invalid byte sequence for encoding "EUC_JIS_2004": 0x00 - invalid byte sequence | \xbe04 | \x | \xbe04 | invalid byte sequence for encoding "EUC_JIS_2004": 0xbe 0x04 -(8 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- SHIFT-JIS-2004 -- @@ -455,48 +356,27 @@ ('\x666f6f8fdb00', 'invalid, NUL byte'); -- Test SHIFT-JIS-2004 verification select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'shiftjis2004')).* from shiftjis2004_inputs; - description | inbytes | result | errorat | error ----------------------------------------+----------------+--------------+----------+---------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6f8fdb | \x666f6f8fdb | | - valid, no translation to UTF-8 | \x666f6f81c0 | \x666f6f81c0 | | - valid, translates to two UTF-8 chars | \x666f6f82f5 | \x666f6f82f5 | | - incomplete char | \x666f6f8fdb8f | \x666f6f8fdb | \x8f | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f - incomplete char, followed by newline | \x666f6f820a | \x666f6f | \x820a | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x82 0x0a - invalid, NUL byte | \x666f6f008fdb | \x666f6f | \x008fdb | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 - invalid, NUL byte | \x666f6f8f00db | \x666f6f | \x8f00db | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f 0x00 - invalid, NUL byte | \x666f6f8fdb00 | \x666f6f8fdb | \x00 | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 -(9 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from SHIFT-JIS-2004 select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'utf8')).* from shiftjis2004_inputs; - description | inbytes | result | errorat | error ----------------------------------------+----------------+----------------------+----------+---------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6f8fdb | \x666f6fe8b1a1 | | - valid, no translation to UTF-8 | \x666f6f81c0 | \x666f6fe28a84 | | - valid, translates to two UTF-8 chars | \x666f6f82f5 | \x666f6fe3818be3829a | | - incomplete char | \x666f6f8fdb8f | \x666f6fe8b1a1 | \x8f | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f - incomplete char, followed by newline | \x666f6f820a | \x666f6f | \x820a | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x82 0x0a - invalid, NUL byte | \x666f6f008fdb | \x666f6f | \x008fdb | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 - invalid, NUL byte | \x666f6f8f00db | \x666f6f | \x8f00db | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f 0x00 - invalid, NUL byte | \x666f6f8fdb00 | \x666f6fe8b1a1 | \x00 | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 -(9 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'euc_jis_2004')).* from shiftjis2004_inputs; - description | inbytes | result | errorat | error ----------------------------------------+----------------+--------------+----------+---------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6f8fdb | \x666f6fbedd | | - valid, no translation to UTF-8 | \x666f6f81c0 | \x666f6fa2c2 | | - valid, translates to two UTF-8 chars | \x666f6f82f5 | \x666f6fa4f7 | | - incomplete char | \x666f6f8fdb8f | \x666f6fbedd | \x8f | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f - incomplete char, followed by newline | \x666f6f820a | \x666f6f | \x820a | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x82 0x0a - invalid, NUL byte | \x666f6f008fdb | \x666f6f | \x008fdb | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 - invalid, NUL byte | \x666f6f8f00db | \x666f6f | \x8f00db | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x8f 0x00 - invalid, NUL byte | \x666f6f8fdb00 | \x666f6fbedd | \x00 | invalid byte sequence for encoding "SHIFT_JIS_2004": 0x00 -(9 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- GB18030 -- @@ -516,36 +396,20 @@ -- bytea values is palloc, not shared_buffers. This lets Valgrind detect -- reads past the end. select description, inbytes, (test_conv(inbytes::text::bytea, 'gb18030', 'gb18030')).* from gb18030_inputs; - description | inbytes | result | errorat | error -------------------------------------------------+--------------------+------------------+--------------+------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fcff3 | \x666f6fcff3 | | - valid, no translation to UTF-8 | \x666f6f8431a530 | \x666f6f8431a530 | | - valid, translates to UTF-8 by mapping function | \x666f6f84309c38 | \x666f6f84309c38 | | - valid, changed from version 2000 to 2022 | \xa6d9 | \xa6d9 | | - incomplete char | \x666f6f84309c | \x666f6f | \x84309c | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c - incomplete char, followed by newline | \x666f6f84309c0a | \x666f6f | \x84309c0a | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c 0x0a - incomplete char at end | \x666f6f84 | \x666f6f | \x84 | invalid byte sequence for encoding "GB18030": 0x84 - invalid, NUL byte | \x666f6f84309c3800 | \x666f6f84309c38 | \x00 | invalid byte sequence for encoding "GB18030": 0x00 - invalid, NUL byte | \x666f6f84309c0038 | \x666f6f | \x84309c0038 | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from GB18030 select description, inbytes, (test_conv(inbytes, 'gb18030', 'utf8')).* from gb18030_inputs; - description | inbytes | result | errorat | error -------------------------------------------------+--------------------+----------------+--------------+------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fcff3 | \x666f6fe8b1a1 | | - valid, no translation to UTF-8 | \x666f6f8431a530 | \x666f6f | \x8431a530 | character with byte sequence 0x84 0x31 0xa5 0x30 in encoding "GB18030" has no equivalent in encoding "UTF8" - valid, translates to UTF-8 by mapping function | \x666f6f84309c38 | \x666f6fefa8aa | | - valid, changed from version 2000 to 2022 | \xa6d9 | \xefb890 | | - incomplete char | \x666f6f84309c | \x666f6f | \x84309c | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c - incomplete char, followed by newline | \x666f6f84309c0a | \x666f6f | \x84309c0a | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c 0x0a - incomplete char at end | \x666f6f84 | \x666f6f | \x84 | invalid byte sequence for encoding "GB18030": 0x84 - invalid, NUL byte | \x666f6f84309c3800 | \x666f6fefa8aa | \x00 | invalid byte sequence for encoding "GB18030": 0x00 - invalid, NUL byte | \x666f6f84309c0038 | \x666f6f | \x84309c0038 | invalid byte sequence for encoding "GB18030": 0x84 0x30 0x9c 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- ISO-8859-5 -- @@ -558,46 +422,34 @@ ('\xe4dede00', 'invalid, NUL byte'); -- Test ISO-8859-5 verification select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'iso8859-5')).* from iso8859_5_inputs; - description | inbytes | result | errorat | error --------------------+------------+----------+----------+------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \xe4dede | \xe4dede | | - invalid, NUL byte | \x00 | \x | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe400dede | \xe4 | \x00dede | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe4dede00 | \xe4dede | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from ISO-8859-5 select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'utf8')).* from iso8859_5_inputs; - description | inbytes | result | errorat | error --------------------+------------+----------------+----------+------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \xe4dede | \xd184d0bed0be | | - invalid, NUL byte | \x00 | \x | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe400dede | \xd184 | \x00dede | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe4dede00 | \xd184d0bed0be | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'koi8r')).* from iso8859_5_inputs; - description | inbytes | result | errorat | error --------------------+------------+----------+----------+------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \xe4dede | \xc6cfcf | | - invalid, NUL byte | \x00 | \x | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe400dede | \xc6 | \x00dede | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe4dede00 | \xc6cfcf | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'iso8859_5', 'mule_internal')).* from iso8859_5_inputs; - description | inbytes | result | errorat | error --------------------+------------+----------------+----------+------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \xe4dede | \x8bc68bcf8bcf | | - invalid, NUL byte | \x00 | \x | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe400dede | \x8bc6 | \x00dede | invalid byte sequence for encoding "ISO_8859_5": 0x00 - invalid, NUL byte | \xe4dede00 | \x8bc68bcf8bcf | \x00 | invalid byte sequence for encoding "ISO_8859_5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- Big5 -- @@ -610,36 +462,27 @@ ('\x666f6fb64800', 'invalid, NUL byte'); -- Test Big5 verification select description, inbytes, (test_conv(inbytes, 'big5', 'big5')).* from big5_inputs; - description | inbytes | result | errorat | error ---------------------------------+----------------+--------------+----------+------------------------------------------------------ - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fb648 | \x666f6fb648 | | - valid, no translation to UTF-8 | \x666f6fa27f | \x666f6fa27f | | - invalid, NUL byte | \x666f6fb60048 | \x666f6f | \xb60048 | invalid byte sequence for encoding "BIG5": 0xb6 0x00 - invalid, NUL byte | \x666f6fb64800 | \x666f6fb648 | \x00 | invalid byte sequence for encoding "BIG5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from Big5 select description, inbytes, (test_conv(inbytes, 'big5', 'utf8')).* from big5_inputs; - description | inbytes | result | errorat | error ---------------------------------+----------------+----------------+----------+------------------------------------------------------------------------------------------------ - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fb648 | \x666f6fe8b1a1 | | - valid, no translation to UTF-8 | \x666f6fa27f | \x666f6f | \xa27f | character with byte sequence 0xa2 0x7f in encoding "BIG5" has no equivalent in encoding "UTF8" - invalid, NUL byte | \x666f6fb60048 | \x666f6f | \xb60048 | invalid byte sequence for encoding "BIG5": 0xb6 0x00 - invalid, NUL byte | \x666f6fb64800 | \x666f6fe8b1a1 | \x00 | invalid byte sequence for encoding "BIG5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'big5', 'mule_internal')).* from big5_inputs; - description | inbytes | result | errorat | error ---------------------------------+----------------+----------------+----------+------------------------------------------------------ - valid, pure ASCII | \x666f6f | \x666f6f | | - valid | \x666f6fb648 | \x666f6f95e2af | | - valid, no translation to UTF-8 | \x666f6fa27f | \x666f6f95a3c1 | | - invalid, NUL byte | \x666f6fb60048 | \x666f6f | \xb60048 | invalid byte sequence for encoding "BIG5": 0xb6 0x00 - invalid, NUL byte | \x666f6fb64800 | \x666f6f95e2af | \x00 | invalid byte sequence for encoding "BIG5": 0x00 -(5 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- -- MULE_INTERNAL -- @@ -657,93 +500,45 @@ ('\x8b00c68bcf8bcf', 'invalid, NUL byte'); -- Test MULE_INTERNAL verification select description, inbytes, (test_conv(inbytes, 'mule_internal', 'mule_internal')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+----------------+------------------+-------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \x8bc68bcf8bcf | | - invalid,incomplete char | \x8bc68bcf8b | \x8bc68bcf | \x8b | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b - valid (in SHIFT_JIS) | \x92bedd | \x92bedd | | - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6f95a3c1 | | - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0x00 0xbe - invalid, NUL byte | \x92bedd00 | \x92bedd | \x00 | invalid byte sequence for encoding "MULE_INTERNAL": 0x00 - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement -- Test conversions from MULE_INTERNAL select description, inbytes, (test_conv(inbytes, 'mule_internal', 'koi8r')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+----------+------------------+--------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \xc6cfcf | | - invalid,incomplete char | \x8bc68bcf8b | \xc6cf | \x8b | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b - valid (in SHIFT_JIS) | \x92bedd | \x | \x92bedd | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "KOI8R" - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6f | \x95a3c1 | character with byte sequence 0x95 0xa3 0xc1 in encoding "MULE_INTERNAL" has no equivalent in encoding "KOI8R" - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | character with byte sequence 0x92 0x00 0xbe in encoding "MULE_INTERNAL" has no equivalent in encoding "KOI8R" - invalid, NUL byte | \x92bedd00 | \x | \x92bedd00 | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "KOI8R" - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | character with byte sequence 0x8b 0x00 in encoding "MULE_INTERNAL" has no equivalent in encoding "KOI8R" -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'mule_internal', 'iso8859-5')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+----------+------------------+-------------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \xe4dede | | - invalid,incomplete char | \x8bc68bcf8b | \xe4de | \x8b | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b - valid (in SHIFT_JIS) | \x92bedd | \x | \x92bedd | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "ISO_8859_5" - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6f | \x95a3c1 | character with byte sequence 0x95 0xa3 0xc1 in encoding "MULE_INTERNAL" has no equivalent in encoding "ISO_8859_5" - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | character with byte sequence 0x92 0x00 0xbe in encoding "MULE_INTERNAL" has no equivalent in encoding "ISO_8859_5" - invalid, NUL byte | \x92bedd00 | \x | \x92bedd00 | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "ISO_8859_5" - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | character with byte sequence 0x8b 0x00 in encoding "MULE_INTERNAL" has no equivalent in encoding "ISO_8859_5" -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'mule_internal', 'sjis')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+----------+------------------+-------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \x | \x8bc68bcf8bcf | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "SJIS" - invalid,incomplete char | \x8bc68bcf8b | \x | \x8bc68bcf8b | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "SJIS" - valid (in SHIFT_JIS) | \x92bedd | \x8fdb | | - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6f | \x95a3c1 | character with byte sequence 0x95 0xa3 0xc1 in encoding "MULE_INTERNAL" has no equivalent in encoding "SJIS" - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0x00 0xbe - invalid, NUL byte | \x92bedd00 | \x8fdb | \x00 | invalid byte sequence for encoding "MULE_INTERNAL": 0x00 - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'mule_internal', 'big5')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+--------------+------------------+-------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \x | \x8bc68bcf8bcf | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "BIG5" - invalid,incomplete char | \x8bc68bcf8b | \x | \x8bc68bcf8b | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "BIG5" - valid (in SHIFT_JIS) | \x92bedd | \x | \x92bedd | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "BIG5" - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6fa2a1 | | - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0x00 0xbe - invalid, NUL byte | \x92bedd00 | \x | \x92bedd00 | character with byte sequence 0x92 0xbe 0xdd in encoding "MULE_INTERNAL" has no equivalent in encoding "BIG5" - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement select description, inbytes, (test_conv(inbytes, 'mule_internal', 'euc_jp')).* from mic_inputs; - description | inbytes | result | errorat | error ----------------------------+------------------+----------+------------------+---------------------------------------------------------------------------------------------------------------- - valid, pure ASCII | \x666f6f | \x666f6f | | - valid (in KOI8R) | \x8bc68bcf8bcf | \x | \x8bc68bcf8bcf | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "EUC_JP" - invalid,incomplete char | \x8bc68bcf8b | \x | \x8bc68bcf8b | character with byte sequence 0x8b 0xc6 in encoding "MULE_INTERNAL" has no equivalent in encoding "EUC_JP" - valid (in SHIFT_JIS) | \x92bedd | \xbedd | | - invalid, incomplete char) | \x92be | \x | \x92be | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0xbe - valid (in Big5) | \x666f6f95a3c1 | \x666f6f | \x95a3c1 | character with byte sequence 0x95 0xa3 0xc1 in encoding "MULE_INTERNAL" has no equivalent in encoding "EUC_JP" - invalid, incomplete char | \x666f6f95a3 | \x666f6f | \x95a3 | invalid byte sequence for encoding "MULE_INTERNAL": 0x95 0xa3 - invalid, NUL byte | \x9200bedd | \x | \x9200bedd | invalid byte sequence for encoding "MULE_INTERNAL": 0x92 0x00 0xbe - invalid, NUL byte | \x92bedd00 | \xbedd | \x00 | invalid byte sequence for encoding "MULE_INTERNAL": 0x00 - invalid, NUL byte | \x8b00c68bcf8bcf | \x | \x8b00c68bcf8bcf | invalid byte sequence for encoding "MULE_INTERNAL": 0x8b 0x00 -(10 rows) - +ERROR: function test_enc_conversion(bytea, text, text, boolean) does not exist +LINE 1: select * from test_enc_conversion(inpu... + ^ +DETAIL: There is no function of that name. +QUERY: select * from test_enc_conversion(input, src_encoding, dst_encoding, true) +CONTEXT: PL/pgSQL function test_conv(bytea,text,text) line 14 at SQL statement