请求链接集合
Requests
该集合包含所有被 Avatica 接受的 JSON 对象,作为请求。所有请求都包括一个请求属性,用于唯一标识具体请求与其他请求的区别。
CatalogsRequest
此请求用于获取数据库中可用的目录名称。
{
"request": "getCatalogs",
"connectionId": "000000-0000-0000-00000000"
}
connectionId (必需字符串):要使用的连接的标识符。
CloseConnectionRequest
此请求用于关闭 Avatica 服务器中由给定 ID 标识的连接对象。
{
"request": "closeConnection",
"connectionId": "000000-0000-0000-00000000"
}
connectionId (必需字符串):要关闭的连接的标识符。
CloseStatementRequest
此请求用于关闭 Avatica 服务器中由给定 ID 标识的语句对象。
{
"request": "closeStatement",
"connectionId": "000000-0000-0000-00000000",
"statementId": 12345
}
connectionId (必需字符串):语句所属的连接的标识符。
statementId (必需整数):要关闭的语句的标识符。
ColumnsRequest
此请求用于根据一些可选的过滤条件从数据库中获取列。
{
"request": "getColumns",
"connectionId": "000000-0000-0000-00000000",
"catalog": "catalog",
"schemaPattern": "schema_pattern.*",
"tableNamePattern": "table_pattern.*",
"columnNamePattern": "column_pattern.*"
}
connectionId (必需字符串):要获取列的连接的标识符。
catalog (可选字符串):限制返回列的目录名称。
schemaPattern (可选字符串):针对模式的 Java Pattern,限制返回列。
tableNamePattern (可选字符串):针对表名称的 Java Pattern,限制返回列。
columnNamePattern (可选字符串):针对列名称的 Java Pattern,限制返回列。
CommitRequest
此请求用于在 Avatica 服务器中的连接上执行提交。
{
"request": "commit",
"connectionId": "000000-0000-0000-00000000"
}
connectionId (必需字符串):要执行提交的连接的标识符。
Responses
该集合包含所有作为 Avatica 响应返回的 JSON 对象。所有响应都包括一个响应属性,用于唯一标识具体响应与其他响应的区别。
CloseConnectionResponse
关闭连接请求的响应。
{
"response": "closeConnection",
"rpcMetadata": RpcMetadata
}
rpcMetadata:关于此调用的服务器元数据。
CloseStatementResponse
关闭语句请求的响应。
{
"response": "closeStatement",
"rpcMetadata": RpcMetadata
}
rpcMetadata:关于此调用的服务器元数据。
CommitResponse
提交请求的响应。
{
"response": "commit"
}
此响应上没有额外属性。
Miscellaneous
AvaticaParameter 等其他对象的描述。
ErrorResponse
请求执行时捕获到错误时的响应。任何请求都可能返回此响应。
{
"response": "error",
"exceptions": [ "stacktrace", "stacktrace", ... ],
"errorMessage": "The error message",
"errorCode": 42,
"sqlState": "ABC12",
"severity": AvaticaSeverity,
"rpcMetadata": RpcMetadata
}
exceptions:Java 堆栈跟踪的字符串列表。
errorMessage:人类可读的错误消息。
errorCode:此错误的数字代码。
sqlState:此错误的五个字符的字母数字代码。
severity:一个 AvaticaSeverity 对象,表示错误的严重程度。
rpcMetadata:关于此调用的服务器元数据。
ExecuteBatchResponse
ExecuteBatchRequest 和 PrepareAndExecuteRequest 的响应,封装了一批更新的更新计数。
{
"response": "executeBatch",
"connectionId": "000000-0000-0000-00000000",
"statementId": 12345,
"updateCounts": [ 1, 1, 0, 1, ... ],
"missingStatement": false,
"rpcMetadata": RpcMetadata
}
connectionId:用于创建语句的连接的标识符。
statementId:已创建语句的标识符。
updateCounts:与执行的每个更新对应的整数数组。
missingStatement:如果操作因服务器中未缓存语句而失败,则为 true;否则为 false。
rpcMetadata:关于此调用的服务器元数据。
ExecuteResponse
ExecuteRequest 的响应,包含元数据查询的结果。
{
"response": "executeResults",
"resultSets": [ ResultSetResponse, ResultSetResponse, ... ],
"missingStatement": false,
"rpcMetadata": RpcMetadata
}
resultSets:一个 ResultSetResponses 数组。
missingStatement:一个布尔值,表示请求是否由于缺少语句而失败。
rpcMetadata:关于此调用的服务器元数据。
FetchResponse
FetchRequest 的响应,包含查询的请求。
{
"response": "fetch",
"frame": Frame,
"missingStatement": false,
"missingResults": false,
"rpcMetadata": RpcMetadata
}
frame:包含获取结果的 Frame。
missingStatement:一个布尔值,表示请求是否由于缺少语句而失败。
missingResults:一个布尔值,表示请求是否由于缺少 ResultSet 而失败。
rpcMetadata:关于此调用的服务器元数据。
OpenConnectionResponse
OpenConnectionRequest 的响应。客户端应在后续调用中使用提供的连接 ID。
{
"response": "openConnection",
"rpcMetadata": RpcMetadata
}
rpcMetadata:关于此调用的服务器元数据。
PrepareResponse
PrepareRequest 的响应。此响应包括一个 StatementHandle,客户端必须使用该句柄从语句中获取结果。
{
"response": "prepare",
"statement": StatementHandle,
"rpcMetadata": RpcMetadata
}
statement:一个 StatementHandle 对象。
rpcMetadata:关于此调用的服务器元数据。
ResultSetResponse
包含查询结果和类型详细信息的响应。
{
"response": "resultSet",
"connectionId": "000000-0000-0000-00000000",
"statementId": 12345,
"ownStatement": true,
"signature": Signature,
"firstFrame": Frame,
"updateCount": 10,
"rpcMetadata": RpcMetadata
}
connectionId:生成此响应的连接的标识符。
statementId:生成此响应的语句的标识符。
ownStatement:结果集是否有自己的专用语句。如果为 true,则服务器在关闭结果集时必须自动关闭语句。例如,用于 JDBC 元数据结果集。
signature:表示语句准备的 Signature 对象。
firstFrame:包含获取结果的 Frame 的可选对象。
updateCount:正常结果集始终为 -1 的数字。任何其他值表示“虚拟”结果集,仅包含此计数,而不包含其他数据。
rpcMetadata:关于此调用的服务器元数据。
RollbackResponse
RollBackRequest 的响应。
{
"response": "rollback"
}
此响应上没有额外属性。
SyncResultsResponse
SyncResultsRequest 的响应。当 moreResults 为 true 时,应发出 FetchRequest 以获取下一
批结果。
{
"response": "syncResults",
"moreResults": true,
"missingStatement": false,
"missingResults": false,
"rpcMetadata": RpcMetadata
}
moreResults:如果尚未返回所有结果,则为 true;否则为 false。
missingStatement:一个布尔值,表示请求是否由于缺少语句而失败。
missingResults:一个布尔值,表示请求是否由于缺少 ResultSet 而失败。
rpcMetadata:关于此调用的服务器元数据。
UnwrapResponse
UnwrapRequest 的响应。
{
"response": "unwrap",
"rpcMetadata": RpcMetadata
}
rpcMetadata:关于此调用的服务器元数据。
Fetch
一个 Frame,用于检索一批行。
{
"offset": 0,
"done": false,
"rows": [ [ "row1col1", "row1col2", ... ], [ "row2col1", "row2col2", ... ], ... ]
}
offset:请求的第一行的偏移量。
done:如果没有更多行,则为 true;否则为 false。
rows:结果行的二维数组。
杂项
杂项链接
Avatica参数
Avatica参数链接
此对象描述了结果中列的“简单”或标量的 JDBC 类型表示。这不包括诸如数组之类的复杂类型。
{
"signed": true,
"precision": 10,
"scale": 2,
"parameterType": 8,
"typeName": "integer",
"className": "java.lang.Integer",
"name": "number"
}
- signed:一个布尔值,表示列是否为有符号数值。
- precision:此列支持的最大数值精度。
- scale:此列支持的最大数值刻度。
- parameterType:与 JDBC Types 类对应的整数,表示列的类型。
- typeName:此列的 JDBC 类型名称。
- className:支持此列的 JDBC 类型的 Java 类。
- name:列的名称。
Avatica严重程度
Avatica严重程度链接
此枚举描述了 Avatica 服务器中错误的各种关注级别。
其中之一:
- UNKNOWN
- FATAL
- ERROR
- WARNING
Avatica类型
Avatica类型链接
此对象描述了列的简单或复杂类型。复杂类型将在 component 或 columns 属性中包含额外信息,描述复杂父类型的嵌套类型。
{
"type": "scalar",
"id": "identifier",
"name": "column",
"rep": Rep,
"columns": [ ColumnMetaData, ColumnMetaData, ... ],
"component": AvaticaType
}
- type:其中之一:scalar、array、struct。
- id:根据 JDBC Types 类对象类型的数字值。
- name:JDBC 类型的可读名称。
- rep:Avatica 使用的嵌套 Rep 对象,用于保存附加的类型信息。
- columns:对于 STRUCT 类型,列在该 STRUCT 中包含的列的列表。
- component:对于 ARRAY 类型,该 ARRAY 中包含的元素的类型。
列元数据
列元数据链接
此对象表示列的 JDBC ResultSetMetaData。
{
"ordinal": 0,
"autoIncrement": true,
"caseSensitive": true,
"searchable": false,
"currency": false,
"nullable": 0,
"signed": true,
"displaySize": 20,
"label": "Description",
"columnName": "col1",
"schemaName": "schema",
"precision": 10,
"scale": 2,
"tableName": "table",
"catalogName": "catalog",
"type": AvaticaType,
"readOnly": false,
"writable": true,
"definitelyWritable": true,
"columnClassName": "java.lang.String"
}
- ordinal:位置偏移数字。
- autoIncrement:一个布尔值,表示列是否自动递增。
- caseSensitive:一个布尔值,表示列是否区分大小写。
- searchable:一个布尔值,表示此列是否支持所有 WHERE 搜索子句。
- currency:一个布尔值,表示此列是否代表货币。
- nullable:一个数字,表示此列是否支持空值。
- 0 = 不允许空值
- 1 = 允许空值
- 2 = 未知是否允许空值
- signed:一个布尔值,表示列是否为有符号数值。
- displaySize:列的字符宽度。
- label:此列的描述。
- columnName:列的名称。
- schemaName:此列所属的模式。
- precision:此列支持的最大数值精度。
- scale:此列支持的最大数值刻度。
- tableName:此列所属的表的名称。
- catalogName:此列所属的目录的名称。
- type:表示列类型的嵌套 AvaticaType。
- readOnly:一个布尔值,表示列是否只读。
- writable:一个布尔值,表示列是否可以更新。
- definitelyWritable:一个布尔值,表示列是否绝对可更新。
- columnClassName:列的类型的 Java 类的名称。
连接属性
连接属性链接
此对象表示给定 JDBC 连接的属性。
{
"connProps": "connPropsImpl",
"autoCommit": true,
"readOnly": true,
"transactionIsolation": 0,
"catalog": "catalog",
"schema": "schema"
}
- autoCommit(可选布尔值):一个布尔值,表示是否为事务启用自动提交。
- readOnly(可选布尔值):一个布尔值,表示 JDBC 连接是否只读。
- transactionIsolation(可选整数):一个整数,表示事务隔离级别,与 JDBC 规范中定义的值相对应。
- 0 = 不支持事务
- 1 = 可能发生脏读、不可重复读和幻读。
- 2 = 阻止脏读,但可能发生不可重复读和幻读。
- 4 = 阻止脏读和不可重复读,但可能发生幻读。
- 8 = 阻止脏读、不可重复读和幻读。
- catalog(可选字符串):获取连接属性时要包含的目录的名称。
- schema(可选字符串):获取连接属性时要包含的模式的名称。
- isDirty(内部布尔值):仅供内部使用的布尔值(Avatica 协议不需要)。此字段将在将来的版本中从协议中删除。
游标工厂
游标工厂链接
此对象表示将未类型化的对象转换为某些结果所需类型的信息。
{
"style": Style,
"clazz": "java.lang.String",
"fieldNames": [ "column1", "column2", ... ]
}
- style:表示包含对象样式的字符串。
- clazz:Java 类型的名称。
- fieldNames:字段名称的数组。
数据库属性
数据库属性链接
此对象表示通过 Avatica 服务器连接的连接所暴露的数据库属性。
其中之一:
- GET_STRING_FUNCTIONS
- GET_NUMERIC_FUNCTIONS
-
GET_SYSTEM_FUNCTIONS
- GET_TIME_DATE_FUNCTIONS
- GET_S_Q_L_KEYWORDS
- GET_DEFAULT_TRANSACTION_ISOLATION
帧
帧链接
此对象表示一批结果,跟踪结果集中的偏移和是否仍存在更多结果需要在 Avatica 服务器中获取。
{
"offset": 100,
"done": true,
"rows": [ [ val1, val2, ... ], ... ]
}
- offset:结果集中这些行的起始位置。
- done:一个布尔值,表示此结果集是否还有更多结果。
- rows:与结果集中的行和列对应的数组数组。
查询状态
查询状态链接
此对象表示在 Avatica 服务器中创建 ResultSet 的方式。 ResultSet 可以由用户提供的 SQL 创建,也可以通过带有该操作的参数的 DatabaseMetaData 操作创建。
{
"type": StateType,
"sql": "SELECT * FROM table",
"metaDataOperation": MetaDataOperation,
"operationArgs": ["arg0", "arg1", ... ]
}
- type:表示支持此查询的 ResultSet 的操作类型。
- sql:创建此查询的 ResultSet 的 SQL 语句。如果类型为 SQL,则为必需项。
- metaDataOperation:创建此查询的 ResultSet 的 DML 操作。如果类型为 METADATA,则为必需项。
- operationArgs:调用的 DML 操作的参数。如果类型为 METADATA,则为必需项。
表示
表示链接
此枚举表示某个值的具体 Java 类型。
其中之一:
- PRIMITIVE_BOOLEAN
- PRIMITIVE_BYTE
- PRIMITIVE_CHAR
- PRIMITIVE_SHORT
- PRIMITIVE_INT
- PRIMITIVE_LONG
- PRIMITIVE_FLOAT
- PRIMITIVE_DOUBLE
- BOOLEAN
- BYTE
- CHARACTER
- SHORT
- INTEGER
- LONG
- FLOAT
- DOUBLE
- JAVA_SQL_TIME
- JAVA_SQL_TIMESTAMP
- JAVA_SQL_DATE
- JAVA_UTIL_DATE
- BYTE_STRING
- STRING
- NUMBER
- OBJECT
RPC元数据
RPC元数据链接
此对象包含由Avatica服务器返回的各种调用/上下文元数据。
{
"serverAddress": "localhost:8765"
}
- serverAddress:创建此对象的服务器的主机:端口。
签名
签名链接
此对象表示在Avatica服务器中准备语句的结果。
{
"columns": [ ColumnMetaData, ColumnMetaData, ... ],
"sql": "SELECT * FROM table",
"parameters": [ AvaticaParameter, AvaticaParameter, ... ],
"cursorFactory": CursorFactory,
"statementType": StatementType
}
- columns:表示结果集架构的ColumnMetaData对象数组。
- sql:执行的SQL语句。
- parameters:表示类型特定详细信息的AvaticaParameter对象数组。
- cursorFactory:表示帧的Java表示的CursorFactory对象。
- statementType:表示Statement类型的StatementType对象。
状态类型
状态类型链接
此枚举表示是否使用用户提供的SQL或DatabaseMetaData操作来创建某个ResultSet。
其中之一:
- SQL
- METADATA
语句句柄
语句句柄链接
此对象封装了在Avatica服务器中创建的语句的所有信息。
{
"connectionId": "000000-0000-0000-00000000",
"id": 12345,
"signature": Signature
}
- connectionId:此语句所属连接的标识符。
- id:语句的标识符。
- signature:语句的Signature对象。
语句类型
语句类型链接
此枚举表示语句的种类。
其中之一:
- SELECT
- INSERT
- UPDATE
- DELETE
- UPSERT
- MERGE
- OTHER_DML
- CREATE
- DROP
- ALTER
- OTHER_DDL
- CALL
样式
样式链接
此枚举表示值的通用“类”类型。
其中之一:
- OBJECT
- RECORD
- RECORD_PROJECTION
- ARRAY
- LIST
- MAP
类型化值
类型化值链接
此对象封装了行中列的类型和值。
{
"type": "type_name",
"value": object
}
-
type:指向存储在value中的对象类型的名称。
-
value:JDBC类型的JSON表示。
以下图表记录了每个Rep值如何序列化为JSON值。有关JSON中有效属性的更多信息,请参阅JSON文档。
Rep值 | 序列化 | 描述 |
---|---|---|
PRIMITIVE_BOOLEAN | boolean | |
BOOLEAN | boolean | |
PRIMITIVE_BYTE | number | 字节的数值值。 |
BYTE | number | |
PRIMITIVE_CHAR | string | |
CHARACTER | string | |
PRIMITIVE_SHORT | number | |
SHORT | number | |
PRIMITIVE_INT | number | |
INTEGER | number | |
PRIMITIVE_LONG | number | |
LONG | number | |
PRIMITIVE_FLOAT | number | |
FLOAT | number | |
PRIMITIVE_DOUBLE | number | |
DOUBLE | number | |
BIG_INTEGER | number | 由Jackson隐式处理。 |
BIG_DECIMAL | number | 由Jackson隐式处理。 |
JAVA_SQL_TIME | number | 作为整数,从午夜开始的毫秒数。 |
JAVA_SQL_DATE | number | 作为整数,自纪元以来的天数。 |
JAVA_SQL_TIMESTAMP | number | 作为长整数,自纪元以来的毫秒数。 |
JAVA_UTIL_DATE | number | 作为长整数,自纪元以来的毫秒数。 |
BYTE_STRING | string | Base64编码的字符串。 |
STRING | string | |
NUMBER | number | 一般数值,未知具体类型。 |
OBJECT | null | 由Jackson隐式转换。 |
NULL | null | 由Jackson隐式转换。 |
ARRAY | N/A | 由Jackson隐式处理。 |
STRUCT | N/A | 由Jackson隐式处理。 |
MULTISET | N/A | 由Jackson隐式处理。 |
参考资料
https://calcite.apache.org/avatica/docs/json_reference.html