I noticed this while migrating a mssql databse with many custom schemas to Postgres. The resulting columns in Postgres weren't SERIAL.
[x] pgloader --version
3.6.9 (this docker image because the db is on Azure), but I think I already know the cause which is still an issue in latest master.
[ ] did you test a fresh compile from the source tree?
No (first try failed because I'm on ARM), but as mentioned above can reproduce by running the query that is in master.
[X] did you search for other similar issues?
[x] how can I reproduce the bug?
Set up a mssql instance (e.g. using docker: docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Secret123" -p 1433:1433 --name repro-mssql -d mcr.microsoft.com/mssql/server:2019-latest)
Run these queries:
CREATE SCHEMA pg_loader_test;
CREATE TABLE pg_loader_test.MyTable (
id INT IDENTITY(1,1) PRIMARY KEY
);
select c.TABLE_SCHEMA,
c.TABLE_NAME,
c.COLUMN_NAME,
c.DATA_TYPE,
c.IS_NULLABLE,
COLUMNPROPERTY(object_id(c.TABLE_NAME), c.COLUMN_NAME, 'IsIdentity') AS IsIdentity
from INFORMATION_SCHEMA.COLUMNS c
join INFORMATION_SCHEMA.TABLES t
on c.TABLE_SCHEMA = t.TABLE_SCHEMA
and c.TABLE_NAME = t.TABLE_NAME
where c.TABLE_SCHEMA = 'pg_loader_test'
=> IsIdentity is NULL, but expected is 1.
Replacing the selection with COLUMNPROPERTY(OBJECT_ID(c.TABLE_SCHEMA + '.' + c.TABLE_NAME), c.COLUMN_NAME, 'IsIdentity') AS IsIdentity seems to work as expected.
I noticed this while migrating a mssql databse with many custom schemas to Postgres. The resulting columns in Postgres weren't
SERIAL
.[x] pgloader --version
3.6.9 (this docker image because the db is on Azure), but I think I already know the cause which is still an issue in latest master.
[ ] did you test a fresh compile from the source tree?
No (first try failed because I'm on ARM), but as mentioned above can reproduce by running the query that is in master.
[X] did you search for other similar issues?
[x] how can I reproduce the bug?
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Secret123" -p 1433:1433 --name repro-mssql -d mcr.microsoft.com/mssql/server:2019-latest
)=> IsIdentity is
NULL
, but expected is 1.Replacing the selection with
COLUMNPROPERTY(OBJECT_ID(c.TABLE_SCHEMA + '.' + c.TABLE_NAME), c.COLUMN_NAME, 'IsIdentity') AS IsIdentity
seems to work as expected.