Hasura v2.5.0-beta.1 Release Notes

  • Remote relationships from remote schemas

    ๐Ÿš€ This release adds three new metadata API commands:

    • create_remote_schema_remote_relationship
    • update_remote_schema_remote_relationship
    • delete_remote_schema_remote_relationship

    that allows to create remote relationships between remote schemas on the left-hand side and databases or remote schemas on the right-hand side. Both use the same syntax as remote relationships from databases:

    type: create_remote_schema_remote_relationship
    args:
      remote_schema: LeftHandSide
      type_name: LeftHandSideTypeName
      name: RelationshipName
      definition:
        to_remote_schema:
          remote_schema: RightHandSideSchema
          lhs_fields: [LHSJoinKeyName]
          remote_field:
            rhsFieldName:
              arguments:
                ids: $LHSJoinKeyName
    
    type: create_remote_schema_remote_relationship
    args:
      remote_schema: LeftHandSide
      type_name: LeftHandSideTypeName
      name: RelationshipName
      definition:
        to_source:
          source: RightHandSideSource
          table: {schema: public, name: RHSTable}
          relationship_type: object
          field_mapping:
            LHSJoinKeyName: RHSColumnName
    

    ๐Ÿ‘ Similarly to DB-to-DB relationships, only Postgres is supported on the right-hand side for now.

    ๐Ÿ—„ Deprecations

    • The custom_column_names property of TableConfig used on <db>_track_table and set_table_customization metadata APIs has been deprecated in favour of the new column_config property. custom_column_names will still work for now, however, values used in column_config will take precedence over values from custom_column_names and any overlapped values in custom_column_names will be discarded.

    Behaviour Changes

    • ๐Ÿ“‡ cli: use indentation of 2 spaces in array elements of metadata YAML files

    Example: Old behaviour metadata/query_collections.yaml New behaviour metadata/query_collections.yaml

    • name: allowed-queries definition: queries:
      • name: getAlbums query: | query getAlbums { albums { id title } }
    • name: allowed-queries definition: queries: - name: getAlbums query: | query getAlbums { albums { id title } }

    This change is a result of fixing some inconsistencies and edge cases in writing array elements. hasura metadata export will write YAML files in this format going forward. Also, note that this is a backwards compatible change.

    • ๐Ÿ“‡ cli: change ordering of elements in metadata files to match server metadata

    Example: Server Metadata (JSON) Old behaviour (YAML) New Behaviour (YAML) { "function": { "schema": "public", "name": "search_albums" } } function: name: search_albums schema: public function: schema: public name: search_albums

    ๐Ÿ› Bug fixes and improvements

    • server: improve error messages in BigQuery upstream API exceptions
    • server: Fix regression in MSSQL subscriptions when results exceed 2048 characters (#8267)
    • ๐Ÿ”จ server: refactor OpenAPI spec generation (for REST endpoints) and improve OpenAPI warnings
    • ๐Ÿ‘ server: add jsonb to string cast support - postgres (#7818)
    • ๐Ÿ“‡ server: improve performance of fetching postgres catalog metadata for tables and functions
    • ๐Ÿ›  server: Queries present in query collections, such as allow-list and rest-endpoints, are now validated (fixes #7497)
    • server: improve SQL generation for BigQuery backend queries involving Orderby.
    • ๐Ÿ‘ server: fix regression where remote relationships would get exposed over Relay, which is unsupported
    • ๐Ÿ“‡ server: add support for customising the GraphQL schema descriptions of table columns in metadata
    • ๐Ÿ›  server: column presets for SQL Server were broken and consequently insert and upsert mutations were failing with constraint violations. This change fixes this behavior (#8221).
    • server: fix caching bug with session variables in remote joins
    • server: fix regression where JWKs are refreshed once per second when both must-revalidate and max-age are specified in the Cache-Control header (#8299)
    • โšก๏ธ server: respect custom field names in delete, insert and update mutations on SQL Server (#8314)
    • console: enable searching tables within a schema in the sidebar
    • ๐Ÿ‘ console: add support for setting comments on the custom root fields of tables/views
    • console: add feature flags section in settings
    • ๐Ÿ‘ console: improved support for setting comments on computed fields
    • console: fix the ability to create updated_at and created_at in the modify page (#8239)
    • console: fix an issue where editing both a column's name and its GraphQL field name at the same time caused an error
    • ๐Ÿ“‡ console: fix redirect to metadata status page on inconsistent inherited role (#8343)
    • console: fix malformed request with REST live preview section (#8316)
    • ๐Ÿ›  console: fixed actions search to be case-insensitive
    • ๐Ÿ“‡ cli: add support for customization field in sources metadata (#8292)
    • ๐Ÿ“‡ cli: fix inherited roles metadata not being updated when dropping all roles (#7872)
    • ci: ubuntu and centos flavoured graphql-engine images are now available