Created maps are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Ideally, an application written to use ODBC can connect to PostgreSQL, Oracle, or SQL Server simply by changing the configuration settings, without rewriting the application code.
: The modern standard that supports a wide range of character sets, including non-Latin alphabets and special symbols. postgresql driver odbc
Choose psqlODBC only when you need universal ODBC compatibility. For new native apps, prefer the native driver for your language. Ideally, an application written to use ODBC can
DRIVER=PostgreSQL Unicode;SERVER=localhost;PORT=5432;DATABASE=mydb;UID=user;PWD=pass;SSLMODE=require; For new native apps, prefer the native driver
| Version Branch | Status | Unicode | ANSI | |----------------|--------|---------|------| | 16.x | Current stable | ✅ | ❌ (deprecated) | | 15.x | Previous stable | ✅ | ❌ | | 13.x | Legacy | ✅ | ✅ |
| Issue | Impact | Mitigation | |-------|--------|-------------| | | Cannot use array as parameter directly | Use string representation or JSON | | Composite types (ROW) not supported | Can't bind row types | Use row::text casting | | Domain types may be stripped | Domain constraints ignored | Validate at application level | | Prepared statements can cause plan "snooping" | Marginal performance loss on very high concurrency | Set PrepareThreshold=-1 to disable | | Large NOTIFY payloads (>8000 bytes) | Truncation | Split payloads manually |
This report covers:
Ideally, an application written to use ODBC can connect to PostgreSQL, Oracle, or SQL Server simply by changing the configuration settings, without rewriting the application code.
: The modern standard that supports a wide range of character sets, including non-Latin alphabets and special symbols.
Choose psqlODBC only when you need universal ODBC compatibility. For new native apps, prefer the native driver for your language.
DRIVER=PostgreSQL Unicode;SERVER=localhost;PORT=5432;DATABASE=mydb;UID=user;PWD=pass;SSLMODE=require;
| Version Branch | Status | Unicode | ANSI | |----------------|--------|---------|------| | 16.x | Current stable | ✅ | ❌ (deprecated) | | 15.x | Previous stable | ✅ | ❌ | | 13.x | Legacy | ✅ | ✅ |
| Issue | Impact | Mitigation | |-------|--------|-------------| | | Cannot use array as parameter directly | Use string representation or JSON | | Composite types (ROW) not supported | Can't bind row types | Use row::text casting | | Domain types may be stripped | Domain constraints ignored | Validate at application level | | Prepared statements can cause plan "snooping" | Marginal performance loss on very high concurrency | Set PrepareThreshold=-1 to disable | | Large NOTIFY payloads (>8000 bytes) | Truncation | Split payloads manually |
This report covers: