ydb-platform / ydb

YDB is an open source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions
https://ydb.tech
Apache License 2.0
4k stars 565 forks source link

[pg] Fix INTERNAL ERROR for psql `\d` command - list tables #1735

Closed rekby closed 8 months ago

rekby commented 9 months ago

Reproduce:

  1. Run local_ydb with postgres experiment enabled https://github.com/ydb-platform/ydb/wiki/Local-run-postgres-tests
  2. Connect to YDB with psql: psql postgres://root:1234@localhost:5432/local
  3. echo '\d' | psql postgres://root:1234@localhost:5432/local
Query from psql

``` SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_catalog.pg_am am ON am.oid = c.relam WHERE c.relkind IN ('r','p','v','m','S','f','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND n.nspname <> 'information_schema' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; ```

Error

``` Status: INTERNAL_ERROR Issues:

: Fatal: ydb/library/yql/parser/pg_wrapper/comp_factory.cpp:456: Condition violated: `f', code: 1
: Error: Query invalidated on scheme/internal error., code: 2019 ```

vitstn commented 9 months ago

with PR:

local=> \d Did not find any relations.