Releases: hasura/graphql-engine
v2.0.8
Changelog
Highlights
Support for graphql-ws protocol
The graphql-engine now supports the graphql-ws protocol which is aiming to become the standard GraphQL over Websockets protocol. Read more about it here.
Other features and fixes
- server: fix nullability of object relationships (close #7201)
- server: update non-existent event trigger, action and query collection error msgs (close #7396)
- server: fix broken
untrack_functionfor non-default source - server: Adding support for TLS allowlist by domain and service id (port)
- server: add support for
graphql-wsclients - console: fix error due to rendering inconsistent object's message
- console: support insecure TLS allowlist
- console: support computed fields in remote schema join
- console: fix data sidebar not updated when a table is renamed
- cli: fix delay starting console using
hasura console(#7255)
v2.0.7
Changelog
- server: fix v2 -> v1 downgrade bug when cron triggers exist
- server: add index on the
event_idcolumn of thehdb_cron_event_invocation_logstable - server: fix GraphQL type for remote relationship field (close #7284)
- server: support EdDSA algorithm and key type for JWT
- server: fix GraphQL type for single-row returning functions (close #7109)
- console: add support for creation of indexes for Postgres data sources
- console: allow same named queries and unnamed queries on allowlist file upload
- console: support computed fields in permission builder
- console: add custom timeouts to actions
v2.0.6
Changelog
- server: Add support for inherited roles for mutations, remote schema, actions and custom function permissions
- server: fix an issue with remote relationships when join columns are aliased (close #7180)
- server: fix for incorrect
__typenamevalue in nested remote joins with a customized remote schema - server: fix a bug where some unicode characters in default string values for fields in remote schemas could lead to internal errors
- server: bigquery: implement
_inand_ninoperators. (close #7343) - console: fix untracked foreign-key relationships suggestion across schemas
- cli: fix SDL formatting in
actions.graphql(#7296)
v2.0.5
Changelog
- server: prevent invalid collisions in remote variable cache key (close #7170)
- server: preserve unchanged cron triggers in
replace_metadataAPI - server: fix inherited roles bug where mutations were not accessible when inherited roles was enabled
- server: reintroduce the unique name constraint in allowed lists
- server: subscriptions now validate that all session variables are properly set (#7111)
- cli-migrations-v2: fix database url showing up in metadata (#7319)
v2.0.4
Changelog
- server: Support computed fields in permission check/filter (close #7102)
- server: support computed fields in query 'order_by' (close #7103)
- server: log warning if there are errors while executing clean up actions after "drop source" (previously it would throw an error)
- server: Fixed a bug where MSSQL and BigQuery would ignore environment variables set from the console
- server: Fixing bug in ReplaceMetadata parser - Moving from Alternative to committed-choice.
- server: Relax the unique operation name constraint when adding a query to a query collection
- server: officially deprecate query plan caching, which had already been disabled for a long time
- server/bigquery: Fix issues related to adding and querying from non-US datasets (closes 6937).
- console: add pagination on the Raw SQL results page
- console: fix issues with replacing invalid graphql identifiers in table and column names
- console: show error message on inconsistent objects table
- console: add template gallery
- cli: add support for
query_tagsmetadata object
v2.0.3
Changelog
v2.0.3
- server: inherited role improvements for select queries
- an inherited role can now inherit from other inherited roles as well
- explicit permissions for inherited roles can now be set which will override the inherited permission (if any)
- server: fix optional global_select_limit config for BigQuery
- console: support
global_select_limitfor bigquery sources - cli: add
-o/--outputflag forhasura metadata inconsistency listcommand
v2.0.2
Changelog
v2.0.2
- server: support computed fields in query filter (
whereargument) (close #7100) - server: support scalar computed fields in remote joins (close #7101)
- server: only if
query-logis enabled the graphql query string is printed inhttp-logandwebsocket-log - server: fix reloading inconsistent sources or remote schemas via
reload_metadataAPI - server: add a
$.detail.operation.request_modefield tohttp-logwhich takes the values"single"or"batched"to log whether a GraphQL request was executed on its own or as part of a batch - server: add
queryfield tohttp-logandwebsocket-login non-error cases - server: Add global limit to BigQuery via the
global_select_limitfield in the connection configuration - server: include action and event names in log output
- server: log all HTTP errors in remote schema calls as
remote-schema-errorwith details - server: For BigQuery, make
global_select_limitconfiguration optional with a default value of1000 - console: add
reload all databasescheckbox to the metadata settings page - console: add schema sharing
- console: fix issue with changing table's column name and graphQL field name simultaneously
- cli: add linux and darwin arm64 support
v2.0.1
Changelog
This patch release fixes a startup issue on upgrading to v2.0.0 which affected users with Event Triggers configured.
Bug fix:
- server: fix resetting metadata catalog version to 43 while initializing postgres source with v1.0 catalog (#7058)
Using this release
Use the following docker image:
hasura/graphql-engine:v2.0.1
v2.0.0
We are glad to announce the stable release of Hasura GraphQL Engine v2.0.0.
Please check the upgrade guide before upgrading. There are few breaking changes in special scenarios which are described in Breaking changes section below.
IMPORTANT UPGRADE NOTE: Due to a startup issue observed on upgrading to v2.0.0 we've removed the v2.0.0 docker image. We have found the cause and the fix has been made in v2.0.1.
Hasura 2.0 highlights
Multiple databases support and metadata storage separation
Simultaneously add multiple Postgres databases:
You can also store Hasura metadata in a separate (Postgres) database given by the environment variable
HASURA_GRAPHQL_METADATA_DATABASE_URL
Generalized backend: Support for MS SQL server and BigQuery
The server has been generalized to support different databases. We start off by providing read-only support for MS SQL server and BigQuery.
MS SQL server
BigQuery
REST APIs
Support for creating idiomatic REST API endpoints from GraphQL query templates so that users can support non-GraphQL clients easily and integrate with their existing REST tooling.
Remote Schema Permissions
The permission system has been extended for Remote Schemas. You can do type/field masking and preset arguments (with session variables) over remote schemas.
Volatile functions as mutations/queries
You can now track VOLATILE Postgres functions as mutations (or even queries).
Inherited Roles
You can now create an Inherited Role which allows you to combine multiple roles into one role (in an additive way). This solves fundamental problems with permission system (as described in #877 and #3442) and also helps you manage roles in a modular way.
To get started, head to Hasura Console, Settings -> Inherited Roles (read docs here)
In the first version, only Postgres queries and subscriptions are exposed for an inherited role.
PS: Inherited roles is currently an experimental feature. To enable inherited roles, start the Hasura server with environment variable HASURA_GRAPHQL_EXPERIMENTAL_FEATURES: "inherited_roles"
Support comparing columns across related tables in permission's boolean expressions
We now support comparing columns across related tables (fixing #3459) . For example:
Consider two tables, items(id, name, stock) and shopping_cart(id, item_id, quantity)
and these two tables are related via the item_id column. Now, while defining insert permission
on the shopping_cart table, there can be a check to insert an item into the shopping cart
only when there is enough stock present in the items table.
ltree comparison operators
Comparison operators on columns with ltree, lquery or ltxtquery types are now supported, for searching through data stored in a hierarchical tree-like structure.
See the documentation at graphql/core/queries/query-filters more details on the currently supported ltree operators.
Support geometry and geography spatial data comparison operators in MS SQL Server
Comparison operators on spatial data types, geometry and geography, are now supported in MS SQL Server. The following operators are supported:
- STEquals
- STIntersects
- STTouches
- STOverlaps
- STCrosses
- STWithin
- STContains
Support for 3D PostGIS Operators
We now support the use of the functions ST_3DDWithin and ST_3DIntersects in boolean expressions.
Note that ST_3DIntersects requires PostGIS be built with SFCGAL support which may depend on the PostGIS distribution used.
Other fixes and improvements:
- server: add
allow_inconsistent_metadataoption toreplace_metadataAPI to allow adding objects which are inconsistent - server: add "resource_version" field to metadata for concurrency control - disable lookup during migrations
- server: add request field to webhook POST body containing the GraphQL query/mutation, its name, and any variables passed (close #2666)
- server: add --websocket-compression command-line flag for enabling websocket compression (fix #3292)
- server: some mutations that cannot be performed will no longer be in the schema (for instance, delete_by_pk mutations won't be shown to users that do not have select permissions on all primary keys) (#4111)
- server: treat the absence of backend_only configuration and backend_only: false equally (closing #5059) (#4111)
- server: accept only non-negative integers for batch size and refetch interval (close #5653) (#5759)
- server: Configurable websocket keep-alive interval. Add --websocket-keepalive command-line flag and HASURA_GRAPHQL_WEBSOCKET_KEEPALIVE env variable (fix #3539)
- server: introduce optional custom table name in table configuration to track the table according to the custom name. The set_table_custom_fields API has been deprecated, A new API set_table_customization has been added to set the configuration. (#3811)
- server: support joining Int or String scalar types to ID scalar type in remote relationship
- server: add support for
regexoperators (close #4317) (#6172) - server: do not block catalog migration on inconsistent metadata
- server: various changes to ensure timely cleanup of background threads and other resources in the event of a SIGTERM signal.
- server: fix issue with event triggers defined on a table which is partitioned (fixes #6261)
- server: action array relationships now support the same input arguments (such as where or distinct_on) as usual relationships
- server: action array relationships now support aggregate relationships
- server: fix issue with non-optional fields of the remote schema being added as optional in the graphql-engine (fix #6401)
- server: accept new config allowed_skew in JWT config to provide leeway for JWT expiry (fixes #2109)
- server: always log the request_id at the detail.request_id path for both query-log and http-log (#6244)
- server: fix issue with --stringify-numeric-types not stringifying aggregate fields (fix #5704)
- server: terminate a request if time to acquire connection from pool exceeds configurable timeout (#6326)
- server: support tracking of functions that return a single row (fix #4299)
- server/mssql: supports connection pooling to sql server
- server: improve errors messages for inconsistent sources
- server: better handling for one-to-one relationships via both
manual_configurationandforeign_key_constraint_on(#2576) - server/mssql: support tracking and querying from views
- server: fix issue when a remote relationship's joining field had a custom GraphQL name defined (fix #6626)
- server: fix handling of nullable object relationships (fix #6633)
- server/mssql:
mssql_add_sourcecan now take connection strings from environment variables - server: support
IN,NIN,LIKEandNLIKEoperators in MS SQL Server - server: remove the restriction of supporting only base type function arguments. The type of an argument with a table type is now
<tablename>_scalarto avoid conflicts with the object type<tablename>. - server: add
--async-actions-fetch-intervalcommand-line flag andHASURA_GRAPHQL_ASYNC_ACTIONS_FETCH_INTERVALenvironment variable for configuring async actions re-fetch interval from metadata storage (fix #6460) - server: add 'replace_configuration' option (default: false) in the add source API payload
- server: add a comment field for actions
- server: accept GeoJSON for MSSQL geometry and geography operators
- server: update pg_dump clean output to disable function body validation in create function statements to avoid errors due to forward references
- server: add a new
/dev/rts_statsendpoint, enabled when hasura is started with '+RTS -T' - server: support for bigquery datasets
- server: format the values of
injectEventContextas hexadecimal string instead of integer (fix #6465) - server: add "kind" field to query-log items. Kind can be "database", "action", "remote-schema", "graphql", "cached", or "subscription"
- server: support query multiplexing in MSSQL subscriptions
- server: aggregation fields are now supported on mssql
- server: accept a new env conf
HASURA_GRAPHQL_EVENTS_FETCH_BATCH_SIZEto configure the number of rows being fetched from the events log table in a single batch - server: restore proper batching behavior in event trigger processing so that at most 2x batch events are checked out at a time
- server: decrease polling interval for scheduled triggers from 60 to 10 seconds
- server: Change
HASURA_GRAPHQL_SCHEMA_POLL_INTERVALenv var toHASURA_GRAPHQL_SCHEMA_SYNC_POLL_INTERVALandschema-poll-intervaloption to--schema-sync-poll-interval - server:...
v2.0.0-beta.2
Changelog
Bug fixes and improvements
- server: remote relationships (database to remote schema joins) are now supported on SQL Server and BigQuery (console pending)
- server: BigQuery: switches to a single query generation from a dataloader approach. This should result in
faster query responses. - server: BigQuery: various bug fixes related to aggregations
- server: fix add source API wiping out source's metadata when replace_configuration is true
- console: add foreign key CRUD functionality to ms sql server tables
- console: allow tracking of custom SQL functions having composite type (rowtype) input arguments
- console: allow input object presets in remote schema permissions
- console: add modify functionality on columns, primary keys & unique keys to MS SQL Server tables
- cli: add interactive prompt to get input when
--database-nameflag is missing - cli: fix metadata export to avoid unnecessary empty lines in actions.graphql (#5338)
- cli: generate migrations for mssql databases in hasura console mode (#7011)