From 9f1255ac859364a86264a67729dbd1a36dd63ff2 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Thu, 24 Sep 2015 11:27:20 -0400 Subject: [PATCH] Don't zero opfuncid when reading nodes. The comments here stated that this was just in case we ever had an ALTER OPERATOR command that could remap an operator to a different function. But those comments have been here for a long time, and no such command has come about. In the absence of such a feature, forcing the pg_proc OID to be looked up again each time we reread a stored rule or similar is just a waste of cycles. Moreover, parallel query needs a way to reread the exact same node tree that was written out, not one that has been slightly stomped on. So just get rid of this for now. Per discussion with Tom Lane. --- src/backend/nodes/readfuncs.c | 44 ----------------------------------- 1 file changed, 44 deletions(-) diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index ef88209475..08519ed298 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -665,17 +665,6 @@ _readOpExpr(void) READ_OID_FIELD(opno); READ_OID_FIELD(opfuncid); - - /* - * The opfuncid is stored in the textual format primarily for debugging - * and documentation reasons. We want to always read it as zero to force - * it to be re-looked-up in the pg_operator entry. This ensures that - * stored rules don't have hidden dependencies on operators' functions. - * (We don't currently support an ALTER OPERATOR command, but might - * someday.) - */ - local_node->opfuncid = InvalidOid; - READ_OID_FIELD(opresulttype); READ_BOOL_FIELD(opretset); READ_OID_FIELD(opcollid); @@ -696,17 +685,6 @@ _readDistinctExpr(void) READ_OID_FIELD(opno); READ_OID_FIELD(opfuncid); - - /* - * The opfuncid is stored in the textual format primarily for debugging - * and documentation reasons. We want to always read it as zero to force - * it to be re-looked-up in the pg_operator entry. This ensures that - * stored rules don't have hidden dependencies on operators' functions. - * (We don't currently support an ALTER OPERATOR command, but might - * someday.) - */ - local_node->opfuncid = InvalidOid; - READ_OID_FIELD(opresulttype); READ_BOOL_FIELD(opretset); READ_OID_FIELD(opcollid); @@ -727,17 +705,6 @@ _readNullIfExpr(void) READ_OID_FIELD(opno); READ_OID_FIELD(opfuncid); - - /* - * The opfuncid is stored in the textual format primarily for debugging - * and documentation reasons. We want to always read it as zero to force - * it to be re-looked-up in the pg_operator entry. This ensures that - * stored rules don't have hidden dependencies on operators' functions. - * (We don't currently support an ALTER OPERATOR command, but might - * someday.) - */ - local_node->opfuncid = InvalidOid; - READ_OID_FIELD(opresulttype); READ_BOOL_FIELD(opretset); READ_OID_FIELD(opcollid); @@ -758,17 +725,6 @@ _readScalarArrayOpExpr(void) READ_OID_FIELD(opno); READ_OID_FIELD(opfuncid); - - /* - * The opfuncid is stored in the textual format primarily for debugging - * and documentation reasons. We want to always read it as zero to force - * it to be re-looked-up in the pg_operator entry. This ensures that - * stored rules don't have hidden dependencies on operators' functions. - * (We don't currently support an ALTER OPERATOR command, but might - * someday.) - */ - local_node->opfuncid = InvalidOid; - READ_BOOL_FIELD(useOr); READ_OID_FIELD(inputcollid); READ_NODE_FIELD(args);