Config::to_sqlx_connect_options()no longer inspects process environment variables. Connection options are now built solely fromConfig, so ambientPG*variables (PGHOST,PGPORT,PGPASSWORD, …) can no longer influence or conflict with the produced options. Previously a contradicting variable produced an error.OptionsError::EnvConflictis removed, andOptionsError::UnsupportedFeatureno longer carries anenv_keyfield (now{ field_name }). Both reported conflicts with environment variables that are no longer consulted;UnsupportedFeaturenow reports only unsupportedConfigsettings such as channel binding.
- Raised minimum supported Rust version to 1.95.
Config::to_pg_env()is renamed toConfig::pg_env()and is now fallible: returnsResult<BTreeMap<EnvVariableName, EnvVariableValue>, cmd_proc::EnvVariableValueError>. The map's value type changes fromStringto the validatedcmd_proc::EnvVariableValue. The rename follows the Rust convention thatto_*is infallible; the fallibility comes from the per-value env validation now applied at construction.EnvVariableNameconstants exposed from this crate (PGUSER,PGHOST, etc.) no longer carry a<'static>parameter — the lifetime was dropped at thecmd_proclevel. Update type annotations tocmd_proc::EnvVariableName.
FromStrimplementations forPassword,ApplicationName,HostName,Host,HostAddr, andPortno longer useStringor&'static stras theirErrtype. Each now has a dedicated parse-error type implementingDebug + Display + std::error::Error:PasswordParseErrorandApplicationNameParseError: per-type enums generated byfrom_str_impl!withTooShort { min, actual },TooLong { max, actual }, andContainsNulvariants.HostNameParseError,HostParseError,HostAddrParseError,PortParseError: unit error structs.Displayoutput is preserved verbatim, so format-only assertions and user-visible messages are unchanged. Callers that named the oldErr = String/Err = &'static strtypes must update to the new types;error.to_string()continues to work for stringification-style usage.
- Update to
cmd-proc0.5.0.cmd_proc::EnvVariableNameis re-exposed through the publicPG*constants (PGAPPNAME,PGHOST,PGPORT, ...) and thesqlxmodule API, so thecmd-proc0.5.0 upgrade is a breaking change for pg-client consumers: any caller that also depends oncmd-proc0.4.0 will see type-identity mismatches on these constants.
Separate transport configuration from session/auth configuration.
Config previously mixed transport concerns (endpoint, SSL) with session
concerns (user, password, database, application name). There are scenarios
where the raw connection (TCP socket, Unix socket) is already established
externally and only the session parameters for the PostgreSQL startup message
are needed. Extracting Session makes it possible to pass around just the
auth/session data independently of transport.
- Introduce
pg_client::config::Sessionstruct grouping session-level fields:user,password,database,application_name - Move connection/session types into
pg_client::configmodule:Endpoint,Host,HostName,HostAddr,Port,SslMode,SslRootCert,ChannelBinding,Password,ApplicationName Configfields restructured:user,password,database,application_namereplaced by a singlesession: config::Sessionfield- No backwards-compatible re-exports; all downstream code must update type paths
- Add
sqlxfield toConfig(behindsqlxfeature flag) withsqlx::Settingsexposingstatement_cache_capacity,log_statements, andlog_slow_statements
- Version bump signalling pg-client is on the path to stabilization.
- Change
PgSchemaDump::restrict_keyto accept&RestrictKeyinstead ofRestrictKey
From<&RestrictKey>implementation forRestrictKey
- Replace separate
schema/tablefields withQualifiedTableinAnalyzeTask, partitioned indexInput,Partition, andError::NoPartitions
QualifiedTablestruct combiningSchemaandTablewithDisplayimplementationpg_dumpmodule withPgSchemaDumpbuilder for configurablepg_dumpcommandsRestrictKeytype forpg_dumprestrict/unrestrict key (CVE-2025-8714)- Re-export
QualifiedTable,PgSchemaDump, andRestrictKeyfrom crate root
- Fix circular dev-dependency on
pg-ephemeralby using path-only reference
- Switch to async
cmd-proc: command execution methods are nowasync fn - Switch
sqlxdependency tomsqlxfork - Change to
u16non-zero interface for port types - Change to
clapargs for CLI integration - Change to consistent instance name types
- GCP Cloud SQL URL support
- Partitioned index addition helper
- Support for partially concurrent indexes
INCLUDEsupport for covering indexes- Fillfactor support
gcsubcommand for incomplete index cleanupanalyze allsupport- Channel binding URL parameter support
host_addrsupport- Comprehensive PostgreSQL object identifier types: column, index, constraint, extension, sequence, function, trigger, domain, type, view, relation, materialized view, operator, aggregate, collation, tablespace, policy, rule, publication, subscription, foreign server, foreign data wrapper, foreign table, event trigger, language, text search configuration, text search dictionary, conversion, operator class, operator family, access method, statistics object
- Reject NUL bytes in identifiers
- Fix channel binding URL parsing query parameter
- Fix duplicated constants
- Fix conflicting user/hostname/database values
- Fix to not analyze partition parents
- Fix to allow analyze statements concurrently
- Fix to not attempt to set unsupported
systempgsslroot (sqlx/msqlx integration)
- URL parsing now accepts a
&strand uses RFC 3986 semantics;+is treated as a literal plus (use%20for spaces). The prior behavior treated+as space, which was incorrect for URIs. - URL parsing errors now report field-specific detail via
ParseError::Field.
- Initial release
- URL parsing support
FromStrinstance forSslMode- Optional
sqlxfeature flag