1 #ifndef SQL_TREE_H
2 #define SQL_TREE_H
3 
4 #include "sql_parser.h"
5 
6 /* statements */
7 sql_statement        *sql_statement_build        (sql_statement_type type, void *statement);
8 sql_select_statement *sql_select_statement_build (int distinct,
9 						  GList * fields,
10 						  GList * from,
11 						  sql_where * where,
12 						  GList * order,
13 						  GList * group);
14 sql_insert_statement *sql_insert_statement_build (sql_table * table,
15 						  GList * fields,
16 						  GList * values);
17 sql_update_statement *sql_update_statement_build (sql_table * table,
18 						  GList * set,
19 						  sql_where * where);
20 sql_delete_statement *sql_delete_statement_build (sql_table * table,
21 						  sql_where * where);
22 
23 /* field item */
24 sql_field_item *sql_field_item_build (GList * name);
25 sql_field_item *sql_field_item_build_equation (sql_field_item * left,
26 					       sql_field_item * right,
27 					       sql_field_operator op);
28 sql_field_item *sql_field_item_build_select (sql_select_statement * select);
29 sql_field_item *sql_field_build_function (gchar * funcname,
30 					  GList * funcarglist);
31 
32 /* field */
33 sql_field *sql_field_build (sql_field_item * item);
34 sql_field *sql_field_set_as (sql_field * field, char *as);
35 sql_field *sql_field_set_param_spec (sql_field * field, GList * param_spec);
36 
37 /* table */
38 sql_table *sql_table_build (char *tablename);
39 sql_table *sql_table_set_join (sql_table * table, sql_join_type join_type, sql_where * cond);
40 sql_table *sql_table_build_select (sql_select_statement * select);
41 sql_table *sql_table_set_as (sql_table * table, char *as);
42 
43 /* where */
44 sql_where *sql_where_build_single (sql_condition * cond);
45 sql_where *sql_where_build_negated (sql_where * where);
46 sql_where *sql_where_build_pair (sql_where * left, sql_where * right,
47 				 sql_logic_operator op);
48 /* condition */
49 sql_condition *sql_build_condition (sql_field * left, sql_field * right,
50 				    sql_condition_operator op);
51 sql_condition *sql_build_condition_between (sql_field * field,
52 					    sql_field * lower,
53 					    sql_field * upper);
54 /* field order */
55 sql_order_field *sql_order_field_build (GList * name, sql_ordertype order_type);
56 
57 
58 /* param spec */
59 param_spec *param_spec_build (param_spec_type type, char *content);
60 
61 #endif /* SQL_TREE_H */
62