Graphql Engine Versions Save

Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.

v3.alpha.12-19-2023

4 months ago

We're thrilled to announce the alpha release of Hasura V3! 🎉

Key Features

  • Data Connectors: The v3-engine can be used with any connector that adheres to the NDC specification to get a GraphQL API. We currently have NDC agents available for Postgres, Clickhouse and Deno (Typescript). Learn more about Hasura connectors here.
  • Metadata Modeling Objects: Use these metadata objects to map the underlying data sources using NDC agents and create a supergraph:
    • Models: collections of data objects that can be queried. These serve as the interface for querying your data. A model may be backed by a database table, an ad-hoc SQL query, a pre-materialized view or a custom API server.
    • Commands: opaque functions or procedures that can be used to query or mutate data. You can use them to validate, process, enrich some data or call another API,
    • Permissions: access control rules on your types / models / commands. There are two types of permissions available - model permissions and type permissions.
    • Relationships: creating edges in your graph from a data type to a model or a command. A relationship allows you to query nested or linked information and it can span across multiple data sources such as from Postgres to Clickhouse.
    • Global ID: is a unique identifier for an object across the entire application, not just within a specific table or type.The Global ID generated by Hasura DDN follows the Relay Global ID spec and can be used to fetch any object directly.
  • GraphQL API Features
    • Queries - Leverage a powerful API to query data with the following features -
      • Simple Queries including query by primary key, running multiple queries in a request, using multiple arguments in the same query, using variables, aliases and fragments.
      • Nested Queries including object and array relationships across data sources.
      • Sorting objects, nested objects, sorting based on nested object’s fields including computed fields, and sorting by multiple fields.
      • Pagination using limit and offset operators including limiting results from an offset, limiting results in a nested object and keyset cursor based
      • Filtering using the where argument with support of the following operators - simple comparison operator, boolean operator, text search operator and nested objects.
      • Directives including @include and @skip for fields.
      • Native Queries for PostgreSQL where each query is specified as SQL and can take arguments using the {{argument_name}} syntax
      • Business Logic - Now write your business logic in Typescript and use Hasura to front them as queries and mutations using the Typescript Deno connector.
    • Mutations - Leverage the flexibility of mutating data with the following ways -
      • Using the Typescript Deno connector which exposes Typescript functions as Hasura commands, which can be made available over the GraphQL API as a mutation. You can write to a database or an API and incorporate any business logic in the Typescript function while mutating.
      • Point to point (simple) database inserts, updates, and deletes via the respective data connectors are coming soon.
  • Authentication: Hasura v3 utilizes "session variables", with specific user, role, organization and any other information you may need to determine the data access rights of the user. Hasura's authentication can be configured via JSON web tokens (JWT) or a webhook service and can be integrated with any other provider you choose.

Alpha Phase

This release marks the initial phase of our alpha rollout. Please note that Hasura V3 is still in its early stages and has limited functionality. We encourage feedback, bug reports, and contributions from the community to help us shape the future of this project.

Get Involved

We're excited to have you on board as we embark on this journey together.

  • Report any bugs or issues you encounter via GitHub Issues.
  • Propose new features or enhancements via Pull Requests.
  • Join the discussions in our Discord channel.

Your participation and feedback are invaluable as we work towards more updates and exciting features in the upcoming releases! 🚀

v2.36.0

4 months ago

Changelog

Behaviour changes

  • We have fixed GraphQL query validation where queries that assigned a null value to a variable with a declared non-nullable type were previously allowed.

    For example:

    query ($user_id: Int!) {
      users(where: {id: {_eq: $user_id}}){
        id name
      }
    }
    
    {
      "user_id": null
    }
    

    Now, queries with this aforementioned condition will be properly invalidated and rejected.

    Since, it is a behavior change, we are introducing a server option to preserve the old behavior when either of the following are set to true:

    • Environment variable: HASURA_GRAPHQL_BACKWARDS_COMPAT_NULL_IN_NONNULLABLE_VARIABLES
    • Flag: --null-in-nonnullable-variables

    The above configuration is optional, and the default value is false i.e, new fixed behavior is applied

Bug fixes and improvements

