- Added PostgreSQL-specific DataType subclasses and schema-diff support with
PostgresSchemaDifferfor accurate schema introspection and column comparison. (#46) - Added named-migration CLI subcommand with --async support and PostgreSQL-specific example migrations for the PostgreSQL backend. (#47)
- Add PGQ enhancements: fulltext search capability, ON CONFLICT switches, JSON arrow operators, cursor result-set pollution fix, and PostgreSQL 19 compatibility gate for quantified path and comma-separated patterns (#49)
- Added
PostgresAlterColumnModifierMixinso PostgreSQL renders the vendorIF [NOT] EXISTSqualifiers on ALTER TABLE actions:ADD COLUMN IF NOT EXISTS,DROP COLUMN IF EXISTS, andDROP CONSTRAINT IF EXISTS(all supported since PostgreSQL 9.6). The qualifiers are opt-in viaif_not_exists/if_existsonAddColumn/DropColumn/DropTableConstraint;None(default) renders the plain SQL-standard form. Also added thesupports_drop_constraint_if_existscapability toPostgresConstraintSupport/PostgresConstraintMixin. (#51) - Added PostgreSQL Row-Level Security POLICY DDL expressions and dialect support. New
PostgresCreatePolicyExpression,PostgresAlterPolicyExpression,PostgresDropPolicyExpression(plusPolicyType,PolicyCommand,AlterPolicyModeenums) inexpression/ddl/policy.pyallow RLS policy administration via the Expression-Dialect pipeline; the newPostgresPolicyMixinprovides version-gatedformat_*methods (PG 9.5+ for basic CREATE/ALTER/DROP, 10+ forAS RESTRICTIVEand explicitAS PERMISSIVE, 15+ for theCURRENT_ROLEkeyword inTO) and capability switches;PostgresPolicySupportis the corresponding@runtime_checkableProtocol. Per the layering decision POLICY is a PostgreSQL extension (not SQL standard) and is therefore implemented in the postgres backend package only — the core librarybackend/expression/statements/is untouched. (#52) - Added PostgreSQL coverage-completion DDL expressions and dialect support. New expression/mixin/protocol triads in the postgres backend package cover:
ALTER TABLE ... ENABLE/DISABLE [ALWAYS] ROW LEVEL SECURITYandFORCE/NO FORCE ROW LEVEL SECURITY(PostgresAlterTableRlsExpression,PostgresForceRlsExpression; PG 9.5+);ALTER TABLE ... SET LOGGED/UNLOGGED(PG 9.6+) andSET ACCESS METHOD(PG 15+);CLUSTER(PG 9.6+, index re-cluster only);CREATE/ALTER/DROP DOMAIN(PostgresAlterDomainExpressionsupports SET DEFAULT / RENAME);CREATE/DROP COLLATIONobjects;CREATE/DROP FOREIGN TABLE;CREATE/DROP FUNCTIONandCREATE/DROP AGGREGATE(PG 9.6+); andCREATE/DROP PUBLICATION/CREATE/DROP SUBSCRIPTION(PG 10+). AdditionallyPostgresAlterColumnModifierMixin.format_alter_column_actionnow renders PostgreSQL'sALTER COLUMN ... SET DATA TYPE ... USING (expr)conversion expression (opt-in viadialect_options={"using": ...}; rejected on non-type operations). Each feature has a version-gated capability switch and a matching@runtime_checkableProtocol (PostgresRlsConfigSupport,PostgresAlterTableSettingsSupport,PostgresClusterSupport,PostgresDomainSupport,PostgresCollationDDLSupport,PostgresForeignTableDDLSupport,PostgresRoutineDDLSupport,PostgresPublicationSupport). All are PostgreSQL extensions implemented only in the postgres backend package — the core library is untouched. (#53)
- Added PostgreSQL expression-level
COLLATEsupport with schema-qualified collation validation. (#40) - Added PostgreSQL support for core SQL/XML standard expressions, including XML construction, serialization, aggregation, and query/table expression capability declarations. (#41)
- Added PostgreSQL dialect support for datetime interval expressions (
EXTRACT,DATE_PART,DATE_TRUNC,INTERVALadd/subtract, date diff) with EXPLAIN-backed index usage verification tests. (#42) - Added comprehensive PostgreSQL partitioning support including ATTACH CONCURRENTLY/DEFAULT partition, partition auto-management via named expressions (monthly/quarterly), pg_partman create_parent parameter completion, enhanced partition metadata queries, and full test coverage (#43)
- Add SQL/PGQ property graph query support and PostgreSQL 19 compatibility enhancements (#44)
- Fill all PostgreSQL index, trigger, table, and extension protocol feature coverage gaps (#39)
- Changed PostgresDialect to default to version=None instead of fixed version, requiring introspect_and_adapt() or explicit version before version-dependent features can be used. (#37)
- SECURITY: Resolved SQL injection risks in PostgreSQL backend (#35)
- Added named query and named procedure CLI subcommands for PostgreSQL backend. Added ConcurrencyAware protocol implementation for PostgreSQL. Added named connection support with PostgreSQL CLI integration. Added comprehensive extension support with Protocol/Mixin definitions for 29 PostgreSQL extensions, CreateExtensionExpression/DropExtensionExpression DDL classes, and extension availability detection. (#32)
- Added schema namespace support for PostgreSQL backend, including get_default_schema() method, schema-aware column formatting with alias handling, and support for multiple PostgreSQL extensions (PostGIS, pgvector, UUID, hstore). (#33)
- Aligned expression system with three architectural principles. Modularized CLI from monolithic main.py to cli/ subpackage. Moved threadsafety to PostgresBackendMixin. Removed _convert_qmark_to_format fallback (now uses proper dialect placeholder conversion). Changed CI to install rhosocial-activerecord from git branch release/v1.0.0.dev25. Added postgres-exts service container for extension testing in CI. (#32)
- Fixed ? → %s placeholder conversion for psycopg in _prepare_sql_and_params. Fixed ForUpdateClause handling without strength attribute. Fixed @runtime_checkable missing on PostgresAdvisoryLockSupport and PostgresMultirangeSupport. Fixed UUID v1 regex pattern to match standard 8-4-4-4-12 format. Fixed async marker for pytest-asyncio 1.3.0 compatibility. (#32)
- Add comprehensive PostgreSQL backend examples covering connection, CRUD, transactions, CTEs, window functions, and more (#30)
- Added PostgreSQL row-level lock strength support: FOR SHARE, FOR NO KEY UPDATE, and FOR KEY SHARE. These lock strengths provide finer control over row-level locking in PostgreSQL 9.0+ (KEY SHARE requires 9.3+). (#23)
- Added enhanced mathematical functions to PostgreSQL backend, including round_, pow, power, sqrt, mod, ceil, floor, trunc, max_, min_, and avg, with proper naming to avoid conflicts with Python builtins. (#25)
- Added comprehensive PostgreSQL function support: array (18), network address (16), UUID (8), hstore (33), and range constructors (6). (#26)
- Add PostgreSQL constraint support protocol with EXCLUDE and NOT VALID options (#27)
- Refactored SQL function generation utilities by migrating them from types/ to functions/ directory for better module responsibility separation. (#24)
- Added connection pool context awareness support for PostgreSQL backend, enabling proper connection management across sync/async contexts and transaction boundaries. (#19)
- Added PostgreSQL server status overview support with comprehensive introspection capabilities including WAL, replication, archive, security, and extensions info. (#21)
- Fixed PostgreSQL transaction manager to respect optional BEGIN syntax - isolation level is no longer forced, allowing SESSION CHARACTERISTICS to take effect when not explicitly set. (#20)
- Added EXPLAIN clause support with typed PostgresExplainResult and dual-layer connection recovery for PostgreSQL backend (#16)
- Improved PostgreSQL backend CLI info command with connection status display and added comprehensive introspect usage examples. (#17)
- Added PostgreSQL introspection support with AbstractIntrospector for database schema discovery, including tables, columns, indexes, foreign keys, views, and triggers. (#14)
- Added comprehensive unit tests for PostgreSQL dialect features, improving code coverage from 69% to 74%. New tests cover stored procedures, extended statistics, triggers, indexes, range functions, and extensions (hstore, ltree, intarray, pg_trgm, pgvector, PostGIS). (#12)
- Add PostgreSQL CLI protocol support display with comprehensive feature information (#9)
- Added Python version-aware fixture selection for PostgreSQL backend testing, enabling Python 3.10+ UnionType syntax support. (#10)
- Added PostgreSQL-specific DDL support including trigger DDL, TYPE DDL for ENUM/RANGE types, COMMENT ON, materialized views, extension detection, and ILIKE operator support. (#7)
- PostgreSQL backend adaptation to new expression-dialect architecture. (#4)
- Implemented
introspect_and_adapt()in PostgreSQL backends to achieve full sync/async symmetry with the core backend interface. (#5)
- Added support for new mapping and type adapter tests, implemented annotated adapter query tests and PostgreSQL provider for type adapter tests. Added column mapping tests and a comprehensive testing guide. (#2)
- Adjusted schema for timezone-aware datetime in tests. (#2)
- Add backend CLI tool functionality for database operations (#1)