Skip to content

Commit

Permalink
fix: Add correct join clause for postgres enum queries
Browse files Browse the repository at this point in the history
Currently, the query is generating tons of irrelevant results since
missing the join criteria for pg_class table. This commit adds the
correct join criteria between the pg_class table and pg_type table.
  • Loading branch information
zhany committed Jan 6, 2022
1 parent c76def0 commit e1fd7c6
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
10 changes: 7 additions & 3 deletions gen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,10 @@ ENDSQL
COMMENT='{{ . }} is a enum.'
$XOBIN query $PGDB -M -B -2 -T Enum -F PostgresEnums --type-comment "$COMMENT" -o $DEST $@ << ENDSQL
SELECT
c.relname AS table_name, t.typname::varchar AS enum_name
FROM pg_class c, pg_type t
DISTINCT c.relname AS table_name, t.typname::varchar AS enum_name
FROM pg_class c
JOIN pg_attribute a ON c.oid = a.attrelid
JOIN pg_type t on a.atttypid = t.oid
JOIN ONLY pg_namespace n ON n.oid = t.typnamespace
JOIN ONLY pg_enum e ON t.oid = e.enumtypid
WHERE n.nspname = %%schema string%%
Expand All @@ -74,7 +76,9 @@ $XOBIN query $PGDB -M -B -2 -T EnumValue -F PostgresEnumValues --type-comment "$
SELECT
e.enumlabel::varchar AS enum_value,
e.enumsortorder::integer AS const_value
FROM pg_class c, pg_type t
FROM pg_class c
JOIN pg_attribute a ON c.oid = a.attrelid
JOIN pg_type t on a.atttypid = t.oid
JOIN ONLY pg_namespace n ON n.oid = t.typnamespace
LEFT JOIN pg_enum e ON t.oid = e.enumtypid
WHERE n.nspname = %%schema string%%
Expand Down
6 changes: 4 additions & 2 deletions models/enum.xo.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion models/enumvalue.xo.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit e1fd7c6

Please sign in to comment.