Power BI startup queries

未关闭
#218 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
postgresql, rust
领域
backend, databases

调研方向

该 issue 提供了 PostgreSQL 设置 SQL 和 Power BI 启动日志,但没有指明任何仓库文件或测试。复现连接查询和元数据查询,从报告的 DISCARD ALL 失败开始;当 Power BI 能够打开 PostgreSQL 数据源、检查 users 表并成功加载其数据时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

module:pg_catalog

Hi @sunng87 , Below is the DDL/DML and the queries Power BI executes when utilizing a Postgres database using the Postgres npgsql driver. FYI, I believe it was the DISCARD ALL that caused the failure I encountered, but there may be other problems lurking below.

Initial Setup
-- Create table
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    age INTEGER,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Insert sample data
INSERT INTO users (username, email, age) 
VALUES ('john_doe', '[email protected]', 28);

INSERT INTO users (username, email, age) 
VALUES ('jane_smith', '[email protected]', 34);

INSERT INTO users (username, email, age) 
VALUES ('bob_jones', '[email protected]', 22);

INSERT INTO users (username, email, age) 
VALUES ('alice_williams', '[email protected]', 45);

INSERT INTO users (username, email, age) 
VALUES ('charlie_brown', '[email protected]', 31);

SELECT * FROM USERS;
Power BI Open Connection to Postgres Datasource using npgsql. Clicked on Select Related Tables and then Load
2025-10-06 13:14:24.852 UTC [52] LOG:  execute <unnamed>:
        /*** Load all supported types ***/
        SELECT ns.nspname, a.typname, a.oid, a.typrelid, a.typbasetype,
        CASE WHEN pg_proc.proname='array_recv' THEN 'a' ELSE a.typtype END AS type,
        CASE
          WHEN pg_proc.proname='array_recv' THEN a.typelem
          WHEN a.typtype='r' THEN rngsubtype
          ELSE 0
        END AS elemoid,
        CASE
          WHEN pg_proc.proname IN ('array_recv','oidvectorrecv') THEN 3    /* Arrays last */
          WHEN a.typtype='r' THEN 2                                        /* Ranges before */
          WHEN a.typtype='d' THEN 1                                        /* Domains before */
          ELSE 0                                                           /* Base types first */
        END AS ord
        FROM pg_type AS a
        JOIN pg_namespace AS ns ON (ns.oid = a.typnamespace)
        JOIN pg_proc ON pg_proc.oid = a.typreceive
        LEFT OUTER JOIN pg_class AS cls ON (cls.oid = a.typrelid)
        LEFT OUTER JOIN pg_type AS b ON (b.oid = a.typelem)
        LEFT OUTER JOIN pg_class AS elemcls ON (elemcls.oid = b.typrelid)
        LEFT OUTER JOIN pg_range ON (pg_range.rngtypid = a.oid)
        WHERE
          a.typtype IN ('b', 'r', 'e', 'd') OR         /* Base, range, enum, domain */
          (a.typtype = 'c' AND cls.relkind='c') OR /* User-defined free-standing composites (not table composites) by default */
          (pg_proc.proname='array_recv' AND (
            b.typtype IN ('b', 'r', 'e', 'd') OR       /* Array of base, range, enum, domain */
            (b.typtype = 'p' AND b.typname IN ('record', 'void')) OR /* Arrays of special supported pseudo-types */
            (b.typtype = 'c' AND elemcls.relkind='c')  /* Array of user-defined free-standing composites (not table composites) */
          )) OR
          (a.typtype = 'p' AND a.typname IN ('record', 'void'))  /* Some special supported pseudo-types */
        ORDER BY ord
