From 748c8def403ada2d41a7aa0f43d908bdaad080c5 Mon Sep 17 00:00:00 2001 From: djklim87 Date: Mon, 14 Apr 2025 19:48:15 +0200 Subject: [PATCH] manticoresearch/#3032 Add partitions support --- src/PHPSQLParser/processors/SourceProcessor.php | 1 + tests/cases/parser/manticoreCasesTest.php | 9 +++++++++ tests/expected/parser/ms_create_source_5.serialized | 1 + tests/expected/parser/ms_create_source_6.serialized | 1 + tests/expected/parser/ms_create_source_7.serialized | 1 + 5 files changed, 13 insertions(+) create mode 100644 tests/expected/parser/ms_create_source_5.serialized create mode 100644 tests/expected/parser/ms_create_source_6.serialized create mode 100644 tests/expected/parser/ms_create_source_7.serialized diff --git a/src/PHPSQLParser/processors/SourceProcessor.php b/src/PHPSQLParser/processors/SourceProcessor.php index a68c6477..39200a4b 100644 --- a/src/PHPSQLParser/processors/SourceProcessor.php +++ b/src/PHPSQLParser/processors/SourceProcessor.php @@ -160,6 +160,7 @@ public function process($tokens) case 'BATCH': case 'BROKER_LIST': case 'TOPIC_LIST': + case 'PARTITION_LIST': case 'CONSUMER_GROUP': case 'NUM_CONSUMERS': if ($prevCategory === 'CREATE_DEF') { diff --git a/tests/cases/parser/manticoreCasesTest.php b/tests/cases/parser/manticoreCasesTest.php index 8b9177af..b2232938 100644 --- a/tests/cases/parser/manticoreCasesTest.php +++ b/tests/cases/parser/manticoreCasesTest.php @@ -81,6 +81,15 @@ public function manticoreQueryProvider(): array broker_list='kafka:9092' topic_list='my-data' consumer_group='manticore' num_consumers='4' batch='50'", 'ms_create_source_3'], ["CREATE SOURCE kafka (id bigint, term '\$s_\$cv@' text, abbrev text, GlossDef json) type='kafka' broker_list='kafka:9092' topic_list='my-data' consumer_group='manticore' num_consumers='4' batch='50'", 'ms_create_source_4'], + ["CREATE SOURCE kafka (id bigint, term text, abbrev text, GlossDef json) type='kafka' + broker_list='kafka:9092' topic_list='my-data' consumer_group='manticore' + num_consumers='4' batch='50' partition_list='0'", 'ms_create_source_5'], + ["CREATE SOURCE kafka (id bigint, term text, abbrev text, GlossDef json) type='kafka' + broker_list='kafka:9092' topic_list='my-data' consumer_group='manticore' + num_consumers='4' batch='50' partition_list='1'", 'ms_create_source_6'], + ["CREATE SOURCE kafka (id bigint, term text, abbrev text, GlossDef json) type='kafka' + broker_list='kafka:9092' topic_list='my-data' consumer_group='manticore' + num_consumers='4' batch='50' partition_list='0,1'", 'ms_create_source_7'], ['CREATE VIEW view_table', 'ms_create_view_1'], ["CREATE MATERIALIZED VIEW view_table TO destination_kafka AS SELECT id, term as name, abbrev as short_name, UTC_TIMESTAMP() as received_at, GlossDef.size as size FROM kafka", 'ms_create_view_2'], diff --git a/tests/expected/parser/ms_create_source_5.serialized b/tests/expected/parser/ms_create_source_5.serialized new file mode 100644 index 00000000..2372d461 --- /dev/null +++ b/tests/expected/parser/ms_create_source_5.serialized @@ -0,0 +1 @@ +a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:6:"source";s:10:"not-exists";b:0;s:9:"base_expr";s:6:"SOURCE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SOURCE";}}}s:6:"SOURCE";a:5:{s:9:"base_expr";s:5:"kafka";s:4:"name";s:5:"kafka";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"kafka";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:51:" (id bigint, term text, abbrev text, GlossDef json)";s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"id bigint";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:6:"bigint";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:6:"bigint";s:8:"unsigned";b:0;s:8:"zerofill";b:0;s:6:"length";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:1;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"term text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"term";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"term";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:2;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:11:"abbrev text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"abbrev";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"abbrev";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:3;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:13:"GlossDef json";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"GlossDef";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"GlossDef";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"json";s:8:"sub_tree";a:0:{}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}}}s:7:"options";a:7:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"type='kafka'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"type";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'kafka'";}}}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:24:"broker_list='kafka:9092'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:11:"broker_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'kafka:9092'";}}}i:2;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:20:"topic_list='my-data'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:10:"topic_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:9:"'my-data'";}}}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:26:"consumer_group='manticore'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"consumer_group";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'manticore'";}}}i:4;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:"num_consumers='4'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:13:"num_consumers";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'4'";}}}i:5;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"batch='50'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"batch";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"'50'";}}}i:6;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:18:"partition_list='0'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"partition_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'0'";}}}}}} \ No newline at end of file diff --git a/tests/expected/parser/ms_create_source_6.serialized b/tests/expected/parser/ms_create_source_6.serialized new file mode 100644 index 00000000..44fb0445 --- /dev/null +++ b/tests/expected/parser/ms_create_source_6.serialized @@ -0,0 +1 @@ +a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:6:"source";s:10:"not-exists";b:0;s:9:"base_expr";s:6:"SOURCE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SOURCE";}}}s:6:"SOURCE";a:5:{s:9:"base_expr";s:5:"kafka";s:4:"name";s:5:"kafka";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"kafka";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:51:" (id bigint, term text, abbrev text, GlossDef json)";s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"id bigint";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:6:"bigint";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:6:"bigint";s:8:"unsigned";b:0;s:8:"zerofill";b:0;s:6:"length";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:1;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"term text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"term";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"term";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:2;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:11:"abbrev text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"abbrev";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"abbrev";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:3;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:13:"GlossDef json";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"GlossDef";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"GlossDef";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"json";s:8:"sub_tree";a:0:{}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}}}s:7:"options";a:7:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"type='kafka'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"type";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'kafka'";}}}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:24:"broker_list='kafka:9092'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:11:"broker_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'kafka:9092'";}}}i:2;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:20:"topic_list='my-data'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:10:"topic_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:9:"'my-data'";}}}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:26:"consumer_group='manticore'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"consumer_group";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'manticore'";}}}i:4;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:"num_consumers='4'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:13:"num_consumers";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'4'";}}}i:5;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"batch='50'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"batch";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"'50'";}}}i:6;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:18:"partition_list='1'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"partition_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'1'";}}}}}} \ No newline at end of file diff --git a/tests/expected/parser/ms_create_source_7.serialized b/tests/expected/parser/ms_create_source_7.serialized new file mode 100644 index 00000000..31cb4374 --- /dev/null +++ b/tests/expected/parser/ms_create_source_7.serialized @@ -0,0 +1 @@ +a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:6:"source";s:10:"not-exists";b:0;s:9:"base_expr";s:6:"SOURCE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SOURCE";}}}s:6:"SOURCE";a:5:{s:9:"base_expr";s:5:"kafka";s:4:"name";s:5:"kafka";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"kafka";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:51:" (id bigint, term text, abbrev text, GlossDef json)";s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"id bigint";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:6:"bigint";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:6:"bigint";s:8:"unsigned";b:0;s:8:"zerofill";b:0;s:6:"length";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:1;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:9:"term text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"term";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"term";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:2;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:11:"abbrev text";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"abbrev";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"abbrev";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"text";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:4:"text";s:6:"binary";b:0;}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}i:3;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:13:"GlossDef json";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"GlossDef";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"GlossDef";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:4:"json";s:8:"sub_tree";a:0:{}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}}}s:7:"options";a:7:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"type='kafka'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"type";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'kafka'";}}}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:24:"broker_list='kafka:9092'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:11:"broker_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'kafka:9092'";}}}i:2;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:20:"topic_list='my-data'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:10:"topic_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:9:"'my-data'";}}}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:26:"consumer_group='manticore'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"consumer_group";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'manticore'";}}}i:4;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:"num_consumers='4'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:13:"num_consumers";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'4'";}}}i:5;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"batch='50'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"batch";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"'50'";}}}i:6;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:20:"partition_list='0,1'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"partition_list";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"'0,1'";}}}}}} \ No newline at end of file