mirror of
https://github.com/postgres/postgres.git
synced 2025-10-15 05:46:52 +03:00
Revert "Fix parallel-safety check of expressions and predicate for index builds"
This reverts commit eae7be600b
, following a discussion with Tom Lane,
due to concerns that this impacts the decisions made by the planner for
the number of workers spawned based on the inlining and const-folding of
index expressions and predicate for cases that would have worked until
this commit.
Discussion: https://postgr.es/m/162802.1709746091@sss.pgh.pa.us
Backpatch-through: 12
This commit is contained in:
68
src/backend/utils/cache/lsyscache.c
vendored
68
src/backend/utils/cache/lsyscache.c
vendored
@@ -3502,74 +3502,6 @@ get_index_column_opclass(Oid index_oid, int attno)
|
||||
return opclass;
|
||||
}
|
||||
|
||||
/*
|
||||
* get_index_expressions
|
||||
*
|
||||
* Given the index OID, its a List of its expressions or NIL if none.
|
||||
*/
|
||||
List *
|
||||
get_index_expressions(Oid index_oid)
|
||||
{
|
||||
List *result;
|
||||
HeapTuple tuple;
|
||||
Datum exprDatum;
|
||||
bool isnull;
|
||||
char *exprString;
|
||||
|
||||
tuple = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(index_oid));
|
||||
if (!HeapTupleIsValid(tuple))
|
||||
elog(ERROR, "cache lookup failed for index %u", index_oid);
|
||||
|
||||
exprDatum = SysCacheGetAttr(INDEXRELID, tuple,
|
||||
Anum_pg_index_indexprs, &isnull);
|
||||
if (isnull)
|
||||
{
|
||||
ReleaseSysCache(tuple);
|
||||
return NIL;
|
||||
}
|
||||
|
||||
exprString = TextDatumGetCString(exprDatum);
|
||||
result = (List *) stringToNode(exprString);
|
||||
pfree(exprString);
|
||||
ReleaseSysCache(tuple);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* get_index_predicate
|
||||
*
|
||||
* Given the index OID, return a List of its predicate or NIL if none.
|
||||
*/
|
||||
List *
|
||||
get_index_predicate(Oid index_oid)
|
||||
{
|
||||
List *result;
|
||||
HeapTuple tuple;
|
||||
Datum predDatum;
|
||||
bool isnull;
|
||||
char *predString;
|
||||
|
||||
tuple = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(index_oid));
|
||||
if (!HeapTupleIsValid(tuple))
|
||||
elog(ERROR, "cache lookup failed for index %u", index_oid);
|
||||
|
||||
predDatum = SysCacheGetAttr(INDEXRELID, tuple,
|
||||
Anum_pg_index_indpred, &isnull);
|
||||
if (isnull)
|
||||
{
|
||||
ReleaseSysCache(tuple);
|
||||
return NIL;
|
||||
}
|
||||
|
||||
predString = TextDatumGetCString(predDatum);
|
||||
result = (List *) stringToNode(predString);
|
||||
pfree(predString);
|
||||
ReleaseSysCache(tuple);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* get_index_isreplident
|
||||
*
|
||||
|
Reference in New Issue
Block a user