add support for FOR ORDINALITY and NESTED in JSON_TABLE (#1493)

This commit is contained in:
Ophir LOJKINE 2024-11-06 22:04:13 +01:00 committed by GitHub
parent a5b0092506
commit fc0e13b80e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 102 additions and 14 deletions

View file

@ -2773,6 +2773,12 @@ fn parse_json_table() {
r#"SELECT * FROM JSON_TABLE('[1,2]', '$[*]' COLUMNS(x INT PATH '$' ERROR ON EMPTY)) AS t"#,
);
mysql().verified_only_select(r#"SELECT * FROM JSON_TABLE('[1,2]', '$[*]' COLUMNS(x INT PATH '$' ERROR ON EMPTY DEFAULT '0' ON ERROR)) AS t"#);
mysql().verified_only_select(
r#"SELECT jt.* FROM JSON_TABLE('["Alice", "Bob", "Charlie"]', '$[*]' COLUMNS(row_num FOR ORDINALITY, name VARCHAR(50) PATH '$')) AS jt"#,
);
mysql().verified_only_select(
r#"SELECT * FROM JSON_TABLE('[ {"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}, {"a":3}]', '$[*]' COLUMNS(a INT PATH '$.a', NESTED PATH '$.b[*]' COLUMNS (b INT PATH '$'))) AS jt"#,
);
assert_eq!(
mysql()
.verified_only_select(
@ -2784,14 +2790,14 @@ fn parse_json_table() {
json_expr: Expr::Value(Value::SingleQuotedString("[1,2]".to_string())),
json_path: Value::SingleQuotedString("$[*]".to_string()),
columns: vec![
JsonTableColumn {
JsonTableColumn::Named(JsonTableNamedColumn {
name: Ident::new("x"),
r#type: DataType::Int(None),
path: Value::SingleQuotedString("$".to_string()),
exists: false,
on_empty: Some(JsonTableColumnErrorHandling::Default(Value::SingleQuotedString("0".to_string()))),
on_error: Some(JsonTableColumnErrorHandling::Null),
},
}),
],
alias: Some(TableAlias {
name: Ident::new("t"),