Commit bfcb9328 authored by Tom Lane's avatar Tom Lane

Index tuple data arrays using Anum_xxx symbolic constants instead of "i++".

We had already converted most places to this style, but this patch gets the
last few that were still doing it the old way.  The main advantage is that
this exposes a greppable name for each target column, rather than having
to rely on comments (which a couple of places failed to provide anyhow).

Richard Hopkins, additional work by me to clean up update_attstats() too
parent 7357558f
...@@ -234,22 +234,21 @@ OperatorShellMake(const char *operatorName, ...@@ -234,22 +234,21 @@ OperatorShellMake(const char *operatorName,
* initialize values[] with the operator name and input data types. Note * initialize values[] with the operator name and input data types. Note
* that oprcode is set to InvalidOid, indicating it's a shell. * that oprcode is set to InvalidOid, indicating it's a shell.
*/ */
i = 0;
namestrcpy(&oname, operatorName); namestrcpy(&oname, operatorName);
values[i++] = NameGetDatum(&oname); /* oprname */ values[Anum_pg_operator_oprname - 1] = NameGetDatum(&oname);
values[i++] = ObjectIdGetDatum(operatorNamespace); /* oprnamespace */ values[Anum_pg_operator_oprnamespace - 1] = ObjectIdGetDatum(operatorNamespace);
values[i++] = ObjectIdGetDatum(GetUserId()); /* oprowner */ values[Anum_pg_operator_oprowner - 1] = ObjectIdGetDatum(GetUserId());
values[i++] = CharGetDatum(leftTypeId ? (rightTypeId ? 'b' : 'r') : 'l'); /* oprkind */ values[Anum_pg_operator_oprkind - 1] = CharGetDatum(leftTypeId ? (rightTypeId ? 'b' : 'r') : 'l');
values[i++] = BoolGetDatum(false); /* oprcanmerge */ values[Anum_pg_operator_oprcanmerge - 1] = BoolGetDatum(false);
values[i++] = BoolGetDatum(false); /* oprcanhash */ values[Anum_pg_operator_oprcanhash - 1] = BoolGetDatum(false);
values[i++] = ObjectIdGetDatum(leftTypeId); /* oprleft */ values[Anum_pg_operator_oprleft - 1] = ObjectIdGetDatum(leftTypeId);
values[i++] = ObjectIdGetDatum(rightTypeId); /* oprright */ values[Anum_pg_operator_oprright - 1] = ObjectIdGetDatum(rightTypeId);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprresult */ values[Anum_pg_operator_oprresult - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprcom */ values[Anum_pg_operator_oprcom - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprnegate */ values[Anum_pg_operator_oprnegate - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprcode */ values[Anum_pg_operator_oprcode - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprrest */ values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* oprjoin */ values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(InvalidOid);
/* /*
* open pg_operator * open pg_operator
...@@ -492,22 +491,21 @@ OperatorCreate(const char *operatorName, ...@@ -492,22 +491,21 @@ OperatorCreate(const char *operatorName,
nulls[i] = false; nulls[i] = false;
} }
i = 0;
namestrcpy(&oname, operatorName); namestrcpy(&oname, operatorName);
values[i++] = NameGetDatum(&oname); /* oprname */ values[Anum_pg_operator_oprname - 1] = NameGetDatum(&oname);
values[i++] = ObjectIdGetDatum(operatorNamespace); /* oprnamespace */ values[Anum_pg_operator_oprnamespace - 1] = ObjectIdGetDatum(operatorNamespace);
values[i++] = ObjectIdGetDatum(GetUserId()); /* oprowner */ values[Anum_pg_operator_oprowner - 1] = ObjectIdGetDatum(GetUserId());
values[i++] = CharGetDatum(leftTypeId ? (rightTypeId ? 'b' : 'r') : 'l'); /* oprkind */ values[Anum_pg_operator_oprkind - 1] = CharGetDatum(leftTypeId ? (rightTypeId ? 'b' : 'r') : 'l');
values[i++] = BoolGetDatum(canMerge); /* oprcanmerge */ values[Anum_pg_operator_oprcanmerge - 1] = BoolGetDatum(canMerge);
values[i++] = BoolGetDatum(canHash); /* oprcanhash */ values[Anum_pg_operator_oprcanhash - 1] = BoolGetDatum(canHash);
values[i++] = ObjectIdGetDatum(leftTypeId); /* oprleft */ values[Anum_pg_operator_oprleft - 1] = ObjectIdGetDatum(leftTypeId);
values[i++] = ObjectIdGetDatum(rightTypeId); /* oprright */ values[Anum_pg_operator_oprright - 1] = ObjectIdGetDatum(rightTypeId);
values[i++] = ObjectIdGetDatum(operResultType); /* oprresult */ values[Anum_pg_operator_oprresult - 1] = ObjectIdGetDatum(operResultType);
values[i++] = ObjectIdGetDatum(commutatorId); /* oprcom */ values[Anum_pg_operator_oprcom - 1] = ObjectIdGetDatum(commutatorId);
values[i++] = ObjectIdGetDatum(negatorId); /* oprnegate */ values[Anum_pg_operator_oprnegate - 1] = ObjectIdGetDatum(negatorId);
values[i++] = ObjectIdGetDatum(procedureId); /* oprcode */ values[Anum_pg_operator_oprcode - 1] = ObjectIdGetDatum(procedureId);
values[i++] = ObjectIdGetDatum(restrictionId); /* oprrest */ values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(restrictionId);
values[i++] = ObjectIdGetDatum(joinId); /* oprjoin */ values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(joinId);
pg_operator_desc = heap_open(OperatorRelationId, RowExclusiveLock); pg_operator_desc = heap_open(OperatorRelationId, RowExclusiveLock);
......
...@@ -87,37 +87,36 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId) ...@@ -87,37 +87,36 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
* give it typtype = TYPTYPE_PSEUDO as extra insurance that it won't be * give it typtype = TYPTYPE_PSEUDO as extra insurance that it won't be
* mistaken for a usable type. * mistaken for a usable type.
*/ */
i = 0;
namestrcpy(&name, typeName); namestrcpy(&name, typeName);
values[i++] = NameGetDatum(&name); /* typname */ values[Anum_pg_type_typname - 1] = NameGetDatum(&name);
values[i++] = ObjectIdGetDatum(typeNamespace); /* typnamespace */ values[Anum_pg_type_typnamespace - 1] = ObjectIdGetDatum(typeNamespace);
values[i++] = ObjectIdGetDatum(ownerId); /* typowner */ values[Anum_pg_type_typowner - 1] = ObjectIdGetDatum(ownerId);
values[i++] = Int16GetDatum(sizeof(int4)); /* typlen */ values[Anum_pg_type_typlen - 1] = Int16GetDatum(sizeof(int4));
values[i++] = BoolGetDatum(true); /* typbyval */ values[Anum_pg_type_typbyval - 1] = BoolGetDatum(true);
values[i++] = CharGetDatum(TYPTYPE_PSEUDO); /* typtype */ values[Anum_pg_type_typtype - 1] = CharGetDatum(TYPTYPE_PSEUDO);
values[i++] = CharGetDatum(TYPCATEGORY_PSEUDOTYPE); /* typcategory */ values[Anum_pg_type_typcategory - 1] = CharGetDatum(TYPCATEGORY_PSEUDOTYPE);
values[i++] = BoolGetDatum(false); /* typispreferred */ values[Anum_pg_type_typispreferred - 1] = BoolGetDatum(false);
values[i++] = BoolGetDatum(false); /* typisdefined */ values[Anum_pg_type_typisdefined - 1] = BoolGetDatum(false);
values[i++] = CharGetDatum(DEFAULT_TYPDELIM); /* typdelim */ values[Anum_pg_type_typdelim - 1] = CharGetDatum(DEFAULT_TYPDELIM);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typrelid */ values[Anum_pg_type_typrelid - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typelem */ values[Anum_pg_type_typelem - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typarray */ values[Anum_pg_type_typarray - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(F_SHELL_IN); /* typinput */ values[Anum_pg_type_typinput - 1] = ObjectIdGetDatum(F_SHELL_IN);
values[i++] = ObjectIdGetDatum(F_SHELL_OUT); /* typoutput */ values[Anum_pg_type_typoutput - 1] = ObjectIdGetDatum(F_SHELL_OUT);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typreceive */ values[Anum_pg_type_typreceive - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typsend */ values[Anum_pg_type_typsend - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typmodin */ values[Anum_pg_type_typmodin - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typmodout */ values[Anum_pg_type_typmodout - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typanalyze */ values[Anum_pg_type_typanalyze - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = CharGetDatum('i'); /* typalign */ values[Anum_pg_type_typalign - 1] = CharGetDatum('i');
values[i++] = CharGetDatum('p'); /* typstorage */ values[Anum_pg_type_typstorage - 1] = CharGetDatum('p');
values[i++] = BoolGetDatum(false); /* typnotnull */ values[Anum_pg_type_typnotnull - 1] = BoolGetDatum(false);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typbasetype */ values[Anum_pg_type_typbasetype - 1] = ObjectIdGetDatum(InvalidOid);
values[i++] = Int32GetDatum(-1); /* typtypmod */ values[Anum_pg_type_typtypmod - 1] = Int32GetDatum(-1);
values[i++] = Int32GetDatum(0); /* typndims */ values[Anum_pg_type_typndims - 1] = Int32GetDatum(0);
values[i++] = ObjectIdGetDatum(InvalidOid); /* typcollation */ values[Anum_pg_type_typcollation - 1] = ObjectIdGetDatum(InvalidOid);
nulls[i++] = true; /* typdefaultbin */ nulls[Anum_pg_type_typdefaultbin - 1] = true;
nulls[i++] = true; /* typdefault */ nulls[Anum_pg_type_typdefault - 1] = true;
/* /*
* create a new type tuple * create a new type tuple
...@@ -322,56 +321,53 @@ TypeCreate(Oid newTypeOid, ...@@ -322,56 +321,53 @@ TypeCreate(Oid newTypeOid,
} }
/* /*
* initialize the *values information * insert data values
*/ */
i = 0;
namestrcpy(&name, typeName); namestrcpy(&name, typeName);
values[i++] = NameGetDatum(&name); /* typname */ values[Anum_pg_type_typname - 1] = NameGetDatum(&name);
values[i++] = ObjectIdGetDatum(typeNamespace); /* typnamespace */ values[Anum_pg_type_typnamespace - 1] = ObjectIdGetDatum(typeNamespace);
values[i++] = ObjectIdGetDatum(ownerId); /* typowner */ values[Anum_pg_type_typowner - 1] = ObjectIdGetDatum(ownerId);
values[i++] = Int16GetDatum(internalSize); /* typlen */ values[Anum_pg_type_typlen - 1] = Int16GetDatum(internalSize);
values[i++] = BoolGetDatum(passedByValue); /* typbyval */ values[Anum_pg_type_typbyval - 1] = BoolGetDatum(passedByValue);
values[i++] = CharGetDatum(typeType); /* typtype */ values[Anum_pg_type_typtype - 1] = CharGetDatum(typeType);
values[i++] = CharGetDatum(typeCategory); /* typcategory */ values[Anum_pg_type_typcategory - 1] = CharGetDatum(typeCategory);
values[i++] = BoolGetDatum(typePreferred); /* typispreferred */ values[Anum_pg_type_typispreferred - 1] = BoolGetDatum(typePreferred);
values[i++] = BoolGetDatum(true); /* typisdefined */ values[Anum_pg_type_typisdefined - 1] = BoolGetDatum(true);
values[i++] = CharGetDatum(typDelim); /* typdelim */ values[Anum_pg_type_typdelim - 1] = CharGetDatum(typDelim);
values[i++] = ObjectIdGetDatum(relationOid); /* typrelid */ values[Anum_pg_type_typrelid - 1] = ObjectIdGetDatum(relationOid);
values[i++] = ObjectIdGetDatum(elementType); /* typelem */ values[Anum_pg_type_typelem - 1] = ObjectIdGetDatum(elementType);
values[i++] = ObjectIdGetDatum(arrayType); /* typarray */ values[Anum_pg_type_typarray - 1] = ObjectIdGetDatum(arrayType);
values[i++] = ObjectIdGetDatum(inputProcedure); /* typinput */ values[Anum_pg_type_typinput - 1] = ObjectIdGetDatum(inputProcedure);
values[i++] = ObjectIdGetDatum(outputProcedure); /* typoutput */ values[Anum_pg_type_typoutput - 1] = ObjectIdGetDatum(outputProcedure);
values[i++] = ObjectIdGetDatum(receiveProcedure); /* typreceive */ values[Anum_pg_type_typreceive - 1] = ObjectIdGetDatum(receiveProcedure);
values[i++] = ObjectIdGetDatum(sendProcedure); /* typsend */ values[Anum_pg_type_typsend - 1] = ObjectIdGetDatum(sendProcedure);
values[i++] = ObjectIdGetDatum(typmodinProcedure); /* typmodin */ values[Anum_pg_type_typmodin - 1] = ObjectIdGetDatum(typmodinProcedure);
values[i++] = ObjectIdGetDatum(typmodoutProcedure); /* typmodout */ values[Anum_pg_type_typmodout - 1] = ObjectIdGetDatum(typmodoutProcedure);
values[i++] = ObjectIdGetDatum(analyzeProcedure); /* typanalyze */ values[Anum_pg_type_typanalyze - 1] = ObjectIdGetDatum(analyzeProcedure);
values[i++] = CharGetDatum(alignment); /* typalign */ values[Anum_pg_type_typalign - 1] = CharGetDatum(alignment);
values[i++] = CharGetDatum(storage); /* typstorage */ values[Anum_pg_type_typstorage - 1] = CharGetDatum(storage);
values[i++] = BoolGetDatum(typeNotNull); /* typnotnull */ values[Anum_pg_type_typnotnull - 1] = BoolGetDatum(typeNotNull);
values[i++] = ObjectIdGetDatum(baseType); /* typbasetype */ values[Anum_pg_type_typbasetype - 1] = ObjectIdGetDatum(baseType);
values[i++] = Int32GetDatum(typeMod); /* typtypmod */ values[Anum_pg_type_typtypmod - 1] = Int32GetDatum(typeMod);
values[i++] = Int32GetDatum(typNDims); /* typndims */ values[Anum_pg_type_typndims - 1] = Int32GetDatum(typNDims);
values[i++] = ObjectIdGetDatum(typeCollation); /* typcollation */ values[Anum_pg_type_typcollation - 1] = ObjectIdGetDatum(typeCollation);
/* /*
* initialize the default binary value for this type. Check for nulls of * initialize the default binary value for this type. Check for nulls of
* course. * course.
*/ */
if (defaultTypeBin) if (defaultTypeBin)
values[i] = CStringGetTextDatum(defaultTypeBin); values[Anum_pg_type_typdefaultbin - 1] = CStringGetTextDatum(defaultTypeBin);
else else
nulls[i] = true; nulls[Anum_pg_type_typdefaultbin - 1] = true;
i++; /* typdefaultbin */
/* /*
* initialize the default value for this type. * initialize the default value for this type.
*/ */
if (defaultTypeValue) if (defaultTypeValue)
values[i] = CStringGetTextDatum(defaultTypeValue); values[Anum_pg_type_typdefault - 1] = CStringGetTextDatum(defaultTypeValue);
else else
nulls[i] = true; nulls[Anum_pg_type_typdefault - 1] = true;
i++; /* typdefault */
/* /*
* open pg_type and prepare to insert or update a row. * open pg_type and prepare to insert or update a row.
......
...@@ -1603,21 +1603,23 @@ update_attstats(Oid relid, bool inh, int natts, VacAttrStats **vacattrstats) ...@@ -1603,21 +1603,23 @@ update_attstats(Oid relid, bool inh, int natts, VacAttrStats **vacattrstats)
replaces[i] = true; replaces[i] = true;
} }
i = 0; values[Anum_pg_statistic_starelid - 1] = ObjectIdGetDatum(relid);
values[i++] = ObjectIdGetDatum(relid); /* starelid */ values[Anum_pg_statistic_staattnum - 1] = Int16GetDatum(stats->attr->attnum);
values[i++] = Int16GetDatum(stats->attr->attnum); /* staattnum */ values[Anum_pg_statistic_stainherit - 1] = BoolGetDatum(inh);
values[i++] = BoolGetDatum(inh); /* stainherit */ values[Anum_pg_statistic_stanullfrac - 1] = Float4GetDatum(stats->stanullfrac);
values[i++] = Float4GetDatum(stats->stanullfrac); /* stanullfrac */ values[Anum_pg_statistic_stawidth - 1] = Int32GetDatum(stats->stawidth);
values[i++] = Int32GetDatum(stats->stawidth); /* stawidth */ values[Anum_pg_statistic_stadistinct - 1] = Float4GetDatum(stats->stadistinct);
values[i++] = Float4GetDatum(stats->stadistinct); /* stadistinct */ i = Anum_pg_statistic_stakind1 - 1;
for (k = 0; k < STATISTIC_NUM_SLOTS; k++) for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{ {
values[i++] = Int16GetDatum(stats->stakind[k]); /* stakindN */ values[i++] = Int16GetDatum(stats->stakind[k]); /* stakindN */
} }
i = Anum_pg_statistic_staop1 - 1;
for (k = 0; k < STATISTIC_NUM_SLOTS; k++) for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{ {
values[i++] = ObjectIdGetDatum(stats->staop[k]); /* staopN */ values[i++] = ObjectIdGetDatum(stats->staop[k]); /* staopN */
} }
i = Anum_pg_statistic_stanumbers1 - 1;
for (k = 0; k < STATISTIC_NUM_SLOTS; k++) for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{ {
int nnum = stats->numnumbers[k]; int nnum = stats->numnumbers[k];
...@@ -1641,6 +1643,7 @@ update_attstats(Oid relid, bool inh, int natts, VacAttrStats **vacattrstats) ...@@ -1641,6 +1643,7 @@ update_attstats(Oid relid, bool inh, int natts, VacAttrStats **vacattrstats)
values[i++] = (Datum) 0; values[i++] = (Datum) 0;
} }
} }
i = Anum_pg_statistic_stavalues1 - 1;
for (k = 0; k < STATISTIC_NUM_SLOTS; k++) for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{ {
if (stats->numvalues[k] > 0) if (stats->numvalues[k] > 0)
......
...@@ -157,11 +157,10 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment) ...@@ -157,11 +157,10 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
nulls[i] = false; nulls[i] = false;
replaces[i] = true; replaces[i] = true;
} }
i = 0; values[Anum_pg_description_objoid - 1] = ObjectIdGetDatum(oid);
values[i++] = ObjectIdGetDatum(oid); values[Anum_pg_description_classoid - 1] = ObjectIdGetDatum(classoid);
values[i++] = ObjectIdGetDatum(classoid); values[Anum_pg_description_objsubid - 1] = Int32GetDatum(subid);
values[i++] = Int32GetDatum(subid); values[Anum_pg_description_description - 1] = CStringGetTextDatum(comment);
values[i++] = CStringGetTextDatum(comment);
} }
/* Use the index to search for a matching old tuple */ /* Use the index to search for a matching old tuple */
...@@ -257,10 +256,9 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment) ...@@ -257,10 +256,9 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment)
nulls[i] = false; nulls[i] = false;
replaces[i] = true; replaces[i] = true;
} }
i = 0; values[Anum_pg_shdescription_objoid - 1] = ObjectIdGetDatum(oid);
values[i++] = ObjectIdGetDatum(oid); values[Anum_pg_shdescription_classoid - 1] = ObjectIdGetDatum(classoid);
values[i++] = ObjectIdGetDatum(classoid); values[Anum_pg_shdescription_description - 1] = CStringGetTextDatum(comment);
values[i++] = CStringGetTextDatum(comment);
} }
/* Use the index to search for a matching old tuple */ /* Use the index to search for a matching old tuple */
......
...@@ -60,7 +60,6 @@ InsertRule(char *rulname, ...@@ -60,7 +60,6 @@ InsertRule(char *rulname,
{ {
char *evqual = nodeToString(event_qual); char *evqual = nodeToString(event_qual);
char *actiontree = nodeToString((Node *) action); char *actiontree = nodeToString((Node *) action);
int i;
Datum values[Natts_pg_rewrite]; Datum values[Natts_pg_rewrite];
bool nulls[Natts_pg_rewrite]; bool nulls[Natts_pg_rewrite];
bool replaces[Natts_pg_rewrite]; bool replaces[Natts_pg_rewrite];
...@@ -78,16 +77,15 @@ InsertRule(char *rulname, ...@@ -78,16 +77,15 @@ InsertRule(char *rulname,
*/ */
MemSet(nulls, false, sizeof(nulls)); MemSet(nulls, false, sizeof(nulls));
i = 0;
namestrcpy(&rname, rulname); namestrcpy(&rname, rulname);
values[i++] = NameGetDatum(&rname); /* rulename */ values[Anum_pg_rewrite_rulename - 1] = NameGetDatum(&rname);
values[i++] = ObjectIdGetDatum(eventrel_oid); /* ev_class */ values[Anum_pg_rewrite_ev_class - 1] = ObjectIdGetDatum(eventrel_oid);
values[i++] = Int16GetDatum(evslot_index); /* ev_attr */ values[Anum_pg_rewrite_ev_attr - 1] = Int16GetDatum(evslot_index);
values[i++] = CharGetDatum(evtype + '0'); /* ev_type */ values[Anum_pg_rewrite_ev_type - 1] = CharGetDatum(evtype + '0');
values[i++] = CharGetDatum(RULE_FIRES_ON_ORIGIN); /* ev_enabled */ values[Anum_pg_rewrite_ev_enabled - 1] = CharGetDatum(RULE_FIRES_ON_ORIGIN);
values[i++] = BoolGetDatum(evinstead); /* is_instead */ values[Anum_pg_rewrite_is_instead - 1] = BoolGetDatum(evinstead);
values[i++] = CStringGetTextDatum(evqual); /* ev_qual */ values[Anum_pg_rewrite_ev_qual - 1] = CStringGetTextDatum(evqual);
values[i++] = CStringGetTextDatum(actiontree); /* ev_action */ values[Anum_pg_rewrite_ev_action - 1] = CStringGetTextDatum(actiontree);
/* /*
* Ready to store new pg_rewrite tuple * Ready to store new pg_rewrite tuple
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment