Releases: hasura/graphql-engine
v2.3.0-beta.2
Changelog
-
server: fix issues working with read-only DBs by reverting the need for storing required SQL functions in a
hdb_libschema in the user's DBIf you have connected your DB to
v2.3.0-beta.1you can drop thehdb_libschema created in your DB
v2.3.0-beta.1
Changelog
Experimental SQL optimizations
Row-level permissions are applied by a translation into SQL WHERE clauses. If
some tables have similar row-level permission filters, then the generated SQL
may be repetitive and not perform well, especially for GraphQL queries that make
heavy use of relationships.
This version includes an experimental optimization for some SQL queries. It
is expressly experimental, because of the security-sensitive nature of the
transformation that it applies. You should scrutinize the optimized SQL
generated by this feature before using it in production.
The optimization can be enabled using the
--experimental-features=optimize_permission_filters flag or the
HASURA_GRAPHQL_EXPERIMENTAL_FEATURES environment variable.
Breaking changes
- Computed field comments are now used as the description for the field in the GraphQL schema. This means that computed fields where the comment has been set to empty string will cause the description of the field in the GraphQL schema to also be blank. Setting the computed field comment to null will restore the previous auto-generated description. The previous version of the Console would set the comment to empty string if the comment textbox was left blank, so some existing computed fields may unintentionally have empty string set as their comment.
Bug fixes and improvements
- server: validate saved REST endpoint queries wrt schema
- server: improved error reporting for env vars in
test_webhook_transformmetadata API endpoint - server: extend allowlist metadata with scope information, new command
update_scope_of_allowlist_in_metadata - server: (Postgres, Citus, and MSSQL backends) Identity columns and computed
columns are now marked immutable, removing them from the schema of insert and
update mutations. - server: allow inserting more than 1 row simultaneously into table with generated columns (fix #4633)
that have generated columns in Postgres. - server: postgres: return a single entry per row (selected randomly) when an object relationship has multiple matches (fix #7936)
- server: Updates Kriti to v0.3.0
- server: add operation name in the request sent to remote schemas
- server: add support for scalar response types for actions (fix #7805)
- server: fix nullable action response (fix #4405)
- server: add support for customization of table & computed field GraphQL schema descriptions (fix #7496)
- server: classify MSSQL exceptions and improve API error responses
- console: add support for remote database relationships
- console: enable support for update permissions for mssql
- cli: skip tls verfication for all API requests when
insecure-skip-tls-verifyflag is set (fix #4926)
v2.2.0
Changelog
Highlights
Nested Action Types
Actions now support nested responses as described by associated action types.Example:
type Product {
id: bigint!
name: String
}
type ElasticOutput {
products: [Product!]!
aggregations: jsonb
}Previously, nested responses could be encapsulated in a generic "jsonb" output type but this loses precise type information for the API. The current support now allows specifying complex return types for the output.
Currently limits action relationships to top-level fields in the output types.
GraphQL REST Endpoints OpenAPI Body Specifications
GraphQL REST endpoints are documented via Swagger (OpenAPI) under the /api/swagger/json endpoint. We now document the request and response bodies of the endpoints in addition to previous information.
MS SQL Server Update for Hasura Server
Expand Transactions to GraphQL Queries and mssql_run-sql API
Extend transactions to GraphQL queries and mssql_run_sql API
Rollback a Transaction Based in the Transaction State
We can query the transaction state using XACT_STATE() scalar function. If the transaction is not active, don't rollback the transaction.
Upsert - SQL Generation and Execution
We are translating the if_matched section from the graphql, which is represented by the if_matched type, to a MERGE SQL statement. Example:
mutation {
insert_author(
objects: { id: 1, name: "aaa" }
if_matched: { match_columns: author_pkey, update_columns: name }
) {
returning {
id
name
}
}
}Breaking Changes
- For any MSSQL backend, count aggregate query on multiple columns is restricted with a GraphQL
schema change as follows
count (
--- columns: [table_select_column!]
+++ column: table_select_column
distinct: Boolean
): Int!MSSQL doesn't support applying COUNT() on multiple columns.
Bug fixes and improvements
- server: add a placeholder field to the schema when the
query_rootwould be empty - server: fix invalid GraphQL name in the schema arising from a remote relationship from a table in a custom schema
- server: add a new metadata API
get_cron_triggersto fetch all the cron triggers - server: add response transforms for actions, events, and triggers
- server: bigquery: implement
distinct_on. - server: extend transactions to MSSQL GraphQL queries and
mssql_run_sql/v2/query API - server: improve error messages in MSSQL database query exceptions
- server: in mssql transactions, rollback only if the transaction is active
- server: add request and response bodies to OpenAPI specification of REST endpoints
- server: implement upsert mutations for MS SQL Server (close #7864)
- server: extend support for insert mutations to tables without primary key constraint in a MSSQL backend
- server: fix parsing FLOAT64s in scientific notation and non-finite ones in BigQuery
- server: extend support for the
min/maxaggregates to all comparable types in BigQuery - server: fix support for joins in aggregates nodes in BigQuery
- server: fix for passing input objects in query variables to remote schemas with type name customization (#7977)
- server: fix REST endpoints with path segments not showing correctly in the OpenAPI spec
- server: fix aliases used in GraphQL queries in REST endpoints not being reflected in the OpenAPI spec
- server: refresh JWKs a maximum of once per second (fix #5781)
- server: implement update mutations for MS SQL Server (closes #7834)
- server: support nested output object types in actions (#4796)
- server: action webhook requests now include a User-Agent header (fix #8070)
- console: action/event trigger transforms are now called REST connectors
- console: fix list of tables (and schemas) being unsorted when creating a new trigger event (fix #6391)
- console: fix custom field names breaking browse table sorting and the pre-populating of the edit row form
- console: enable support for insert & delete permissions for mssql tables
- console: enable inherited role on settings page
- cli: migrate and seed subcommands has an option in prompt to choose and apply operation on all available databases
- cli: fix
metadata diff --type json | unified-jsonbehaving incorrectly and showing diff in YAML format. - cli: fix regression in
migrate createcommand (#7971) - cli: stop using
/healthzendpoint to determine server health - cli: fix regression with
--addressflag ofhasura consolecommand (#8005)
v2.1.1
v2.1.0
Changelog
Highlights
Action transforms
Action transforms are used to perform arbitrary transformations to the HTTP request generated by an action.
This allows you to connect REST APIs and other existing APIs without writing any middleware/wrapper service.
You can transform the request method and the URL:
You can also transform the request body:
Read more in the docs.
Event Trigger transforms
You can now modify the HTTP request that is sent to your Event Trigger webhook by using Event Trigger transforms.
This allows you to invoke any existing or 3rd party APIs directly without writing any middleware to transform the request first.
As with Action transforms, you can modify the HTTP method, URL and the body.
SQL Server Mutations
Insert and Delete mutations for SQL Server are now supported. Only Update mutations are remaining.
Root field name and type name customization per source (#6974)
When adding a source it is now possible to specify prefixes and suffixes
that will be added to all root field names and type names generated for that
source. It is also possible to specify a root "namespace" field to use for the
source. This can be done via *_add_source API and console support will be released soon.
Function field names customization (#7405)
It is now possible to specify the GraphQL names of tracked SQL functions in
Postgres sources, and different names may be given to the _aggregate and
suffix-less versions. Aliases may be set by both
/v1/metadata/pg_track_function and the new API endpoint
/v1/metadata/pg_set_function_customization.
Support for Mac M1
Hasura now supports the arm64 architecture and works on Mac M1 (closes #6337)
Caveat: MS-SQL as a data source is not supported on arm64/M1 yet (refer #7903)
Fixes and improvements
- server: Ignore unexpected fields in action responses (#5731)
- server: optimize SQL query generation with LIMITs
- server: add GraphQL request query in the payload for synchronous actions
- server: improve the event trigger logging on errors
NOTE: This change introduces a breaking change, earlier when there
was a client error when trying to process an event, then the status was reported as 1000. Now, the status will beNULLif there is no status received from the webhook. - server: support
extensionsfield in error responses from action webhook endpoints (fix #4001) - server: fix custom-check based permissions for MSSQL (#7429)
- server: remove identity notion for table columns (fix #7557)
- server: support MSSQL transactions
- server: log individual operation details in the http-log during a batch graphQL query execution
- server: update
create_scheduled_eventAPI to returnevent_idin response - server: fix bug which allowed inconsistent metadata to exist after the
replace_metadataAPI even thoughallow_inconsistent_objectis set tofalse. - server: fix explicit
nullvalues not allowed in nested object relationship inserts (#7484) - server:
introspect_remote_schemaAPI now returns original remote schema instead of customized schema - server: prevent empty subscription roots in the schema (#6898)
- server: support database-to-database joins (for now, limited to Postgres as the target side of the join)
- server: add support for user comments for trackable functions (#7490)
- server: do not recreate event triggers if tables haven't changed on reloading metadata
- server: call auth webhooks even when the request is malformed JSON or otherwise fails to parse (close #7532)
- server: updates kriti to v0.2.1 which adds an
escapeUrifunction - server: add cascade option to
mssql_run_sqlmetadata API - server: fix bug which recreated event triggers every time the graphql-engine started up
- server: fix bug in OpenAPI when multiple REST endpoints have the same URL path but different method
- server: add support for GraphQL block strings
- server: Correctly translate permissions on functions to SQL (#7617)
- server: allow nullable action responses (#4405)
- server: add support for openapi json of REST Endpoints
- server: enable inherited roles by default in the graphql-engine
- server: support MSSQL insert mutations
- server: fix bug in OpenAPI when multiple REST endpoints have the same URL path but different method
- server: allows the use of mock env vars in the
test_webhook_transformmetadata API action - server: fix aggregate queries with nodes field in selection set for sql server (fix #7871)
- server: fix permissions are not respected for aggregations in sql server (fix #7773)
- server: the syntax for remote relationships in metadata is changed to be
consistent with future remote relationships work. However, the older syntax
is still accepted and this is a non-breaking change. - server: fix JSON path in error when parsing sources in metadata (fix #7769)
- server: log locking DB queries during source catalog migration
- server: fix to allow remote schema response to contain an "extensions" field (#7143)
- server: support database-to-database joins with BigQuery
- server: improved startup time when using large remote schemas
- server: fix rest-endpoints bug allow list arguments (fix #7135)
- server: fallback to unauthorized role when JWT is not found in cookie (fix #7272)
- server: provide option to explicitly recreate event triggers for sources in the
reload_metadataAPI (fix #7711) - server: fix
gen_hasura_uuidmigration to be idempotent, so that it doesn't fail if the database is already initialised with source migrations. - server: fix mssql
table_by_pkquery returning empty array (fix #7784) - console: support tracking of functions with return a single row
- console: add GraphQL customisation under Remote schema edit tab
- console: fix cross-schema array relationship suggestions
- console: add performance fixes for handle large db schemas
- console: fix missing cross-schema computed fields in permission builder
- console: design cleanup Modify and Add Table forms (close #7454)
- console: enable custom graphql root fields for mssql under modify tab
- console: allow dropping indices on all schemas
- console: fix bug with displaying 1-to-1 relationship with the same column mapping (close #7552)
- console: add request transforms for actions
- console: fix v2 metadata imports
- console: design cleanup Modify and Add Table forms (close #7454)
- console: enable custom graphql root fields for mssql under modify tab
- console: add comments to tracked functions
- console: add select all columns option while selecting the columns in event triggers
- console: add request transforms for events
- cli: add support for
networkmetadata object - cli:
hasura migrate apply --all-databaseswill return a non zero exit code if operation failed on atleast one database (#7499) - cli:
migrate create --from-servercreates the migration and marks it as applied on the server - cli: support
query_tagsin metadata - cli: add
hasura deploycommand - cli: allow exporting and applying metadata from
yaml/jsonfiles - cli: allow squashing specific set of migrations. A new
--toflag is introduced inmigrate squashcommand. eg:hasura migrate squash --from <v1> --to <v4> - cli: split remote schema permissions metadata into seperate files (#7033)
- cli: support action request transforms in metadata
- cli: make
--database-nameoptional inmigratesubcommands when using a single database (#7434) - cli: support absolute paths in --envfile (#5689)
- cli: fix cli-console failing to add migrations if there are tabs in SQL body (#7362)
- cli: sign windows binary of Hasura CLI (#7147)
- cli: core CLI features are not blocked in environments without internet (#7695)
- metadata SDK: add type definitions for config v3
v2.1.0-beta.3
Changelog
This is the final beta release for v2.1.0
Highlights
Event Trigger transforms
You can now modify the HTTP request that is sent to your Event Trigger webhook by using Event Trigger transforms.
This allows you to invoke any existing or 3rd party APIs directly without writing any middleware to transform the request first.
As with Action transforms, you can modify the HTTP method, URL and the body.
Support for Mac M1
Hasura now supports the arm64 architecture and works on Mac M1 (closes #6337)
Caveat: MS-SQL as a data source is not supported on arm64/M1 yet (refer #7903)
SQL Server Delete Mutations
Delete mutations for SQL Server are now supported. Only Update mutations are remaining.
Bug fixes and improvements
- server: allows the use of mock env vars in the
test_webhook_transformmetadata API action - server: fix event invocation logs to include transformed request bodies (fix #2983)
- server: fix aggregate queries with nodes field in selection set for sql server (fix #7871)
- server: fix permissions are not respected for aggregations in sql server (fix #7773)
- server: the syntax for remote relationships in metadata is changed to be
consistent with future remote relationships work. However, the older syntax
is still accepted and this is a non-breaking change. - server: fix JSON path in error when parsing sources in metadata (fix #7769)
- server: log locking DB queries during source catalog migration
- server: fix to allow remote schema response to contain an "extensions" field (#7143)
- server: support database-to-database joins with BigQuery
- server: improved startup time when using large remote schemas
- server: fix rest-endpoints bug allow list arguments (fix #7135)
- server: fallback to unauthorized role when JWT is not found in cookie (fix #7272)
- server: provide option to explicitly recreate event triggers for sources in the
reload_metadataAPI (fix #7711) - server: fix
gen_hasura_uuidmigration to be idempotent, so that it doesn't fail if the database is already initialised with source migrations. - server: fix mssql
table_by_pkquery returning empty array (fix #7784) - console: add comments to tracked functions
- console: add select all columns option while selecting the columns in event triggers
- console: add request transforms for events
- cli: fix cli-console failing to add migrations if there are tabs in SQL body (#7362)
- cli: sign windows binary of Hasura CLI (#7147)
- cli: core CLI features are not blocked in environments without internet (#7695)
- metadata SDK: add type definitions for config v3
v2.1.0-beta.2
Changelog
Highlights
Action transforms
Action transforms are used to perform arbitrary transformations to the HTTP request generated by an action.
This allows you to connect REST APIs and other existing APIs without writing any middleware/wrapper service.
You can transform the request method and the URL:
You can also transform the request body:
Read more in the docs.
SQL Server Insert Mutations
Insert mutations for SQL Server are now supported. Other mutations will follow soon.
Root field name and type name customization per source (#6974)
When adding a source it is now possible to specify prefixes and suffixes
that will be added to all root field names and type names generated for that
source. It is also possible to specify a root "namespace" field to use for the
source. This can be done via *_add_source API and console support will be released soon.
Function field names customization (#7405)
It is now possible to specify the GraphQL names of tracked SQL functions in
Postgres sources, and different names may be given to the _aggregate and
suffix-less versions. Aliases may be set by both
/v1/metadata/pg_track_function and the new API endpoint
/v1/metadata/pg_set_function_customization.
Bug fixes and improvements
- server: do not recreate event triggers if tables haven't changed on reloading metadata
- server: moves
request_transforminto the Action Definition thecreate_actionmetadata API call. - server: call auth webhooks even when the request is malformed JSON or otherwise fails to parse (close #7532)
- server: updates kriti to v0.2.1 which adds an
escapeUrifunction - server: add cascade option to
mssql_run_sqlmetadata API - server: fix bug which recreated event triggers every time the graphql-engine started up
- server: fix bug in OpenAPI when multiple REST endpoints have the same URL path but different method
- server: add support for GraphQL block strings
- server: Correctly translate permissions on functions to SQL (#7617)
- server: add transformed request to action error responses
- server: allow nullable action responses (#4405)
- server: add support for openapi json of REST Endpoints
- server: enable inherited roles by default in the graphql-engine
- server: support MSSQL insert mutations
- server: fix bug in OpenAPI when multiple REST endpoints have the same URL path but different method
- console: design cleanup Modify and Add Table forms (close #7454)
- console: enable custom graphql root fields for mssql under modify tab
- console: allow dropping indices on all schemas
- console: fix bug with displaying 1-to-1 relationship with the same column mapping (close #7552)
- console: add request transforms for actions
- console: fix v2 metadata imports
- console: design cleanup Modify and Add Table forms (close #7454)
- console: enable custom graphql root fields for mssql under modify tab
- cli: split remote schema permissions metadata into seperate files (#7033)
- cli: support action request transforms in metadata
- cli: make
--database-nameoptional inmigratesubcommands when using a single database (#7434) - cli: support absolute paths in --envfile (#5689)
v2.0.10
v2.1.0-beta.1
Changelog
This is the first beta release for v2.1.0
- server: Ignore unexpected fields in action responses (#5731)
- server: add webhook transformations for Actions and EventTriggers
- server: optimize SQL query generation with LIMITs
- server: add GraphQL request query in the payload for synchronous actions
- server: improve the event trigger logging on errors
NOTE: This change introduces a breaking change, earlier when there
was a client error when trying to process an event, then the status was reported as 1000. Now, the status will beNULLif there is no status received from the webhook. - server: support
extensionsfield in error responses from action webhook endpoints (fix #4001) - server: fix custom-check based permissions for MSSQL (#7429)
- server: remove identity notion for table columns (fix #7557)
- server: support MSSQL transactions
- server: log individual operation details in the http-log during a batch graphQL query execution
- server: update
create_scheduled_eventAPI to returnevent_idin response - server: fix bug which allowed inconsistent metadata to exist after the
replace_metadataAPI even thoughallow_inconsistent_objectis set tofalse. - server: fix explicit
nullvalues not allowed in nested object relationship inserts (#7484) - server:
introspect_remote_schemaAPI now returns original remote schema instead of customized schema - server: prevent empty subscription roots in the schema (#6898)
- server: support database-to-database joins (for now, limited to Postgres as the target side of the join)
- server: add support for user comments for trackable functions (#7490)
- console: support tracking of functions with return a single row
- console: add GraphQL customisation under Remote schema edit tab
- console: fix cross-schema array relationship suggestions
- console: add performance fixes for handle large db schemas
- console: fix missing cross-schema computed fields in permission builder
- cli: add support for
networkmetadata object - cli:
hasura migrate apply --all-databaseswill return a non zero exit code if operation failed on atleast one database (#7499) - cli:
migrate create --from-servercreates the migration and marks it as applied on the server - cli: support
query_tagsin metadata - cli: add
hasura deploycommand - cli: allow exporting and applying metadata from
yaml/jsonfiles - cli: allow squashing specific set of migrations. A new
--toflag is introduced inmigrate squashcommand. eg:hasura migrate squash --from <v1> --to <v4>
v2.0.9
Changelog
- server: disable mutation for materialised views (#6688)
- server: set
tracecontextanduserInfofor DML actions on Postgres sources (fixes #7087) - server: add support for
connection_parametersonpg_add_sourceAPI - cli: add progress bar for
migrate applycommand (#4795) - cli: embed cli-ext for windows binaries (#7509)