Dropped use of reltoastidxid field
The same index can be reached going through reltoastrelid and pg_index.indrelid: checked at least on PG 9.1.
This commit is contained in:
parent
564f061beb
commit
a49bb41822
@ -2,7 +2,7 @@
|
||||
"name": "pg_repack",
|
||||
"abstract": "PostgreSQL module for data reorganization",
|
||||
"description": "Reorganize tables in PostgreSQL databases with minimal locks",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1-pg94",
|
||||
"maintainer": [
|
||||
"Josh Kupershmidt <schmiddy@gmail.com>",
|
||||
"Daniele Varrazzo <daniele.varrazzo@gmail.com>",
|
||||
@ -14,7 +14,7 @@
|
||||
"provides": {
|
||||
"pg_repack": {
|
||||
"file": "lib/pg_repack.sql",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1-pg94",
|
||||
"abstract": "Reorganize tables in PostgreSQL databases with minimal locks"
|
||||
}
|
||||
},
|
||||
|
@ -172,7 +172,10 @@ CREATE VIEW repack.tables AS
|
||||
SELECT R.oid::regclass AS relname,
|
||||
R.oid AS relid,
|
||||
R.reltoastrelid AS reltoastrelid,
|
||||
CASE WHEN R.reltoastrelid = 0 THEN 0 ELSE (SELECT reltoastidxid FROM pg_class WHERE oid = R.reltoastrelid) END AS reltoastidxid,
|
||||
CASE WHEN R.reltoastrelid = 0 THEN 0 ELSE (
|
||||
SELECT indexrelid FROM pg_index
|
||||
WHERE indrelid = R.reltoastrelid
|
||||
AND indisvalid) END AS reltoastidxid,
|
||||
N.nspname AS schemaname,
|
||||
PK.indexrelid AS pkid,
|
||||
CK.indexrelid AS ckid,
|
||||
|
12
lib/repack.c
12
lib/repack.c
@ -784,12 +784,12 @@ repack_swap(PG_FUNCTION_ARGS)
|
||||
/* swap relfilenode and dependencies for tables. */
|
||||
values[0] = ObjectIdGetDatum(oid);
|
||||
execute_with_args(SPI_OK_SELECT,
|
||||
"SELECT X.reltoastrelid, TX.reltoastidxid, X.relowner,"
|
||||
" Y.oid, Y.reltoastrelid, TY.reltoastidxid, Y.relowner"
|
||||
" FROM pg_catalog.pg_class X LEFT JOIN pg_catalog.pg_class TX"
|
||||
" ON X.reltoastrelid = TX.oid,"
|
||||
" pg_catalog.pg_class Y LEFT JOIN pg_catalog.pg_class TY"
|
||||
" ON Y.reltoastrelid = TY.oid"
|
||||
"SELECT X.reltoastrelid, TX.indexrelid, X.relowner,"
|
||||
" Y.oid, Y.reltoastrelid, TY.indexrelid, Y.relowner"
|
||||
" FROM pg_catalog.pg_class X LEFT JOIN pg_catalog.pg_index TX"
|
||||
" ON X.reltoastrelid = TX.indrelid AND TX.indisvalid,"
|
||||
" pg_catalog.pg_class Y LEFT JOIN pg_catalog.pg_index TY"
|
||||
" ON Y.reltoastrelid = TY.indrelid AND TY.indisvalid"
|
||||
" WHERE X.oid = $1"
|
||||
" AND Y.oid = ('repack.table_' || X.oid)::regclass",
|
||||
1, argtypes, values, nulls);
|
||||
|
Loading…
x
Reference in New Issue
Block a user