* Add docs for experimental delete
the implementation seem shared,
it took me a couple of minutes to figure this out,
it seems wise to add a seperate header showing how,
it ought to work for the new API.
Add changes to change log
bump version number
fixup pr link
* Update esqueleto.cabal
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Update changelog.md
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
It's been a long time since I remembered MySQL user naming convention stuff, but, just empirically I get the following error following the README instructions:
```
mysql -u root
```
```
mysql> GRANT ALL ON esqutest.* TO 'travis';
ERROR 1410 (42000): You are not allowed to create a user with GRANT
mysql> GRANT ALL ON esqutest.* TO 'travis'@'localhost';
Query OK, 0 rows affected (0.00 sec)
```
MySQL version:
```
~/D/C/H/esqueleto> mysql --version 12:38:37
mysql Ver 8.0.22 for osx10.15 on x86_64 (Homebrew)
```
* Add missing instances to (:&)
The (:&) operator has an instance for `SqlSelect`, but none
for `ToAlias` and `ToAliasReference`. Adding those for parity.
* Updates based on review.
* Update test/Common/Test.hs
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Update test/Common/Test.hs
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Add PostgreSQL-specific support of VALUES(..)
scalar expression of values-list for `from` targets.
* Bump version and update changelog
* Align identation for Postgres `values` func
* Use direct `From` data-type instead
of `ToFrom` typeclass for postgres `values` expression.
* Avoid generating an empty list as the left operand to NOT IN
Postgres treats 'x in ()' and 'x not in ()' as syntax errors. Instead
translate:
x in () ⇒ FALSE
x not in () ⇒ TRUE
Older versions of esqueleto did this, but apparently the latter got
lost.
* Bump version and update changelog
* Add SqlSelect instance for (:&)
Motivation is given in bitemyapp/esqueleto#267 - this instance allows
for polymorphic use of the new Experimental API, where it otherwise
wouldn't be possible to split `a :& b` into `(a, b)`.
* Bump version to 3.5.2.0
* Add `selectSingle`
* Clean up and add to test execution :/
* Import library's `selectFirst` rather than re-export it from `persistent`
* Add haddock and update test name
* Add missing comments for haddock :)
* Rename to `selectOne` and add @since
* Bump version number
* Add missing refs for `table` function
* Update to experimental syntax
* rewriting tests
* tests now run in 1.45 seconds
* tests pass
* fix json
* fix tests
* add helper for setting the database state
* clean things up a bit
* 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.
* Reorganize Experimental folder. Move Subquery into core Experimental.From module.
* Cleanup hackage documentation. Make sure stylish ran correctly. Update changelog and bump version
* Update ERaw to change the direction of NeedParens (parent now tells child context). Removed need for composite key constructor
* Get rid of AliasedValue and ValueReference; added sqlExprMetaAlias to SqlExprMeta
* Remove EList and EEmptyList; ERaw is now technically possible in each case since it is generalized to all
* Remove entity specific constructors from SqlExpr
* Remove EOrderBy, EDistinctOn; Change PreprocessedFrom a to just be an independent datatype
* Remove EOrderByRandom, calling distinctOnOrderBy with rand will choke the db but you shouldnt be using rand anyway. distinctOnOrderBy seems dangerous though
* Remove ESet
* Remove EInsert and EInsertFinal
* Make postgres tests pass
* Change aliased val to be legal value by waiting until expr materialization in select clause before adding AS <alias>
* Cleanup ToAliasRefernce; Add isReference meta to value reference even though that info isnt currently used anywhere
* Expose Experimental submodules
* Update changelog
* Create a FromRaw to replace FromSubquery and FromIdent in from clause. Modify Experimental to only use FromRaw.
* 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.
* Expose the new functions and fix the mysql test compilation error (type inference was wonky with `Union` replaced with `union_`
* Bump version and add more comments
* 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
* Unbreak lateral joins by introducing a completely different ValidOnClause constraint
* Fixe error introduced in merge with master
* Dont realias alias references
* Never realias an already aliased Entity or Value
* reindex value references to the latest 'source'
* stack-8.8.yaml now does GHC 8.8
* support ghc 8.10.4, upgrade to cabal 3.4
* do it
* use stack 8.10 by default, support pers2.13
* sqlite tests are failing???
* build with cabal
* gitignore
* tidy up
* work with persistent-2.13
* giddyup
* keep cabal file in repo
* fixx
* changelog, vbump
* update cache keys
* run mysql tests
* uhhh why are you like this
* stuff
* tests pass locally
* make the example work
* minor bump
* fix gha
* k
* no persistent-template dependency please
* it passed?
* ci nonsense
* uh
* i think that should do it
* ok no really
* i miss file-watch
* sigh
* come on pls
* stylish haskell
* i hate this
* Improve recommended hlints for catching `x = NULL` SQL
The current hints work fine for unqualified imports, but I realized they don't work with qualified ones, such as `import qualified Database.Esqueleto as E`.
I tested on our codebase that these with the `Database.Esqueleto.` addition to `hlint.yaml`, this now works in unqualified and qualified code
* Update changelog.md
* 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
* 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
* 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>
* 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>
* 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>
* Fix issue with extra characters. Extra parens in valueList caused issues in mysql. Extra backticks in value reference names
* update changelog and bump version number
* Fix issue caused by toAliasReference failing to reindex an alias reference by its new alias source
* Add support for SqlExpr (Maybe (Entity a))) to aliasing in Experimental. Fix#193
* Update changelog with new PR name. Fix name shadowing in test.
* Fix binary operations(i.e. ==.) on aliased values.
* no need for version bump since 3.3.3.3 hasnt been released yet
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Add new SetOperation constructor for parenthesized query. Automatically detect when parentheses are needed on SelectQuery usage (only works for MySQL).
* Add Parens to SelectQueryP and create a pattern synonym for SelectQuery. SelectQueryP is hidden as end users should only be using SelectQuery.
* Document isNothing
I have two goals with this documentation:
1. Surface how to do `IS NOT NULL`. This PR makes a search for that string turn up a result, and directs you to combine `isNothing` with `not_`.
2. Documents a major gotcha where behavior between Persistent and Esqueleto is different. I haven't tested this in awhile, but we run into this gotcha occassionally, so I'm pretty confident it's still an issue.
* ..
* ..
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>