Do not acquire locks if the index does not exist

pull/7009/head
Hanefi Onaldi 2023-05-08 18:03:20 +03:00
parent 3c4cec827d
commit 914aa87c4e
No known key found for this signature in database
GPG Key ID: F18CDB10BA0DFDC7
3 changed files with 13 additions and 12 deletions

View File

@ -748,16 +748,6 @@ PreprocessDropIndexStmt(Node *node, const char *dropIndexCommand,
lockmode = ShareUpdateExclusiveLock;
}
/*
* Acquire global lock to prevent concurrent writes or DDL. However,
* we do not bother for DROP INDEX CONCURRENTLY, since we'll have
* to release the lock.
*/
if (!dropIndexStatement->concurrent)
{
AcquireDistributedLockOnRelations(list_make1(rangeVar), lockmode, 0);
}
/*
* The next few statements are based on RemoveRelations() in
* commands/tablecmds.c in Postgres source.
@ -781,6 +771,16 @@ PreprocessDropIndexStmt(Node *node, const char *dropIndexCommand,
continue;
}
/*
* Acquire global lock to prevent concurrent writes or DDL. However,
* we do not bother for DROP INDEX CONCURRENTLY, since we'll have
* to release the lock.
*/
if (!dropIndexStatement->concurrent)
{
AcquireDistributedLockOnRelations(list_make1(rangeVar), lockmode, 0);
}
Oid relationId = IndexGetRelation(indexId, false);
bool isCitusRelation = IsCitusTable(relationId);
if (isCitusRelation)

View File

@ -68,8 +68,9 @@ step s2-begin: BEGIN;
step s1-drop: DROP TABLE drop_hash;
step s2-ddl-create-index: CREATE INDEX drop_hash_index ON drop_hash(id); <waiting ...>
step s1-commit: COMMIT;
s2: WARNING: relation "drop_tests.drop_hash" does not exist
step s2-ddl-create-index: <... completed>
ERROR: relation "drop_hash" does not exist
ERROR: failure on connection marked as essential: localhost:xxxxx
step s2-commit: COMMIT;
step s1-select-count: SELECT COUNT(*) FROM drop_hash;
ERROR: relation "drop_hash" does not exist

View File

@ -140,7 +140,7 @@ step s2-begin:
step s2-index:
CREATE INDEX test_index ON test_table(column1);
ERROR: must be owner of table test_table
ERROR: permission denied for table test_table
step s1-insert:
UPDATE test_table SET column2 = 1;