CHANGELOG.md

# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](Https://conventionalcommits.org) for commit guidelines.

<!-- changelog -->

## [v2.0.0-rc.13](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.12...v2.0.0-rc.13) (2024-04-27)




### Bug Fixes:

* ensure limit/offset triggers joining for update/destroy query

* only reference `sub` if a subquery is created

## [v2.0.0-rc.12](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.11...v2.0.0-rc.12) (2024-04-27)




### Bug Fixes:

* update ash_sql for inner join fixes

* fix argument order in AshSql.Bindings.default_bindings/4 (#251)

## [v2.0.0-rc.11](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.10...v2.0.0-rc.11) (2024-04-24)




### Bug Fixes:

* properly honor `limit` in bulk operations

## [v2.0.0-rc.10](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.9...v2.0.0-rc.10) (2024-04-23)




### Bug Fixes:

* undo change that expresses that atomics cant be done without `ash-functions`

## [v2.0.0-rc.9](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.8...v2.0.0-rc.9) (2024-04-23)
### Breaking Changes:

* change defaults for uuids to `gen_random_uuid()`

* Use UTC for default generated timestamps (#131)

* 3.0 (#227)



### Features:

* add `create?` and `drop?` callbacks to `AshPostgres.Repo` (#143)

### Bug Fixes:

* handle missing aggregate relationships and fields better in transformers

* update ash_sql for bug fixes

* reproduce issue around atomic updates & validations

* ensure that `exists` with a filter paired with `from_many?` functions properly

* update ash_sql, fix credo

* use proper sql implementation in `default_bindings`

* don't wait for shell input when checking migrations

* properly handle non-filter aggregate filters

* ensure timestamps are present in extension migrations

* handle fully fleshed out aggregate fields

### Improvements:

* warn on missing ash-functions at compile time

* support `mix ash.rollback` with interactive rollback

* don't fetch version in agent when using sandbox

* loosen 3.0 release candidate requirement

* fixes for 3.0 changes and AshSql changes

* move many internals out to `AshSql` package

* add default implementation for pg_version, and rename to `min_pg_version`

* upgrade to 3.0

* properly show unsupported error expression

## [v2.0.0-rc.8](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2024-04-22)




### Bug Fixes:

* ensure that `exists` with a filter paired with `from_many?` functions properly

## [v2.0.0-rc.7](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2024-04-12)




### Bug Fixes:

* update ash_sql, fix credo

## [v2.0.0-rc.6](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2024-04-10)




### Bug Fixes:

* use proper sql implementation in `default_bindings`

### Improvements:

* support `mix ash.rollback` with interactive rollback

## [v2.0.0-rc.5](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2024-04-05)




### Bug Fixes:

* don't wait for shell input when checking migrations

### Improvements:

* don't fetch version in agent when using sandbox

## [v2.0.0-rc.4](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2024-04-02)




### Improvements:

* loosen 3.0 release candidate requirement

## [v2.0.0-rc.3](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2024-04-01)




### Improvements:

* fixes for 3.0 changes and AshSql changes

* move many internals out to `AshSql` package

## [v2.0.0-rc.2](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2024-03-29)
### Breaking Changes:

* change defaults for uuids to `gen_random_uuid()`

* Use UTC for default generated timestamps (#131)

* 3.0 (#227)



### Features:

* add `create?` and `drop?` callbacks to `AshPostgres.Repo` (#143)

### Bug Fixes:

* properly handle non-filter aggregate filters

* ensure timestamps are present in extension migrations

* handle fully fleshed out aggregate fields

### Improvements:

* add default implementation for pg_version, and rename to `min_pg_version`

* upgrade to 3.0

* properly show unsupported error expression

## [v2.0.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v2.0.0-rc.0...v2.0.0-rc.1) (2024-03-28)




### Improvements:

* add default implementation for pg_version, and rename to `min_pg_version`

## [v2.0.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v1.5.22...v2.0.0-rc.0) (2024-03-27)

### Breaking Changes:

- change defaults for uuids to `gen_random_uuid()`

- Use UTC for default generated timestamps (#131)

### Features:

- add `create?` and `drop?` callbacks to `AshPostgres.Repo` (#143)

### Improvements:

- show proper error when using error expresison without `ash-functions` extension

## [v1.5.22](https://github.com/ash-project/ash_postgres/compare/v1.5.21...v1.5.22) (2024-03-20)

### Bug Fixes:

- don't fail on aggregate query generation

## [v1.5.21](https://github.com/ash-project/ash_postgres/compare/v1.5.20...v1.5.21) (2024-03-20)

### Bug Fixes:

- properly format migrations

- ensure exists aggregates have filters included

## [v1.5.20](https://github.com/ash-project/ash_postgres/compare/v1.5.19...v1.5.20) (2024-03-20)

### Bug Fixes:

- undo default of nulls_distinct option to true (#223)

- generate correct custom index name in down migration function (#222)

## [v1.5.19](https://github.com/ash-project/ash_postgres/compare/v1.5.18...v1.5.19) (2024-03-19)

### Bug Fixes:

- encode maps on update using fragments

### Improvements:

- Add nulls_distinct option to CustomIndex (#221)

## [v1.5.18](https://github.com/ash-project/ash_postgres/compare/v1.5.17...v1.5.18) (2024-03-19)

### Bug Fixes:

- don't reuse binding in many to many aggregate joins

- typo in extension generator creates invalid drop

- merge base_filter and custom index's where correctly (#219)

### Improvements:

- properly format generated migrations

- don't select fields in exists subquery

## [v1.5.17](https://github.com/ash-project/ash_postgres/compare/v1.5.16...v1.5.17) (2024-03-06)

### Bug Fixes:

- prevent ecto/pg from getting confused about the type of maps

## [v1.5.16](https://github.com/ash-project/ash_postgres/compare/v1.5.15...v1.5.16) (2024-03-05)

### Bug Fixes:

- always exclude `:order_by` on bulk updateable query

- don't apply join relationship sort for lateral join

## [v1.5.15](https://github.com/ash-project/ash_postgres/compare/v1.5.14...v1.5.15) (2024-03-01)

### Improvements:

- don't double cast to the same type

- detect more types

## [v1.5.14](https://github.com/ash-project/ash_postgres/compare/v1.5.13...v1.5.14) (2024-03-01)

### Improvements:

- no need for subquery for simple table aliases

## [v1.5.13](https://github.com/ash-project/ash_postgres/compare/v1.5.12...v1.5.13) (2024-02-29)

### Bug Fixes:

- properly handle multiple sorts in aggregate

## [v1.5.12](https://github.com/ash-project/ash_postgres/compare/v1.5.11...v1.5.12) (2024-02-29)

### Bug Fixes:

- ensure that `from_many?` joins are properly limited

- ensure that lateral joins are properly filtered

## [v1.5.11](https://github.com/ash-project/ash_postgres/compare/v1.5.10...v1.5.11) (2024-02-29)

### Bug Fixes:

- simplify(and fix) exists subquery generation

- properly leverage subqueries throughout relationship joining

- migration generator extensions in multiple repos (#214)

- Migration generator for extensions in multiple repos

### Improvements:

- optimize more cases for simple join aggregates

## [v1.5.10](https://github.com/ash-project/ash_postgres/compare/v1.5.9...v1.5.10) (2024-02-26)

### Bug Fixes:

- fix error when encoding vectors

- ensure select is applied (or not) properly in bulk update/destroys

## [v1.5.9](https://github.com/ash-project/ash_postgres/compare/v1.5.8...v1.5.9) (2024-02-25)

### Bug Fixes:

- handle more subquery filter cases for aggregates

- only apply filters inside aggregate subquery

### Improvements:

- add test for aggregates

## [v1.5.8](https://github.com/ash-project/ash_postgres/compare/v1.5.7...v1.5.8) (2024-02-24)

### Bug Fixes:

- properly handle complex types in lists

## [v1.5.7](https://github.com/ash-project/ash_postgres/compare/v1.5.6...v1.5.7) (2024-02-22)

### Bug Fixes:

- properly apply lateral join conditions to left lateral joins

## [v1.5.6](https://github.com/ash-project/ash_postgres/compare/v1.5.5...v1.5.6) (2024-02-21)

### Bug Fixes:

- ensure select is properly set on delete_all

### Improvements:

- optimize aggregate query filtering

## [v1.5.5](https://github.com/ash-project/ash_postgres/compare/v1.5.4...v1.5.5) (2024-02-21)

### Bug Fixes:

- ensure proper return value for single aggregate runs

## [v1.5.4](https://github.com/ash-project/ash_postgres/compare/v1.5.3...v1.5.4) (2024-02-21)

### Bug Fixes:

- don't sort a query that will be used with `delete_all`

- ensure that `exists?` aggregates use `repo.exists?`

- properly handle to_many joins in aggregates

- honor aggregate query filters

- use proper tables in joins originating from polymorphic resource (#211)

- properly transfer table names to non-inner wrapper queries (#210)

## [v1.5.3](https://github.com/ash-project/ash_postgres/compare/v1.5.2...v1.5.3) (2024-02-19)

### Bug Fixes:

- handle non-inner joins in delete_all

- handle non-inner joins in update

## [v1.5.2](https://github.com/ash-project/ash_postgres/compare/v1.5.1...v1.5.2) (2024-02-19)

### Bug Fixes:

- don't update_all or delete_all with `order_by`

- handle updating from queries w/ non-inner initial joins

## [v1.5.1](https://github.com/ash-project/ash_postgres/compare/v1.5.0...v1.5.1) (2024-02-19)

### Bug Fixes:

- joining to `from_many?: true` relationships not honoring limit

## [v1.5.0](https://github.com/ash-project/ash_postgres/compare/v1.4.0...v1.5.0) (2024-02-16)

### Features:

- Make MigrationGenerator accept atoms (#201)

### Bug Fixes:

- allow subquerying a `through` while aggregating a many to many

- don't subquery if we need to reference `parent_as`

- avoid double wrapping in subqueries

- properly set 0 binding on joined subquery creation

- properly alter renaming attributes in migration generator

- handle original data not available in destroy_query

- use primary key of source as join key

- use pkey if error fields is empty

- forgot to bind keys to a variable 🤦🏻

- ensure identity keys is never missing

- properly build subqueries when required for relationship queries

- only migrate/rollback one repo at a time

- proper return types for updates from queries

- allow atomics to return `nil`

- Correct the matching used in building a distinct expression (#196)

- only rollback to savepoint on specific errors

- keep fields of `custom_index` in format that they were provided (#195)

- remap selected fields, don't subquery in aggregate joins

- include explicit schema in snapshot folder name

- Support all_tenants? in custom index (#194)

### Improvements:

- update to latest ash

- mark (i)like functions as predicates (#205)

- detect bigserial when altering attributes

- Include modules in installed_extensions return type (#202)

- don't drop primary key in case of removal

- handle if select is present on query

- support `Ash.Changeset.OriginalDataNotAvailable`

- support `count_nils` expression

- `error_fields` for `custom_index`

- support latest ash changes

## [v1.4.0](https://github.com/ash-project/ash_postgres/compare/v1.3.68...v1.4.0) (2024-01-12)

### Features:

- Add unit test to check lateral joins

### Bug Fixes:

- unset sort/distinct on related queries

- subquery relationships that have filters

- don't overwrite manually set schema on lateral join query

- properly configure `polymorphic_name` option

- honor configured schema on bulk create

### Improvements:

- support `all_tenants?` option for identities

- support `all_tenants?` option for custom indexes

- support join_filters on aggregates

- use the target action when generating related queries

## [v1.3.68](https://github.com/ash-project/ash_postgres/compare/v1.3.67...v1.3.68) (2024-01-04)

### Bug Fixes:

- properly gather types for operator & function overloads

## [v1.3.67](https://github.com/ash-project/ash_postgres/compare/v1.3.66...v1.3.67) (2024-01-04)

### Bug Fixes:

- support encoding errors with expressions in them

### Improvements:

- support latest ash version & operator overrides

- support new bulk operations

## [v1.3.66](https://github.com/ash-project/ash_postgres/compare/v1.3.65...v1.3.66) (2023-12-30)

### Improvements:

- support new `return_query/2` callback

- support new `:no_rollback` error signal

- require `name` when generating migrations

- support directly referencing aggregates from aggregates

- support aggregates as `get_path` subject

## [v1.3.65](https://github.com/ash-project/ash_postgres/compare/v1.3.64...v1.3.65) (2023-12-23)

### Bug Fixes:

- various fixes for unnecessary aggregate additions

- use lateral joins when joining to subquery w/ parent reference

- replace upsert field with source in EXCLUDED fragment (#187)

- handle strings in get_path

- reenable mix tasks that need calling

### Improvements:

- support aggregates using other aggregates

- support string_length and string_trim

- only start savepoints when necessary

- clean up nested if statements to single case statements

- support for `error/2` expression

## [v1.3.64](https://github.com/ash-project/ash_postgres/compare/v1.3.63...v1.3.64) (2023-12-04)

### Bug Fixes:

- properly cast lazy update defaults to target type

## [v1.3.63](https://github.com/ash-project/ash_postgres/compare/v1.3.62...v1.3.63) (2023-12-03)

### Bug Fixes:

- use maps for composite_type instead of tuples

- avoid empty error on upserts with `:nothing`

- simplify aggregate bindings & calculation reference building

- hydrate aggregate refs when adding for calculations

- apply limit to `from_many?` relationship joins

- properly add filters for exists aggregates

- properly expand calculation values across aggregate invocations

- don't add filter for `no_attributes?` relationships

- handle `no_attributes?` flag on aggregates better

- properly handle sorted relationships in aggregates

### Improvements:

- support `composite_type/2` expression

- support composite types

- optimize relationships with identity on other end

- allow specifying multi-column foreign keys (#180)

- add match_with option on references

- add match_type option on references

## [v1.3.62](https://github.com/ash-project/ash_postgres/compare/v1.3.61...v1.3.62) (2023-11-16)

### Bug Fixes:

- use `synonymous_relationship_path` when looking up ref bindings

- add calculation context to calculation expressions

## [v1.3.61](https://github.com/ash-project/ash_postgres/compare/v1.3.60...v1.3.61) (2023-11-15)

### Bug Fixes:

- don't append update_defaults automatically if `upsert_fields` was set

- don't ensure repo compiled at compile time

- handle additional case for new functional repo callback

- get resource from proper bindings on `exists` query

### Improvements:

- support a 2 argument function for the repo option

- spport `CURRENT_DATE` default

## [v1.3.60](https://github.com/ash-project/ash_postgres/compare/v1.3.59...v1.3.60) (2023-10-27)

### Improvements:

- support `parent` in sort expressions

## [v1.3.59](https://github.com/ash-project/ash_postgres/compare/v1.3.58...v1.3.59) (2023-10-25)

### Improvements:

- join relationships for aggregate filters

## [v1.3.58](https://github.com/ash-project/ash_postgres/compare/v1.3.57...v1.3.58) (2023-10-24)

### Bug Fixes:

- don't traverse new types for storage type

- properly join to related references in relationship filters

## [v1.3.57](https://github.com/ash-project/ash_postgres/compare/v1.3.56...v1.3.57) (2023-10-17)

### Improvements:

- allow for combining `AshPostgres.Repo` with other repos

## [v1.3.56](https://github.com/ash-project/ash_postgres/compare/v1.3.55...v1.3.56) (2023-10-11)

### Bug Fixes:

- don't raise all errors

## [v1.3.55](https://github.com/ash-project/ash_postgres/compare/v1.3.54...v1.3.55) (2023-10-11)

### Improvements:

- support atomics on upserts

## [v1.3.54](https://github.com/ash-project/ash_postgres/compare/v1.3.53...v1.3.54) (2023-10-10)

### Bug Fixes:

- fix type specification for foreign_key_names

## [v1.3.53](https://github.com/ash-project/ash_postgres/compare/v1.3.52...v1.3.53) (2023-10-10)

### Bug Fixes:

- don't run main query if only `exists` aggs are specified

- subquery aggregate if limit is applied

### Improvements:

- update ash dependency

- support `:ci_string` as a storage_type

- support to-one references in calculations

## [v1.3.52](https://github.com/ash-project/ash_postgres/compare/v1.3.51...v1.3.52) (2023-09-26)

### Bug Fixes:

- use `:wrap_list` type instead of custom validaitons (#167)

### Improvements:

- fix `upsert_fields` behavior for upserts

- support data_layer_context option on transactions

## [v1.3.51](https://github.com/ash-project/ash_postgres/compare/v1.3.50...v1.3.51) (2023-09-20)

### Improvements:

- add `AshPostgres.Tsvector`

- add AshPostgres.Tsquery

- support vector types and `vector_cosine_distance`

## [v1.3.50](https://github.com/ash-project/ash_postgres/compare/v1.3.49...v1.3.50) (2023-09-06)

### Improvements:

- Allow resources to opt out of the primary key requirement. (#166)

## [v1.3.49](https://github.com/ash-project/ash_postgres/compare/v1.3.48...v1.3.49) (2023-09-04)

### Improvements:

- implement ash lifecycle tasks

## [v1.3.48](https://github.com/ash-project/ash_postgres/compare/v1.3.47...v1.3.48) (2023-09-04)

### Improvements:

- better error message for missing table config

## [v1.3.47](https://github.com/ash-project/ash_postgres/compare/v1.3.46...v1.3.47) (2023-08-31)

### Bug Fixes:

- ensure we always select at least one field, and change one field

## [v1.3.46](https://github.com/ash-project/ash_postgres/compare/v1.3.45...v1.3.46) (2023-08-31)

### Bug Fixes:

- use provided values for updates

## [v1.3.45](https://github.com/ash-project/ash_postgres/compare/v1.3.44...v1.3.45) (2023-08-31)

### Bug Fixes:

- don't clobber loaded data on update

## [v1.3.44](https://github.com/ash-project/ash_postgres/compare/v1.3.43...v1.3.44) (2023-08-31)

### Bug Fixes:

- properly handle ensure nsted calls to `get_path` are jsonb

### Improvements:

- support atomics (#165)

## [v1.3.43](https://github.com/ash-project/ash_postgres/compare/v1.3.42...v1.3.43) (2023-08-22)

### Bug Fixes:

- properly provide constraints on all type casting

## [v1.3.42](https://github.com/ash-project/ash_postgres/compare/v1.3.41...v1.3.42) (2023-08-22)

### Bug Fixes:

- support non-atom named aggregates

- handle case where multiple grouped aggregates depend on further aggregates

### Improvements:

- support in-line aggregates

- specify @behaviour in AshPostgres.Type

- add `value_to_postgres_default/3` and `AshPostgres.Type`

- handle non-cast-in-type queries

## [v1.3.41](https://github.com/ash-project/ash_postgres/compare/v1.3.40...v1.3.41) (2023-08-08)

### Bug Fixes:

- handle interaction between distinct, join filters and sort

### Improvements:

- custom-extension implementation (#162)

- custom-extension implementation

- allow adding custom-extension by module's reference and fixes formatting

- support new `from_many?` option

- subquery after distinct to handle distinct

## [v1.3.40](https://github.com/ash-project/ash_postgres/compare/v1.3.39...v1.3.40) (2023-08-01)

### Bug Fixes:

- properly detect optimizable first aggregates

## [v1.3.39](https://github.com/ash-project/ash_postgres/compare/v1.3.38...v1.3.39) (2023-08-01)

### Bug Fixes:

- properly alter deferrability on attribute alter

### Improvements:

- update ash

- handle empty maps in migration defaults automatically

- handle empty lists in migraiton defaults automatically

- apply sort in subqueries properly

- handle `no_attributes?` better in more places

- support the new `parent/1` expr in relationships

- explicitly lock the source row

## [v1.3.38](https://github.com/ash-project/ash_postgres/compare/v1.3.37...v1.3.38) (2023-07-21)

### Bug Fixes:

- un-break aggregates referencing calculations

### Improvements:

- properly handle context for referenced calculations

## [v1.3.37](https://github.com/ash-project/ash_postgres/compare/v1.3.36...v1.3.37) (2023-07-19)

### Improvements:

- support new `distinct_sort` option

## [v1.3.36](https://github.com/ash-project/ash_postgres/compare/v1.3.35...v1.3.36) (2023-07-19)

### Bug Fixes:

- type casting improvements, handle manual relationships in `exists`

- protected names in conflict_target (#158)

## [v1.3.35](https://github.com/ash-project/ash_postgres/compare/v1.3.34...v1.3.35) (2023-07-18)

### Improvements:

- support new `distinct` features from ash core

## [v1.3.34](https://github.com/ash-project/ash_postgres/compare/v1.3.33...v1.3.34) (2023-07-18)

### Improvements:

- support unary `-/1` operator

## [v1.3.33](https://github.com/ash-project/ash_postgres/compare/v1.3.32...v1.3.33) (2023-07-14)

### Bug Fixes:

- convert `Ash.Resource.Aggregate` to `Ash.Query.Aggregate` when adding

### Improvements:

- support `deferrable` option in migration generator

- support `exists` aggregates

## [v1.3.32](https://github.com/ash-project/ash_postgres/compare/v1.3.31...v1.3.32) (2023-07-12)

### Improvements:

- support `at/2` expression

## [v1.3.31](https://github.com/ash-project/ash_postgres/compare/v1.3.30...v1.3.31) (2023-07-12)

### Bug Fixes:

- raise better error on invalid filter values

- Fixes multiple schema identities migrations (#156)

- fix Logger deprecations for elixir 1.15 (#155)

- interpolate table names with `inspect` in generated migrations (#152)

### Improvements:

- better `ash_functions` message

- support `string_split`

- add postgres expressions guide

- add `simple_join_first_aggregates` option

## [v1.3.30](https://github.com/ash-project/ash_postgres/compare/v1.3.29...v1.3.30) (2023-06-06)

### Bug Fixes:

- handle changing custom index names better

- validate custom index names

## [v1.3.29](https://github.com/ash-project/ash_postgres/compare/v1.3.28...v1.3.29) (2023-06-05)

### Bug Fixes:

- properly handle nested aggregate references

## [v1.3.28](https://github.com/ash-project/ash_postgres/compare/v1.3.27...v1.3.28) (2023-05-23)

### Bug Fixes:

- handle raised errors in bulk actions

## [v1.3.27](https://github.com/ash-project/ash_postgres/compare/v1.3.26...v1.3.27) (2023-05-17)

### Improvements:

- raise better errors on conflicting locks

## [v1.3.26](https://github.com/ash-project/ash_postgres/compare/v1.3.25...v1.3.26) (2023-05-16)

### Bug Fixes:

- use proper lock list again

- use proper list of row level locks

- check `changeset.action_type` not `changeset.action.type`

### Improvements:

- support more lock types

## [v1.3.25](https://github.com/ash-project/ash_postgres/compare/v1.3.24...v1.3.25) (2023-05-08)

### Improvements:

- support changeset.filters (for optimistic locking)

## [v1.3.24](https://github.com/ash-project/ash_postgres/compare/v1.3.23...v1.3.24) (2023-05-03)

### Improvements:

- support bulk upserts

## [v1.3.23](https://github.com/ash-project/ash_postgres/compare/v1.3.22...v1.3.23) (2023-05-01)

### Bug Fixes:

- don't incorrectly mark references as primary key references

- go back to old migration sorting algorithm

## [v1.3.22](https://github.com/ash-project/ash_postgres/compare/v1.3.21...v1.3.22) (2023-04-28)

### Improvements:

- support locking

## [v1.3.21](https://github.com/ash-project/ash_postgres/compare/v1.3.20...v1.3.21) (2023-04-27)

### Improvements:

- handle new spark versions better, more explicit snapshots

## [v1.3.20](https://github.com/ash-project/ash_postgres/compare/v1.3.19...v1.3.20) (2023-04-22)

### Bug Fixes:

- subquery aggregates when a distinct is being added

- don't call `.table` on `nil`

- wrap `datetime_add` in parenthesis

- handle primary key changes properly

### Improvements:

- update ash

- don't call `.table` on `nil` `snapshot`

- use digraph for operation ordering

## [v1.3.19](https://github.com/ash-project/ash_postgres/compare/v1.3.18...v1.3.19) (2023-04-07)

### Bug Fixes:

- properly handle newtypes, add test

- honor newtypes when determining migration type

- handle nil ash_functions_version in another place

- handle nil ash_functions_version

### Improvements:

- update ash

## [v1.3.18](https://github.com/ash-project/ash_postgres/compare/v1.3.17...v1.3.18) (2023-03-23)

## [v1.3.17](https://github.com/ash-project/ash_postgres/compare/v1.3.16...v1.3.17) (2023-03-20)

### Bug Fixes:

- properly map `parent` bindings in `exists`

## [v1.3.16](https://github.com/ash-project/ash_postgres/compare/v1.3.15...v1.3.16) (2023-03-03)

### Improvements:

- support new date expressions

## [v1.3.15](https://github.com/ash-project/ash_postgres/compare/v1.3.14...v1.3.15) (2023-02-23)

### Improvements:

- add aggregates used by sorts

## [v1.3.14](https://github.com/ash-project/ash_postgres/compare/v1.3.13...v1.3.14) (2023-02-21)

### Improvements:

- Implement string_join expr (#132)

## [v1.3.13](https://github.com/ash-project/ash_postgres/compare/v1.3.12...v1.3.13) (2023-02-17)

### Bug Fixes:

- don't use `:distinct` when `uniq?` is not `true`

## [v1.3.12](https://github.com/ash-project/ash_postgres/compare/v1.3.11...v1.3.12) (2023-02-16)

### Bug Fixes:

- exclude `order_by` when building aggregates

## [v1.3.11](https://github.com/ash-project/ash_postgres/compare/v1.3.10...v1.3.11) (2023-02-16)

### Bug Fixes:

- properly find migration directories in umbrella apps

- don't double-cast to array for list aggregates

### Improvements:

- significantly optimize aggregate queries

- better type casting for concat operator

## [v1.3.10](https://github.com/ash-project/ash_postgres/compare/v1.3.9...v1.3.10) (2023-02-09)

### Bug Fixes:

- sorting on optimized first aggregates

## [v1.3.9](https://github.com/ash-project/ash_postgres/compare/v1.3.8...v1.3.9) (2023-02-09)

### Bug Fixes:

- do limit/offset outside of query if distinct is required

- load by **order** ascending

### Improvements:

- support new `uniq?` option on count/list aggregates

- optimized `first` aggregates where possible

## [v1.3.8](https://github.com/ash-project/ash_postgres/compare/v1.3.7...v1.3.8) (2023-02-06)

### Bug Fixes:

- Actually use `AshPostgres.Repo` behaviour (#129)

### Improvements:

- authorization filters are now attached by ash core

## [v1.3.7](https://github.com/ash-project/ash_postgres/compare/v1.3.6...v1.3.7) (2023-02-06)

### Bug Fixes:

- Actually use `AshPostgres.Repo` behaviour (#129)

### Improvements:

- authorization filters are now attached by ash core

## [v1.3.6](https://github.com/ash-project/ash_postgres/compare/v1.3.5...v1.3.6) (2023-02-03)

### Bug Fixes:

- properly set next migration name

- override `insert` function for proper ecto interop

### Improvements:

- add `migration_ignore_attributes`

## [v1.3.5](https://github.com/ash-project/ash_postgres/compare/v1.3.4...v1.3.5) (2023-01-29)

### Bug Fixes:

- properly convert to/from ecto, only when necessary

## [v1.3.4](https://github.com/ash-project/ash_postgres/compare/v1.3.3...v1.3.4) (2023-01-28)

### Bug Fixes:

- support latest ecto interop changes in ash core

### Improvements:

- properly cast division to floats for elixir-y behavior

- support for dynamically set repo

- update ash

## [v1.3.3](https://github.com/ash-project/ash_postgres/compare/v1.3.2...v1.3.3) (2023-01-18)

### Improvements:

- update to new docs patterns

## [v1.3.2](https://github.com/ash-project/ash_postgres/compare/v1.3.1...v1.3.2) (2023-01-17)

### Bug Fixes:

- nest subqueries when required for distinct

- replace `{:in, ...}` type with `{:array, ...}`

## [v1.3.1](https://github.com/ash-project/ash_postgres/compare/v1.3.0...v1.3.1) (2023-01-11)

### Bug Fixes:

- allow for non attribute aggregate references for first/list

## [v1.3.0](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.4...v1.3.0) (2023-01-11)

### Improvements:

- update to latest ash

## [v1.3.0-rc.4](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.3...v1.3.0-rc.4) (2023-01-09)

### Bug Fixes:

- properly join to all required relationships

## [v1.3.0-rc.3](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.2...v1.3.0-rc.3) (2023-01-09)

### Bug Fixes:

- properly type cast in fragments (and elsewhere)

## [v1.3.0-rc.2](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.1...v1.3.0-rc.2) (2023-01-06)

### Bug Fixes:

- undo changes that caused type casting bugs

## [v1.3.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.0...v1.3.0-rc.1) (2023-01-06)

### Bug Fixes:

- undo changes that caused type casting bugs

## [v1.3.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v1.3.0-rc.0...v1.3.0-rc.1) (2023-01-06)

### Bug Fixes:

- use `parent_expr` instead of `this`

- various expression & type building fixes

## [v1.3.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v1.2.6...v1.3.0-rc.0) (2023-01-04)

### Features:

- support latest ash

### Bug Fixes:

- honor calculation constraints

- handle lists with expressions inside

### Improvements:

- support calc constraints

- support new `cast_in_query?/2`

- support calculations as aggregate targets

## [v1.2.6](https://github.com/ash-project/ash_postgres/compare/v1.2.5...v1.2.6) (2022-12-27)

### Bug Fixes:

- properly set `migrations_path` default in umbrellas

- don't subquery unless we have to

## [v1.2.5](https://github.com/ash-project/ash_postgres/compare/v1.2.4...v1.2.5) (2022-12-21)

### Bug Fixes:

- don't group aggregates that reference relationships in their filters

- properly skip unique indexes when configured

### Improvements:

- add like and ilike

## [v1.2.4](https://github.com/ash-project/ash_postgres/compare/v1.2.3...v1.2.4) (2022-12-18)

### Bug Fixes:

- properly add aggregates to query when referenced from calculations

### Improvements:

- distinct on source of query, not relationship destination

## [v1.2.3](https://github.com/ash-project/ash_postgres/compare/v1.2.2...v1.2.3) (2022-12-15)

### Bug Fixes:

- properly combine sort + to many join filter

## [v1.2.2](https://github.com/ash-project/ash_postgres/compare/v1.2.1...v1.2.2) (2022-12-15)

### Improvements:

- udpate to latest ash, fix array issues

## [v1.2.1](https://github.com/ash-project/ash_postgres/compare/v1.2.0...v1.2.1) (2022-12-13)

### Bug Fixes:

- pattern match error in `lazy_non_matching_defaults/1`

- use attribute name not attribute for default funs

- _actually_ fix `default_fun` upserts

- fix upserting update_defaults

## [v1.2.0](https://github.com/ash-project/ash_postgres/compare/v1.2.0-rc.1...v1.2.0) (2022-12-13)

### Bug Fixes:

- make migration generator work better for umbrellas

## [v1.2.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v1.2.0-rc.0...v1.2.0-rc.1) (2022-12-10)

### Bug Fixes:

- don't make migration generation recursive

- nevermind, can't make migrate recursive

### Improvements:

- make migrate task recursive as well

- mark generate_migrations as recursive for umbrellas

## [v1.2.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v1.1.3...v1.2.0-rc.0) (2022-12-10)

### Features:

- avg/min/max/custom aggregate support

### Bug Fixes:

- various broken behavior from new aggregate work

- forgot a

- fix various problems with the model behind aggregates

- properly set binding names for many to many join filters

### Improvements:

- better error messages from mix tasks

- validate that references refer to relationships

- avg/min/max/custom aggregate support

- upgrade and depend on ash version

- fix lateral many to many joins

- inform users about postgres incompatibility with multidimensional arrays

## [v1.1.3](https://github.com/ash-project/ash_postgres/compare/v1.1.2...v1.1.3) (2022-12-01)

### Bug Fixes:

- properly turn custom index keys into atoms

### Improvements:

- update ash, add test for transaction hooks

- support new transaction info with hooks

- add unique constraints to changeset for custom unique indexes

- separate out concurrent index creations and do them in a separate transaction

## [v1.1.2](https://github.com/ash-project/ash_postgres/compare/v1.1.1...v1.1.2) (2022-11-21)

### Bug Fixes:

- don't use hard-coded join assoc name (#118)

### Improvements:

- add `migration_defaults` for customizing default values

## [v1.1.1](https://github.com/ash-project/ash_postgres/compare/v1.1.0...v1.1.1) (2022-10-25)

### Bug Fixes:

- && operator in expressions to point to ash_elixir_and (#115)

### Improvements:

- add check for unsupported expression

## [v1.1.0](https://github.com/ash-project/ash_postgres/compare/v1.0.0...v1.1.0) (2022-10-20)

### Features:

- support `now()` in latest Ash

## [v1.0.0](https://github.com/ash-project/ash_postgres/compare/v0.43.0...v1.0.0) (2022-10-17)

### Bug Fixes:

- no unnecessary type cast on count/sum aggregates

- don't apply `filter` to `array_agg`

### Improvements:

- update to Ash 2.0

- handle UUID types better

- set lateral join source for latest ash

- use `prepend?: true` option when applying relationship sorts

## [v1.0.0-rc.9](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.8...v1.0.0-rc.9) (2022-10-07)

### Bug Fixes:

- handle custom calculation selects properly

- use attribute source for identity fields

### Improvements:

- update to the latest ash

- remove the need to dynamically expand fragments

- when casting string to uuid, dump to binary

- update to latest ash

## [v1.0.0-rc.8](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.7...v1.0.0-rc.8) (2022-09-29)

### Bug Fixes:

- never attempt to group custom operations

- wrap case statement in parens

### Improvements:

- `exists` filters necessitate multiple aggregate joins (for now)

## [v1.0.0-rc.7](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.6...v1.0.0-rc.7) (2022-09-28)

### Bug Fixes:

- properly type cast top level fragments

### Improvements:

- update to the latest ash

- upgrade to new `exists` usage

## [v1.0.0-rc.6](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.5...v1.0.0-rc.6) (2022-09-21)

### Improvements:

- support latest ash

## [v1.0.0-rc.5](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.4...v1.0.0-rc.5) (2022-09-15)

### Improvements:

- update to latest ash

- implement Length function (#111)

- upgrade to latest ash

## [v1.0.0-rc.4](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.3...v1.0.0-rc.4) (2022-09-14)

### Improvements:

- support latest ash

- support manual relationships with joins

## [v1.0.0-rc.3](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.2...v1.0.0-rc.3) (2022-09-12)

### Bug Fixes:

- keep unique index keys in order in migrations

## [v1.0.0-rc.2](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2022-09-06)

### Improvements:

- support latest ash `exists/2` expr

## [v1.0.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v1.0.0-rc.0...v1.0.0-rc.1) (2022-09-04)

## [v0.43.0](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.7...v0.43.0) (2022-08-05)

### Bug Fixes:

- properly order check constraints

- remove check constraints before adding them

### Improvements:

- fix typecasting for calculations & embed access

- add custom_statements to migration generator

- support `||` and `&&`

## [v0.42.0-rc.7](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.6...v0.42.0-rc.7) (2022-07-14)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- use new doc_index patterns

- support upsert_identity with base_filter

- support upsert_identity with base filters

- handle various join bugs

- use attribute.name if attribute.source is nil

- set attribute source properly

- ensure source is always set on attributes in snapshots

- handle paths for aggregates w/ > 2 relationships

- rename attributes correctly in down migration (#98)

- don't generate modify commands for attributes due to schema changes

- default schema to primary schema

- test and confirm behavior of schemas

- use correct bindings for filtered relationships

- cast calcs in query expressions

- explicitly type cast aggregate/calc selects

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- add default guide, and empty ash postgres guide

- set `update_defaults` on upsert results

- handle fallback ecto migration default elegantly (#94)

- add `ignore?` option to `references`

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.6](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.5...v0.42.0-rc.6) (2022-07-10)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- use new doc_index patterns

- support upsert_identity with base_filter

- support upsert_identity with base filters

- handle various join bugs

- use attribute.name if attribute.source is nil

- set attribute source properly

- ensure source is always set on attributes in snapshots

- handle paths for aggregates w/ > 2 relationships

- rename attributes correctly in down migration (#98)

- don't generate modify commands for attributes due to schema changes

- default schema to primary schema

- test and confirm behavior of schemas

- use correct bindings for filtered relationships

- cast calcs in query expressions

- explicitly type cast aggregate/calc selects

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- set `update_defaults` on upsert results

- handle fallback ecto migration default elegantly (#94)

- add `ignore?` option to `references`

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.5](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.4...v0.42.0-rc.5) (2022-07-06)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- support upsert_identity with base_filter

- support upsert_identity with base filters

- handle various join bugs

- use attribute.name if attribute.source is nil

- set attribute source properly

- ensure source is always set on attributes in snapshots

- handle paths for aggregates w/ > 2 relationships

- rename attributes correctly in down migration (#98)

- don't generate modify commands for attributes due to schema changes

- default schema to primary schema

- test and confirm behavior of schemas

- use correct bindings for filtered relationships

- cast calcs in query expressions

- explicitly type cast aggregate/calc selects

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- set `update_defaults` on upsert results. For most users, this means that where previously `updated_at` would not get set on an upsert that ultimately resulted in an update, it will now.

- handle fallback ecto migration default elegantly (#94)

- add `ignore?` option to `references`

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.4](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.3...v0.42.0-rc.4) (2022-06-28)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- use attribute.name if attribute.source is nil

- set attribute source properly

- ensure source is always set on attributes in snapshots

- handle paths for aggregates w/ > 2 relationships

- rename attributes correctly in down migration (#98)

- don't generate modify commands for attributes due to schema changes

- default schema to primary schema

- test and confirm behavior of schemas

- use correct bindings for filtered relationships

- cast calcs in query expressions

- explicitly type cast aggregate/calc selects

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- handle fallback ecto migration default elegantly (#94)

- add `ignore?` option to `references`

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.3](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.2...v0.42.0-rc.3) (2022-06-28)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- set attribute source properly

- ensure source is always set on attributes in snapshots

- handle paths for aggregates w/ > 2 relationships

- rename attributes correctly in down migration (#98)

- don't generate modify commands for attributes due to schema changes

- default schema to primary schema

- test and confirm behavior of schemas

- use correct bindings for filtered relationships

- cast calcs in query expressions

- explicitly type cast aggregate/calc selects

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- handle fallback ecto migration default elegantly (#94)

- add `ignore?` option to `references`

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.2](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.1...v0.42.0-rc.2) (2022-05-18)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- don't try and match reference schema to table schema

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v0.42.0-rc.0...v0.42.0-rc.1) (2022-05-18)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- don't use `table` where we should use `schema` in migration generator

- handle combinations of distinct & sort

- ensure all single actions are explicitly marked as primary? (#95)

- only rename schema when necessary

- inspect un-defaultable value in error message

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- check_migrations, rename to `--check`

- add explicit timeout capability declaration

- add static schema specification in DSL

- support static schema specification in migration generator

- implement decimal ecto migration default (#91)

- support float as Ecto migration default (#89)

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.42.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v0.41.7...v0.42.0-rc.0) (2022-04-26)

### Features:

- support `cast_in_query?/0` and `source`

### Bug Fixes:

- select custom aggregates properly

- don't add reference when renaming column if unnecessary

- don't cast `nil` to `""`

- `!is_atom/1` -> `!is_boolean/1`

- sanitize lists to stringify atoms

- cast embedded atoms to strings first

- don't cast `{:in, :any}` types

- more don't cast any types

- don't cast if there is no type

- properly handle relationship filter bindings

- don't consider fields changed with only source -> name changes

- handle name -> source change in more places

- handle name -> source rename in operation ordering

- fix aggregate/base filters

- don't select more fields than necessary

- don't call `ecto_type` twice when resolving types

- place expressions in the proper order in selects

- match on count in expr

- remove incorrect param count tracking

- properly track param count

- properly reverse parameters before/after expansion

- don't use the base ecto type

- don't sort when joining

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- update ecto

- add atom impl for `EctoMigrationDefault`

- Add EctoMigrationDefault protocol and implement defaults (#87)

- update ecto, fix dialyzer

- support new timeouts

- make select unique before running query

- add doc_index

- add exclusion_constraint_names (#83)

- support referencing aggregates from aggregate filters

- support access syntax

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.7](https://github.com/ash-project/ash_postgres/compare/v0.41.6...v0.41.7) (2021-12-21)

### Bug Fixes:

- ensure repo is compiled (#80)

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.6](https://github.com/ash-project/ash_postgres/compare/v0.41.5...v0.41.6) (2021-12-21)

### Bug Fixes:

- properly construct nested join relationships

- use `CiStringWrapper` type in ash_postgres

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.5](https://github.com/ash-project/ash_postgres/compare/v0.41.4...v0.41.5) (2021-11-26)

### Bug Fixes:

- ensure we are returning \* on upserts (#79)

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.4](https://github.com/ash-project/ash_postgres/compare/v0.41.3...v0.41.4) (2021-11-25)

### Bug Fixes:

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- don't upsert defaults on conflict (#77)

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.3](https://github.com/ash-project/ash_postgres/compare/v0.41.2...v0.41.3) (2021-11-13)

### Bug Fixes:

- handle new if types

- copy query prefix to newly created query (#74)

### Improvements:

- relax ash version requirement

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.2](https://github.com/ash-project/ash_postgres/compare/v0.41.1...v0.41.2) (2021-11-10)

### Bug Fixes:

- copy query prefix to newly created query (#74)

### Improvements:

- add custom migration types, and repo level override

- update to latest version of ash

## [v0.41.1](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.9...v0.41.1) (2021-11-03)

### Bug Fixes:

- copy query prefix to newly created query (#74)

### Improvements:

- update to latest version of ash

## [v0.41.0-rc.9](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.8...v0.41.0-rc.9) (2021-11-01)

### Bug Fixes:

- use proper ecto types everywhere

- try to fix missing paren issue in array_agg

- fix can? for :joins (#73)

- remove unused default value

- use proper identity names for polymorphic resources

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `default` on aggregates

- support `custom_indexes`

## [v0.41.0-rc.8](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.7...v0.41.0-rc.8) (2021-10-25)

### Bug Fixes:

- fix can? for :joins (#73)

- remove unused default value

- use proper identity names for polymorphic resources

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `default` on aggregates

- support `custom_indexes`

## [v0.41.0-rc.7](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.6...v0.41.0-rc.7) (2021-10-24)

### Bug Fixes:

- fix can? for :joins (#73)

- remove unused default value

- use proper identity names for polymorphic resources

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.6](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.5...v0.41.0-rc.6) (2021-09-26)

### Bug Fixes:

- remove unused default value

- use proper identity names for polymorphic resources

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.5](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.4...v0.41.0-rc.5) (2021-09-21)

### Bug Fixes:

- use proper identity names for polymorphic resources

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.4](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.3...v0.41.0-rc.4) (2021-09-21)

### Bug Fixes:

- set identity names propertly for polymorphic resources

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.3](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.2...v0.41.0-rc.3) (2021-09-21)

### Bug Fixes:

- handle nil values in snapshots better

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.2](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.1...v0.41.0-rc.2) (2021-09-21)

### Bug Fixes:

- remove unused field from snapshot parsing

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.1](https://github.com/ash-project/ash_postgres/compare/v0.41.0-rc.0...v0.41.0-rc.1) (2021-09-20)

### Improvements:

- support `custom_indexes`

## [v0.41.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v0.40.11...v0.41.0-rc.0) (2021-09-13)

### Breaking Changes:

- update to latest ash/ecto versions w/ parameterized types

### Improvements:

- Support default tenant migration path in releases (#69)

## [v0.40.11](https://github.com/ash-project/ash_postgres/compare/v0.40.10...v0.40.11) (2021-07-28)

### Bug Fixes:

- set subquery prefix properly

## [v0.40.10](https://github.com/ash-project/ash_postgres/compare/v0.40.9...v0.40.10) (2021-07-27)

### Bug Fixes:

- set subquery source correctly

- create parameter for ci strings

- explicitly set prefix at each level

- interaction w/ attribute and context tenancy

### Improvements:

- info on migration generator output

- use match: :full on attr multitenancy

- update to latest ash

- update to latest ash

- upgrade ash dep

## [v0.40.9](https://github.com/ash-project/ash_postgres/compare/v0.40.8...v0.40.9) (2021-07-22)

### Bug Fixes:

- don't add a non-list to a list

### Improvements:

- add sort + select test

## [v0.40.8](https://github.com/ash-project/ash_postgres/compare/v0.40.7...v0.40.8) (2021-07-19)

### Bug Fixes:

- ensure source table is sorted in lateral join

### Improvements:

- fix significant performance issue in lateral joins

## [v0.40.7](https://github.com/ash-project/ash_postgres/compare/v0.40.6...v0.40.7) (2021-07-12)

### Improvements:

- support default_prefix configuration

## [v0.40.6](https://github.com/ash-project/ash_postgres/compare/v0.40.5...v0.40.6) (2021-07-08)

### Bug Fixes:

- fix migrator mix tasks w/ only/except tenants

- drop foreign keys after table create properly

- drop foreign keys before dropping table

- left_lateral_join for many_to_many aggregates

- properly reference nested aggregate fields for join

- properly determine fallback table for polymorphic resources

- ensure non-tenant resources can be aggregates

- properly set aggregate query sources

- retain parent as bindings

- don't add `rel_source` at all

- properly build atoms list

- horribly hack ecto for dynamic bindings

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- `--name` when generating migrations

- add `mix ash_postgres.rollback`

- update to latest ash

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.5](https://github.com/ash-project/ash_postgres/compare/v0.40.4...v0.40.5) (2021-07-08)

### Bug Fixes:

- fix migrator mix tasks w/ only/except tenants

- drop foreign keys after table create properly

- drop foreign keys before dropping table

- left_lateral_join for many_to_many aggregates

- properly reference nested aggregate fields for join

- properly determine fallback table for polymorphic resources

- ensure non-tenant resources can be aggregates

- properly set aggregate query sources

- retain parent as bindings

- don't add `rel_source` at all

- properly build atoms list

- horribly hack ecto for dynamic bindings

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- add `mix ash_postgres.rollback`

- update to latest ash

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.4](https://github.com/ash-project/ash_postgres/compare/v0.40.3...v0.40.4) (2021-07-05)

### Bug Fixes:

- left_lateral_join for many_to_many aggregates

- properly reference nested aggregate fields for join

- properly determine fallback table for polymorphic resources

- ensure non-tenant resources can be aggregates

- properly set aggregate query sources

- retain parent as bindings

- don't add `rel_source` at all

- properly build atoms list

- horribly hack ecto for dynamic bindings

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- update to latest ash

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.3](https://github.com/ash-project/ash_postgres/compare/v0.40.2...v0.40.3) (2021-07-03)

### Bug Fixes:

- ensure non-tenant resources can be aggregates

- properly set aggregate query sources

- retain parent as bindings

- don't add `rel_source` at all

- properly build atoms list

- horribly hack ecto for dynamic bindings

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.2](https://github.com/ash-project/ash_postgres/compare/v0.40.1...v0.40.2) (2021-07-02)

### Bug Fixes:

- properly set aggregate query sources

- retain parent as bindings

- don't add `rel_source` at all

- properly build atoms list

- horribly hack ecto for dynamic bindings

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.1](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc5...v0.40.1) (2021-07-02)

### Bug Fixes:

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- update to latest ash

- leverage new `private_vars` for errs

## [v0.40.0-rc5](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc4...v0.40.0-rc5) (2021-07-01)

### Bug Fixes:

- properly coalesce aggregate values

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- leverage new `private_vars` for errs

## [v0.40.0-rc4](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc3...v0.40.0-rc4) (2021-06-23)

### Bug Fixes:

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

### Improvements:

- leverage new `private_vars` for errs

## [v0.40.0-rc3](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc2...v0.40.0-rc3) (2021-06-15)

### Bug Fixes:

- always add nullability flag

- sort references only after other same-table ops

- generate multitenant foreign keys properly

## [v0.40.0-rc2](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc1...v0.40.0-rc2) (2021-06-08)

### Bug Fixes:

- sort references only after other same-table ops

- generate multitenant foreign keys properly

## [v0.40.0-rc1](https://github.com/ash-project/ash_postgres/compare/v0.40.0-rc.0...v0.40.0-rc1) (2021-06-05)

## [v0.39.0-rc.0](https://github.com/ash-project/ash_postgres/compare/v0.38.11...v0.39.0-rc.0) (2021-06-04)

### Features:

- support expression based calculations

- support concat + if expressions

### Improvements:

- various other improvements

## [v0.38.11](https://github.com/ash-project/ash_postgres/compare/v0.38.10...v0.38.11) (2021-05-23)

### Bug Fixes:

- set prefix to "public" for fkeys to public schema

### Improvements:

- set explicit prefix on join filters

## [v0.38.10](https://github.com/ash-project/ash_postgres/compare/v0.38.9...v0.38.10) (2021-05-19)

### Improvements:

- support new ash upsert specifying targets

- update to latest ash

## [v0.38.9](https://github.com/ash-project/ash_postgres/compare/v0.38.8...v0.38.9) (2021-05-12)

### Bug Fixes:

- properly group many_to_many aggregates

## [v0.38.8](https://github.com/ash-project/ash_postgres/compare/v0.38.7...v0.38.8) (2021-05-09)

### Improvements:

- update to the latest ash version

## [v0.38.7](https://github.com/ash-project/ash_postgres/compare/v0.38.6...v0.38.7) (2021-05-09)

### Improvements:

- support latest ash/filtering on related aggregates

## [v0.38.6](https://github.com/ash-project/ash_postgres/compare/v0.38.5...v0.38.6) (2021-05-07)

### Bug Fixes:

- properly construct sources for lateral joins

- copy the correct data for lateral join queries

- better errors in error cases

### Improvements:

- update to latest ash

## [v0.38.5](https://github.com/ash-project/ash_postgres/compare/v0.38.4...v0.38.5) (2021-05-07)

### Bug Fixes:

- don't cast booleans to string in last_ditch_cast

## [v0.38.4](https://github.com/ash-project/ash_postgres/compare/v0.38.3...v0.38.4) (2021-05-07)

### Improvements:

- support latest ash version resource sorts

## [v0.38.3](https://github.com/ash-project/ash_postgres/compare/v0.38.2...v0.38.3) (2021-05-06)

### Improvements:

- update to latest ash

- document script to iterate migrations (#65)

## [v0.38.2](https://github.com/ash-project/ash_postgres/compare/v0.38.1...v0.38.2) (2021-05-04)

### Bug Fixes:

- join to join table in lateral join query

- multitenancy + lateral join sources

- don't distinct in lateral joins

## [v0.38.1](https://github.com/ash-project/ash_postgres/compare/v0.38.0...v0.38.1) (2021-05-04)

### Bug Fixes:

- fix fragment processing broken (#64)

## [v0.38.0](https://github.com/ash-project/ash_postgres/compare/v0.37.8...v0.38.0) (2021-04-29)

### Features:

- support new side load improvements

### Improvements:

- Preserve attribute order (#63)

## [v0.37.8](https://github.com/ash-project/ash_postgres/compare/v0.37.7...v0.37.8) (2021-04-27)

### Bug Fixes:

- simpler index names

- don't prefix unique indices with prefix()

- sort index operations last

### Improvements:

- custom index names

## [v0.37.7](https://github.com/ash-project/ash_postgres/compare/v0.37.6...v0.37.7) (2021-04-27)

### Bug Fixes:

- remove inspects that were left in by accident

## [v0.37.6](https://github.com/ash-project/ash_postgres/compare/v0.37.5...v0.37.6) (2021-04-27)

### Bug Fixes:

- type cast atoms to strings in last ditch cast

- properly type cast

- Remove duplicate file extension (#60)

## [v0.37.5](https://github.com/ash-project/ash_postgres/compare/v0.37.4...v0.37.5) (2021-04-27)

### Bug Fixes:

- properly type cast

## [v0.37.4](https://github.com/ash-project/ash_postgres/compare/v0.37.3...v0.37.4) (2021-04-26)

### Improvements:

- support `list` aggregate

## [v0.37.3](https://github.com/ash-project/ash_postgres/compare/v0.37.2...v0.37.3) (2021-04-26)

### Bug Fixes:

- stringify struct defaults in migration generator

- properly comment out extension uninstallation code

## [v0.37.2](https://github.com/ash-project/ash_postgres/compare/v0.37.1...v0.37.2) (2021-04-21)

### Improvements:

- support ash enums

## [v0.37.1](https://github.com/ash-project/ash_postgres/compare/v0.37.0...v0.37.1) (2021-04-19)

### Bug Fixes:

- include type in references (because it is _not_ automatic)

## [v0.37.0](https://github.com/ash-project/ash_postgres/compare/v0.36.5...v0.37.0) (2021-04-19)

### Features:

- add check_constraints, both for validation and migrations

## [v0.36.5](https://github.com/ash-project/ash_postgres/compare/v0.36.4...v0.36.5) (2021-04-13)

### Bug Fixes:

- always drop constraints before modifying

- properly compare old references and new references

## [v0.36.4](https://github.com/ash-project/ash_postgres/compare/v0.36.3...v0.36.4) (2021-04-12)

### Bug Fixes:

- don't explicitly set type in `references`

### Improvements:

- default integers to `:bigint`

## [v0.36.3](https://github.com/ash-project/ash_postgres/compare/v0.36.2...v0.36.3) (2021-04-12)

### Improvements:

- primary autoincrement key as bigserial (#54)

## [v0.36.2](https://github.com/ash-project/ash_postgres/compare/v0.36.1...v0.36.2) (2021-04-09)

### Improvements:

- support new ash select feature

## [v0.36.1](https://github.com/ash-project/ash_postgres/compare/v0.36.0...v0.36.1) (2021-04-04)

### Bug Fixes:

- raise when `all_tenants/0` default impl is called

### Improvements:

- add sum aggregate (#53)

## [v0.36.0](https://github.com/ash-project/ash_postgres/compare/v0.35.5...v0.36.0) (2021-04-01)

### Features:

- support configuring references

- support configuring polymorphic references

- support `distinct` Ash queries

## [v0.35.5](https://github.com/ash-project/ash_postgres/compare/v0.35.4...v0.35.5) (2021-03-29)

### Bug Fixes:

- Made AshPostgres.Repo.init/2 overridable (#51)

### Improvements:

- only count resources w/ create action for nullability

- better error message on missing table

## [v0.35.4](https://github.com/ash-project/ash_postgres/compare/v0.35.3...v0.35.4) (2021-03-21)

### Bug Fixes:

- reroute `Ash.Type.UUID` to `:uuid` in migrations

- force create extensions snapshot

### Improvements:

- consistent foreign key names

- support custom foreign key error messages

## [v0.35.3](https://github.com/ash-project/ash_postgres/compare/v0.35.2...v0.35.3) (2021-03-19)

### Bug Fixes:

- force create extensions snapshot

- more conservative inner join checks

- add back in inner join detection logic

### Improvements:

- consistent foreign key names

- support custom foreign key error messages

## [v0.35.2](https://github.com/ash-project/ash_postgres/compare/v0.35.1...v0.35.2) (2021-03-05)

### Bug Fixes:

- more conservative inner join checks

- add back in inner join detection logic

## [v0.35.1](https://github.com/ash-project/ash_postgres/compare/v0.35.0...v0.35.1) (2021-03-02)

### Bug Fixes:

- don't start the whole app in migrate

## [v0.35.0](https://github.com/ash-project/ash_postgres/compare/v0.34.7...v0.35.0) (2021-03-02)

### Features:

- automatically install extensions from repo

## [v0.34.7](https://github.com/ash-project/ash_postgres/compare/v0.34.6...v0.34.7) (2021-03-02)

### Bug Fixes:

- typo in references for multitenancy

- `null: true` when attr isn't on all resources for a table

## [v0.34.6](https://github.com/ash-project/ash_postgres/compare/v0.34.5...v0.34.6) (2021-02-24)

### Bug Fixes:

- better embedded filters, switch to latest ash

## [v0.34.5](https://github.com/ash-project/ash_postgres/compare/v0.34.4...v0.34.5) (2021-02-23)

### Improvements:

- support latest ash

## [v0.34.4](https://github.com/ash-project/ash_postgres/compare/v0.34.3...v0.34.4) (2021-02-08)

### Bug Fixes:

- trim when choosing new attribute name

## [v0.34.3](https://github.com/ash-project/ash_postgres/compare/v0.34.2...v0.34.3) (2021-02-06)

### Bug Fixes:

- don't reference polymorphic tables to belongs_to relationships

## [v0.34.2](https://github.com/ash-project/ash_postgres/compare/v0.34.1...v0.34.2) (2021-02-06)

### Bug Fixes:

- set up references properly

## [v0.34.1](https://github.com/ash-project/ash_postgres/compare/v0.34.0...v0.34.1) (2021-02-06)

### Bug Fixes:

- reference the configured table if set

## [v0.34.0](https://github.com/ash-project/ash_postgres/compare/v0.33.1...v0.34.0) (2021-02-06)

### Features:

- support polymorphic relationships

## [v0.33.1](https://github.com/ash-project/ash_postgres/compare/v0.33.0...v0.33.1) (2021-01-27)

### Bug Fixes:

- actually insert the tracking row

## [v0.33.0](https://github.com/ash-project/ash_postgres/compare/v0.32.2...v0.33.0) (2021-01-27)

### Features:

- add `mix ash_postgres.create`

- add `mix ash_postgres.migrate`

- add `mix ash_postgres.migrate --tenants`

- add `mix ash_postgres.drop`

### Bug Fixes:

- rework the way multitenant migrations work

## [v0.32.2](https://github.com/ash-project/ash_postgres/compare/v0.32.1...v0.32.2) (2021-01-26)

### Bug Fixes:

- un-break the `in` filter type casting code

### Improvements:

- better errors for multitenant unique constraints

## [v0.32.1](https://github.com/ash-project/ash_postgres/compare/v0.32.0...v0.32.1) (2021-01-24)

### Bug Fixes:

- `ago` was adding, not subtracting

## [v0.32.0](https://github.com/ash-project/ash_postgres/compare/v0.31.1...v0.32.0) (2021-01-24)

### Features:

- support latest ash + contains

## [v0.31.1](https://github.com/ash-project/ash_postgres/compare/v0.31.0...v0.31.1) (2021-01-22)

### Improvements:

- update to latest ash

## [v0.31.0](https://github.com/ash-project/ash_postgres/compare/v0.30.1...v0.31.0) (2021-01-22)

### Features:

- support fragments

- support type casting

- update to latest ash to support expressions

### Bug Fixes:

- update CI versions

## [v0.30.1](https://github.com/ash-project/ash_postgres/compare/v0.30.0...v0.30.1) (2021-01-13)

## [v0.30.0](https://github.com/ash-project/ash_postgres/compare/v0.29.6...v0.30.0) (2021-01-13)

### Features:

- Add check_migrated option to migration generator (#40) (#43)

## [v0.29.6](https://github.com/ash-project/ash_postgres/compare/v0.29.5...v0.29.6) (2021-01-12)

### Bug Fixes:

- rename out of phase, small migration fix

## [v0.29.5](https://github.com/ash-project/ash_postgres/compare/v0.29.4...v0.29.5) (2021-01-10)

### Improvements:

- Use ecto_sql formatter settings (#38)

## [v0.29.4](https://github.com/ash-project/ash_postgres/compare/v0.29.3...v0.29.4) (2021-01-10)

### Improvements:

- Omit field opts if they are default values (#37)

## [v0.29.3](https://github.com/ash-project/ash_postgres/compare/v0.29.2...v0.29.3) (2021-01-08)

### Improvements:

- support latest ash

## [v0.29.2](https://github.com/ash-project/ash_postgres/compare/v0.29.1...v0.29.2) (2021-01-08)

### Improvements:

- Make integer serial if generated

## [v0.29.1](https://github.com/ash-project/ash_postgres/compare/v0.29.0...v0.29.1) (2021-01-08)

### Improvements:

- support latest ash version

## [v0.29.0](https://github.com/ash-project/ash_postgres/compare/v0.28.1...v0.29.0) (2021-01-08)

### Features:

- retain snapshot history

### Improvements:

- support latest ash version

## [v0.28.1](https://github.com/ash-project/ash_postgres/compare/v0.28.0...v0.28.1) (2021-01-07)

### Improvements:

- Add :binary migration type (#33)

## [v0.28.0](https://github.com/ash-project/ash_postgres/compare/v0.27.0...v0.28.0) (2020-12-29)

### Features:

- support latest Ash version

## [v0.27.0](https://github.com/ash-project/ash_postgres/compare/v0.26.2...v0.27.0) (2020-12-23)

### Features:

- support refs on both sides of operators

### Bug Fixes:

- bump ash version

## [v0.26.2](https://github.com/ash-project/ash_postgres/compare/v0.26.1...v0.26.2) (2020-12-06)

### Bug Fixes:

- properly accept the `tenant_migration_path`

## [v0.26.1](https://github.com/ash-project/ash_postgres/compare/v0.26.0...v0.26.1) (2020-12-01)

### Bug Fixes:

- set default properly when modifying

## [v0.26.0](https://github.com/ash-project/ash_postgres/compare/v0.25.5...v0.26.0) (2020-11-25)

### Features:

- don't drop columns unless explicitly told to

### Bug Fixes:

- various migration generator bug fixes

## [v0.25.5](https://github.com/ash-project/ash_postgres/compare/v0.25.4...v0.25.5) (2020-11-17)

### Bug Fixes:

- drop constraints outside of phases (#29)

## [v0.25.4](https://github.com/ash-project/ash_postgres/compare/v0.25.3...v0.25.4) (2020-11-07)

### Bug Fixes:

- only alter the things that have changed

## [v0.25.3](https://github.com/ash-project/ash_postgres/compare/v0.25.2...v0.25.3) (2020-11-06)

### Improvements:

- add utc_datetime migration type

## [v0.25.2](https://github.com/ash-project/ash_postgres/compare/v0.25.1...v0.25.2) (2020-11-03)

### Bug Fixes:

- access data_layer_query with function

## [v0.25.1](https://github.com/ash-project/ash_postgres/compare/v0.25.0...v0.25.1) (2020-10-29)

### Improvements:

- mark repo as not requiring compile-time dep

## [v0.25.0](https://github.com/ash-project/ash_postgres/compare/v0.24.0...v0.25.0) (2020-10-29)

### Features:

- multitenancy (#25)

### Bug Fixes:

- verify repo using ensure_compiled

## [v0.24.0](https://github.com/ash-project/ash_postgres/compare/v0.23.2...v0.24.0) (2020-10-17)

### Features:

- support latest ash

## [v0.23.2](https://github.com/ash-project/ash_postgres/compare/v0.23.1...v0.23.2) (2020-10-07)

## [v0.23.1](https://github.com/ash-project/ash_postgres/compare/v0.23.0...v0.23.1) (2020-10-06)

## [v0.23.0](https://github.com/ash-project/ash_postgres/compare/v0.22.1...v0.23.0) (2020-10-06)

### Features:

- update to latest ash, trigram filter

## [v0.22.1](https://github.com/ash-project/ash_postgres/compare/v0.22.0...v0.22.1) (2020-10-01)

### Bug Fixes:

- don't group alters with creates (#22)

- add jason dependency, clean lockfile (#21)

## [v0.22.0](https://github.com/ash-project/ash_postgres/compare/v0.21.0...v0.22.0) (2020-09-24)

### Features:

- fix error when filtering with `true`

### Bug Fixes:

- broken types for `in` operator

## [v0.21.0](https://github.com/ash-project/ash_postgres/compare/v0.20.1...v0.21.0) (2020-09-19)

### Features:

- support base_filter (#18)

## [v0.20.1](https://github.com/ash-project/ash_postgres/compare/v0.20.0...v0.20.1) (2020-09-11)

### Bug Fixes:

- document/update migration path logic

## [v0.20.0](https://github.com/ash-project/ash_postgres/compare/v0.19.0...v0.20.0) (2020-09-11)

### Features:

- snapshot-based migration generator

## [v0.19.0](https://github.com/ash-project/ash_postgres/compare/v0.18.0...v0.19.0) (2020-09-02)

### Features:

- support inner joins when possible (#15)

### Bug Fixes:

- better support for aggregates/calculations when delegating

- don't fail w/ no extensions configured

## [v0.18.0](https://github.com/ash-project/ash_postgres/compare/v0.17.0...v0.18.0) (2020-08-26)

### Features:

- update to ash 1.11 (#13)

- support Ash v1.10 (#12)

- support latest ash

- update to latest ash

## [v0.17.0](https://github.com/ash-project/ash_postgres/compare/v0.16.1...v0.17.0) (2020-08-26)

### Features:

- update to ash 1.11 (#13)

- support Ash v1.10 (#12)

- support latest ash

- update to latest ash

## [v0.16.1](https://github.com/ash-project/ash_postgres/compare/v0.16.0...v0.16.1) (2020-08-19)

### Bug Fixes:

- fix compile/dialyzer issues

## [v0.16.0](https://github.com/ash-project/ash_postgres/compare/v0.15.0...v0.16.0) (2020-08-19)

### Features:

- update to latest ash

- update to latest version of ash

## [v0.15.0](https://github.com/ash-project/ash_postgres/compare/v0.14.0...v0.15.0) (2020-08-18)

### Features:

- update to latest version of ash

## [v0.14.0](https://github.com/ash-project/ash_postgres/compare/v0.13.0...v0.14.0) (2020-08-17)

### Features:

- support ash 1.7

- support named aggregates

## [v0.13.0](https://github.com/ash-project/ash_postgres/compare/v0.12.1...v0.13.0) (2020-07-25)

### Features:

- update to latest ash

- support latest ash

## [v0.12.1](https://github.com/ash-project/ash_postgres/compare/v0.12.0...v0.12.1) (2020-07-24)

### Bug Fixes:

- add can? for `:aggregate`

## [v0.12.0](https://github.com/ash-project/ash_postgres/compare/0.11.2...v0.12.0) (2020-07-24)

### Features:

- update to latest ash

## [v0.11.2](https://github.com/ash-project/ash_postgres/compare/0.11.1...v0.11.2) (2020-07-23)

### Bug Fixes:

## [v0.11.1](https://github.com/ash-project/ash_postgres/compare/0.11.0...v0.11.1) (2020-07-23)

### Bug Fixes:

## [v0.11.0](https://github.com/ash-project/ash_postgres/compare/0.10.0...v0.11.0) (2020-07-23)

### Features:

- support ash 13.0 aggregates

## [v0.10.0](https://github.com/ash-project/ash_postgres/compare/0.9.0...v0.10.0) (2020-07-15)

### Features:

- update to latest ash

## [v0.9.0](https://github.com/ash-project/ash_postgres/compare/0.8.0...v0.9.0) (2020-07-13)

### Features:

- update to latest ash

## [v0.8.0](https://github.com/ash-project/ash_postgres/compare/0.7.0...v0.8.0) (2020-07-09)

### Features:

- update to latest ash

## [v0.7.0](https://github.com/ash-project/ash_postgres/compare/0.6.0...v0.7.0) (2020-07-09)

### Features:

- update to latest ash

- update to latest ash, add docs

- update to ash 0.9.1 for transactions

## [v0.6.0](https://github.com/ash-project/ash_postgres/compare/0.5.0...v0.6.0) (2020-06-29)

### Features:

- update to latest ash

## [v0.5.0](https://github.com/ash-project/ash_postgres/compare/0.4.0...v0.5.0) (2020-06-29)

### Features:

- upgrade to latest ash

## [v0.4.0](https://github.com/ash-project/ash_postgres/compare/0.3.0...v0.4.0) (2020-06-27)

### Features:

- update to latest ash

## [v0.3.0](https://github.com/ash-project/ash_postgres/compare/0.2.1...v0.3.0) (2020-06-19)

### Features:

- New filter style (#10)

## [v0.2.1](https://github.com/ash-project/ash_postgres/compare/0.2.0...v0.2.1) (2020-06-15)

### Bug Fixes:

- update .formatter.exs

## [v0.2.0](https://github.com/ash-project/ash_postgres/compare/0.1.4...v0.2.0) (2020-06-14)

### Features:

- use the new DSL builder for config (#7)

## [v0.1.4](https://github.com/ash-project/ash_postgres/compare/0.1.3...v0.1.4) (2020-06-05)

### Bug Fixes:

- update ash version dependency

- account for removal of name

## [v0.1.3](https://github.com/ash-project/ash_postgres/compare/0.1.2...v0.1.3) (2020-06-03)

This release was a test of our automatic hex.pm package deployment

## Begin Changelog