All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
v0.3.2 (2025-10-10)
- only do untyped expressions for array get_path types by @zachdaniel
v0.3.1 (2025-10-10)
- weird typing issue with Postgres. (#178) by James Harton (#178)
-
Support calling immutable version of
ash_raise_error(#175) by @stevebrambilla (#175) -
add immutable_errors? to sql behaviour by @stevebrambilla (#175)
v0.3.0 (2025-09-29)
- implemented the SQL translation for Has/Intersects functions (#176) by Abdessabour Moutik (#176)
- don't add unnecessary option to
relationship_pathsby @zachdaniel
v0.2.93 (2025-09-19)
-
include all aggregates in joined query by @zachdaniel
-
handle arrays from get_path calls by @zachdaniel
-
use
?operator forinin jsonb extract case by @zachdaniel -
match on 4-tuple case for composite types by @zachdaniel
-
properly add parent referenced aggregates while joining by @zachdaniel
-
properly avoid duplicate distincts applied to queries by @zachdaniel
v0.2.92 (2025-09-01)
- retain joined relationships for distinct requirements by @zachdaniel
v0.2.91 (2025-08-31)
- handle case where sort is not set in bindings by @zachdaniel
v0.2.90 (2025-08-21)
-
Sanitize distinct in joins (#168) by @jechol
-
don't distinct aggregate subqueries by @zachdaniel
-
Expand distinct with sort order (#162) by Kenneth Kostrešević
- support unrelated aggregates (#164) by @zachdaniel
v0.2.89 (2025-07-25)
- pull tenant from query properly by @zachdaniel
v0.2.88 (2025-07-23)
- add missing pattern match on exists aggregate by @zachdaniel
v0.2.87 (2025-07-22)
-
include references within
existswhile building calculation joins by @zachdaniel -
make it clear that we don't support aggregates w/ modify_query by @zachdaniel
v0.2.86 (2025-07-17)
-
ensure aggregates set
refs_at_pathand calc hydration uses them by @zachdaniel -
ensure that decimal-producing calculations cast args as decimals by @zachdaniel
v0.2.85 (2025-07-09)
- ensure we join nested parent references properly by @zachdaniel
v0.2.84 (2025-07-02)
- handle parent paths in first relationship of exists path by @zachdaniel
v0.2.83 (2025-06-25)
- ensure calculations are properly type cast by @zachdaniel
v0.2.82 (2025-06-18)
- optimize/simplify boolean functions like && and || by @zachdaniel
v0.2.81 (2025-06-17)
- fix another double-type-casting issue by @zachdaniel
v0.2.80 (2025-06-12)
- don't double cast literals by @zachdaniel
v0.2.79 (2025-06-10)
-
ensure that subqueries have prefix set on atomic update selection by @zachdaniel
-
apply subquery schema on many-to-many relationships (#143) by kernel-io
v0.2.78 (2025-06-05)
-
always cast operator types, even simple ones
-
undo change that prevents casting literals
v0.2.77 (2025-06-04)
-
clean up a whole slew of ecto hacks that arent necessary
-
don't implicitly cast all values
- reduce cases of double-typecasting
v0.2.76 (2025-05-23)
- retain constraints when type casting
v0.2.75 (2025-05-06)
-
use higher start bindings to avoid shadowing (#133)
-
fix calculation remapping post-distinct
-
support combination queries (#131)
-
support combination queries
-
Support rem through fragment (#130)
v0.2.74 (2025-05-01)
- don't group aggregates w/ parent refs
v0.2.73 (2025-04-29)
-
prefix subqueries for atomic validations
-
change start_of_day
v0.2.72 (2025-04-22)
-
prefix subqueries for atomic validations
-
change start_of_day
v0.2.71 (2025-04-17)
- convert tz properly for start_of_day
v0.2.70 (2025-04-17)
- handle query aggregate in aggregate field properly
v0.2.69 (2025-04-15)
- pass correct operation to split_statements (#121)
v0.2.68 (2025-04-15)
-
duplicate aggregate pruning was pruning non-duplicates
-
handle map type logic natively in ash_sql instead of extensions
v0.2.67 (2025-04-09)
-
we do need to set the binding, but can just give it a unique name
-
remove explicitly set binding.
v0.2.66 (2025-03-26)
- set proper
refs_at_pathforexistsqueries
v0.2.65 (2025-03-26)
- call
.to_tenanton the ash query, not the ecto query
v0.2.64 (2025-03-26)
- use new fill_template fn (#115)
v0.2.63 (2025-03-25)
- handle embeds typed as json/jsonb/map
v0.2.62 (2025-03-18)
-
support aggregate queries that are against aggregates or calcs
-
add handling for multidimensional arrays in
INoperator
v0.2.61 (2025-03-11)
-
don't use embedded resources as expressions
-
hydrate aggregate expressions at the target
v0.2.60 (2025-03-03)
- properly join to parent paths in aggregate filters
v0.2.59 (2025-02-27)
- wrap strpos comparison in parenthesis
v0.2.58 (2025-02-25)
-
various binding index fixes
-
use new functions in
ashfor proper expansion -
use
count()when no field is provided for count aggregate
v0.2.57 (2025-02-17)
-
rewrite loaded calculations in distinct subqueries
-
ensure literal maps are casted to maps in atomic update select
-
cast complex types in operator signatures
v0.2.56 (2025-02-11)
- more consistent tz handling in
start_of_day
v0.2.55 (2025-02-11)
- add StringPosition expression (#98) (#99)
v0.2.54 (2025-02-08)
-
properly join to aggregates in
parentexprs in relationships -
handle non-utc timezoned databases
-
join requirements in parent exprs in first relationship of aggregates
v0.2.53 (2025-02-05)
- simplify lateral join source
v0.2.52 (2025-02-04)
- ensure single agg query has bindings
v0.2.51 (2025-02-03)
-
don't attempt to cast to
nil -
Use modified query instead of original when calling add_single_aggs (#94)
v0.2.50 (2025-01-31)
- properly handle database time zones in
start_of_day/1-2
v0.2.49 (2025-01-30)
- support
start_of_day/1-2
v0.2.48 (2025-01-23)
- handle nested many to many binding overlaps
v0.2.47 (2025-01-22)
- properly fetch source query for many to many rels
v0.2.46 (2025-01-20)
- support
no_cast?in bindings while expr parsing
v0.2.45 (2025-01-14)
- ensure that referenced fields are joined in agg queries
v0.2.44 (2025-01-06)
-
filter query by source record ids when lateral joining
-
use
normalizefor string length -
use right value for resource aggregate default in sort (#85)
-
handle resource aggregate with function default in sort (#84)
v0.2.43 (2024-12-26)
- return
{:empty, query}on empty atomic changes
v0.2.42 (2024-12-20)
- properly bind many to many relationships in aggregates
v0.2.41 (2024-12-12)
-
apply attribute multitenancy on joined resources
-
use lateral join for parent_expr many to many joins
-
ensure join binding is available for join resource in exists
-
add missing pattern for setting group context
v0.2.40 (2024-12-06)
- various fixes to the methodology behind type determination
v0.2.39 (2024-11-04)
- properly reference
from_many?source binding while joining
v0.2.38 (2024-10-29)
- ensure we join on parent expressions when joining filtered relationships
v0.2.37 (2024-10-28)
-
properly determine join style for parent expressions
-
count: use asterisk if not distinct by field is given (#72)
v0.2.36 (2024-10-08)
- properly handle parent bindings in aggregate references
v0.2.35 (2024-10-07)
-
properly group aggregates together
-
don't attempt to add multiple filter statements to a single aggregate
v0.2.34 (2024-09-27)
- use
NULLfor cases where we getnilvalues. We actually wantnilhere.
v0.2.33 (2024-09-26)
- don't reorder selects when modifying for subquery presence
v0.2.25 (2024-07-22)
- track subqueries while selecting atomics
v0.2.24 (2024-07-17)
- properly determine
parent_asbindings for nested joins
v0.2.23 (2024-07-17)
-
fix build
-
properly expand resource calculation/aggregates in fields
v0.2.22 (2024-07-16)
-
properly adjust calculation expressions before adding to query
-
properly traverse nested maps in non-select contexts
-
pass correct resource down when adding calculation fields
v0.2.21 (2024-07-16)
-
move
FILTERoutside ofarray_aggaggregation -
properly honor
include_nil?option on sorted first aggregates
v0.2.20 (2024-07-15)
- don't set load on anonymous aggregates
v0.2.19 (2024-07-15)
- match on old return types for
determine_typescode
v0.2.18 (2024-07-15)
- properly set aggregate query context
v0.2.17 (2024-07-14)
- use
determine_types/3in callback
v0.2.16 (2024-07-14)
- cast atomics when creating expressions
- support latest format for type determination type
v0.2.15 (2024-07-13)
- use original field for type signal when selecting atomics
v0.2.14 (2024-07-13)
- use explicit
NULLfragment in error type hints
v0.2.13 (2024-07-12)
- use expression type for atomic updates
v0.2.12 (2024-07-12)
- properly handle nested
nilfilters in boolean statements
v0.2.11 (2024-07-11)
- select pkey so data layers don't have to
v0.2.10 (2024-07-08)
- ensure selected atomics are also reversed
v0.2.9 (2024-07-08)
- retain original order for atomics statements
v0.2.8 (2024-07-06)
- handle
{:array, :map}stored as:map
v0.2.7 (2024-06-27)
- prefer resource's static prefix over current query's prefix
v0.2.6 (2024-06-18)
- ensure we always honor
atomics_at_bindingoption from data layer
v0.2.5 (2024-06-13)
- properly remap selects on nested subqueries
v0.2.4 (2024-06-13)
-
remap nested selects when sort requires a subquery
-
don't create dynamics for map atomics where there are no expressions
- only use
jsonb_build_objectfor expressions, not literals
v0.2.3 (2024-06-06)
- various fixes to retain lateral join context
v0.2.2 (2024-06-05)
- carry over tenant in joined queries
v0.2.1 (2024-06-02)
- select dynamics uses
__new_prefix
v0.2.0 (2024-05-29)
-
add auto dispatch of dynamic_expr calls to behaviour module (#33)
-
add auto dispatch of dynamic_expr calls to behaviour module
- match on new & old parameterized types
- support selecting atomic results into a subquery, and using those as the atomic values
v0.1.3 (2024-05-22)
-
handle anonymous sorting aggregates
-
properly set aggregate source binding when adding aggregate calculations
-
use period notation to access aggregate context fields (#30)
-
use SQL standard = instead of non standard == (#28)
v0.1.2 (2024-05-10)
v0.1.1-rc.20 (2024-05-08)
- don't use
fragment("1")because ecto requires a proper select
v0.1.1-rc.19 (2024-05-05)
- use calculation context, and set calculation constraints for aggregates
v0.1.1-rc.18 (2024-05-05)
-
don't use
ilikeif its not supported -
use type for now expr if available
v0.1.1-rc.17 (2024-05-02)
- use manual relationship impl for exists subqueries
v0.1.1-rc.16 (2024-05-01)
- hydrate & fill template for related queries
v0.1.1-rc.15 (2024-04-29)
- properly support custom expressions
v0.1.1-rc.14 (2024-04-29)
-
fix argument order in AshSql.Bindings.default_bindings/4
-
query_with_atomics pattern matching error
-
fix argument order in AshSql.Bindings.default_bindings/4
v0.1.1-rc.13 (2024-04-27)
- better inner-join-ability detection
v0.1.1-rc.12 (2024-04-26)
- better type casting logic
v0.1.1-rc.11 (2024-04-23)
-
ensure tenant is properly set in aggregates
-
properly pass context through when expanding calculations in aggregates
v0.1.1-rc.10 (2024-04-22)
- optimize
containswhen used with literal strings
v0.1.1-rc.9 (2024-04-22)
- make
strpos_functionoverridable (sqlite usesinstr)
v0.1.1-rc.8 (2024-04-22)
- handle non-literal lists in string join
v0.1.1-rc.7 (2024-04-20)
-
ensure that
from_many?is properly honored -
ensure applied query gets joined
-
apply related filter inside of related subquery
v0.1.1-rc.6 (2024-04-12)
- apply aggregate filters on first join aggregates
v0.1.1-rc.5 (2024-04-11)
-
don't use to_tenant
-
loosen elixir requirements
-
automatically wrap fragments in parenthesis
-
remove unnecessary parenthesis from builtin fragments
v0.1.1-rc.4 (2024-04-05)
- loosen ash rc restriction
v0.1.1-rc.3 (2024-04-01)
- fixes for
ash_postgres
v0.1.1-rc.2 (2024-04-01)
- refactoring out and parameterization to support ash_sqlite
v0.1.1-rc.1 (2024-04-01)
- remove postgres-specific copy-pasta
v0.1.1-rc.0 (2024-04-01)
v0.1.0 (2024-04-01)
- extract a bunch of things out of AshPostgres