Server

  • Change in PostgreSQL array introspection to improve query performance.
  • For MS SQL Server, handle missing type information for columns when querying metadata.
  • The pg_dump version has been upgraded to v16, so that it can extract data from PostgreSQL 16 databases.
  • Fix websocket connection failure when hide_aggregation_predicates and hide_stream_fields experimental features are enabled.
  • Fix the check to classify requests to Apollo persisted queries (fix #10013).

Console

  • Support creation of REST endpoint from a table in new data tab UI.
  • Support computed fields in new permissions UI
  • Truncate large JSON values in browse rows for data-connector backed databases.
  • Fix a validation bug in the GraphQL Data Connector connection form when advanced settings is not open.

Data Connectors

  • hasura/graphql-data-connector image now supports all non-root user IDs and groups
  • Fixes duplicate alias issue in Snowflake for multiple relationships to the same table in a single query. (Cloud / Enterprise edition only)

Build

  • RedHat UBI-based graphql-engine docker images are now available.

    hasura/graphql-engine:v2.36.0-beta.1.ubi
    hasura/graphql-engine:v2.36.0-beta.1.cli-migrations-v2.ubi
    hasura/graphql-engine:v2.36.0-beta.1.cli-migrations-v3.ubi
    

v2.35.2

4 months ago

Changelog

This is a patch release for v2.35

Bug fixes and improvements

Data Connectors

  • Adds support for overriding the public schema in Redshift with single or multiple alternate schemas via the include_schemas configuration option. (Cloud / Enterprise edition only)
  • Fix errors in certain Athena query compilations caused by lack of CAST for datetime types. (Cloud / Enterprise edition only)
  • Added support for a Pro License Key to the licensing options for hasura/graphql-data-connector. (Enterprise edition only)

v2.36.0-beta.1

5 months ago

Changelog

Behaviour changes

  • We have fixed GraphQL query validation where queries that assigned a null value to a variable with a declared non-nullable type were previously allowed.

    For example:

    query ($user_id: Int!) {
      users(where: {id: {_eq: $user_id}}){
        id name
      }
    }
    
    {
      "user_id": null
    }
    

    Now, queries with this aforementioned condition will be properly invalidated and rejected.

    Since, it is a behavior change, we are introducing a server option to preserve the old behavior when either of the following are set to true:

    • Environment variable: HASURA_GRAPHQL_BACKWARDS_COMPAT_NULL_IN_NONNULLABLE_VARIABLES
    • Flag: --null-in-nonnullable-variables

    The above configuration is optional, and the default value is false i.e, new fixed behavior is applied

Bug fixes and improvements

Server

  • Change in PostgreSQL array introspection to improve query performance.
  • For MS SQL Server, handle missing type information for columns when querying metadata.
  • The pg_dump version has been upgraded to v16, so that it can extract data from PostgreSQL 16 databases.
  • Fix websocket connection failure when hide_aggregation_predicates and hide_stream_fields experimental features are enabled.

Console

  • Support creation of REST endpoint from a table in new data tab UI.
  • Support computed fields in new permissions UI
  • Truncate large JSON values in browse rows for data-connector backed databases.
  • Fix a validation bug in the GDC connection form when advanced settings is not open.

Data Connectors

  • hasura/graphql-data-connector image now supports all non-root user IDs and groups
  • Fixes duplicate alias issue in Snowflake for multiple relationships to the same table in a single query. (Cloud / Enterprise edition only)

Build

  • RedHat UBI-based graphql-engine docker images are now available.

    hasura/graphql-engine:v2.36.0-beta.1.ubi
    hasura/graphql-engine:v2.36.0-beta.1.cli-migrations-v2.ubi
    hasura/graphql-engine:v2.36.0-beta.1.cli-migrations-v3.ubi
    

v2.35.1

5 months ago

Changelog

This is a patch release for v2.35

Bug fixes and improvements

Server

  • Fix bug where event triggers were not reloaded correctly when the metadata was reloaded.

v2.35.0

6 months ago

Changelog

Highlights

New model count summary

Adds a model count summary page to the data tab to easily see the count of tables, collections, and logical models available in your metadata.

Behaviour changes

  • The Server HTTP header is no longer included in server responses by default. This change enhances security by withholding potentially sensitive information about the server version that could aid attackers in identifying known security vulnerabilities. This new default behavior aligns with the recommendations in RFC 2068.

  • Disallow subscriptions on fields using remote relationship permission.

  • Date parsing for query inputs for MongoDB queries is changed from RFC 3339 to ISO 8601.

Bug fixes and improvements

Server

  • Fix an issue where Event Triggers for MS SQL Server failed for tables with columns named after reserved words.

  • Allow relationship mappings to contain paths to fields of nested objects in document databases such as MongoDB.

  • Using ' for strings is the only method guaranteed to function on MySQL. The behavior of " is dictated by the ANSI_QUOTES setting: https://dev.mysql.com/doc/refman/8.2/en/sql-mode.html#sqlmode_ansi_quotes

    This was causing errors during introspection:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\"$[*]\" COLUMNS(schemaname VARCHAR(255) PATH \"$.s\", tablename VARCHAR(255) PATH \"' at line 14"
    
  • Add $session_variables to the context of response transforms.

  • PostgreSQL 16 is now officially supported.

  • PostgreSQL 11 is no longer officially supported, as it will be end of life as of November 9, 2023. Hasura GraphQL Engine will continue working with PostgreSQL 11 but functionality may break in the future.

  • Adds a new Environment Variable HASURA_GRAPHQL_ASYNC_ACTIONS_FETCH_BATCH_SIZE (async-actions-fetch-batch-size) which sets the number of asynchronous action requests processed at a time (default: 10).

  • Fix issue with SQL Server not being able to deal with large results when the target of a remote relationship.

  • Disabled polling of the database when HASURA_GRAPHQL_EVENTS_FETCH_INTERVAL = 0. This prevents continuous polling by the event trigger.

  • Added the _like and _nlike operators to the supported list of operators in BigQuery permissions.

  • Support a new template_variables configuration property for Data Connector sources that allows the definition of variables, the values of which can be read from files. The intended use case is for environments that rotate secrets frequently, where otherwise we would have to restart. The environment variable HASURA_GRAPHQL_DYNAMIC_SECRETS_ALLOWED_PATH_PREFIX must be set to enable this feature and limits access to the file system. (Community / Enterprise edition only)

  • Add PostgreSQL and CockroachDB datasource dynamic_from_file configuration. Whenever a new connection is established, Hasura will read the connection string found in the configuration file to establish the connection. The intended use case is for environments that rotate secrets frequently, where otherwise, we would have to restart. To use this feature, HASURA_GRAPHQL_DYNAMIC_SECRETS_ALLOWED_PATH_PREFIX must also be set and non-empty. To get the same dynamic behavior for the metadata database, we now support setting HASURA_GRAPHQL_METADATA_DATABASE_URL=dynamic-from-file:///path/to/file. (Community / Enterprise edition only)

  • Add support for OpenTelemetry OTLP log export. (Cloud / Enterprise edition only)

  • Add support for W3C Trace Context propagation for OpenTelemetry. (Cloud / Enterprise edition only)

  • Adds new Prometheus metrics hasura_http_request_bytes_total and hasura_http_response_bytes_total. (Cloud / Enterprise edition only)

  • Support env template for OpenTelemetry attributes. (Cloud / Enterprise edition only)

  • Fix the source health check /healthz/sources API, where the health check for sources whose database URL is specified as an environment variable always results in a FAILED state. (fix #9904) (Cloud only)

Console

  • Fix an edge case with column select permission when * wildcard is used instead of explicitly listing all column names.
  • Make the “Insert Row” tab available for Data-Connector based databases which support mutations.
  • Fix an issue with validating dynamic routing. (Cloud / Enterprise edition only)
  • MongoDB enhancements: (Cloud / Enterprise edition only)
    • Improved support for $oid and $date objects.
    • Improved handling of array type introspection.
    • Added better error handling for mis-typed arrays.
    • Added improved namespacing when adding Collections using introspection to avoid naming collisions.
    • Added descriptive error handler for mis-matched array types in introspection (objects and scalars).

Data Connectors

  • Added a connector for Redshift support.
  • Bugfix for issue whereby relationships with predicates were failing in Snowflake when fully qualified table names were being used.

Build

  • Update ubuntu base image to get the latest security updates.

v2.11.13

6 months ago

Changelog

This is a patch release for v2.11

Bug fixes and improvements

Server

  • On enabling the HASURA_GRAPHQL_HTTP_LOG_QUERY_ONLY_ON_ERROR env var, add query field to http-log on failed requests irrespective of query-log being enabled.
  • Add http_log_query_only_on_error field to start-up log.

v2.11.12

6 months ago

Changelog

This is a patch release for v2.11

Bug fixes and improvements

Server

  • Introduce HASURA_GRAPHQL_HTTP_LOG_QUERY_ONLY_ON_ERROR env var and --http-log-query-only-on-error flag to attach query field to http-log logs only on failed requests.

v2.34.0

6 months ago

Changelog

Highlights

Bug fixes and improvements

Server

  • The naming_convention experimental feature now also covers:

    • Type and field names of named constraints that appear in on_conflict upserts.
    • Type names of all Postgres scalar types.
    • Type and input field names of function arguments.

    Since these changes are breaking by nature, their use is gated by a feature flag, which can be enabled by setting the environment variable HASURA_FF_NAMING_CONVENTION_SEP_2023=True.

    (partially fixes: #8929)

  • Add support for environment variable templating in OpenTelemetry endpoint URLs. (Cloud / Enterprise edition only)

  • Fix a memory leak in EE wherein data would accumulate in memory at each replace_metadata call. (Enterprise edition only)

Console

  • Console support for adding input validations on PostgreSQL sources is now available in the Data Tab's Permissions section.
  • Fixed a UI bug which would duplicate column form values when attempting to clear the column type. (fix #9863)
  • Added Console support for remote relationship permissions to PostgreSQL data sources.
  • Resolved an issue of incorrect URL autosuggestion when editing existing RESTified endpoints.
  • Clicking on any role on a schema change card now updates the page's URL, improving navigation and allowing sharing of specific schema change details.
  • Visiting a schema registry URL automatically opens the corresponding schema change card at the top of the page, streamlining access to specific schema change information.
  • Apollo Federation support can be enabled from the Console for PostgreSQL, SQL Server, and Big Query from the Data tab.
  • Fixes an issue where an error notification would appear even upon successfully creating a remote relationship.
  • Improve performance of the permissions UI for large data-connector based databases.
  • Resolve an issue of incorrect name auto-suggestion when editing existing RESTified endpoints.
  • Fix a bug on Insert/Modify Row where column inputs are not disabled if the column is an identity column (whose values are generated always/generated by default).

v2.11.11

7 months ago

Changelog

This is a patch release for v2.11

Bug fixes and improvements

Server

  • Fix GraphQL query validation where queries that assigned a null value to a variable with a declared non-nullable type were previously allowed. Now, queries with this aforementioned condition will be properly invalidated and rejected.

Build

  • Update build packages to get the latest security updates.