Skip to content

Commit a49bb41

Browse files
committed
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.
1 parent 564f061 commit a49bb41

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

META.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "pg_repack",
33
"abstract": "PostgreSQL module for data reorganization",
44
"description": "Reorganize tables in PostgreSQL databases with minimal locks",
5-
"version": "1.3.0",
5+
"version": "1.3.1-pg94",
66
"maintainer": [
77
"Josh Kupershmidt <schmiddy@gmail.com>",
88
"Daniele Varrazzo <daniele.varrazzo@gmail.com>",
@@ -14,7 +14,7 @@
1414
"provides": {
1515
"pg_repack": {
1616
"file": "lib/pg_repack.sql",
17-
"version": "1.3.0",
17+
"version": "1.3.1-pg94",
1818
"abstract": "Reorganize tables in PostgreSQL databases with minimal locks"
1919
}
2020
},

lib/pg_repack.sql.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,10 @@ CREATE VIEW repack.tables AS
172172
SELECT R.oid::regclass AS relname,
173173
R.oid AS relid,
174174
R.reltoastrelid AS reltoastrelid,
175-
CASE WHEN R.reltoastrelid = 0 THEN 0 ELSE (SELECT reltoastidxid FROM pg_class WHERE oid = R.reltoastrelid) END AS reltoastidxid,
175+
CASE WHEN R.reltoastrelid = 0 THEN 0 ELSE (
176+
SELECT indexrelid FROM pg_index
177+
WHERE indrelid = R.reltoastrelid
178+
AND indisvalid) END AS reltoastidxid,
176179
N.nspname AS schemaname,
177180
PK.indexrelid AS pkid,
178181
CK.indexrelid AS ckid,

lib/repack.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -784,12 +784,12 @@ repack_swap(PG_FUNCTION_ARGS)
784784
/* swap relfilenode and dependencies for tables. */
785785
values[0] = ObjectIdGetDatum(oid);
786786
execute_with_args(SPI_OK_SELECT,
787-
"SELECT X.reltoastrelid, TX.reltoastidxid, X.relowner,"
788-
" Y.oid, Y.reltoastrelid, TY.reltoastidxid, Y.relowner"
789-
" FROM pg_catalog.pg_class X LEFT JOIN pg_catalog.pg_class TX"
790-
" ON X.reltoastrelid = TX.oid,"
791-
" pg_catalog.pg_class Y LEFT JOIN pg_catalog.pg_class TY"
792-
" ON Y.reltoastrelid = TY.oid"
787+
"SELECT X.reltoastrelid, TX.indexrelid, X.relowner,"
788+
" Y.oid, Y.reltoastrelid, TY.indexrelid, Y.relowner"
789+
" FROM pg_catalog.pg_class X LEFT JOIN pg_catalog.pg_index TX"
790+
" ON X.reltoastrelid = TX.indrelid AND TX.indisvalid,"
791+
" pg_catalog.pg_class Y LEFT JOIN pg_catalog.pg_index TY"
792+
" ON Y.reltoastrelid = TY.indrelid AND TY.indisvalid"
793793
" WHERE X.oid = $1"
794794
" AND Y.oid = ('repack.table_' || X.oid)::regclass",
795795
1, argtypes, values, nulls);

0 commit comments

Comments
 (0)