Преглед изворни кода

simpler PostgreSQL table lookup query, fixes #1361

El RIDO пре 2 година
родитељ
комит
e0bca0d4dc
2 измењених фајлова са 3 додато и 12 уклоњено
  1. 1 0
      CHANGELOG.md
  2. 2 12
      lib/Data/Database.php

+ 1 - 0
CHANGELOG.md

@@ -3,6 +3,7 @@
 ## 1.7.4 (not yet released)
 ## 1.7.4 (not yet released)
 * CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
 * CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
 * CHANGED: Enable strict type checking in PHP (#1350)
 * CHANGED: Enable strict type checking in PHP (#1350)
+* CHANGED: Simpler PostgreSQL table lookup query (#1361)
 * FIXED: Reset password input field on creation of new paste (#1194)
 * FIXED: Reset password input field on creation of new paste (#1194)
 * FIXED: Allow database schema upgrade to skip versions (#1343)
 * FIXED: Allow database schema upgrade to skip versions (#1343)
 * FIXED: `bootstrap5` dark mode toggle unset on dark browser preference (#1340)
 * FIXED: `bootstrap5` dark mode toggle unset on dark browser preference (#1340)

+ 2 - 12
lib/Data/Database.php

@@ -598,18 +598,8 @@ class Database extends AbstractData
                 $sql = 'SELECT table_name FROM all_tables';
                 $sql = 'SELECT table_name FROM all_tables';
                 break;
                 break;
             case 'pgsql':
             case 'pgsql':
-                $sql = 'SELECT c."relname" AS "table_name" '
-                     . 'FROM "pg_class" c, "pg_user" u '
-                     . 'WHERE c."relowner" = u."usesysid" AND c."relkind" = \'r\' '
-                     . 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") '
-                     . "AND c.\"relname\" !~ '^(pg_|sql_)' "
-                     . 'UNION '
-                     . 'SELECT c."relname" AS "table_name" '
-                     . 'FROM "pg_class" c '
-                     . "WHERE c.\"relkind\" = 'r' "
-                     . 'AND NOT EXISTS (SELECT 1 FROM "pg_views" WHERE "viewname" = c."relname") '
-                     . 'AND NOT EXISTS (SELECT 1 FROM "pg_user" WHERE "usesysid" = c."relowner") '
-                     . "AND c.\"relname\" !~ '^pg_'";
+                $sql = 'SELECT "tablename" FROM "pg_catalog"."pg_tables" '
+                     . 'WHERE "schemaname" NOT IN (\'pg_catalog\', \'information_schema\')';
                 break;
                 break;
             case 'sqlite':
             case 'sqlite':
                 $sql = 'SELECT "name" FROM "sqlite_master" WHERE "type"=\'table\' '
                 $sql = 'SELECT "name" FROM "sqlite_master" WHERE "type"=\'table\' '