Some complex sql is not parsed correctly.
liudonghua123 opened this issue · comments
liudonghua commented
If I want to parse the following sql, the columns
, columns_dict
and so on are not correct.
CREATE TABLE `jeecg_order_main` (
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
`order_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',
`ctype` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单类型',
`order_date` datetime NULL DEFAULT NULL COMMENT '订单日期',
`order_money` double(10, 3) NULL DEFAULT NULL COMMENT '订单金额',
`content` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单备注',
`create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人',
`update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
`bpm_status` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '流程状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
logs
>>> sql
"\nCREATE TABLE `jeecg_order_main` (\n `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ' 主键',\n `order_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',\n `ctype` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单类型',\n `order_date` datetime NULL DEFAULT NULL COMMENT '订单日期',\n `order_money` double(10, 3) NULL DEFAULT NULL COMMENT '订单金额',\n `content` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单备注',\n `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',\n `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',\n `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人',\n `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',\n `bpm_status` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '流程状态',\n PRIMARY KEY (`id`) USING BTREE\n) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;\n"
>>> parser=Parser(sql)
>>> parser. Tokens
......
>>> parser. Columns
['id', 'utf8', 'utf8_general_ci', 'order_code', 'ctype', 'order_date', 'datetime', 'order_money', 'content', 'create_by', 'create_time', 'update_by', 'update_time', 'bpm_status', 'BTREE']
>>> parser.columns_dict
{'update': ['utf8', 'utf8_general_ci', 'order_code', 'ctype', 'order_date', 'datetime', 'order_money', 'content', 'create_by', 'create_time', 'update_by', 'update_time', 'bpm_status', 'id'], 'join': ['BTREE']}
>>>