Commit Graph

716 Commits

Author SHA1 Message Date
belevy
ceab69a4e9 Add source to SqlAggregate, the Over instance uses this to prevent pseudo-aggregates(from groupBy) and already windowed values from being windowed 2021-02-15 08:09:35 -06:00
belevy
8efca2ba05 Make SqlAggregate selectable, window now returns a SqlAggregate since the results are legal in a grouped query. Added SqlQueryHaving to allow use of SqlAggregate in the having clause. 2021-02-14 19:35:40 -06:00
belevy
1fd1d64d6d Add partitionBy_ and orderBy_ support to windows 2021-02-14 17:24:58 -06:00
belevy
26720925db Add Window Functions module 2021-02-14 17:18:27 -06:00
belevy
75f9c8d3b8 Add new experimental aggregates using SqlAggregate wrapper around SqlExpr. 2021-02-14 16:56:58 -06:00
belevy
1f52363407 Cleanup the rest of the Values, fix the example code and update to use Esqueleto.Experimental 2021-02-13 20:35:21 -06:00
belevy
6b12edbd8c fix postgres tests 2021-02-13 19:59:21 -06:00
belevy
8aff51b4d8 Modify SqlSelect to remove the backwards FunDep. Remove the need for the Value newtype 2021-02-13 19:55:41 -06:00
belevy
096c1acfd6 Unbreak lateral joins by introducing a completely different ValidOnClause constraint 2021-02-13 19:50:02 -06:00
belevy
9bf34761a4 ValidOnClause was too restrictive, ToFrom is actually the correct amount of leniency. ValidOnClause would not catch use of on for a cross join but would prevent nested joins 2021-02-12 11:55:37 -06:00
belevy
4f9793f6cb Bump version and add more comments 2021-02-11 20:41:21 -06:00
Ben Levy
ae9ef126d9
Merge pull request #10 from foxhound-systems/from-raw
From raw
2021-02-11 13:43:35 -06:00
belevy
75619fecb7 Expose the new functions and fix the mysql test compilation error (type inference was wonky with Union replaced with union_ 2021-02-11 13:24:46 -06:00
belevy
dd8814e678 Convert all of experimental to use new From type instead of From type class. Make the data constructors second class, functions should be used. Introduce *Lateral functions, using the same type for lateral and non lateral queries was probably a mistake. 2021-02-11 11:54:50 -06:00
belevy
7a579e921a Create a FromRaw to replace FromSubquery and FromIdent in from clause. Modify Experimental to only use FromRaw. 2021-02-08 15:10:36 -06:00
Ben Levy
9d1550b8b1
Merge branch 'master' into explode-from-gadt 2021-02-05 16:30:02 -06:00
Felix Paulusma
8fb9a1fe24
Also export ValidOnClauseValue (#232)
* Also export ValidOnClauseValue

This is a constraint on `on`, but not exported, so you have to go into the source to see what it does. Exporting makes this easier.

* add to ChangeLog and bumped version
2021-02-05 14:41:40 -07:00
belevy
1ee1866270 Update changelog 2021-02-05 12:07:36 -06:00
belevy
c821b619c2 Expose Experimental submodules 2021-02-05 11:45:04 -06:00
Ben Levy
e3ae687309
Merge pull request #9 from foxhound-systems/final-expr
Convert SqlExpr to a final encoding
2021-02-05 11:39:21 -06:00
belevy
6a420273c0 fixup subselectUnsafe test because inference engine doesnt work for it so good 2021-01-31 16:46:29 -06:00
belevy
65ac3c7e5a Added support for (^.) and (?.) to aggregated entities. Allow grouping on Maybe Entity 2021-01-28 16:03:24 -06:00
belevy
b2a94c9e49 Demonstrate a simple case of Aggregation 2021-01-21 21:03:03 -06:00
belevy
01407d256b Cleanup ToAliasRefernce; Add isReference meta to value reference even though that info isnt currently used anywhere 2021-01-20 21:35:56 -06:00
belevy
2d09ae1fe8 Change aliased val to be legal value by waiting until expr materialization in select clause before adding AS <alias> 2021-01-20 21:28:26 -06:00
belevy
2ab733fbee Make postgres tests pass 2021-01-19 14:26:27 -06:00
belevy
2f5ae76cbf Remove EInsert and EInsertFinal 2021-01-19 13:31:26 -06:00
belevy
ec853664aa Remove ESet 2021-01-19 12:35:19 -06:00
belevy
c9eb845568 Remove EOrderByRandom, calling distinctOnOrderBy with rand will choke the db but you shouldnt be using rand anyway. distinctOnOrderBy seems dangerous though 2021-01-19 09:51:23 -06:00
belevy
2da0526b90 Remove EOrderBy, EDistinctOn; Change PreprocessedFrom a to just be an independent datatype 2021-01-19 09:46:02 -06:00
belevy
f77134e788 Remove entity specific constructors from SqlExpr 2021-01-18 22:21:56 -06:00
belevy
4dc58ec1b8 Remove EList and EEmptyList; ERaw is now technically possible in each case since it is generalized to all 2021-01-17 18:26:00 -06:00
belevy
8a9b586f29 Get rid of AliasedValue and ValueReference; added sqlExprMetaAlias to SqlExprMeta 2021-01-17 16:33:10 -06:00
belevy
89bd673c62 Update ERaw to change the direction of NeedParens (parent now tells child context). Removed need for composite key constructor 2021-01-17 14:47:32 -06:00
belevy
1ba08abfb3 Merge remote-tracking branch 'upstream/master' into explode-from-gadt 2020-12-04 12:05:33 -06:00
Matt Parsons
da72f428d1
fix ci (#233) 2020-12-04 10:51:14 -07:00
belevy
9f6f9b325c Cleanup hackage documentation. Make sure stylish ran correctly. Update changelog and bump version 2020-11-29 19:50:42 -06:00
belevy
7b59829f3e Reorganize Experimental folder. Move Subquery into core Experimental.From module. 2020-11-08 21:03:37 -06:00
parsonsmatt
305b11e58e esqueleto-3.4.0.1 2020-11-04 14:01:49 -07:00
Matt Parsons
521ac01488
Support persistent-2.11 (#226)
* Support persistent-2.11

* sigh

* woop woop

* use hackage

* cpp so we don't have to tighten bounds

* add changelog entry

* lmao timing attacks

* no
2020-11-04 14:01:23 -07:00
belevy
a8f8c87000 Explode the From GADT. Move runFrom into the ToFrom typeclass removing the need for the intermediate structure. Extract the parts of the Experimental module into submodules. 2020-11-04 11:30:23 -06:00
Ben Levy
eb034458de
Simplify ToFromT (#225)
* Simplify ToFromT. Converted most closed type families to be associated type families with the exception of IsLateral, Nullable and the two new FromOnClause and FromCrossJoin type families that handle the overlaps instead of ToFromT
2020-11-04 11:15:17 -06:00
Georgi Lyubenov
eb91208e94
Use type families instead of empty classes (#220)
* Use type families instead of empty classes

* It's not possible to expand a closed type family.

Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>

Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
2020-10-29 18:04:28 -06:00
Matt Parsons
b35713c09f
Autoformatting + Stylish Haskell Config (#218)
* Add stylish-haskell.yaml, update spacing to 4 in configs

* update travis

* lol

* major formatting stuff

* fix parse error

* fix

* warnings, more tidying up

* Add style guide [ci skip]

* faster build perhaps

* cabbal

* sigh
2020-10-29 16:20:52 -06:00
Arthur Xavier
4f6b02298c
Deprecate ToAliasT and ToAliasReferenceT (#221)
* Make ToAliasT and ToAliasReferenceT associated types of the corresponding classes

* Update changelog

* Remove ToAliasT and ToAliasReferenceT

* Update changelog and deprecate type families instead of deleting them

* Apply suggestions from code review

Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>

Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
2020-10-29 15:35:18 -06:00
Matt Parsons
4ea3d5da59
Github Actions (#223)
* Create haskell.yml
2020-10-29 15:10:54 -06:00
Georgi Lyubenov
d2925e227c Remove a double adverb usage 2020-10-29 07:16:56 -06:00
Ben Levy
a319d13bee
[Experimental] More powerful queries (#215)
* Initial attempt at Lateral joins

* Fix lateral queries for Inner and Left joins. Remove for Full and Right as this is apparently illegal(who knew). Add TypeError on Full and Right joins. Update on clause to use a custom constraint instead of relying on ToFrom.

* Fix typo leading to erroneous ToFrom instance

* Implement non-recursive CTE's

* add withRecursive; cleanup whitespace

* Fix multiple recursive CTEs. Apparently the spec just wants RECURSIVE if any of the queries are recursive.

* Add test to verify that a CTE can reference a previously defined CTE

* Update with/Recursive to return an element of a from clause to allow for joins against CTEs

* Modify set operations to use a custom data type + typeclass + typefamily to allow direct use of SqlQuery a in set operation and to allow recursive cte's to unify syntax with SqlSetOperation. Added lowercase names for set operations. If we can migrate off the constructor names we may be able to simplify the implementation.

* Fixed haddock documentation issue from v3.3.4.0 and added documentation
for new features introduced by v3.4.0.0

* fixed comments that were changed while debugging haddock build

* Cleanup formatting in From per PR. Cleanup ValidOnClause, added documentation and reduced the number of instances

* Update src/Database/Esqueleto/Experimental.hs

Co-authored-by: charukiewicz <charukiewicz@protonmail.com>
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
2020-10-28 21:37:17 -06:00
Maximilian Tagher
8adab239df
Add recommended hlint rules for proper isNothing usage (#214)
* Add recommended hlint rules for proper isNothing usage

* Update changelog.md
2020-10-28 10:42:35 -06:00
Matt Parsons
56d1e348c3
update nightly resolver (#208)
* update nightly resolver

* hmm
2020-10-28 10:40:22 -06:00