- BREAKING Change the
GraphQLDateTimescalar type from being timezone-aware to being timezone-naive to follow the usual database convention of naming the timezone-naive type "datetime" and avoid confusion after we've added both timezone-aware and timezone-naive types. #827
- Release automatic GraphQL schema generation from OrientDB schema metadata. #204
- Release the SchemaGraph, a utility class designed for easy schema introspection. #292
- Release
not_containsandnot_in_collectionfilter operations. #349 #350 - Allow out-of-order
@tagand@filterwhen in the same scope. #351 - Fix a bug causing MATCH queries to have missing type coercions. #332
- Release functionality that is able to amend parsing and serialization of custom scalar types in schemas parsed from text form. #398
- Improve validation error messages for output and parameter names. #414 #416
- Alpha (unstable) release of query cost estimation functionality. #345
- Clean up README.md and update troubleshooting documentation.
- Many maintainer quality-of-life improvements.
Thanks to 0xflotus, bojanserafimov, evantey,
LWProgramming, pmantica1, qqi0O0, and Vlad for their
contributions.
- Fix
_x_countand optional filter creating duplicate GlobalOperationsStart IR blocks. #253. - Raise error for unused
@tagdirectives #224. - Much documentation cleanup and many maintainer quality-of-life improvements.
Thanks to bojanserafimov, evantey14, jeremy.meulemans, and
pmantica1 for their contributions.
- BREAKING: Rename the
__countmeta field to_x_count, to avoid GraphQL schema parsing issues with other GraphQL libraries. #176
- Add a
__countmeta field that supports outputting and filtering on the size of a@foldscope. #158 - Add scaffolding for development and testing of SQL compiler backend, and a variety of development quality-of-life improvements.
Thanks to jmeulemans for his contributions.
- Explicit support for Python 3.7. Earlier compiler versions also worked on 3.7, but now we also run tests in 3.7 to confirm. #148
- Bug fix for compilation error when using
has_edge_degreeandbetweenfiltering in the same scope. #146 - Exposed additional query metadata that describes
@recurseand@filterdirectives encountered in the query. #141
Thanks to gurer-kensho for the contribution.
- Fix overly strict type check on
@recursedirectives involving a union type. #131
Thanks to cw6515 for the fix!
- Fix a bug that arose when using certain type coercions that the compiler optimizes away to a no-op. #127
Thanks to bojanserafimov for the fix!
- Allow
@optionalvertex fields nested inside other@optionalvertex fields. #120 - Fix a bug that accidentally disallowed having two
@recursedirectives within the same vertex field. #115 - Enforce that all required directives are present in the schema. #114
- Under the hood, made fairly major changes to how query metadata is tracked and processed.
Thanks to amartyashankha, cw6515, and yangsong97 for their
contributions!
- Add a new
@filteroperator:intersects. #100 - Add an optimization that helps OrientDB choose a good starting point for query evaluation. #102
The new optimization pass manages what type information is visible at different points in the generated query. By exposing additional type information, or hiding existing type information, the compiler maximizes the likelihood that OrientDB will start evaluating the query at the location of lowest cardinality. This produces a massive performance benefit -- up to 1000x on some queries!
Thanks to yangsong97 for making his first contribution with the
intersects operator!
- Fix incorrect filtering in
@optionallocations. #95
Thanks to amartyashankha for the fix!
- Fix a bad compilation bug on
@foldand@optionalin the same scope. #86
Thanks to amartyashankha for the fix!
- Add full support for
Decimaldata, including both filtering and output. #91
- Allow expanding vertex fields within
@optionalscopes. #83
This is a massive feature, totaling over 4000 lines of changes and
hundreds of hours of many engineers' time. Special thanks to
amartyashankha for taking point on the implementation!
This feature implements a workaround for a limitation of OrientDB, where
MATCH treats optional vertices as terminal and does not allow
subsequent traversals from them. To work around this issue, the compiler
rewrites the query into several disjoint queries whose union produces
the exact same results as a single query that allows optional
traversals. See this link
for more details.
- Make MATCH use the
BETWEENoperator when possible, to avoid an OrientDB performance issue #70
Thanks to amartyashankha for this contribution!
- Enable expanding vertex fields inside
@fold#64
Thanks to amartyashankha for this contribution!
- Add a workaround for a bug in OrientDB related to
@recursewith type coercions #55 - Exposed the package name and version in the root
__init__.pyfile #57
- Add a new
@filteroperator:has_edge_degree. #52 - Lots of under-the-hood cleanup and improvements.
- Add workaround for OrientDB type inconsistency when filtering lists #42
- BREAKING: Requires OrientDB 2.2.28+, since it depends on two OrientDB bugs being fixed: bug 1 bug 2
- Allow type coercions and filtering within
@foldscopes. - Fix bug where
@filterdirectives could end up ignored if more than two were in the same scope - Optimize type coercions in
@optionaland@recursescopes. - Optimize multiple outputs from the same
@foldscope. - Allow having multiple
@filterdirectives on the same field #33 - Allow using the
name_or_aliasfiltering operation on interface types #37
- Add support for Python 3 #31
- Make it possible to use
@foldtogether with union-typed vertex fields #32
Thanks to ColCarroll for making the compiler support Python 3!
- Fix a minor bug in the GraphQL pretty-printer #30
- Make the
graphql_to_ir()easier to use by making it automatically add a new line to the end of the GraphQL query string. Works around an issue in thegraphql-coredependency library: graphql-python/graphql-core#98 - Robustness improvements for the pretty-printer #27
Thanks to benlongo for their contributions.
- Add GraphQL pretty printer:
python -m graphql_compiler.tool#23 - Raise errors if there are no
@outputdirectives within a@foldscope #18
Thanks to benlongo, ColCarroll, and cw6515 for their
contributions.
Initial release.
Thanks to MichaelaShtilmanMinkin for the help in putting the
documentation together.