Skip to content

Commit 93becb4

Browse files
committed
Fix mess in MtmGucSet()
1 parent 52d3545 commit 93becb4

File tree

1 file changed

+26
-41
lines changed

1 file changed

+26
-41
lines changed

multimaster.c

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3598,6 +3598,7 @@ typedef struct MtmGucHashEntry
35983598
} MtmGucHashEntry;
35993599

36003600
static HTAB *MtmGucHash = NULL;
3601+
static List *MtmGucList = NULL;
36013602

36023603
static void MtmGucHashInit(void)
36033604
{
@@ -3618,7 +3619,6 @@ static void MtmGucSet(VariableSetStmt *stmt, const char *queryStr)
36183619
MemoryContext oldcontext;
36193620
MtmGucHashEntry *hentry;
36203621
bool found;
3621-
char *key;
36223622

36233623
if (!MtmGucHash)
36243624
MtmGucHashInit();
@@ -3628,54 +3628,30 @@ static void MtmGucSet(VariableSetStmt *stmt, const char *queryStr)
36283628
switch (stmt->kind)
36293629
{
36303630
case VAR_SET_VALUE:
3631-
case VAR_SET_DEFAULT:
3632-
case VAR_SET_CURRENT:
3633-
{
3634-
char *value;
3635-
3636-
key = pstrdup(stmt->name);
3637-
hash_search(MtmGucHash, key, HASH_FIND, &found);
3638-
value = ExtractSetVariableArgs(stmt);
3639-
3640-
fprintf(stderr, ":MtmGucSet: %s -> %s\n", key, value);
3641-
3642-
if (value)
3643-
{
3644-
hentry = (MtmGucHashEntry *) hash_search(MtmGucHash, key,
3645-
HASH_ENTER, &found);
3646-
3647-
// if (found)
3648-
// pfree(hentry->value);
3631+
hentry = (MtmGucHashEntry *) hash_search(MtmGucHash, stmt->name,
3632+
HASH_ENTER, &found);
3633+
if (found)
3634+
pfree(hentry->value);
3635+
hentry->value = ExtractSetVariableArgs(stmt);
3636+
break;
36493637

3650-
hentry->value = palloc(strlen(value) + 1);
3651-
strcpy(hentry->value, value);
3652-
}
3653-
else if (found)
3654-
{
3655-
/* That was SET TO DEFAULT and we already had some value */
3656-
hash_search(MtmGucHash, key, HASH_REMOVE, NULL);
3657-
}
3658-
}
3638+
case VAR_SET_DEFAULT:
3639+
hash_search(MtmGucHash, stmt->name, HASH_REMOVE, NULL);
36593640
break;
36603641

36613642
case VAR_RESET:
3662-
{
3663-
if (strcmp(stmt->name, "session_authorization") == 0)
3664-
{
3665-
hash_search(MtmGucHash, "role", HASH_REMOVE, NULL);
3666-
}
3667-
key = pstrdup(stmt->name);
3668-
hash_search(MtmGucHash, key, HASH_REMOVE, NULL);
3669-
}
3643+
if (strcmp(stmt->name, "session_authorization") == 0)
3644+
hash_search(MtmGucHash, "role", HASH_REMOVE, NULL);
3645+
hash_search(MtmGucHash, stmt->name, HASH_REMOVE, NULL);
36703646
break;
36713647

36723648
case VAR_RESET_ALL:
3673-
{
3674-
hash_destroy(MtmGucHash);
3675-
MtmGucHashInit();
3676-
}
3649+
/* XXX: shouldn't we keep auth/role here? */
3650+
hash_destroy(MtmGucHash);
3651+
MtmGucHashInit();
36773652
break;
36783653

3654+
case VAR_SET_CURRENT:
36793655
case VAR_SET_MULTI:
36803656
break;
36813657
}
@@ -4000,10 +3976,19 @@ MtmExecutorStart(QueryDesc *queryDesc, int eflags)
40003976
TargetEntry *tle = (TargetEntry *) lfirst(tlist);
40013977

40023978
if (tle->resname && strcmp(tle->resname, "lo_create") == 0)
3979+
{
40033980
ddl_generating_call = true;
3981+
break;
3982+
}
3983+
3984+
if (tle->resname && strcmp(tle->resname, "lo_unlink") == 0)
3985+
{
3986+
ddl_generating_call = true;
3987+
break;
3988+
}
40043989
}
40053990

4006-
if (ddl_generating_call)
3991+
if (ddl_generating_call && !MtmTx.isReplicated)
40073992
MtmProcessDDLCommand(ActivePortal->sourceText, true);
40083993

40093994
if (PreviousExecutorStartHook != NULL)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy