Changelog

Current development version

v2.0.0 (upcoming release)

  • 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

v1.11.0

  • 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 and not_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.

v1.10.1

  • 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.

v1.10.0

  • BREAKING: Rename the __count meta field to _x_count, to avoid GraphQL schema parsing issues with other GraphQL libraries. #176

v1.9.0

  • 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.

v1.8.3

  • 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 and between 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.

v1.8.2

  • Fix overly strict type check on @recurse directives involving a union type. #131

Thanks to cw6515 for the fix!

v1.8.1

  • 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!

v1.8.0

  • 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!

v1.7.2

  • Fix possible incorrect query execution due to dropped type coercions. #110 #113

v1.7.0

  • 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!

v1.6.2

  • Fix incorrect filtering in @optional locations. #95

Thanks to amartyashankha for the fix!

v1.6.1

  • Fix a bad compilation bug on @fold and @optional in the same scope. #86

Thanks to amartyashankha for the fix!

v1.6.0

  • Add full support for Decimal data, including both filtering and output. #91

v1.5.0

  • 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.

v1.4.1

Thanks to amartyashankha for this contribution!

v1.4.0

  • Enable expanding vertex fields inside @fold #64

Thanks to amartyashankha for this contribution!

v1.3.1

  • 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

v1.3.0

  • Add a new @filter operator: has_edge_degree. #52
  • Lots of under-the-hood cleanup and improvements.

v1.2.0

  • 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

v1.1.0

  • 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!

v1.0.3

  • Fix a minor bug in the GraphQL pretty-printer #30

v1.0.2

Thanks to benlongo for their contributions.

v1.0.1

  • 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.

v1.0.0

Initial release.

Thanks to MichaelaShtilmanMinkin for the help in putting the documentation together.