Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8c5bcc9

Browse files
committed
42/161 drop temp index
1 parent8e9daf8 commit8c5bcc9

File tree

4 files changed

+80
-40
lines changed

4 files changed

+80
-40
lines changed

‎multimaster--1.0.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ CREATE FUNCTION mtm.inject_2pc_error(stage integer) RETURNS void
6969
AS'MODULE_PATHNAME','mtm_inject_2pc_error'
7070
LANGUAGE C;
7171

72-
CREATETABLEIF NOT EXISTSmtm.ddl_log (issuedtimestamp with time zonenot null, querytext);
72+
CREATETABLEIF NOT EXISTSpublic.ddl_log (issuedtimestamp with time zonenot null, querytext);
7373

7474
CREATETABLEIF NOT EXISTSmtm.local_tables(rel_schematext, rel_nametext,primary key(rel_schema, rel_name));
7575

‎multimaster.c

Lines changed: 75 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
#include"catalog/indexing.h"
5757
#include"catalog/namespace.h"
5858
#include"pglogical_output/hooks.h"
59+
#include"parser/analyze.h"
60+
#include"parser/parse_relation.h"
5961

6062
#include"multimaster.h"
6163
#include"ddd.h"
@@ -147,6 +149,7 @@ static void MtmShmemStartup(void);
147149
staticBgwPool*MtmPoolConstructor(void);
148150
staticboolMtmRunUtilityStmt(PGconn*conn,charconst*sql,char**errmsg);
149151
staticvoidMtmBroadcastUtilityStmt(charconst*sql,boolignoreError);
152+
staticboolMtmProcessDDLCommand(charconst*queryString);
150153

151154
MtmState*Mtm;
152155

@@ -175,7 +178,8 @@ static TransactionManager MtmTM = {
175178
MtmGetTransactionStateSize,
176179
MtmSerializeTransactionState,
177180
MtmDeserializeTransactionState,
178-
MtmInitializeSequence
181+
// MtmInitializeSequence
182+
PgInitializeSequence
179183
};
180184

181185
charconst*constMtmNodeStatusMnem[]=
@@ -207,6 +211,8 @@ int MtmHeartbeatRecvTimeout;
207211
boolMtmUseRaftable;
208212
boolMtmUseDtm;
209213

214+
// static int reset_wrokers = 0;
215+
210216
staticchar*MtmConnStrs;
211217
staticintMtmQueueSize;
212218
staticintMtmWorkers;
@@ -228,8 +234,8 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
228234
ProcessUtilityContextcontext,ParamListInfoparams,
229235
DestReceiver*dest,char*completionTag);
230236

231-
staticStringInfoMtmGUCBuffer;
232-
staticboolMtmGUCBufferAllocated= false;
237+
//static StringInfoMtmGUCBuffer;
238+
//static boolMtmGUCBufferAllocated = false;
233239

234240
/*
235241
* -------------------------------------------
@@ -614,7 +620,7 @@ MtmXactCallback(XactEvent event, void *arg)
614620
{
615621
switch (event)
616622
{
617-
caseXACT_EVENT_START:
623+
caseXACT_EVENT_START:
618624
MtmBeginTransaction(&MtmTx);
619625
break;
620626
caseXACT_EVENT_PRE_PREPARE:
@@ -1159,8 +1165,8 @@ void MtmHandleApplyError(void)
11591165
caseERRCODE_OUT_OF_MEMORY:
11601166
elog(WARNING,"Node is excluded from cluster because of non-recoverable error %d, %s, pid=%u",
11611167
edata->sqlerrcode,edata->message,getpid());
1162-
MtmSwitchClusterMode(MTM_OUT_OF_SERVICE);
1163-
kill(PostmasterPid,SIGQUIT);
1168+
//MtmSwitchClusterMode(MTM_OUT_OF_SERVICE);
1169+
//kill(PostmasterPid, SIGQUIT);
11641170
break;
11651171
}
11661172
FreeErrorData(edata);
@@ -2929,13 +2935,13 @@ static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError)
29292935
{
29302936
if (conns[i])
29312937
{
2932-
if (MtmGUCBufferAllocated&& !MtmRunUtilityStmt(conns[i],MtmGUCBuffer->data,&utility_errmsg)&& !ignoreError)
2933-
{
2934-
errorMsg="Failed to set GUC variables at node %d";
2935-
elog(WARNING,"%s",utility_errmsg);
2936-
failedNode=i;
2937-
break;
2938-
}
2938+
//if (MtmGUCBufferAllocated && !MtmRunUtilityStmt(conns[i], MtmGUCBuffer->data, &utility_errmsg) && !ignoreError)
2939+
//{
2940+
//errorMsg = "Failed to set GUC variables at node %d";
2941+
//elog(WARNING, "%s", utility_errmsg);
2942+
//failedNode = i;
2943+
//break;
2944+
//}
29392945
if (!MtmRunUtilityStmt(conns[i],"BEGIN TRANSACTION",&utility_errmsg)&& !ignoreError)
29402946
{
29412947
errorMsg="Failed to start transaction at node %d";
@@ -2999,7 +3005,7 @@ static bool MtmProcessDDLCommand(char const* queryString)
29993005
boolnulls[Natts_mtm_ddl_log];
30003006
TimestampTzts=GetCurrentTimestamp();
30013007

3002-
rv=makeRangeVar(MULTIMASTER_SCHEMA_NAME,MULTIMASTER_DDL_TABLE,-1);
3008+
rv=makeRangeVar("public",MULTIMASTER_DDL_TABLE,-1);
30033009
rel=heap_openrv_extended(rv,RowExclusiveLock, true);
30043010

30053011
if (rel==NULL) {
@@ -3132,18 +3138,18 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
31323138
break;
31333139
caseT_DiscardStmt:
31343140
{
3135-
//DiscardStmt *stmt = (DiscardStmt *) parsetree;
3136-
//skipCommand = stmt->target == DISCARD_TEMP;
3141+
DiscardStmt*stmt= (DiscardStmt*)parsetree;
3142+
skipCommand=stmt->target==DISCARD_TEMP;
31373143

3138-
skipCommand= true;
3144+
//skipCommand = true;
31393145

3140-
if (MtmGUCBufferAllocated)
3141-
{
3142-
// XXX: move allocation somewhere to backend startup and check
3143-
// where buffer is empty in send routines.
3144-
MtmGUCBufferAllocated= false;
3145-
pfree(MtmGUCBuffer);
3146-
}
3146+
//if (MtmGUCBufferAllocated)
3147+
//{
3148+
//// XXX: move allocation somewhere to backend startup and check
3149+
//// where buffer is empty in send routines.
3150+
//MtmGUCBufferAllocated = false;
3151+
//pfree(MtmGUCBuffer);
3152+
//}
31473153

31483154
}
31493155
break;
@@ -3155,22 +3161,31 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
31553161

31563162
/* Prevent SET TRANSACTION from replication */
31573163
if (stmt->kind==VAR_SET_MULTI)
3158-
break;
3164+
// break;
3165+
skipCommand= true;
31593166

