Open akirasankun opened 4 years ago
I am not saying I can help but: can you share the table definitions both on MSSQL and PostgreSQL, as well as the encodings on both sides?
PostgreSQL en_us.utf-8 MSSQL Server collation SQL_Latin1_General_CP1_CI_AS Column Collation SQL_Latin1_General_CP850_CI_AS
Both environments connect to the same MSSQL
Is the FreeTDS config the same at both environments?
Those are the differences
Postgres 9.3
[global]
# TDS protocol version
; tds version = 4.2
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0
Postgres 12
[global]
# TDS protocol version
tds version = auto
[egServer73]
host = ntmachine.domain.com
port = 1433
tds version = 7.3
Can you adjust the config at the PostgreSQL 12 to be the same as at 9.3? (you don't need to change [egServer73]
to be [egServer70]
A I am not sure if such change will require a PostgreSQL reload.
The way I see it, there could be three suspects here: 1) Problems caused by tds_version (unlikely) 2) Changes on the PostgreSQL fdw side (FMPOV unlikely as well, but who knows, you are changing from 9.3 to 12, and that's a long way) 3) Changes on tds_fdw since 1.0.2 (that version is almost 5 years old).
But before someone starts having a look at tds_fdw
(I can try, but I am not the developer, and neither C developer or familiar with PostgreSQL internals)... let's make sure both environments are "almost" the same.
I'd also suggest another test, if you can do it: try 2.0.1
with PostgreSQL 9.3 and see if you can reproduce the issue.
Despite we don't test 9.3 at the CI anymore, it should still build.
Thanks for help, the a change not soluction the problemen.
PostgreSQL 9.3 is a production server that cannot be changed without first being consolidated for approval
I was more thing about provisioning a new 9.3 sever which is a clone of the first one, but with tds_fdw 2.0.1.
If not a clone, at least a new 9.3 server which is as similar as possible as the one where things are working, but with tds_fdw 2.0.1
I am also experiencing issues with WHERE not filtering from the foreign tables. In my case the example is field with one of two possible text values. Interestingly, when I select distinct on that field with a count, it returns 33 rows, each with one of the two distinct values, and each with some count of a chunk of records. If I select the foreign table into a new local table, WHERE and select distinct behave as expected though. Wondering if that could be a clue here.
Likewise, ORDER BY doesn't seem to function as intended.
Not using the query option seem to correct this for me. https://github.com/tds-fdw/tds_fdw/issues/195#issuecomment-504452867
Hi @GeoffMontee
I had the same problem.
tds_fdw 2.0.2 & 2.0.3 postgresql 11.11 & 14
CREATE FOREIGN TABLE public.test ( userid text NULL ) SERVER mssql_local OPTIONS (query 'SELECT userid FROM dbo.test');
select count(*) from public.test ; -- 374830 records
select count(*) from public.test where userid = '268' -- 374830, unexpected, should be 1000 ;
If is not use CTE for type casting, are there any other methods ?
Same issue here, postgresql 9.4 tds_fdw 1.0.7 works fine postgresql 15 tds_fdw 2.0.3 not filtering when the foreign table is defined by query, if the foreign table is defined by schema_name/table_name.
The workaround I found is to cast datatypes in the where clause ie: date::varchar(10) = '2023-07-01' with some castings works.
Hi, I am updating the environment and I came across the error in the where clause where the filter is not applied.
environment outdated
Microsoft SQL Server 2016 (SP2-CU4) (KB4464106) - 13.0.5233.0 (X64) CentOS Linux release 7.7.1908 (Core) Tds_fdw | 1.0.2 PostgreSQL 9.3.5
environment updated
Microsoft SQL Server 2016 (SP2-CU4) (KB4464106) - 13.0.5233.0 (X64) CentOS Linux release 7.7.1908 (Core) Tds_fdw | 2.0.1 PostgreSQL 12.2
In the outdated environment the filter works correctly and in the updated no works in all foreign tables