2025-10-06 13:14:24.855 UTC [52] LOG:  execute <unnamed>: /*** Load field definitions for (free-standing) composite types ***/
        SELECT typ.oid, att.attname, att.atttypid
        FROM pg_type AS typ
        JOIN pg_namespace AS ns ON (ns.oid = typ.typnamespace)
        JOIN pg_class AS cls ON (cls.oid = typ.typrelid)
        JOIN pg_attribute AS att ON (att.attrelid = typ.typrelid)
        WHERE
          (typ.typtype = 'c' AND cls.relkind='c') AND
          attnum > 0 AND     /* Don't load system attributes */
          NOT attisdropped
        ORDER BY typ.oid, att.attnum
2025-10-06 13:14:24.855 UTC [52] LOG:  execute <unnamed>: /*** Load enum fields ***/
        SELECT pg_type.oid, enumlabel
        FROM pg_enum
        JOIN pg_type ON pg_type.oid=enumtypid
        ORDER BY oid, enumsortorder
2025-10-06 13:14:25.093 UTC [52] LOG:  execute <unnamed>: select character_set_name from INFORMATION_SCHEMA.character_sets
2025-10-06 13:14:25.128 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:14:25.130 UTC [52] LOG:  execute <unnamed>: select TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
        from INFORMATION_SCHEMA.tables
        where TABLE_SCHEMA not in ('information_schema', 'pg_catalog')
        order by TABLE_SCHEMA, TABLE_NAME
2025-10-06 13:14:28.960 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:14:28.961 UTC [52] LOG:  execute <unnamed>: select character_set_name from INFORMATION_SCHEMA.character_sets
2025-10-06 13:14:28.962 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:14:28.963 UTC [52] LOG:  execute <unnamed>: select TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
        from INFORMATION_SCHEMA.tables
        where TABLE_SCHEMA not in ('information_schema', 'pg_catalog')
        order by TABLE_SCHEMA, TABLE_NAME
2025-10-06 13:15:11.450 UTC [30] LOG:  checkpoint starting: time
2025-10-06 13:15:12.100 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:12.108 UTC [52] LOG:  execute <unnamed>: select COLUMN_NAME, ORDINAL_POSITION, IS_NULLABLE, case when (data_type like '%unsigned%') then DATA_TYPE || ' unsigned' else DATA_TYPE end as DATA_TYPE
        from INFORMATION_SCHEMA.columns
        where TABLE_SCHEMA = 'public' and TABLE_NAME = 'users'
        order by TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
2025-10-06 13:15:12.135 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:12.141 UTC [52] LOG:  execute <unnamed>: select
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.TABLE_SCHEMA AS FK_TABLE_SCHEMA,
            fkcol.TABLE_NAME AS FK_TABLE_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || fkcol.TABLE_NAME || '_' || 'users' || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where pkcol.TABLE_SCHEMA = 'public' and pkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:12.146 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:12.149 UTC [52] LOG:  execute <unnamed>: select
            pkcol.TABLE_SCHEMA AS PK_TABLE_SCHEMA,
            pkcol.TABLE_NAME AS PK_TABLE_NAME,
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || 'users' || '_' || pkcol.TABLE_NAME || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where fkcol.TABLE_SCHEMA = 'public' and fkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:12.188 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:12.190 UTC [52] LOG:  execute <unnamed>: select i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME as INDEX_NAME, ii.COLUMN_NAME, ii.ORDINAL_POSITION, case when i.CONSTRAINT_TYPE = 'PRIMARY KEY' then 'Y' else 'N' end as PRIMARY_KEY
        from INFORMATION_SCHEMA.table_constraints i inner join INFORMATION_SCHEMA.key_column_usage ii on i.CONSTRAINT_SCHEMA = ii.CONSTRAINT_SCHEMA and i.CONSTRAINT_NAME = ii.CONSTRAINT_NAME and i.TABLE_SCHEMA = ii.TABLE_SCHEMA and i.TABLE_NAME = ii.TABLE_NAME
        where i.TABLE_SCHEMA = 'public' and i.TABLE_NAME = 'users'
        and i.CONSTRAINT_TYPE in ('PRIMARY KEY', 'UNIQUE')
        order by i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME, ii.TABLE_SCHEMA, ii.TABLE_NAME, ii.ORDINAL_POSITION