3160-
if (!MtmGUCBufferAllocated)
3161-
{
3162-
MemoryContextoldcontext;
3167+
//if (!MtmGUCBufferAllocated)
3168+
//{
3169+
//MemoryContext oldcontext;
31633170

3164-
oldcontext=MemoryContextSwitchTo(TopMemoryContext);
3165-
MtmGUCBuffer=makeStringInfo();
3166-
MemoryContextSwitchTo(oldcontext);
3167-
MtmGUCBufferAllocated= true;
3168-
}
3171+
//oldcontext = MemoryContextSwitchTo(TopMemoryContext);
3172+
//MtmGUCBuffer = makeStringInfo();
3173+
//MemoryContextSwitchTo(oldcontext);
3174+
//MtmGUCBufferAllocated = true;
3175+
//}
31693176

3170-
appendStringInfoString(MtmGUCBuffer,queryString);
3177+
//appendStringInfoString(MtmGUCBuffer, queryString);
31713178

31723179
// sometimes there is no ';' char at the end.
3173-
appendStringInfoString(MtmGUCBuffer,";");
3180+
// appendStringInfoString(MtmGUCBuffer, ";");
3181+
}
3182+
break;
3183+
caseT_CreateTableAsStmt:
3184+
{
3185+
/* Do not replicate temp tables */
3186+
CreateTableAsStmt*stmt= (CreateTableAsStmt*)parsetree;
3187+
skipCommand=stmt->into->rel->relpersistence==RELPERSISTENCE_TEMP||
3188+
(stmt->into->rel->schemaname&&strcmp(stmt->into->rel->schemaname,"pg_temp")==0);
31743189
}
31753190
break;
31763191
caseT_CreateStmt:
@@ -3181,6 +3196,18 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
31813196
(stmt->relation->schemaname&&strcmp(stmt->relation->schemaname,"pg_temp")==0);
31823197
}
31833198
break;
3199+
caseT_ViewStmt:
3200+
{
3201+
ViewStmt*stmt= (ViewStmt*)parsetree;
3202+
Query*viewParse;
3203+
3204+
viewParse=parse_analyze((Node*)copyObject(stmt->query),
3205+
queryString,NULL,0);
3206+
skipCommand=isQueryUsingTempRelation(viewParse);
3207+
// ||
3208+
// (stmt->relation->schemaname && strcmp(stmt->relation->schemaname, "pg_temp") == 0);
3209+
}
3210+
break;
31843211
caseT_IndexStmt:
31853212
{
31863213
Oidrelid;
@@ -3219,6 +3246,19 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
32193246
heap_close(rel,ShareLock);
32203247
}
32213248
}
3249+
elseif (stmt->removeType==OBJECT_INDEX)
3250+
{
3251+
RangeVar*rv=makeRangeVarFromNameList(
3252+
(List*)lfirst(list_head(stmt->objects)));
3253+
Oidrelid=RelnameGetRelid(rv->relname);
3254+
3255+
if (OidIsValid(relid))
3256+
{
3257+
Relationirel=index_open(relid,ShareLock);
3258+
skipCommand=irel->rd_rel->relpersistence==RELPERSISTENCE_TEMP;
3259+
index_close(irel,ShareLock);
3260+
}
3261+
}
32223262
}
32233263
break;
32243264
caseT_CopyStmt:

‎tests/postgresql.conf.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,11 +641,11 @@
641641
log_checkpoints = on
642642
log_autovacuum_min_duration =0
643643

644-
multimaster.workers =4
644+
multimaster.workers =1
645645
multimaster.use_raftable =true
646646
multimaster.queue_size=52857600
647647
multimaster.ignore_tables_without_pk =1
648648
multimaster.heartbeat_recv_timeout =1000
649649
multimaster.heartbeat_send_timeout =250
650-
multimaster.twopc_min_timeout =40000
650+
multimaster.twopc_min_timeout =400000
651651

‎tests/reinit-mm.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ do
4343
pg_ctl -w -D node$i -l node$i.log start
4444
done
4545

46-
#sleep5
47-
#psql-c "create extension multimaster;" postgres
46+
sleep10
47+
psqlpostgres< ../../../regress.sql
4848

4949
echo Done

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp