#include #include #include #include "sql.tab.h" #include "sql-parser.h" static const char *attr_names[] = { [SCA_NOTNULL] = "SCA_NOTNULL", [SCA_DEF_STR] = "SCA_DEF_STR", [SCA_DEF_NUM] = "SCA_DEF_NUM", [SCA_DEF_FLOAT] = "SCA_DEF_FLOAT", [SCA_DEF_BOOL] = "SCA_DEF_BOOL", [SCA_AUTOINC] = "SCA_AUTOINC", [SCA_UNIQUE_KEY] = "SCA_UNIQUE_KEY", [SCA_PRIMARY_KEY] = "SCA_PRIMARY_KEY", [SCA_COMMENT] = "SCA_COMMENT", }; static const char *op_names[] = { [SEO_ADD] = "SEO_ADD", [SEO_SUB] = "SEO_SUB", [SEO_MUL] = "SEO_MUL", [SEO_DIV] = "SEO_DIV", [SEO_MOD] = "SEO_MOD", [SEO_NEG] = "SEO_NEG", [SEO_AND] = "SEO_AND", [SEO_OR] = "SEO_OR", [SEO_XOR] = "SEO_XOR", [SEO_BITOR] = "SEO_BITOR", [SEO_BITAND] = "SEO_BITAND", [SEO_BITXOR] = "SEO_BITXOR", [SEO_SHIFT] = "SEO_SHIFT", [SEO_NOT] = "SEO_NOT", [SEO_ASSIGN] = "SEO_ASSIGN", [SEO_IS_NULL] = "SEO_IS_NULL", [SEO_SHR] = "SEO_SHR", [SEO_SHL] = "SEO_SHL", [SEO_BETWEEN] = "SEO_BETWEEN", [SEO_EXISTS] = "SEO_EXISTS", [SEO_IN_SELECT] = "SEO_IN_SELECT", [SEO_LIKE] = "SEO_LIKE", [SEO_REGEX] = "SEO_REGEX", [SEO_STRTOBIN] = "SEO_STRTOBIN", }; static const char *interval_names[] = { [SDI_DAY_HOUR] = "SDI_DAY_HOUR", [SDI_DAY_MICROSECOND] = "SDI_DAY_MICROSECOND", [SDI_DAY_MINUTE] = "SDI_DAY_MINUTE", [SDI_DAY_SECOND] = "SDI_DAY_SECOND", [SDI_YEAR_MONTH] = "SDI_YEAR_MONTH", [SDI_YEAR] = "SDI_YEAR", [SDI_HOUR_MICROSECOND] = "SDI_HOUR_MICROSECOND", [SDI_HOUR_MINUTE] = "SDI_HOUR_MINUTE", [SDI_HOUR_SECOND] = "SDI_HOUR_SECOND", }; void sqlp_alias(struct psql_state *pstate, const char *alias) { printf("exec ALIAS %s\n", alias); } void sqlp_assign(struct psql_state *pstate, const char *db_name, const char *name) { printf("exec ASSIGN %s%s%s\n", db_name ? db_name : "", db_name ? "." : "", name); } void sqlp_assign_at(struct psql_state *pstate, const char *name) { printf("exec ASSIGN-AT %s\n", name); } void sqlp_bool(struct psql_state *pstate, int val) { printf("exec BOOL %d\n", val); } void sqlp_call(struct psql_state *pstate, int n_args, const char *name) { printf("exec CALL %d %s\n", n_args, name); } void sqlp_call_date(struct psql_state *pstate, int n_args, enum sqlp_expr_ops op) { printf("exec CALL %d DATE %s\n", n_args, op == SEO_ADD ? "ADD" : "SUB"); } void sqlp_call_trim_opts(struct psql_state *pstate, int trim_opts) { printf("exec CALL TRIM OPTS %d\n", trim_opts); } void sqlp_case(struct psql_state *pstate, int n_list, int have_else) { printf("exec CASE %d %d\n", n_list, have_else); } void sqlp_caseval(struct psql_state *pstate, int n_list, int have_else) { printf("exec CASEVAL %d %d\n", n_list, have_else); } void sqlp_col_attr(struct psql_state *pstate, enum sqlp_col_attribs attr) { printf("exec ATTR %s\n", attr_names[attr]); } void sqlp_col_attr_uniq(struct psql_state *pstate, int n_cols) { printf("exec ATTR UNIQUE-KEY %d\n", n_cols); } void sqlp_col_attr_comm(struct psql_state *pstate, const char *comm) { printf("exec ATTR COMMENT %s\n", comm); } void sqlp_col_charset(struct psql_state *pstate, const char *charset) { printf("exec ATTR CHARSET %s\n", charset); } void sqlp_col_collate(struct psql_state *pstate, const char *collate) { printf("exec ATTR COLLATE %s\n", collate); } void sqlp_col_def_str(struct psql_state *pstate, const char *str) { printf("exec ATTR DEFAULT-STR %s\n", str); } void sqlp_col_def_num(struct psql_state *pstate, int num) { printf("exec ATTR DEFAULT-NUM %d\n", num); } void sqlp_col_def_float(struct psql_state *pstate, float num) { printf("exec ATTR DEFAULT-FLOAT %g\n", num); } void sqlp_col_def_bool(struct psql_state *pstate, int bool) { printf("exec ATTR DEFAULT-BOOL %d\n", bool); } void sqlp_col_key_pri(struct psql_state *pstate, int n_cols) { printf("exec KEY-PRI %d\n", n_cols); } void sqlp_col_key(struct psql_state *pstate, int n_cols) { printf("exec KEY %d\n", n_cols); } void sqlp_col_key_textidx(struct psql_state *pstate, int n_cols) { printf("exec KEY-TEXTIDX %d\n", n_cols); } void sqlp_column(struct psql_state *pstate, const char *name) { printf("exec COLUMN %s\n", name); } void sqlp_create_db(struct psql_state *pstate, int if_ne, const char *name) { printf("exec CREATE-DB %d %s\n", if_ne, name); } void sqlp_create_sel(struct psql_state *pstate, int ignore_replace) { printf("exec CREATE-SELECT %d\n", ignore_replace); } void sqlp_create_tbl(struct psql_state *pstate, int temp, int if_n_exists, int n_cols, const char *db_name, const char *name) { printf("exec CREATE-TABLE %d %d %d %s%s%s\n", temp, if_n_exists, n_cols, db_name ? db_name : "", db_name ? "." : "", name); } void sqlp_create_tbl_sel(struct psql_state *pstate, int temp, int if_n_exists, int n_cols, const char *db_name, const char *name) { printf("exec CREATE-TABLE-SELECT %d %d %d %s%s%s\n", temp, if_n_exists, n_cols, db_name ? db_name : "", db_name ? "." : "", name); } void sqlp_date_interval(struct psql_state *pstate, enum sqlp_date_intervals interval) { printf("exec DATE-INTERVAL %s\n", interval_names[interval]); } void sqlp_def_col(struct psql_state *pstate, int flags, const char *name) { printf("exec DEFINE-COL %d %s\n", flags, name); } void sqlp_delete(struct psql_state *pstate, int opts, const char *name) { printf("exec DELETE %d %s\n", opts, name); } void sqlp_delete_multi(struct psql_state *pstate, int opts, int n_del, int n_tbl_ref) { printf("exec DELETE-MULTI %d %d %d\n", opts, n_del, n_tbl_ref); } void sqlp_drop_db(struct psql_state *pstate, int if_exists, const char *name) { printf("exec DROP-DB %d %s\n", if_exists, name); } void sqlp_drop_table(struct psql_state *pstate, int temp, int if_exists, int n_tables) { printf("exec DROP-TABLE %d %d %d\n", temp, if_exists, n_tables); } void sqlp_enum_val(struct psql_state *pstate, const char *val) { printf("exec ENUM-VAL %s\n", val); } void sqlp_expr_cmp(struct psql_state *pstate, int comp) { printf("exec CMP %d\n", comp); } void sqlp_expr_is_bool(struct psql_state *pstate, int val) { printf("exec EXPR-IS-BOOL %d\n", val); } void sqlp_expr_is_in(struct psql_state *pstate, int val) { printf("exec EXPR-IS-IN %d\n", val); } void sqlp_expr_op(struct psql_state *pstate, enum sqlp_expr_ops op) { printf("exec EXPR-OP %s\n", op_names[op]); } void sqlp_expr_cmp_sel(struct psql_state *pstate, int sel_type, int comp) { printf("exec CMP-SELECT %d %d\n", sel_type, comp); } void sqlp_fieldname(struct psql_state *pstate, const char *db_name, const char *name) { printf("exec FIELD-NAME %s.%s\n", db_name, name); } void sqlp_float(struct psql_state *pstate, float val) { printf("exec FLOAT %g\n", val); } void sqlp_group_by_list(struct psql_state *pstate, int n_list, int opts) { printf("exec GROUPBY-LIST %d %d\n", n_list, opts); } void sqlp_group_by(struct psql_state *pstate, int opts) { printf("exec GROUPBY %d\n", opts); } void sqlp_having(struct psql_state *pstate) { printf("exec HAVING\n"); } void sqlp_index(struct psql_state *pstate, const char *name) { printf("exec INDEX %s\n", name); } void sqlp_index_hint(struct psql_state *pstate, int n_indexed, int opts) { printf("exec INDEX-HINT %d %d\n", n_indexed, opts); } void sqlp_ins_cols(struct psql_state *pstate, int n_cols) { printf("exec INSERT-COLS %d\n", n_cols); } void sqlp_ins_default(struct psql_state *pstate) { printf("exec INSERT-DEFAULT\n"); } void sqlp_ins_dup_update(struct psql_state *pstate, int n_assn) { printf("exec INSERT DUP-ONUPDATE %d\n", n_assn); } void sqlp_insert(struct psql_state *pstate, int opts, int n_vals, const char *tbl_name) { printf("exec INSERT %d %d %s\n", opts, n_vals, tbl_name); } void sqlp_insert_assn(struct psql_state *pstate, int opts, int n_assn, const char *tbl_name) { printf("exec INSERT-ASSN %d %d %s\n", opts, n_assn, tbl_name); } void sqlp_insert_sel(struct psql_state *pstate, int opts, const char *tbl_name) { printf("exec INSERT-SEL %d %s\n", opts, tbl_name); } void sqlp_into(struct psql_state *pstate, int n_cols) { printf("exec INTO %d\n", n_cols); } void sqlp_join(struct psql_state *pstate, int opts) { printf("exec JOIN %d\n", opts); } void sqlp_join_expr(struct psql_state *pstate) { printf("exec JOIN-ON EXPR\n"); } void sqlp_join_using(struct psql_state *pstate, int n_cols) { printf("exec JOIN-USING %d\n", n_cols); } void sqlp_limit(struct psql_state *pstate, int two_expr) { printf("exec LIMIT %d\n", two_expr); } void sqlp_name(struct psql_state *pstate, const char *name) { printf("exec NAME %s\n", name); } void sqlp_now(struct psql_state *pstate) { printf("exec NOW\n"); } void sqlp_number(struct psql_state *pstate, int val) { printf("exec INT/NUMBER %d\n", val); } void sqlp_order_by(struct psql_state *pstate, int n_list) { printf("exec ORDER-BY %d\n", n_list); } void sqlp_replace_assn(struct psql_state *pstate, int opts, int n_assn, const char *name) { printf("exec REPLACE-ASSN %d %d %s\n", opts, n_assn, name); } void sqlp_replace_vals(struct psql_state *pstate, int opts, int n_vals, const char *name) { printf("exec REPLACE-VALS %d %d %s\n", opts, n_vals, name); } void sqlp_replace_sel(struct psql_state *pstate, int opts, const char *name) { printf("exec REPLACE-SEL %d %s\n", opts, name); } void sqlp_select(struct psql_state *pstate, int opts, int n_expr, int n_tbl_ref) { printf("exec SELECT %d %d %d\n", opts, n_expr, n_tbl_ref); } void sqlp_select_nodata(struct psql_state *pstate, int opts, int n_expr) { printf("exec SELECT-NODATA %d %d\n", opts, n_expr); } void sqlp_select_all(struct psql_state *pstate) { printf("exec SELECT-ALL\n"); } void sqlp_set(struct psql_state *pstate, const char *name) { printf("exec SET %s\n", name); } void sqlp_start_col(struct psql_state *pstate) { printf("exec START-COL\n"); } void sqlp_stmt(struct psql_state *pstate) { printf("exec STMT\n"); } void sqlp_string(struct psql_state *pstate, const char *str) { printf("exec STRING %s\n", str); } void sqlp_subquery(struct psql_state *pstate) { printf("exec SUBQUERY\n"); } void sqlp_subquery_as(struct psql_state *pstate, const char *name) { printf("exec SUBQUERY-AS %s\n", name); } void sqlp_table(struct psql_state *pstate, const char *db_name, const char *name) { printf("exec TABLE %s%s%s\n", db_name ? db_name : "", db_name ? "." : "", name); } void sqlp_table_refs(struct psql_state *pstate, int n_refs) { printf("exec TABLE-REFERENCES %d\n", n_refs); } void sqlp_update(struct psql_state *pstate, int opts, int n_tbl_ref, int n_assn) { printf("exec UPDATE %d %d %d\n", opts, n_tbl_ref, n_assn); } void sqlp_uservar(struct psql_state *pstate, const char *str) { printf("exec USER-VAR %s\n", str); } void sqlp_values(struct psql_state *pstate, int n_vals) { printf("exec VALUES %d\n", n_vals); } void sqlp_where(struct psql_state *pstate) { printf("exec WHERE\n"); }