2025-10-06 13:15:12.221 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:12.221 UTC [52] LOG:  execute <unnamed>: select "$Ordered"."id",
            "$Ordered"."username",
            "$Ordered"."email",
            "$Ordered"."age",
            "$Ordered"."created_at"
        from "public"."users" "$Ordered"
        order by "$Ordered"."id"
        limit 4096
2025-10-06 13:15:20.407 UTC [30] LOG:  checkpoint complete: wrote 89 buffers (0.5%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=8.932 s, sync=0.015 s, total=8.958 s; sync files=49, longest=0.003 s, average=0.001 s; distance=477 kB, estimate=477 kB; lsn=0/17D6E28, redo lsn=0/17D6D98
2025-10-06 13:15:42.727 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:42.729 UTC [52] LOG:  execute <unnamed>: select COLUMN_NAME, ORDINAL_POSITION, IS_NULLABLE, case when (data_type like '%unsigned%') then DATA_TYPE || ' unsigned' else DATA_TYPE end as DATA_TYPE
        from INFORMATION_SCHEMA.columns
        where TABLE_SCHEMA = 'public' and TABLE_NAME = 'users'
        order by TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
2025-10-06 13:15:42.731 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:42.733 UTC [52] LOG:  execute <unnamed>: select
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.TABLE_SCHEMA AS FK_TABLE_SCHEMA,
            fkcol.TABLE_NAME AS FK_TABLE_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || fkcol.TABLE_NAME || '_' || 'users' || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where pkcol.TABLE_SCHEMA = 'public' and pkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:42.735 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:42.737 UTC [52] LOG:  execute <unnamed>: select
            pkcol.TABLE_SCHEMA AS PK_TABLE_SCHEMA,
            pkcol.TABLE_NAME AS PK_TABLE_NAME,
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || 'users' || '_' || pkcol.TABLE_NAME || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where fkcol.TABLE_SCHEMA = 'public' and fkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:57.748 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.749 UTC [52] LOG:  execute <unnamed>: select character_set_name from INFORMATION_SCHEMA.character_sets
2025-10-06 13:15:57.750 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.751 UTC [52] LOG:  execute <unnamed>: select TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
        from INFORMATION_SCHEMA.tables
        where TABLE_SCHEMA not in ('information_schema', 'pg_catalog')
        order by TABLE_SCHEMA, TABLE_NAME
2025-10-06 13:15:57.753 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.754 UTC [52] LOG:  execute <unnamed>: select COLUMN_NAME, ORDINAL_POSITION, IS_NULLABLE, case when (data_type like '%unsigned%') then DATA_TYPE || ' unsigned' else DATA_TYPE end as DATA_TYPE
        from INFORMATION_SCHEMA.columns
        where TABLE_SCHEMA = 'public' and TABLE_NAME = 'users'
        order by TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
2025-10-06 13:15:57.757 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.759 UTC [52] LOG:  execute <unnamed>: select
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.TABLE_SCHEMA AS FK_TABLE_SCHEMA,
            fkcol.TABLE_NAME AS FK_TABLE_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || fkcol.TABLE_NAME || '_' || 'users' || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where pkcol.TABLE_SCHEMA = 'public' and pkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:57.761 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.763 UTC [52] LOG:  execute <unnamed>: select
            pkcol.TABLE_SCHEMA AS PK_TABLE_SCHEMA,
            pkcol.TABLE_NAME AS PK_TABLE_NAME,
            pkcol.COLUMN_NAME as PK_COLUMN_NAME,
            fkcol.COLUMN_NAME as FK_COLUMN_NAME,
            fkcol.ORDINAL_POSITION as ORDINAL,
            fkcon.CONSTRAINT_SCHEMA || '_' || 'users' || '_' || pkcol.TABLE_NAME || '_' || fkcon.CONSTRAINT_NAME as FK_NAME
        from
            (select distinct constraint_catalog, constraint_schema, unique_constraint_schema, constraint_name, unique_constraint_name
                from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS) fkcon
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkcol
                on fkcon.CONSTRAINT_SCHEMA = fkcol.CONSTRAINT_SCHEMA
                and fkcon.CONSTRAINT_NAME = fkcol.CONSTRAINT_NAME
                inner join
            INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkcol
                on fkcon.UNIQUE_CONSTRAINT_SCHEMA = pkcol.CONSTRAINT_SCHEMA
                and fkcon.UNIQUE_CONSTRAINT_NAME = pkcol.CONSTRAINT_NAME
        where fkcol.TABLE_SCHEMA = 'public' and fkcol.TABLE_NAME = 'users'
                and pkcol.ORDINAL_POSITION = fkcol.ORDINAL_POSITION
        order by FK_NAME, fkcol.ORDINAL_POSITION
2025-10-06 13:15:57.772 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:15:57.774 UTC [52] LOG:  execute <unnamed>: select i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME as INDEX_NAME, ii.COLUMN_NAME, ii.ORDINAL_POSITION, case when i.CONSTRAINT_TYPE = 'PRIMARY KEY' then 'Y' else 'N' end as PRIMARY_KEY
        from INFORMATION_SCHEMA.table_constraints i inner join INFORMATION_SCHEMA.key_column_usage ii on i.CONSTRAINT_SCHEMA = ii.CONSTRAINT_SCHEMA and i.CONSTRAINT_NAME = ii.CONSTRAINT_NAME and i.TABLE_SCHEMA = ii.TABLE_SCHEMA and i.TABLE_NAME = ii.TABLE_NAME
        where i.TABLE_SCHEMA = 'public' and i.TABLE_NAME = 'users'
        and i.CONSTRAINT_TYPE in ('PRIMARY KEY', 'UNIQUE')
        order by i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME, ii.TABLE_SCHEMA, ii.TABLE_NAME, ii.ORDINAL_POSITION
2025-10-06 13:16:01.618 UTC [56] LOG:  execute <unnamed>:
        /*** Load all supported types ***/
        SELECT ns.nspname, a.typname, a.oid, a.typrelid, a.typbasetype,
        CASE WHEN pg_proc.proname='array_recv' THEN 'a' ELSE a.typtype END AS type,
        CASE
          WHEN pg_proc.proname='array_recv' THEN a.typelem
          WHEN a.typtype='r' THEN rngsubtype
          ELSE 0
        END AS elemoid,
        CASE
          WHEN pg_proc.proname IN ('array_recv','oidvectorrecv') THEN 3    /* Arrays last */
          WHEN a.typtype='r' THEN 2                                        /* Ranges before */
          WHEN a.typtype='d' THEN 1                                        /* Domains before */
          ELSE 0                                                           /* Base types first */
        END AS ord
        FROM pg_type AS a
        JOIN pg_namespace AS ns ON (ns.oid = a.typnamespace)
        JOIN pg_proc ON pg_proc.oid = a.typreceive
        LEFT OUTER JOIN pg_class AS cls ON (cls.oid = a.typrelid)
        LEFT OUTER JOIN pg_type AS b ON (b.oid = a.typelem)
        LEFT OUTER JOIN pg_class AS elemcls ON (elemcls.oid = b.typrelid)
        LEFT OUTER JOIN pg_range ON (pg_range.rngtypid = a.oid)
        WHERE
          a.typtype IN ('b', 'r', 'e', 'd') OR         /* Base, range, enum, domain */
          (a.typtype = 'c' AND cls.relkind='c') OR /* User-defined free-standing composites (not table composites) by default */
          (pg_proc.proname='array_recv' AND (
            b.typtype IN ('b', 'r', 'e', 'd') OR       /* Array of base, range, enum, domain */
            (b.typtype = 'p' AND b.typname IN ('record', 'void')) OR /* Arrays of special supported pseudo-types */
            (b.typtype = 'c' AND elemcls.relkind='c')  /* Array of user-defined free-standing composites (not table composites) */
          )) OR
          (a.typtype = 'p' AND a.typname IN ('record', 'void'))  /* Some special supported pseudo-types */
        ORDER BY ord
2025-10-06 13:16:01.622 UTC [56] LOG:  execute <unnamed>: /*** Load field definitions for (free-standing) composite types ***/
        SELECT typ.oid, att.attname, att.atttypid
        FROM pg_type AS typ
        JOIN pg_namespace AS ns ON (ns.oid = typ.typnamespace)
        JOIN pg_class AS cls ON (cls.oid = typ.typrelid)
        JOIN pg_attribute AS att ON (att.attrelid = typ.typrelid)
        WHERE
          (typ.typtype = 'c' AND cls.relkind='c') AND
          attnum > 0 AND     /* Don't load system attributes */
          NOT attisdropped
        ORDER BY typ.oid, att.attnum
2025-10-06 13:16:01.623 UTC [56] LOG:  execute <unnamed>: /*** Load enum fields ***/
        SELECT pg_type.oid, enumlabel
        FROM pg_enum
        JOIN pg_type ON pg_type.oid=enumtypid
        ORDER BY oid, enumsortorder
2025-10-06 13:16:01.860 UTC [56] LOG:  execute <unnamed>: select i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME as INDEX_NAME, ii.COLUMN_NAME, ii.ORDINAL_POSITION, case when i.CONSTRAINT_TYPE = 'PRIMARY KEY' then 'Y' else 'N' end as PRIMARY_KEY
        from INFORMATION_SCHEMA.table_constraints i inner join INFORMATION_SCHEMA.key_column_usage ii on i.CONSTRAINT_SCHEMA = ii.CONSTRAINT_SCHEMA and i.CONSTRAINT_NAME = ii.CONSTRAINT_NAME and i.TABLE_SCHEMA = ii.TABLE_SCHEMA and i.TABLE_NAME = ii.TABLE_NAME
        where i.TABLE_SCHEMA = 'public' and i.TABLE_NAME = 'users'
        and i.CONSTRAINT_TYPE in ('PRIMARY KEY', 'UNIQUE')
        order by i.CONSTRAINT_SCHEMA || '_' || i.CONSTRAINT_NAME, ii.TABLE_SCHEMA, ii.TABLE_NAME, ii.ORDINAL_POSITION
2025-10-06 13:16:01.926 UTC [56] LOG:  statement: DISCARD ALL
2025-10-06 13:16:01.927 UTC [56] LOG:  execute <unnamed>: select "$Ordered"."id",
            "$Ordered"."username",
            "$Ordered"."email",
            "$Ordered"."age",
            "$Ordered"."created_at"
        from "public"."users" "$Ordered"
        order by "$Ordered"."id"
2025-10-06 13:21:02.112 UTC [56] LOG:  statement: DISCARD ALL
2025-10-06 13:21:05.399 UTC [52] LOG:  statement: DISCARD ALL
2025-10-06 13:21:57.952 UTC [69] LOG:  execute <unnamed>: select character_set_name from INFORMATION_SCHEMA.character_sets
2025-10-06 13:21:57.953 UTC [69] LOG:  statement: DISCARD ALL
2025-10-06 13:21:57.955 UTC [69] LOG:  execute <unnamed>: select TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
        from INFORMATION_SCHEMA.tables
        where TABLE_SCHEMA not in ('information_schema', 'pg_catalog')
        order by TABLE_SCHEMA, TABLE_NAME

Please let me know if you need any additional information.

Thanks,
Chris

Originally posted by @chrisfw in #202

主要语言
Rust
星标
165
派生
47
平均合并
8 小时 52 分钟
30 天内合并 PR
12

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

datafusion-contrib/datafusion-postgres 的其他 Issue

查看 datafusion-contrib/datafusion-postgres 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。