[FEAT MERGE] GIS

This commit is contained in:
obdev
2022-12-23 12:08:27 +00:00
committed by ob-robot
parent 38846e73d6
commit 40d215fc5a
519 changed files with 158600 additions and 8396 deletions

View File

@ -264,7 +264,7 @@ END_P SET_VAR DELIMITER
FAILOVER FAST FAULTS FIELDS FILEX FINAL_COUNT FIRST FIRST_VALUE FIXED FLUSH FOLLOWER FORMAT
FOUND FREEZE FREQUENCY FUNCTION FOLLOWING FLASHBACK FULL FRAGMENTATION FROZEN FILE_ID
GENERAL GEOMETRY GEOMETRYCOLLECTION GET_FORMAT GLOBAL GRANTS GROUP_CONCAT GROUPING GTS
GENERAL GEOMETRY GEOMCOLLECTION GEOMETRYCOLLECTION GET_FORMAT GLOBAL GRANTS GROUP_CONCAT GROUPING GTS
GLOBAL_NAME GLOBAL_ALIAS
HANDLER HASH HELP HISTOGRAM HOST HOSTS HOUR HIDDEN HYBRID_HIST
@ -318,7 +318,7 @@ END_P SET_VAR DELIMITER
SET_TP SHARE SHUTDOWN SIGNED SIMPLE SLAVE SLOW SLOT_IDX SNAPSHOT SOCKET SOME SONAME SOUNDS
SOURCE SPFILE SPLIT SQL_AFTER_GTIDS SQL_AFTER_MTS_GAPS SQL_BEFORE_GTIDS SQL_BUFFER_RESULT
SQL_CACHE SQL_NO_CACHE SQL_ID SQL_THREAD SQL_TSI_DAY SQL_TSI_HOUR SQL_TSI_MINUTE SQL_TSI_MONTH
SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR STANDBY STAT START STARTS STATS_AUTO_RECALC
SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR SRID STANDBY STAT START STARTS STATS_AUTO_RECALC
STATS_PERSISTENT STATS_SAMPLE_PAGES STATUS STATEMENTS STATISTICS STD STDDEV STDDEV_POP STDDEV_SAMP STRONG
SYNCHRONIZATION STOP STORAGE STORAGE_FORMAT_VERSION STORING STRING
SUBCLASS_ORIGIN SUBDATE SUBJECT SUBPARTITION SUBPARTITIONS SUBSTR SUBSTRING SUCCESSFUL SUM
@ -2726,6 +2726,60 @@ MOD '(' expr ',' expr ')'
{
$$ = $1;
}
| POINT '(' expr ',' expr ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_POINT, 2, $3, $5);
}
| LINESTRING '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_LINESTRING, 1, expr_list);
}
| MULTIPOINT '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_MULTIPOINT, 1, expr_list);
}
| MULTILINESTRING '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_MULTILINESTRING, 1, expr_list);
}
| POLYGON '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_POLYGON, 1, expr_list);
}
| MULTIPOLYGON '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_MULTIPOLYGON, 1, expr_list);
}
| GEOMETRYCOLLECTION '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_GEOMCOLLECTION, 1, expr_list);
}
| GEOMETRYCOLLECTION '(' ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_GEOMCOLLECTION, 1, NULL);
}
| GEOMCOLLECTION '(' expr_list ')'
{
ParseNode *expr_list = NULL;
merge_nodes(expr_list, result, T_EXPR_LIST, $3);
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_GEOMCOLLECTION, 1, expr_list);
}
| GEOMCOLLECTION '(' ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_GEOMCOLLECTION, 1, NULL);
}
;
sys_interval_func:
@ -4361,6 +4415,16 @@ column_definition
malloc_non_terminal_node(constraint_node, result->malloc_pool_, T_CHECK_CONSTRAINT, 1, $2);
malloc_non_terminal_node($$, result->malloc_pool_, T_FOREIGN_KEY, 7, child_col_list, $10, parent_col_list, reference_option_list, constraint_node, $5, $14);
}
| SPATIAL opt_key_or_index opt_index_name opt_index_using_algorithm '(' sort_column_list ')' opt_index_option_list
{
(void)($2);
ParseNode *col_list = NULL;
ParseNode *index_option = NULL;
merge_nodes(col_list, result, T_INDEX_COLUMN_LIST, $6);
merge_nodes(index_option, result, T_TABLE_OPTION_LIST, $8);
malloc_non_terminal_node($$, result->malloc_pool_, T_INDEX, 5, $3, col_list, index_option, $4, NULL);
$$->value_ = 2;
}
| FOREIGN KEY opt_index_name '(' column_name_list ')' REFERENCES relation_factor '(' column_name_list ')' opt_match_option opt_reference_option_list
{
ParseNode *child_col_list= NULL;
@ -4570,6 +4634,10 @@ NOT NULLX
{
$$ = $1;
}
| SRID INTNUM
{
malloc_non_terminal_node($$, result->malloc_pool_, T_CONSTR_SRID, 1, $2);
}
;
opt_storage_type:
@ -4745,6 +4813,69 @@ BINARY opt_string_length_i_v2
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| POINT
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 1; /* point */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| LINESTRING
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 2; /* linestring */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| POLYGON
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 3; /* polygon */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| MULTIPOINT
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 4; /* multipoint */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| MULTILINESTRING
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 5; /* multilinestring */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| MULTIPOLYGON
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 6; /* multipolygon */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
| GEOMETRYCOLLECTION
{
malloc_terminal_node($$, result->malloc_pool_, T_CAST_ARGUMENT);
$$->value_ = 0;
$$->int16_values_[OB_NODE_CAST_TYPE_IDX] = T_GEOMETRY; /* data type */
$$->int16_values_[OB_NODE_CAST_GEO_TYPE_IDX] = 7; /* geometrycollection */
$$->int32_values_[OB_NODE_CAST_C_LEN_IDX] = 0; /* length */
$$->param_num_ = 0;
}
;
opt_integer:
@ -4970,6 +5101,54 @@ int_type_i opt_int_length_i opt_unsigned_i opt_zerofill_i
malloc_terminal_node($$, result->malloc_pool_, T_JSON);
$$->int32_values_[0] = 0; /* length */
}
| GEOMETRY
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 0; /* geometry, geometry uses collation type value convey sub geometry type. */
}
| POINT
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 1; /* point, geometry uses collation type value convey sub geometry type. */
}
| LINESTRING
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 2; /* linestring, geometry uses collation type value convey sub geometry type. */
}
| POLYGON
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 3; /* polygon, geometry uses collation type value convey sub geometry type. */
}
| MULTIPOINT
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 4; /* mutipoint, geometry uses collation type value convey sub geometry type. */
}
| MULTILINESTRING
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 5; /* multilinestring, geometry uses collation type value convey sub geometry type. */
}
| MULTIPOLYGON
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 6; /* multipolygon, geometry uses collation type value convey sub geometry type. */
}
| GEOMETRYCOLLECTION
{
malloc_terminal_node($$, result->malloc_pool_, T_GEOMETRY);
$$->int32_values_[0] = 0; /* length */
$$->int32_values_[1] = 7; /* geometrycollection, geometry uses collation type value convey sub geometry type. */
}
;
string_list:
@ -5368,6 +5547,10 @@ not NULLX
{
$$ = $1;
}
| SRID INTNUM
{
malloc_non_terminal_node($$, result->malloc_pool_, T_CONSTR_SRID, 1, $2);
}
;
now_or_signed_literal:
@ -6751,7 +6934,8 @@ CREATE {$$ = NULL;}
;
opt_index_keyname:
UNIQUE { $$[0] = 1; }
SPATIAL { $$[0] = 2; }
| UNIQUE { $$[0] = 1; }
| /*EMPTY*/ { $$[0] = 0; }
;
@ -8981,7 +9165,7 @@ expr opt_asc_desc
opt_asc_desc:
/* EMPTY */
{ malloc_terminal_node($$, result->malloc_pool_, T_SORT_ASC); $$->value_ = 2; }
{ malloc_terminal_node($$, result->malloc_pool_, T_SORT_ASC); $$->value_ = 2; $$->is_empty_ = 1;}
| ASC
{ malloc_terminal_node($$, result->malloc_pool_, T_SORT_ASC); $$->value_ = 2; }
| DESC
@ -13187,6 +13371,17 @@ ADD key_or_index opt_index_name opt_index_using_algorithm '(' sort_column_list '
(void)($2);
malloc_non_terminal_node($$, result->malloc_pool_, T_INDEX_DROP, 1, $3);
}
| ADD SPATIAL opt_key_or_index opt_index_name opt_index_using_algorithm '(' sort_column_list ')' opt_index_option_list opt_partition_option
{
(void)($3);
(void)($10);
ParseNode *col_list = NULL;
ParseNode *index_option = NULL;
merge_nodes(col_list, result, T_INDEX_COLUMN_LIST, $7);
merge_nodes(index_option, result, T_TABLE_OPTION_LIST, $9);
malloc_non_terminal_node($$, result->malloc_pool_, T_INDEX_ADD, 5, $4, col_list, index_option, $5, NULL);
$$->value_ = 2;
}
| ADD CONSTRAINT opt_constraint_name PRIMARY KEY '(' column_name_list ')' opt_index_option_list
{
(void)($3);
@ -16361,6 +16556,7 @@ ACCOUNT
| FULL %prec HIGHER_PARENS
| GENERAL
| GEOMETRY
| GEOMCOLLECTION
| GEOMETRYCOLLECTION
| GET_FORMAT
| GLOBAL %prec LOWER_PARENS
@ -16706,6 +16902,7 @@ ACCOUNT
| SQL_TSI_SECOND
| SQL_TSI_WEEK
| SQL_TSI_YEAR
| SRID
| STACKED
| STANDBY
| START