plain.postgres 0.110.0__tar.gz → 0.110.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/PKG-INFO +1 -1
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/CHANGELOG.md +10 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/compiler.py +7 -2
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/pyproject.toml +1 -1
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/.gitignore +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/CLAUDE.md +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/LICENSE +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/README.md +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/README.md +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/adapters.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/agents/.claude/rules/plain-postgres.md +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/agents/.claude/skills/plain-postgres-doctor/SKILL.md +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/aggregates.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/base.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/converge.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/core.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/decorators.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/diagnose.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/migrations.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/schema.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/cli/sync.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/config.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/connection.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/constants.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/constraints.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/convergence/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/convergence/analysis.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/convergence/fixes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/convergence/planning.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/database_url.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/db.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/ddl.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/default_settings.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/deletion.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/dialect.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/entrypoints.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/enums.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/exceptions.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/expressions.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/base.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/binary.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/boolean.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/duration.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/encrypted.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/json.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/mixins.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/network.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/numeric.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/primary_key.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/related.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/related_descriptors.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/related_lookups.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/related_managers.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/reverse_descriptors.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/reverse_related.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/temporal.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/text.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/timezones.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/uuid.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/forms.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/comparison.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/datetime.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/math.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/mixins.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/random.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/text.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/uuid.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/functions/window.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/indexes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/checks_cumulative.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/checks_snapshot.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/checks_structural.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/context.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/helpers.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/ownership.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/runner.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/types.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/schema.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/lookups.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/meta.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/middleware.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/autodetector.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/exceptions.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/executor.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/graph.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/loader.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/migration.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/base.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/fields.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/models.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/special.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/optimizer.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/questioner.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/recorder.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/serializer.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/state.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/utils.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/writer.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/options.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/otel.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/preflight/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/preflight/database.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/preflight/indexes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/preflight/models.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/query.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/query_utils.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/registry.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/schema.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sources.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/constants.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/datastructures.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/query.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/sql/where.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/test/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/test/database.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/test/pytest.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/transaction.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/types.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/types.pyi +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/utils.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/forms.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0001_initial.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0002_test_field_removed.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0003_deleteparent_childsetnull_childsetdefault_and_more.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0004_defaultquerysetmodel_mixintestmodel_and_more.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0005_feature_carfeature_car_features.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0006_secretstore.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0007_treenode_unconstrainedchild.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0008_setsentinelparent_diamondparenta_midparent_and_more.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0009_circb_circa_circb_partner.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0010_hideableitem.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0011_defaultsexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0012_iterationexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0013_indexexample_constraintexample_nullabilityexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0014_widget_rename_feature_tag_remove_carfeature_car_and_more.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0015_dbdefaultsexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0016_formsexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0017_random_string_token.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0018_storageparametersexample.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/__init__.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/constraints.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/defaults.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/delete.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/encrypted.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/forms.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/indexes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/iteration.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/mixins.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/nullability.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/querysets.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/relationships.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/storage_parameters.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/trees.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/unregistered.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/urls.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/views.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/settings.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/urls.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/conftest.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/conftest_convergence.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_autodetector_not_null_errors.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_autodetector_type_change.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_isolation.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_lifecycle.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_pool.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_self_heal.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_constraint_violation_error.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_constraints.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_defaults.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_fk.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_indexes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_nullability.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_storage_parameters.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_timeouts.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_db_expression_defaults.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_diagnose.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_executor_connection_hook.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_fk_characterization.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_health.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_introspection.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_literal_default_persistence.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_management_connection.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_migration_executor.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_no_callable_defaults.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_otel_metrics.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_duplicate_indexes.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_fk_composite_hint.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_fk_coverage.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_schema_normalize_type.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_schema_timeouts.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_create_update.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_database_url.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_deferred_loading.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_delete_behaviors.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_encrypted_fields.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_exceptions.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_field_defaults.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_functions_uuid.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_integrity_error_mapping.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_iterator.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_m2m.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_manager_assignment.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_manual_pk.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_mixins.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_modelform_roundtrip.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_queryset_repr.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_random_string_field.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_raw_query.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_read_only_transactions.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_related.py +0 -0
- {plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_related_instance_filter.py +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# plain-postgres changelog
|
|
2
2
|
|
|
3
|
+
## [0.110.1](https://github.com/dropseed/plain/releases/plain-postgres@0.110.1) (2026-06-22)
|
|
4
|
+
|
|
5
|
+
### What's changed
|
|
6
|
+
|
|
7
|
+
- Internal: the ordering infinite-loop guard builds its join signature with `isinstance(alias, Join)` instead of `getattr(alias, "join_col", None)`, keeping `.join_col` greppable and type-checked. No behavior change. ([c813405f](https://github.com/dropseed/plain/commit/c813405f))
|
|
8
|
+
|
|
9
|
+
### Upgrade instructions
|
|
10
|
+
|
|
11
|
+
- No changes required.
|
|
12
|
+
|
|
3
13
|
## [0.110.0](https://github.com/dropseed/plain/releases/plain-postgres@0.110.0) (2026-06-17)
|
|
4
14
|
|
|
5
15
|
### What's changed
|
|
@@ -42,6 +42,7 @@ from plain.postgres.sql.constants import (
|
|
|
42
42
|
ORDER_DIR,
|
|
43
43
|
SINGLE,
|
|
44
44
|
)
|
|
45
|
+
from plain.postgres.sql.datastructures import Join
|
|
45
46
|
from plain.postgres.sql.query import Query, get_order_dir
|
|
46
47
|
from plain.postgres.transaction import TransactionManagementError
|
|
47
48
|
from plain.utils.hashable import make_hashable
|
|
@@ -903,10 +904,14 @@ class SQLCompiler:
|
|
|
903
904
|
and field.name != pieces[-1]
|
|
904
905
|
and not getattr(transform_function, "has_transforms", False)
|
|
905
906
|
):
|
|
906
|
-
# Firstly, avoid infinite loops.
|
|
907
|
+
# Firstly, avoid infinite loops. Each join contributes its column
|
|
908
|
+
# pair to the signature; the base table (no join_col) contributes
|
|
909
|
+
# None. isinstance keeps `.join_col` greppable and type-checked.
|
|
907
910
|
already_seen = already_seen or set()
|
|
911
|
+
alias_map = self.query.alias_map
|
|
908
912
|
join_tuple = tuple(
|
|
909
|
-
|
|
913
|
+
alias_map[j].join_col if isinstance(alias_map[j], Join) else None
|
|
914
|
+
for j in joins
|
|
910
915
|
)
|
|
911
916
|
if join_tuple in already_seen:
|
|
912
917
|
raise FieldError("Infinite loop caused by ordering.")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/related_descriptors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/fields/reverse_descriptors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/context.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/helpers.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/ownership.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/runner.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/introspection/health/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/base.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/fields.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/models.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/plain/postgres/migrations/operations/special.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0001_initial.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0006_secretstore.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0010_hideableitem.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/migrations/0016_formsexample.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/relationships.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/app/examples/models/storage_parameters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_autodetector_type_change.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_isolation.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_lifecycle.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_connection_self_heal.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_constraint_violation_error.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_constraints.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_indexes.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_nullability.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_convergence_timeouts.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_db_expression_defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_executor_connection_hook.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_fk_characterization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_literal_default_persistence.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_management_connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_no_callable_defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_duplicate_indexes.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_fk_composite_hint.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_preflight_fk_coverage.py
RENAMED
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/internal/test_schema_normalize_type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_integrity_error_mapping.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_read_only_transactions.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_postgres-0.110.0 → plain_postgres-0.110.1}/tests/public/test_related_instance_filter.py
RENAMED
|
File without changes
|