compatible with mysql column definition attribute
This commit is contained in:
@ -1015,4 +1015,38 @@ do {\
|
||||
}\
|
||||
} while(0);\
|
||||
|
||||
#define set_data_type_collation(date_type, attribute, only_collation, enable_multi_collation) \
|
||||
do {\
|
||||
ParseNode *collation = NULL; \
|
||||
bool found = false;\
|
||||
if (attribute != NULL) {\
|
||||
if (attribute->type_ == T_COLLATION) {\
|
||||
collation = attribute;\
|
||||
} else { \
|
||||
for (int i = 0; i < attribute->num_child_; i++) { \
|
||||
if (attribute->children_[i]->type_ == T_COLLATION) { \
|
||||
if (!enable_multi_collation && found) { \
|
||||
yyerror(NULL, result, "Multiple COLLATE syntax not supported\n");\
|
||||
YYABORT;\
|
||||
} else {\
|
||||
collation = attribute->children_[i];\
|
||||
found = true;\
|
||||
}\
|
||||
} else if (only_collation) {\
|
||||
yyerror(NULL, result, "Only support COLLATE syntax here\n");\
|
||||
YYABORT;\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
}\
|
||||
if (collation == NULL) {\
|
||||
} else if (date_type->type_ == T_CHAR || date_type->type_ == T_VARCHAR || date_type->type_ == T_TEXT || date_type->type_ == T_TINYTEXT\
|
||||
|| date_type->type_ == T_LONGTEXT || date_type->type_ == T_MEDIUMTEXT || date_type->type_ == T_SET || date_type->type_ == T_ENUM) {\
|
||||
if (date_type->num_child_ < 2) {\
|
||||
} else {\
|
||||
date_type->children_[1] = collation;\
|
||||
}\
|
||||
}\
|
||||
} while(0);\
|
||||
|
||||
#endif /* OCEANBASE_SRC_SQL_PARSER_SQL_PARSER_BASE_H_ */
|
||||
|
||||
Reference in New Issue
Block a user