fix basic functionality with type Object and new analyzer

This commit is contained in:
Anton Popov 2023-02-03 01:52:07 +00:00
parent 0c13870eb1
commit 08b618205d
3 changed files with 22 additions and 1 deletions

View File

@ -5391,7 +5391,12 @@ void QueryAnalyzer::initializeTableExpressionColumns(const QueryTreeNodePtr & ta
{
const auto & storage_snapshot = table_node ? table_node->getStorageSnapshot() : table_function_node->getStorageSnapshot();
auto column_names_and_types = storage_snapshot->getColumns(GetColumnsOptions(GetColumnsOptions::All).withSubcolumns().withVirtuals());
auto column_names_and_types = storage_snapshot->getColumns(
GetColumnsOptions(GetColumnsOptions::All)
.withSubcolumns()
.withVirtuals()
.withExtendedObjects());
const auto & columns_description = storage_snapshot->metadata->getColumns();
std::vector<std::pair<std::string, ColumnNodePtr>> alias_columns_to_resolve;

View File

@ -0,0 +1,3 @@
{"data":{"id":2,"obj":{"k2":{"k3":"str","k4":[{"k6":55}]},"some":42},"s":"bar"}}
{"data":{"id":2,"obj.k2.k3":"str","obj.k2.k4.k6":[55],"obj.some":42,"s":"bar"}}
{"a.id":2,"a.obj.k2":{"k3":"str","k4":[{"k6":55}]},"a.obj.some":42}

View File

@ -0,0 +1,13 @@
SET output_format_json_named_tuples_as_objects = 1;
SET allow_experimental_object_type = 1;
SET allow_experimental_analyzer = 1;
DROP TABLE IF EXISTS t_json_analyzer;
CREATE TABLE t_json_analyzer (a JSON) ENGINE = Memory;
INSERT INTO t_json_analyzer VALUES ('{"id": 2, "obj": {"k2": {"k3": "str", "k4": [{"k6": 55}]}, "some": 42}, "s": "bar"}');
SELECT any(a) AS data FROM t_json_analyzer FORMAT JSONEachRow;
SELECT flattenTuple(a) AS data FROM t_json_analyzer FORMAT JSONEachRow;
SELECT a.id, a.obj.* FROM t_json_analyzer FORMAT JSONEachRow;
DROP TABLE t_json_analyzer;