HASURA GraphCell Engine 2.0

2021-06-23 21:14:54

请在升级之前查看升级指南。在下面的打破变化部分中描述的特殊方案中有很少的破坏变化。

您还可以将Hasura元数据存储在由环境变量hasura_graphql_metadata_database_url给出的单独(postgres)数据库中

服务器概括为支持不同的数据库。我们通过为MS SQL Server和BigQuery提供只读支持来开始。

支持从GraphQL查询模板创建Idiomatic REST API端点,以便用户可以轻松支持非GraphQL客户端,并与其现有的REST工具集成。

权限系统已扩展到远程模式。您可以通过远程模式进行类型/字段屏蔽和预设参数(使用会话变量)。

您现在可以创建一个继承的角色,允许您将多个角色组合成一个角色(以添加方式)。这解决了许可系统的基本问题(如#877和#3442中所述),并且还可以帮助您以模块化方式管理角色。

在第一个版本中,仅在继承角色下公开postgres查询和订阅。

PS:继承角色是目前是一个实验特征。要启用继承的角色,请使用环境变量hasura_graphql_experish_features启动Hasura服务器:"继承_"

考虑两个表,项目(ID,名称,库存)和Shopping_cart(ID,Item_ID,数量),这两个表通过Item_ID列与。现在,在Shopping_cart表上定义INSERT权限时,只有在项目表中存在足够的库存时,才会检查才能将物品插入购物车。

现在支持使用Ltree,LQuery或LTXTQUERY类型的列上的比较运算符,用于搜索存储在层次结构树状结构中的数据。

MS SQL Server中的空间数据类型,几何和地理上的比较运算符现在支持。支持以下运营商:

我们现在支持使用ST_3DDWithin和ST_3DINtersects的功能在布尔表达式中使用。请注意,ST_3DINtersects需要使用SFCGAL支持构建POSTGIS,这可能取决于所使用的Partgis分布。

服务器:将请求字段添加到包含GraphQL查询/突变,其名称和通过的任何变量的Webhook Post Body(关闭#2666)

服务器:无法再执行的一些突变将不再在模式中(例如,删除_PK突变' t未在所有主键上选择权限的用户显示)(#4111)

服务器:可配置的WebSocket保持活动间隔。 添加--websocket -keepalive命令行标志和hasura_graphql_websocket_keekalive env变量(修复#3539) 服务器:在表配置中引入可选的自定义表名,以根据自定义名称跟踪表。 已弃用set_table_custom_fields API,已添加新的API Set_Table_Customization以设置配置。 (#3811) 服务器:支持将int或字符串标量类型连接到远程关系中的ID标量类型 服务器:各种更改,以确保在SIGTERM信号时及时清理背景线程和其他资源。 服务器:修复问题触发器在分区的表上定义的事件触发器(修复#6261) 服务器:操作阵列关系现在支持与常用关系相同的输入参数(例如Where或Distinct_on) 服务器:修复在GraphQL-Engine中添加的远程模式的非可选模式的问题(修复#6401)

服务器:在JWT Config中接受新配置_SKSW,为JWT到期(修复#2109)提供Leeway

服务器:始终以查询日志和http-log的detode.request_id路径记录request_id(#6244)

服务器:如果从池中获取连接的时间超过可配置超时(#6326),请终止请求

服务器:在远程关系' s加入字段定义的自定义GraphQL名称时修复问题(修复#6626)

服务器:删除仅支持基本类型函数参数的限制。具有表类型的参数的类型现在是< tablename> _scalar以避免与对象类型冲突< tablename&gt ;.

服务器:添加--Async-actions-fetch-interning命令行标志和hasura_graphql_async_actions_fetch_interval环境变量,用于配置异步操作从元数据存储重新获取间隔(修复#6460)

服务器:更新PG_DUMP清洁输出以禁用创建功能语句中的函数正文验证,以避免由于前进引用而导致的错误

服务器:添加"善良"字段查询日志项。善良可以是"数据库&#34 ;,#34;行动&#34 ;,"远程模式&#34 ;," graphql&#34 ;,"缓存和#34 ;,或#34;订阅"

服务器:接受一个新的enc cenf hasura_graphqql_events_fetch_batch_size来配置从单个批处理中从事件日志表中获取的行数

服务器:在事件触发处理中恢复适当的批处理行为,以便一次在大多数2倍批处理事件中签出

服务器:仅在需要时初始化HDB_Catalog表,并且仅运行所需的源的事件循环

服务器:修复BIGINT溢出,在事件触发有效载荷中不正确的地质json格式(修复#3697)(修复#2368)

服务器:由GraphQL-Engine生成时转发X-Request-ID标题(而不是用户提供)(修复#6654)

服务器:介绍--graceful-shutdown-timeout服务器配置,将在关闭之前等待机上计划和事件触发事件和异步操作以完成

服务器:Sanitize事件触发和计划触发日志以省略可能敏感的请求身体和标头 服务器:修复查询验证中的错误,这些错误会使用默认变量值拒绝(修复#6867) SERVER:SQL Server和BigQuery(Console Pending)上支持远程关系(数据库到远程模式连接) 服务器:BigQuery:从Dataloader方法切换到单个查询生成。 这应该导致更快的查询响应。 控制台:添加选项要将插入作为数据部分的迁移(关闭#1766)(#4933) 控制台:在表中具有非小写名称和评论时修复Postgres表创建(#6760) 控制台:显示表格和Cloumn名称超过63个字符的错误通知,并缩减迁移名称超过255个字符

控制台:在列上添加修改功能,主键& 对MS SQL Server表的唯一键 CLI:CLI-EXT现在是CLI二进制的本机部分(不再需要作为插件) CLI:Add --all-DatabaseS标志用于迁移应用,这允许在所有连接的数据库上应用迁移 CLI:FIX回归 - 元数据应用 - 运行在服务器上覆盖本地元数据文件时,它应该只显示差异 构建:将test_server_pg_13添加到CI以在Postgres V13上运行服务器测试(#6070) 根据第704期间的讨论,比较输入对象中的显式空值将被视为错误,而不是导致正在评估为true的表达式。 例如:突变DELETE_USERS(其中:{id:{{_eq:$ userid}}){name}如果$ userid为null,则会产生错误,而不是删除所有用户。

在远程模式关系查询中,当所有连接参数都不为空值时,将查询远程模式。当存在空值时,远程架构Won'要查询,远程关系字段的响应将为null。早先,使用空值参数查询远程架构,响应依赖于远程模式如何处理空头参数但根据用户反馈,此行为显然不会预期。

Order_by运算符将一个对象数组接受作为输入的输入,以便在给定顺序中按多个字段排序,即[{field1:sortorder},{field2:sortorder}],但它也接受一个具有多个键作为输入的单个对象, IE {field1:sortorder,field2:sortorder}。在早期版本中,HASURA' s查询解析逻辑用于在输入对象中的键中保持键顺序,因此生成了与正确顺序的字段的适当顺序。

由于输入对象键的GraphQL规范提及是无序的,但新的和更严格查询解析逻辑并在输入对象中删除所生成的顺序的输入对象中的键顺序在给定的顺序中拥有字段。

例如:查询fetch_users(Order_by:{年龄:desc,name:asc}){id name年龄}旨在获取由年龄命令的用户订购,然后通过他们的名称来保证首先按年龄排序返回结果然后通过他们的名称作为Order_by input作为对象传递。为了实现预期的行为,应使用以下查询fetch_users(Order_by:[{age:desc},{name:asc}){id name age}使用数组来定义字段顺序以生成相应的顺序按条款。

计算的字段参数的名称已从< compancy_name&gt更改为> computed_field_name> _< table_name> _args作为函数名称是计算字段的内部详细信息。此更改还可以将根级跟踪函数添加为先前抛出输入类型冲突错误的计算字段。

由较旧的Hasura版本生成的Hasura API不能将远程模式添加到Hasura v2

使用v2.0,已扩展了一些自动生成的架构类型。例如,String_Comparison_exp具有另外的正则表达式输入对象字段。这意味着如果您有一个带有较旧的Hasura版本的Hasura API,则添加为远程模式,那么它将具有类型冲突。您应该升级所有Hasura远程模式以避免此类冲突。

在应用多个迁移时,在早期的Hasura CLI版本中,所有迁移文件都在一个事务块下运行。即,如果任何迁移抛出错误,则将滚动所有先前成功的迁移。使用Hasura CLI v2.0,每个迁移文件都在自己的事务块中运行,但所有迁移都不会在其中执行。即,如果任何迁移抛出错误,将停止应用进一步的迁移,但另一个成功执行的迁移到该点不会退回。

在v2.0中,使用以下env变量的值来在更新现有实例或开始新实例时定义默认数据库的连接参数。在元数据初始化期间,它们的值将移动到默认数据库的元数据,如此处定义。

发布初始设置/更新一旦初始化元数据,这些env变量可以被视为已弃用。即,这些env变为的变化或设置值将没有影响,因为现在使用Hasura元数据的值来定义连接参数。