Heikki Linnakangas wrote:
> The callers of transformGenericOptions-function in foreigncmds.c use
> OidIsValid to check the return value of transformGenericOptions, but it
> returns an array, not an Oid. I committed a fix for that, we'll see if
> it heals the buildfarm.
>
Thanks for that. There was an additional use of the Datum as Oid in
AlterForeignDataWrapper, namely the assignment to repl_vals.
Another bug was uncovered on orca -- a missing semicolon in gram.y:3004
Fixes attached.
regards,
Martin
*** a/src/backend/commands/foreigncmds.c
--- b/src/backend/commands/foreigncmds.c
***************
*** 466,472 **** AlterForeignDataWrapper(AlterFdwStmt *stmt)
NULL, fdwlib->validateOptionList);
if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = ObjectIdGetDatum(datum);
else
repl_null[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
--- 466,472 ----
NULL, fdwlib->validateOptionList);
if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = datum;
else
repl_null[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = true;
*** a/src/backend/parser/gram.y
--- b/src/backend/parser/gram.y
***************
*** 3001,3007 **** CreateUserMappingStmt: CREATE USER MAPPING FOR auth_ident SERVER name create_gen
auth_ident:
CURRENT_USER { $$ = "current_user"; }
| USER { $$ = "current_user"; }
! | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1 }
;
/*****************************************************************************
--- 3001,3007 ----
auth_ident:
CURRENT_USER { $$ = "current_user"; }
| USER { $$ = "current_user"; }
! | RoleId { $$ = (strcmp($1, "public") == 0) ? NULL : $1; }
;
/*****************************************************************************