-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UnsupportedResultException: The result contains the unsupported data type regclass #544
Comments
I get this error when I update past when using the AWS RDS DATA API.
|
fwiw seems the issue is this SQL query: `SELECT a.attrelid::regclass::text, a.attname, is_nullable, a.attndims as array_dimensions
, CASE WHEN a.atttypid = ANY ('{int,int8,int2}'::regtype[])
AND EXISTS (
SELECT FROM pg_attrdef ad
WHERE ad.adrelid = a.attrelid
AND ad.adnum = a.attnum
AND pg_get_expr(ad.adbin, ad.adrelid)
= 'nextval('''
|| (pg_get_serial_sequence (a.attrelid::regclass::text
, a.attname))::regclass
|| '''::regclass)'
)
THEN CASE a.atttypid
WHEN 'int'::regtype THEN 'serial'
WHEN 'int8'::regtype THEN 'bigserial'
WHEN 'int2'::regtype THEN 'smallserial'
END
ELSE format_type(a.atttypid, a.atttypmod)
END AS data_type, INFORMATION_SCHEMA.COLUMNS.table_name, ns.nspname as type_schema,
pg_get_serial_sequence('"${tableSchema}"."${tableName}"', a.attname)::regclass as seq_name, INFORMATION_SCHEMA.COLUMNS.column_name,
INFORMATION_SCHEMA.COLUMNS.column_default, INFORMATION_SCHEMA.COLUMNS.data_type as additional_dt,
INFORMATION_SCHEMA.COLUMNS.udt_name as enum_name,
INFORMATION_SCHEMA.COLUMNS.is_generated, generation_expression,
INFORMATION_SCHEMA.COLUMNS.is_identity,INFORMATION_SCHEMA.COLUMNS.identity_generation,
INFORMATION_SCHEMA.COLUMNS.identity_start, INFORMATION_SCHEMA.COLUMNS.identity_increment,
INFORMATION_SCHEMA.COLUMNS.identity_maximum, INFORMATION_SCHEMA.COLUMNS.identity_minimum,
INFORMATION_SCHEMA.COLUMNS.identity_cycle
FROM pg_attribute a
JOIN INFORMATION_SCHEMA.COLUMNS ON INFORMATION_SCHEMA.COLUMNS.column_name = a.attname
JOIN pg_type t ON t.oid = a.atttypid LEFT JOIN pg_namespace ns ON ns.oid = t.typnamespace
WHERE a.attrelid = '"${tableSchema}"."${tableName}"'::regclass and INFORMATION_SCHEMA.COLUMNS.table_name = '${tableName}' and INFORMATION_SCHEMA.COLUMNS.table_schema = '${tableSchema}'
AND a.attnum > 0
AND NOT a.attisdropped
ORDER BY a.attnum;` Able to pass by changing it to `SELECT a.attname,
INFORMATION_SCHEMA.COLUMNS.is_nullable,
a.attndims as array_dimensions,
CASE
WHEN t.typname = 'int4' AND EXISTS (
SELECT 1 FROM pg_attrdef ad
WHERE ad.adrelid = a.attrelid
AND ad.adnum = a.attnum
AND pg_get_expr(ad.adbin, ad.adrelid) LIKE 'nextval%'
) THEN 'serial'
WHEN t.typname = 'int8' AND EXISTS (
SELECT 1 FROM pg_attrdef ad
WHERE ad.adrelid = a.attrelid
AND ad.adnum = a.attnum
AND pg_get_expr(ad.adbin, ad.adrelid) LIKE 'nextval%'
) THEN 'bigserial'
WHEN t.typname = 'int2' AND EXISTS (
SELECT 1 FROM pg_attrdef ad
WHERE ad.adrelid = a.attrelid
AND ad.adnum = a.attnum
AND pg_get_expr(ad.adbin, ad.adrelid) LIKE 'nextval%'
) THEN 'smallserial'
ELSE format_type(a.atttypid, a.atttypmod)
END AS data_type,
INFORMATION_SCHEMA.COLUMNS.table_name,
ns.nspname as type_schema,
INFORMATION_SCHEMA.COLUMNS.column_name,
INFORMATION_SCHEMA.COLUMNS.column_default,
INFORMATION_SCHEMA.COLUMNS.data_type as additional_dt,
INFORMATION_SCHEMA.COLUMNS.udt_name as enum_name,
INFORMATION_SCHEMA.COLUMNS.is_generated,
INFORMATION_SCHEMA.COLUMNS.generation_expression,
INFORMATION_SCHEMA.COLUMNS.is_identity,
INFORMATION_SCHEMA.COLUMNS.identity_generation,
INFORMATION_SCHEMA.COLUMNS.identity_start,
INFORMATION_SCHEMA.COLUMNS.identity_increment,
INFORMATION_SCHEMA.COLUMNS.identity_maximum,
INFORMATION_SCHEMA.COLUMNS.identity_minimum,
INFORMATION_SCHEMA.COLUMNS.identity_cycle
FROM pg_attribute a
JOIN INFORMATION_SCHEMA.COLUMNS
ON INFORMATION_SCHEMA.COLUMNS.column_name = a.attname
JOIN pg_type t ON t.oid = a.atttypid
LEFT JOIN pg_namespace ns ON ns.oid = t.typnamespace
WHERE a.attrelid = (SELECT oid FROM pg_class WHERE relname = '${tableName}' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '${tableSchema}'))
AND INFORMATION_SCHEMA.COLUMNS.table_name = '${tableName}'
AND INFORMATION_SCHEMA.COLUMNS.table_schema = '${tableSchema}'
AND a.attnum > 0
AND NOT a.attisdropped
ORDER BY a.attnum;` edit: didn’t realize drizzle-kit is open source now, above refers to this query https://github.com/drizzle-team/drizzle-orm/blob/main/drizzle-kit/src/serializer/pgSerializer.ts#L723 |
Might be as simple as pg_get_serial_sequence('"${tableSchema}"."${tableName}"', a.attname)::regclass as seq_name, INFORMATION_SCHEMA.COLUMNS.column_name, pg_get_serial_sequence('"${tableSchema}"."${tableName}"', a.attname) as seq_name, INFORMATION_SCHEMA.COLUMNS.column_name, on Not sure if there are consequences to this or if this is valid. |
This issue may be in the wrong place, I opened an issue here: drizzle-team/drizzle-orm#2982 I also did some testing and I'm pretty sure the breaking change was introduced on
around July 10th. You can downgrade to
which is the next-highest 'named-release' until this is resolved |
Seemingly after drizzle-kit version
0.22.8
runningdrizzle-kit push
results inUnsupportedResultException: The result contains the unsupported data type regclass
Using sst ion with Postgres and drizzle aws-data-api.
The text was updated successfully, but these errors were encountered: