@@ -2129,21 +2129,26 @@ class TConverter : public IPGParseEvents {
21292129 }
21302130
21312131 auto name = to_lower (TString (value->name ));
2132- if (isSetConfig ) {
2132+ if (name == " search_path " ) {
21332133 if (ListLength (value->args ) != 1 ) {
21342134 AddError (TStringBuilder () << " VariableSetStmt, expected 1 arg, but got: " << ListLength (value->args ));
21352135 return nullptr ;
21362136 }
21372137 auto val = ListNodeNth (value->args , 0 );
2138+ if (!isSetConfig) {
2139+ if (NodeTag (val) == T_A_Const) {
2140+ val = (const Node*)&CAST_NODE (A_Const, val)->val ;
2141+ } else {
2142+ AddError (TStringBuilder () << " VariableSetStmt, expected const for " << value->name << " option" );
2143+ return nullptr ;
2144+ }
2145+ }
2146+
21382147 if (NodeTag (val) != T_String) {
21392148 AddError (TStringBuilder () << " VariableSetStmt, expected string literal for " << value->name << " option" );
21402149 return nullptr ;
21412150 }
21422151 TString rawStr = to_lower (TString (StrVal (val)));
2143- if (name != " search_path" ) {
2144- AddError (TStringBuilder () << " VariableSetStmt, set_config doesn't support that option:" << name);
2145- return nullptr ;
2146- }
21472152 if (rawStr != " pg_catalog" && rawStr != " public" && rawStr != " " && rawStr != " information_schema" ) {
21482153 AddError (TStringBuilder () << " VariableSetStmt, search path supports only 'information_schema', 'public', 'pg_catalog', '' but got: '" << rawStr << " '" );
21492154 return nullptr ;
@@ -2154,6 +2159,13 @@ class TConverter : public IPGParseEvents {
21542159 return State.Statements .back ();
21552160 }
21562161
2162+ if (isSetConfig) {
2163+ if (name != " search_path" ) {
2164+ AddError (TStringBuilder () << " VariableSetStmt, set_config doesn't support that option:" << name);
2165+ return nullptr ;
2166+ }
2167+ }
2168+
21572169 if (name == " useblocks" || name == " emitaggapply" ) {
21582170 if (ListLength (value->args ) != 1 ) {
21592171 AddError (TStringBuilder () << " VariableSetStmt, expected 1 arg, but got: " << ListLength (value->args ));
0 commit comments