With PrepareStmt disabled, PostgreSQL queries run over pgx's simple
protocol, which encodes every []byte parameter as a bytea hex literal
('\x...'). driver.Valuer implementations returning []byte from
json.Marshal therefore fail json-column writes with SQLSTATE 22P02
(reported on the channels UPDATE path via ChannelInfo).
Reproduced against a live PostgreSQL 16: []byte Valuer into a json
column fails under simple protocol, string succeeds; []byte into a
text column silently stores the hex literal (no such path exists in
the repo today — audited all Valuers, json.RawMessage fields, and raw
SQL call sites).
- ChannelInfo, Properties, TaskPrivateData, JSONValue Value() now
return string; zero-value nil semantics unchanged. Task.Data
(bare json.RawMessage) is unaffected — database/sql's default
converter already passes it as expected.
- Their Scan() counterparts now accept both []byte and string via a
shared jsonScanBytes helper: SQLite returns string for these columns
once Value() emits string, and the old []byte-only assertions
silently zeroed the field (caught by the model test suite).
- Add regression tests locking both contracts: json-column Valuers
must return string (or nil for zero values), Scanners must accept
[]byte and string.
Verified end-to-end against PostgreSQL 16 with the real model types:
Channel create/update/read-back, Task json fields, PrefillGroup items.
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| ability.go | Loading commit data... | |
| auth_flow.go | Loading commit data... | |
| auth_flow_test.go | Loading commit data... | |
| authz_role.go | Loading commit data... | |
| casbin_rule.go | Loading commit data... | |
| channel.go | Loading commit data... | |
| channel_cache.go | Loading commit data... | |
| channel_constraint.go | Loading commit data... | |
| channel_constraint_test.go | Loading commit data... | |
| channel_satisfy.go | Loading commit data... | |
| channel_settings_test.go | Loading commit data... | |
| channel_status_test.go | Loading commit data... | |
| checkin.go | Loading commit data... | |
| clickhouse_log_test.go | Loading commit data... | |
| custom_oauth_provider.go | Loading commit data... | |
| db_time.go | Loading commit data... | |
| errors.go | Loading commit data... | |
| external_identity_claim.go | Loading commit data... | |
| external_identity_claim_test.go | Loading commit data... | |
| frontend_option_migration.go | Loading commit data... | |
| frontend_option_migration_test.go | Loading commit data... | |
| gorm_logger.go | Loading commit data... | |
| gorm_logger_test.go | Loading commit data... | |
| json_column_test.go | Loading commit data... | |
| locking.go | Loading commit data... | |
| locking_test.go | Loading commit data... | |
| log.go | Loading commit data... | |
| log_format_test.go | Loading commit data... | |
| main.go | Loading commit data... | |
| midjourney.go | Loading commit data... | |
| missing_models.go | Loading commit data... | |
| model_extra.go | Loading commit data... | |
| model_meta.go | Loading commit data... | |
| model_owner_test.go | Loading commit data... | |
| option.go | Loading commit data... | |
| option_auto_group_test.go | Loading commit data... | |
| option_task_plugin_test.go | Loading commit data... | |
| passkey.go | Loading commit data... | |
| password_crypto.go | Loading commit data... | |
| payment_method_guard_test.go | Loading commit data... | |
| perf_metric.go | Loading commit data... | |
| prefill_group.go | Loading commit data... | |
| pricing.go | Loading commit data... | |
| pricing_default.go | Loading commit data... | |
| pricing_endpoint_test.go | Loading commit data... | |
| pricing_refresh.go | Loading commit data... | |
| pricing_usage_schema_test.go | Loading commit data... | |
| quota_reserve.go | Loading commit data... | |
| quota_reserve_test.go | Loading commit data... | |
| redemption.go | Loading commit data... | |
| redemption_test.go | Loading commit data... | |
| setup.go | Loading commit data... | |
| subscription.go | Loading commit data... | |
| subscription_auth_test.go | Loading commit data... | |
| subscription_reset_test.go | Loading commit data... | |
| system_instance.go | Loading commit data... | |
| system_task.go | Loading commit data... | |
| system_task_test.go | Loading commit data... | |
| task.go | Loading commit data... | |
| task_cas_test.go | Loading commit data... | |
| task_model_alias.go | Loading commit data... | |
| task_openai_video_test.go | Loading commit data... | |
| task_plugin.go | Loading commit data... | |
| task_plugin_channel_select_test.go | Loading commit data... | |
| task_plugin_test.go | Loading commit data... | |
| token.go | Loading commit data... | |
| token_auto_groups_cache_test.go | Loading commit data... | |
| token_cache.go | Loading commit data... | |
| topup.go | Loading commit data... | |
| twofa.go | Loading commit data... | |
| usedata.go | Loading commit data... | |
| usedata_flow.go | Loading commit data... | |
| usedata_flow_test.go | Loading commit data... | |
| usedata_rankings.go | Loading commit data... | |
| user.go | Loading commit data... | |
| user_auth_cache.go | Loading commit data... | |
| user_authentication_test.go | Loading commit data... | |
| user_cache.go | Loading commit data... | |
| user_cache_auth_version_test.go | Loading commit data... | |
| user_oauth_binding.go | Loading commit data... | |
| user_pagination_test.go | Loading commit data... | |
| user_session.go | Loading commit data... | |
| user_session_migration_test.go | Loading commit data... | |
| user_session_test.go | Loading commit data... | |
| user_update_test.go | Loading commit data... | |
| utils.go | Loading commit data... | |
| vendor_meta.go | Loading commit data... |