Skip to content

Commit 216f1a9

Browse files
committed
refactor: move override_create_ext_statement
to `extensions_parameter_overrides.{h,c}`
1 parent 5bbcd7b commit 216f1a9

File tree

4 files changed

+46
-41
lines changed

4 files changed

+46
-41
lines changed

src/extensions_parameter_overrides.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,42 @@ parse_extensions_parameter_overrides(const char *str,
128128

129129
return state;
130130
}
131+
132+
void override_create_ext_statement(CreateExtensionStmt *stmt,
133+
const size_t total_epos,
134+
const extension_parameter_overrides *epos) {
135+
for (size_t i = 0; i < total_epos; i++) {
136+
if (strcmp(epos[i].name, stmt->extname) == 0) {
137+
const extension_parameter_overrides *epo = &epos[i];
138+
DefElem *schema_option = NULL;
139+
DefElem *schema_override_option = NULL;
140+
ListCell *option_cell;
141+
142+
if (epo->schema != NULL) {
143+
Node *schema_node = (Node *)makeString(pstrdup(epo->schema));
144+
schema_override_option = makeDefElem("schema", schema_node, -1);
145+
}
146+
147+
foreach (option_cell, stmt->options) {
148+
DefElem *defel = (DefElem *)lfirst(option_cell);
149+
150+
if (strcmp(defel->defname, "schema") == 0) {
151+
if (schema_option != NULL) {
152+
ereport(ERROR,
153+
(errcode(ERRCODE_SYNTAX_ERROR),
154+
errmsg("conflicting or redundant options")));
155+
}
156+
schema_option = defel;
157+
}
158+
}
159+
160+
if (schema_override_option != NULL) {
161+
if (schema_option != NULL) {
162+
stmt->options =
163+
list_delete_ptr(stmt->options, schema_option);
164+
}
165+
stmt->options = lappend(stmt->options, schema_override_option);
166+
}
167+
}
168+
}
169+
}

src/extensions_parameter_overrides.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef EXTENSIONS_PARAMETER_OVERRIDES_H
22
#define EXTENSIONS_PARAMETER_OVERRIDES_H
33

4+
#include "pg_prelude.h"
5+
46
typedef struct {
57
char *name;
68
char *schema;
@@ -29,4 +31,9 @@ extern json_extension_parameter_overrides_parse_state
2931
parse_extensions_parameter_overrides(const char *str,
3032
extension_parameter_overrides *epos);
3133

34+
extern void
35+
override_create_ext_statement(CreateExtensionStmt *stmt,
36+
const size_t total_epos,
37+
const extension_parameter_overrides *epos);
38+
3239
#endif

src/privileged_extensions.c

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#include "pg_prelude.h"
2-
#include "extensions_parameter_overrides.h"
32
#include "privileged_extensions.h"
43
#include "utils.h"
54

@@ -159,43 +158,6 @@ void run_ext_after_create_script(char *extname, List *options, const char *privi
159158
extcascade);
160159
}
161160

162-
void override_create_ext_statement(CreateExtensionStmt *stmt, const size_t total_epos, const extension_parameter_overrides *epos){
163-
for (size_t i = 0; i < total_epos; i++) {
164-
if (strcmp(epos[i].name, stmt->extname) == 0) {
165-
const extension_parameter_overrides *epo = &epos[i];
166-
DefElem *schema_option = NULL;
167-
DefElem *schema_override_option = NULL;
168-
ListCell *option_cell;
169-
170-
if (epo->schema != NULL) {
171-
Node *schema_node = (Node *)makeString(pstrdup(epo->schema));
172-
schema_override_option = makeDefElem("schema", schema_node, -1);
173-
}
174-
175-
foreach (option_cell, stmt->options) {
176-
DefElem *defel = (DefElem *)lfirst(option_cell);
177-
178-
if (strcmp(defel->defname, "schema") == 0) {
179-
if (schema_option != NULL) {
180-
ereport(ERROR,
181-
(errcode(ERRCODE_SYNTAX_ERROR),
182-
errmsg("conflicting or redundant options")));
183-
}
184-
schema_option = defel;
185-
}
186-
}
187-
188-
if (schema_override_option != NULL) {
189-
if (schema_option != NULL) {
190-
stmt->options =
191-
list_delete_ptr(stmt->options, schema_option);
192-
}
193-
stmt->options = lappend(stmt->options, schema_override_option);
194-
}
195-
}
196-
}
197-
}
198-
199161
bool all_extensions_are_privileged(List *objects, const char *privileged_extensions){
200162
ListCell *lc;
201163

src/privileged_extensions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#ifndef PRIVILEGED_EXTENSIONS_H
22
#define PRIVILEGED_EXTENSIONS_H
33

4-
#include "extensions_parameter_overrides.h"
54
#include "utils.h"
65

76
bool all_extensions_are_privileged(List *objects, const char *privileged_extensions);
@@ -14,6 +13,4 @@ void run_ext_before_create_script(char *extname, List *options, const char *priv
1413

1514
void run_ext_after_create_script(char *extname, List *options, const char *privileged_extensions_custom_scripts_path);
1615

17-
void override_create_ext_statement(CreateExtensionStmt *stmt, const size_t total_epos, const extension_parameter_overrides *epos);
18-
1916
#endif

0 commit comments

Comments
 (0)