- BREAKING Change the
GraphQLDateTime
scalar 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_contains
andnot_in_collection
filter operations. #349 #350 - Allow out-of-order
@tag
and@filter
when 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_count
and optional filter creating duplicate GlobalOperationsStart IR blocks. #253. - Raise error for unused
@tag
directives #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
__count
meta field to_x_count
, to avoid GraphQL schema parsing issues with other GraphQL libraries. #176
- Add a
__count
meta field that supports outputting and filtering on the size of a@fold
scope. #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_degree
andbetween
filtering in the same scope. #146 - Exposed additional query metadata that describes
@recurse
and@filter
directives encountered in the query. #141
Thanks to gurer-kensho
for the contribution.
- Fix overly strict type check on
@recurse
directives 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
@optional
vertex fields nested inside other@optional
vertex fields. #120 - Fix a bug that accidentally disallowed having two
@recurse
directives 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
@filter
operator: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
@optional
locations. #95
Thanks to amartyashankha
for the fix!
- Fix a bad compilation bug on
@fold
and@optional
in the same scope. #86
Thanks to amartyashankha
for the fix!
- Add full support for
Decimal
data, including both filtering and output. #91
- Allow expanding vertex fields within
@optional
scopes. #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
BETWEEN
operator 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
@recurse
with type coercions #55 - Exposed the package name and version in the root
__init__.py
file #57
- Add a new
@filter
operator: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
@fold
scopes. - Fix bug where
@filter
directives could end up ignored if more than two were in the same scope - Optimize type coercions in
@optional
and@recurse
scopes. - Optimize multiple outputs from the same
@fold
scope. - Allow having multiple
@filter
directives on the same field #33 - Allow using the
name_or_alias
filtering operation on interface types #37
- Add support for Python 3 #31
- Make it possible to use
@fold
together 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-core
dependency 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
@output
directives within a@fold
scope #18
Thanks to benlongo
, ColCarroll
, and cw6515
for their
contributions.
Initial release.
Thanks to MichaelaShtilmanMinkin
for the help in putting the
documentation together.