diff --git a/src/common/backend/nodes/outfuncs.cpp b/src/common/backend/nodes/outfuncs.cpp index cecfddd5d..7b93eb9c2 100755 --- a/src/common/backend/nodes/outfuncs.cpp +++ b/src/common/backend/nodes/outfuncs.cpp @@ -244,9 +244,9 @@ appendStringInfo(str, " :opnamespace "); \ _outToken(str, nspname); \ appendStringInfo(str, " :oprleft "); \ - _outToken(str, get_typename(oprleft)); \ + _outToken(str, OidIsValid(oprleft) ? get_typename(oprleft) : "<>"); \ appendStringInfo(str, " :oprright "); \ - _outToken(str, get_typename(oprright)); \ + _outToken(str, OidIsValid(oprright) ? get_typename(oprright) : "<>"); \ pfree_ext(oprname); \ pfree_ext(nspname); \ } \ diff --git a/src/test/regress/expected/create_view1.out b/src/test/regress/expected/create_view1.out index 920fdb839..d1c54df8b 100755 --- a/src/test/regress/expected/create_view1.out +++ b/src/test/regress/expected/create_view1.out @@ -70,6 +70,25 @@ ERROR: cannot change data type of view column "b" from integer to numeric -- should work CREATE OR REPLACE VIEW viewtest AS SELECT a, b, 0 AS c FROM viewtest_tbl; +DROP SCHEMA IF EXISTS test_schema CASCADE; +NOTICE: schema "test_schema" does not exist, skipping +CREATE SCHEMA test_schema; +CREATE OPERATOR test_schema.-(rightarg = int1, procedure = int1um); +CREATE OPERATOR test_schema.~(leftarg = int1, procedure = int1up); +set current_schema to 'test_schema'; +CREATE VIEW test as select -(1::tinyint) as "arg1", (1::tinyint)~ as "arg2"; +SELECT * FROM test; + arg1 | arg2 +------+------ + -1 | 1 +(1 row) + +RESET current_schema; +DROP SCHEMA IF EXISTS test_schema CASCADE; +NOTICE: drop cascades to 3 other objects +DETAIL: drop cascades to operator test_schema.-(NONE,tinyint) +drop cascades to operator test_schema.~(tinyint,NONE) +drop cascades to view test_schema.test -- test error message DROP TABLE viewtest; ERROR: "viewtest" is not a table diff --git a/src/test/regress/sql/create_view1.sql b/src/test/regress/sql/create_view1.sql index 6973d569f..7d8621d6c 100644 --- a/src/test/regress/sql/create_view1.sql +++ b/src/test/regress/sql/create_view1.sql @@ -66,6 +66,16 @@ CREATE OR REPLACE VIEW viewtest AS CREATE OR REPLACE VIEW viewtest AS SELECT a, b, 0 AS c FROM viewtest_tbl; +DROP SCHEMA IF EXISTS test_schema CASCADE; +CREATE SCHEMA test_schema; +CREATE OPERATOR test_schema.-(rightarg = int1, procedure = int1um); +CREATE OPERATOR test_schema.~(leftarg = int1, procedure = int1up); +set current_schema to 'test_schema'; +CREATE VIEW test as select -(1::tinyint) as "arg1", (1::tinyint)~ as "arg2"; +SELECT * FROM test; +RESET current_schema; +DROP SCHEMA IF EXISTS test_schema CASCADE; + -- test error message DROP TABLE viewtest;