Top |
GdaSqlStatement | |
enum | GdaSqlStatementType |
struct | GdaSqlAnyPart |
enum | GdaSqlAnyPartType |
GdaSqlStatementUnknown | |
GdaSqlStatementTransaction | |
GdaSqlStatementSelect | |
GdaSqlStatementInsert | |
GdaSqlStatementDelete | |
GdaSqlStatementUpdate | |
GdaSqlStatementCompound | |
enum | GdaSqlStatementCompoundType |
struct | GdaSqlExpr |
struct | GdaSqlParamSpec |
struct | GdaSqlField |
struct | GdaSqlTable |
struct | GdaSqlFunction |
struct | GdaSqlOperation |
enum | GdaSqlOperatorType |
struct | GdaSqlCase |
struct | GdaSqlSelectField |
struct | GdaSqlSelectTarget |
struct | GdaSqlSelectJoin |
enum | GdaSqlSelectJoinType |
struct | GdaSqlSelectFrom |
struct | GdaSqlSelectOrder |
Use the GdaSqlBuilder object to build GdaSqlStatement structures.
Every SQL statement can be decomposed in a GdaSqlStatement structure. This is not a GObject, but rather just a C structure which can be manipulated directly. The structure is a tree composed of several key structures which are show in the following diagram (even though it does not show, all structures "inherit" the GdaSqlAnyPart structure which holds some basic information).
The samples/SqlParserConsole directory of Libgda's sources contains a small utility to display statements' structures as a graph (using the GraphViz language). It has been used to provide the examples in this section of the documentation.
GdaSqlStatement *
gda_sql_statement_new (GdaSqlStatementType type
);
Use this function to create a GdaSqlStatement of the specified type
type.
GdaSqlStatement *
gda_sql_statement_copy (GdaSqlStatement *stmt
);
Creates a copy of stmt
.
void
gda_sql_statement_free (GdaSqlStatement *stmt
);
Releases any memory associated to stmt
.
gchar *
gda_sql_statement_serialize (GdaSqlStatement *stmt
);
Creates a string representation of stmt
.
const gchar *
gda_sql_statement_type_to_string (GdaSqlStatementType type
);
Converts a GdaSqlStatementType to a string, see also gda_sql_statement_string_to_type()
GdaSqlStatementType
gda_sql_statement_string_to_type (const gchar *type
);
Converts a string to a GdaSqlStatementType value, see also gda_sql_statement_type_to_string()
gboolean gda_sql_statement_check_structure (GdaSqlStatement *stmt
,GError **error
);
Checks for any error in stmt
's structure to make sure the statement is valid
(for example a SELECT statement must at least return a column, a DELETE statement must specify which table
is targeted).
gboolean gda_sql_statement_check_validity (GdaSqlStatement *stmt
,GdaConnection *cnc
,GError **error
);
If cnc
is not NULL
, then checks that all the database objects referenced in the statement actually
exist in the connection's database (for example the table being updated in a UPDATE statement must exist in the
connection's database for the check to succeed). This method fills the stmt
->validity_meta_struct attribute.
If cnc
is NULL
, then remove any information from a previous call to this method stored in stmt
. In this case,
the stmt
->validity_meta_struct attribute is cleared.
Also note that some parts of stmt
may be modified: for example leading and trailing spaces in aliases or
objects names will be removed.
stmt |
a GdaSqlStatement pointer |
|
cnc |
a GdaConnection object, or |
[allow-none] |
error |
a place to store errors, or |
gboolean gda_sql_statement_check_validity_m (GdaSqlStatement *stmt
,GdaMetaStruct *mstruct
,GError **error
);
If mstruct
is not NULL
, then checks that all the database objects referenced in the statement i
actually referenced in mstruct
(for example the table being updated in a UPDATE statement must exist in the
connection's database for the check to succeed).
This method sets the stmt
->validity_meta_struct attribute to mstruct
.
If mstruct
is NULL
, then remove any information from a previous call to this method stored in stmt
. In this case,
the stmt
->validity_meta_struct attribute is cleared.
Also note that some parts of stmt
may be modified: for example leading and trailing spaces in aliases or
objects names will be removed.
stmt |
a GdaSqlStatement pointer |
|
mstruct |
a GdaMetaStruct object, or |
[allow-none] |
error |
a place to store errors, or |
Since: 4.2
void
gda_sql_statement_check_clean (GdaSqlStatement *stmt
);
Cleans any data set by a previous call to gda_sql_statement_check_validity()
.
gboolean gda_sql_statement_normalize (GdaSqlStatement *stmt
,GdaConnection *cnc
,GError **error
);
"Normalizes" (in place) some parts of stmt
, which means stmt
may be modified.
At the moment any "*" field in a SELECT statement will be replaced by one
GdaSqlSelectField structure for each field in the referenced table.
stmt |
a pointer to a GdaSqlStatement structure |
|
cnc |
a GdaConnection object, or |
[allow-none] |
error |
a place to store errors, or |
gboolean (*GdaSqlForeachFunc) (GdaSqlAnyPart *part
,gpointer data
,GError **error
);
Specifies the type of functions passed to gda_sql_any_part_foreach()
.
[skip]
part |
the current GdaSqlAnyPart node |
|
data |
user data passed to |
|
error |
pointer to a place to store errors |
gboolean gda_sql_any_part_foreach (GdaSqlAnyPart *node
,GdaSqlForeachFunc func
,gpointer data
,GError **error
);
Calls a function for each element of a GdaSqlAnyPart node
node |
the stat node |
|
func |
function to call for each sub node. |
[scope call] |
data |
data to pass to |
[closure] |
error |
a place to store errors, or |
void gda_sql_statement_unknown_take_expressions (GdaSqlStatement *stmt
,GSList *expressions
);
Sets stmt
's list of expressions
expressions
's
ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_trans_take_mode (GdaSqlStatement *stmt
,GValue *value
);
Sets the model of the transaction
value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_trans_take_name (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the transaction
value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_trans_set_isol_level (GdaSqlStatement *stmt
,GdaTransactionIsolation level
);
void gda_sql_statement_select_take_distinct (GdaSqlStatement *stmt
,gboolean distinct
,GdaSqlExpr *distinct_expr
);
Sets the DISTINCT clause of stmt
.
distinct_expr
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
distinct |
a TRUE/FALSE value |
|
distinct_expr |
a GdaSqlExpr pointer representing what the DISTINCT is on, or |
[allow-none] |
void gda_sql_statement_select_take_expr_list (GdaSqlStatement *stmt
,GSList *expr_list
);
Sets list of expressions selected by stmt
expr_list
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_from (GdaSqlStatement *stmt
,GdaSqlSelectFrom *from
);
Sets the FROM clause of stmt
from
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_where_cond (GdaSqlStatement *stmt
,GdaSqlExpr *expr
);
Sets the WHERE clause of stmt
expr
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_group_by (GdaSqlStatement *stmt
,GSList *group_by
);
Sets the GROUP BY clause of stmt
group_by
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_having_cond (GdaSqlStatement *stmt
,GdaSqlExpr *expr
);
Sets the HAVING clause of stmt
expr
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_order_by (GdaSqlStatement *stmt
,GSList *order_by
);
Sets the ORDER BY clause of stmt
order_by
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_select_take_limits (GdaSqlStatement *stmt
,GdaSqlExpr *count
,GdaSqlExpr *offset
);
Sets the LIMIT clause of stmt
count
and offset
's responsibility are transferred to
stmt
(which means stmt
is then responsible for freeing them when no longer needed).
void gda_sql_statement_insert_take_table_name (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the table to insert into in stmt
. value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
value |
name of the table to insert into, as a G_TYPE_STRING GValue |
void gda_sql_statement_insert_take_on_conflict (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the resolution conflict algorithm used by stmt
. value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
value |
name of the resolution conflict algorithm, as a G_TYPE_STRING GValue |
void gda_sql_statement_insert_take_fields_list (GdaSqlStatement *stmt
,GSList *list
);
Sets the list of fields for which values will be specified in stmt
. list
's
ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_insert_take_1_values_list (GdaSqlStatement *stmt
,GSList *list
);
Sets a list of list of values to be inserted by stmt
. list
's
ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_insert_take_extra_values_list (GdaSqlStatement *stmt
,GSList *list
);
void gda_sql_statement_insert_take_select (GdaSqlStatement *stmt
,GdaSqlStatement *select
);
Specifies a SELECT statement, the values inserted will be the result set of select
. select
's
ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_delete_take_table_name (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the table to delete from in stmt
. value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_delete_take_condition (GdaSqlStatement *stmt
,GdaSqlExpr *cond
);
Sets the WHERE condition of stmt
. cond
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
cond |
the WHERE condition of the DELETE statement, as a GdaSqlExpr |
void gda_sql_statement_update_take_table_name (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the table to delete from in stmt
.
value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_update_take_on_conflict (GdaSqlStatement *stmt
,GValue *value
);
Sets the name of the resolution conflict algorithm used by stmt
. value
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
value |
name of the resolution conflict algorithm, as a G_TYPE_STRING GValue |
void gda_sql_statement_update_take_condition (GdaSqlStatement *stmt
,GdaSqlExpr *cond
);
Sets the WHERE clause of stmt
expr
's ownership is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
void gda_sql_statement_update_take_set_value (GdaSqlStatement *stmt
,GValue *fname
,GdaSqlExpr *expr
);
Specifies that the field named fname
will be updated with the expression expr
.
fname
and expr
's responsibility are transferred to
stmt
(which means stmt
is then responsible for freeing them when no longer needed).
stmt |
a GdaSqlStatement pointer |
|
fname |
a field name, as a G_TYPE_STRING GValue |
|
expr |
a GdaSqlExpr pointer |
void gda_sql_statement_compound_set_type (GdaSqlStatement *stmt
,GdaSqlStatementCompoundType type
);
Specifies stmt
's type of compound
void gda_sql_statement_compound_take_stmt (GdaSqlStatement *stmt
,GdaSqlStatement *s
);
Adds the s
sub-statement to the stmt
compound statement. s
's reference is transferred to
stmt
(which means stmt
is then responsible for freeing it when no longer needed).
GdaSqlExpr *
gda_sql_expr_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlField structure, using parent
as its parent part.
void
gda_sql_expr_free (GdaSqlExpr *expr
);
Frees a GdaSqlExpr structure and its members.
GdaSqlExpr *
gda_sql_expr_copy (GdaSqlExpr *expr
);
Creates a new GdaSqlExpr structure initiated with the values stored in expr
.
gchar *
gda_sql_expr_serialize (GdaSqlExpr *expr
);
Creates a new string representation of the SQL expression. You need to free the returned string
using g_free()
;
void gda_sql_expr_take_select (GdaSqlExpr *expr
,GdaSqlStatement *stmt
);
Sets the expression's parent to the GdaSqlStatementSelect held by stmt
. After
calling this function stmt
is freed.
expr |
a GdaSqlExpr structure |
|
stmt |
a GdaSqlStatement holding the GdaSqlStatementSelect to take from |
GdaSqlParamSpec *
gda_sql_param_spec_new (GValue *simple_spec
);
value
must contain a string representing a variable, see the documentation associated to the
GdaSqlParser object.
value
is destroyed by this function.
GdaSqlParamSpec *
gda_sql_param_spec_copy (GdaSqlParamSpec *pspec
);
Creates a copy of pspec
.
void gda_sql_param_spec_take_name (GdaSqlParamSpec *pspec
,GValue *value
);
Sets pspec
's name. value
's ownership is transferred to
pspec
(which means pspec
is then responsible for freeing it when no longer needed).
void gda_sql_param_spec_take_type (GdaSqlParamSpec *pspec
,GValue *value
);
Sets pspec
's data type. value
's ownership is transferred to
pspec
(which means pspec
is then responsible for freeing it when no longer needed).
value
must represent a data type, as understood by gda_g_type_from_string()
.
void gda_sql_param_spec_take_descr (GdaSqlParamSpec *pspec
,GValue *value
);
Sets pspec
's description. value
's ownership is transferred to
pspec
(which means pspec
is then responsible for freeing it when no longer needed).
void gda_sql_param_spec_take_nullok (GdaSqlParamSpec *pspec
,GValue *value
);
Sets pspec
's ability of being NULL. value
's ownership is transferred to
pspec
(which means pspec
is then responsible for freeing it when no longer needed).
If value
's string starts by 't' or 'T' then pspec
will be allowed to be NULL
gchar *
gda_sql_param_spec_serialize (GdaSqlParamSpec *pspec
);
Creates a new string representing pspec
.
GdaSqlField *
gda_sql_field_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlField structure, using parent
as its parent part.
void
gda_sql_field_free (GdaSqlField *field
);
Frees a GdaSqlField structure and its members.
GdaSqlField *
gda_sql_field_copy (GdaSqlField *field
);
Creates a new GdaSqlField structure initiated with the values stored in field
.
gchar *
gda_sql_field_serialize (GdaSqlField *field
);
Creates a new string representing a field. You need to free the returned string
using g_free()
;
void gda_sql_field_take_name (GdaSqlField *field
,GValue *value
);
Sets the field's name using the string held by value
. When call, value
is freed using
gda_value_free()
.
GdaSqlTable *
gda_sql_table_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlTable structure, using parent
as its parent part.
void
gda_sql_table_free (GdaSqlTable *table
);
Frees a GdaSqlTable structure and its members.
GdaSqlTable *
gda_sql_table_copy (GdaSqlTable *table
);
Creates a new GdaSqlTable structure initiated with the values stored in table
.
gchar *
gda_sql_table_serialize (GdaSqlTable *table
);
Creates a new string representing a table. You need to free the returned string
using g_free()
;
void gda_sql_table_take_name (GdaSqlTable *table
,GValue *value
);
Sets the table's name using the string held by value
. When call, value
is freed using
gda_value_free()
.
GdaSqlFunction *
gda_sql_function_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlFunction structure initiated.
void
gda_sql_function_free (GdaSqlFunction *function
);
Frees a GdaSqlFunction structure and its members.
GdaSqlFunction *
gda_sql_function_copy (GdaSqlFunction *function
);
Creates a new GdaSqlFunction structure initiated with the values stored in function
.
gchar *
gda_sql_function_serialize (GdaSqlFunction *function
);
Creates a new string representing a function. You need to free the returned string
using g_free()
;
void gda_sql_function_take_name (GdaSqlFunction *function
,GValue *value
);
Sets the function's name using the string held by value
. When call, value
is freed using
gda_value_free()
.
void gda_sql_function_take_args_list (GdaSqlFunction *function
,GSList *args
);
Sets the function's arguments to point to args
, then sets the
list's data elements' parent to function
.
GdaSqlOperation *
gda_sql_operation_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlOperation structure and sets its parent to parent
.
void
gda_sql_operation_free (GdaSqlOperation *operation
);
Frees a GdaSqlOperation structure and its members.
GdaSqlOperation *
gda_sql_operation_copy (GdaSqlOperation *operation
);
Creates a new GdaSqlOperation structure initiated with the values stored in operation
.
gchar *
gda_sql_operation_serialize (GdaSqlOperation *operation
);
Creates a new string representing an operator. You need to free the returned string
using g_free()
;
const gchar *
gda_sql_operation_operator_to_string (GdaSqlOperatorType op
);
Returns a constant string representing a operator name. You don't need to free the returned string.
GdaSqlOperatorType
gda_sql_operation_operator_from_string
(const gchar *op
);
Returns GdaSqlOperatorType that correspond with the string op
.
GdaSqlCase *
gda_sql_case_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlCase structure and sets its parent to parent
.
void
gda_sql_case_free (GdaSqlCase *sc
);
Frees a GdaSqlCase structure and its members.
GdaSqlCase *
gda_sql_case_copy (GdaSqlCase *sc
);
Creates a new GdaSqlCase structure initiated with the values stored in sc
.
gchar *
gda_sql_case_serialize (GdaSqlCase *sc
);
Creates a new string representing a CASE clause. You need to free the returned string
using g_free()
;
GdaSqlSelectField *
gda_sql_select_field_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlSelectField structure and sets its parent to parent
. A
GdaSqlSelectField is any expression in SELECT statements before the FROM clause.
void
gda_sql_select_field_free (GdaSqlSelectField *field
);
Frees a GdaSqlSelectField structure and its members.
GdaSqlSelectField *
gda_sql_select_field_copy (GdaSqlSelectField *field
);
Creates a new GdaSqlSelectField structure initiated with the values stored in field
.
gchar *
gda_sql_select_field_serialize (GdaSqlSelectField *field
);
Creates a new string representing an expression used as field in a SELECT statement before the FROM clause.
void gda_sql_select_field_take_star_value (GdaSqlSelectField *field
,GValue *value
);
Sets the expression field's value in the GdaSqlSelectField structure to point to value
;
after this field
is the owner of value
.
void gda_sql_select_field_take_expr (GdaSqlSelectField *field
,GdaSqlExpr *expr
);
Sets the expression field in the GdaSqlSelectField structure to point to expr
and modify it to sets its parent to field
.
void gda_sql_select_field_take_alias (GdaSqlSelectField *field
,GValue *alias
);
Sets the 'as' field's string in the GdaSqlSelectField structure. alias
is freed
after call this function.
GdaSqlSelectTarget *
gda_sql_select_target_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlSelectTarget structure and sets its parent to parent
. A
GdaSqlSelectTarget is the table in a SELECT statement.
void
gda_sql_select_target_free (GdaSqlSelectTarget *target
);
Frees a GdaSqlSelectTarget structure and its members.
GdaSqlSelectTarget *
gda_sql_select_target_copy (GdaSqlSelectTarget *target
);
Creates a new GdaSqlSelectTarget structure initiated with the values stored in target
.
gchar *
gda_sql_select_target_serialize (GdaSqlSelectTarget *target
);
Creates a new string representing a target used in a SELECT statement after the FROM clause.
void gda_sql_select_target_take_table_name (GdaSqlSelectTarget *target
,GValue *value
);
Sets the target to be a SELECT subquery setting target's expression to use
stmt
; after call this function the target owns stmt
, then you must not free it.
void gda_sql_select_target_take_select (GdaSqlSelectTarget *target
,GdaSqlStatement *stmt
);
void gda_sql_select_target_take_alias (GdaSqlSelectTarget *target
,GValue *alias
);
GdaSqlSelectJoin *
gda_sql_select_join_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlSelectJoin structure and sets its parent to parent
.
void
gda_sql_select_join_free (GdaSqlSelectJoin *join
);
Frees a GdaSqlSelectJoin structure and its members.
GdaSqlSelectJoin *
gda_sql_select_join_copy (GdaSqlSelectJoin *join
);
Creates a new GdaSqlSelectJoin structure initiated with the values stored in join
.
gchar *
gda_sql_select_join_serialize (GdaSqlSelectJoin *join
);
Creates a new string description of the join used in a SELECT statement.
const gchar *
gda_sql_select_join_type_to_string (GdaSqlSelectJoinType type
);
Creates a new string representing the join type.
GdaSqlSelectFrom *
gda_sql_select_from_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlSelectFrom structure and sets its parent to parent
.
void
gda_sql_select_from_free (GdaSqlSelectFrom *from
);
Frees a GdaSqlSelectFrom structure and its members.
GdaSqlSelectFrom *
gda_sql_select_from_copy (GdaSqlSelectFrom *from
);
Creates a new GdaSqlSelectFrom structure initiated with the values stored in from
.
gchar *
gda_sql_select_from_serialize (GdaSqlSelectFrom *from
);
Creates a new string description of the FROM clause used in a SELECT statement.
void gda_sql_select_from_take_new_target (GdaSqlSelectFrom *from
,GdaSqlSelectTarget *target
);
Append target
to the targets in the FROM clause and set target
's parent to
from
; after call this function from
owns target
then you must not free it.
void gda_sql_select_from_take_new_join (GdaSqlSelectFrom *from
,GdaSqlSelectJoin *join
);
Append join
to the joins in the FROM clause and set join
's parent to
from
; after call this function from
owns join
then you must not free it.
GdaSqlSelectOrder *
gda_sql_select_order_new (GdaSqlAnyPart *parent
);
Creates a new GdaSqlSelectOrder structure and sets its parent to parent
.
void
gda_sql_select_order_free (GdaSqlSelectOrder *order
);
Frees a GdaSqlSelectOrder structure and its members.
GdaSqlSelectOrder *
gda_sql_select_order_copy (GdaSqlSelectOrder *order
);
Creates a new GdaSqlSelectOrder structure initiated with the values stored in order
.
gchar *
gda_sql_select_order_serialize (GdaSqlSelectOrder *order
);
Creates a new string description of the ORDER BY clause used in a SELECT statement.
gchar *
gda_sql_value_stringify (const GValue *value
);
Simplified version of gda_value_stringify()
.
typedef struct { gchar *sql; GdaSqlStatementType stmt_type; gpointer contents; /* depends on stmt_type */ GdaMetaStruct *validity_meta_struct; /* set when gda_sql_statement_check_validity() was last called */ } GdaSqlStatement;
This structure is the top level structure encapsulating several type of statements.
gchar * |
||
GdaSqlStatementType |
type of statement |
|
gpointer |
contents, cast it depending on |
|
GdaMetaStruct * |
Known types of statements
a SELECT statement |
||
an INSERT statement |
||
an UPDATE statement |
||
a DELETE statement |
||
a compound statement: multiple SELECT statements grouped together using an operator |
||
start of transaction statement |
||
transaction abort statement |
||
transaction commit statement |
||
new savepoint definition statement |
||
return to savepoint statement |
||
savepoint deletion statement |
||
unknown statement, only identifies variables |
||
not used |
struct GdaSqlAnyPart { GdaSqlAnyPartType type; GdaSqlAnyPart *parent; };
Base structure of which all structures (except GdaSqlStatement) "inherit". It identifies, for each structure, its type and its parent in the structure hierarchy.
GdaSqlAnyPartType |
type of structure, as a GdaSqlAnyPartType enum. |
|
GdaSqlAnyPart * |
pointer to the parent GdaSqlAnyPart structure |
Type of part.
structure is a GdaSqlStatementSelect |
||
structure is a GdaSqlStatementInsert |
||
structure is a GdaSqlStatementUpdate |
||
structure is a GdaSqlStatementDelete |
||
structure is a GdaSqlStatementCompound |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementTransaction |
||
structure is a GdaSqlStatementUnknown |
||
structure is a GdaSqlExpr |
||
structure is a GdaSqlField |
||
structure is a GdaSqlTable |
||
structure is a GdaSqlFunction |
||
structure is a GdaSqlOperation |
||
structure is a GdaSqlCase |
||
structure is a GdaSqlSelectField |
||
structure is a GdaSqlSelectTarget |
||
structure is a GdaSqlSelectJoin |
||
structure is a GdaSqlSelectFrom |
||
structure is a GdaSqlSelectOrder |
typedef struct { GdaSqlAnyPart any; GSList *expressions; } GdaSqlStatementUnknown;
Represents any statement which type is not identified (any DDL statement or database specific dialect)
typedef struct { GdaSqlAnyPart any; GdaTransactionIsolation isolation_level; gchar *trans_mode; /* DEFERRED, IMMEDIATE, EXCLUSIVE, READ_WRITE, READ_ONLY */ gchar *trans_name; } GdaSqlStatementTransaction;
The statement is a transaction management related statement (BEGIN, ROLLBACK, etc). The GdaSqlStatementTransaction structure does not hold enough information to reconstruct the complete SQL statement (some information may be missing) - the aim of this structure is to identify a minimum set of information in the transaction statement. Note that the complete SQL which created the statement should be available in the GdaSqlStatement structure which encapsulates this structure.
GdaSqlAnyPart |
inheritance structure |
|
GdaTransactionIsolation |
isolation level as a GdaTransactionIsolation |
|
gchar * |
transaction mode (DEFERRED, IMMEDIATE, EXCLUSIVE, READ_WRITE, READ_ONLY) |
|
gchar * |
transaction name |
typedef struct { GdaSqlAnyPart any; gboolean distinct; GdaSqlExpr *distinct_expr; GSList *expr_list; /* list of GdaSqlSelectField pointers */ GdaSqlSelectFrom *from; GdaSqlExpr *where_cond; /* WHERE... */ GSList *group_by; /* list of GdaSqlExpr pointers */ GdaSqlExpr *having_cond; /* HAVING... */ GSList *order_by; /* list of GdaSqlSelectOrder pointers */ GdaSqlExpr *limit_count; GdaSqlExpr *limit_offset; } GdaSqlStatementSelect;
typedef struct { GdaSqlAnyPart any; gchar *on_conflict; /* conflict resolution clause */ GdaSqlTable *table; GSList *fields_list; /* list of GdaSqlField structures */ GSList *values_list; /* list of list of GdaSqlExpr */ GdaSqlAnyPart *select; /* SELECT OR COMPOUND statements: GdaSqlStatementSelect or GdaSqlStatementCompound */ } GdaSqlStatementInsert;
The statement is an INSERT statement, any kind of INSERT statement can be represented using this structure (if this is not the case then report a bug).
GdaSqlAnyPart |
inheritance structure |
|
gchar * |
conflict resolution clause if there is one (such as "OR REPLACE") |
|
GdaSqlTable * |
name of the table to which data is inserted |
|
GSList * |
list of GdaSqlField fields which are valued for insertion |
|
GSList * |
list of list of GdaSqlExpr expressions (this is a list of list, not a simple list) |
|
GdaSqlAnyPart * |
a GdaSqlStatementSelect or GdaSqlStatementCompound structure representing the values to insert |
typedef struct { GdaSqlAnyPart any; GdaSqlTable *table; GdaSqlExpr *cond; } GdaSqlStatementDelete;
typedef struct { GdaSqlAnyPart any; gchar *on_conflict; /* conflict resolution clause */ GdaSqlTable *table; GSList *fields_list; /* list of GdaSqlField pointers */ GSList *expr_list; /* list of GdaSqlExpr pointers */ GdaSqlExpr *cond; } GdaSqlStatementUpdate;
typedef struct { GdaSqlAnyPart any; GdaSqlStatementCompoundType compound_type; GSList *stmt_list; /* list of SELECT or COMPOUND statements */ } GdaSqlStatementCompound;
struct GdaSqlExpr { GdaSqlAnyPart any; GValue *value; GdaSqlParamSpec *param_spec; GdaSqlFunction *func; GdaSqlOperation *cond; GdaSqlAnyPart *select; /* SELECT OR COMPOUND statements: GdaSqlStatementSelect or GdaSqlStatementCompound */ GdaSqlCase *case_s; gchar *cast_as; gboolean value_is_ident; };
This structure contains any expression, either as a value (the value
part is set),
a variable (the param_spec
is set), or as other types of expressions.
Note 1 about the value
field: if the expression represents a string value in the SQL statement,
the string itself must be represented as it would be in the actual SQL, ie. it should be
escaped (accordingly to the escaping rules of the database which will use the SQL). For
example a string representing the 'joe'
value should be
"'joe'"
and not "joe"
.
Note 2 about the value
field: if the expression represents an SQL identifier (such as a table
or field name), then the value_is_ident
should be set to TRUE
, and value
should be a string
which may contain double quotes around SQL identifiers which also are reserved keywords or which
are case sensitive.
GdaSqlAnyPart |
inheritance structure |
|
GValue * |
a GValue, or |
[allow-none] |
GdaSqlParamSpec * |
a GdaSqlParamSpec, or |
[allow-none] |
GdaSqlFunction * |
not |
[allow-none] |
GdaSqlOperation * |
not |
[allow-none] |
GdaSqlAnyPart * |
not |
[allow-none] |
GdaSqlCase * |
not |
[allow-none] |
gchar * |
not |
[allow-none] |
gboolean |
Please see specific note about the |
struct GdaSqlParamSpec { gchar *name; gchar *descr; gboolean is_param; gboolean nullok; GType g_type; gpointer validity_meta_dict; /* to be replaced with a pointer to a structure representing a DBMS data type in GdaMetaStruct */ /* Padding for future expansion */ gpointer _gda_reserved1; gpointer _gda_reserved2; };
struct GdaSqlField { GdaSqlAnyPart any; gchar *field_name; /* validity check with a connection */ GdaMetaTableColumn *validity_meta_table_column; };
This structure represents the name of a table's field.
struct GdaSqlTable { GdaSqlAnyPart any; gchar *table_name; /* validity check with a connection */ GdaMetaDbObject *validity_meta_object; };
This structure represents the name of a table.
struct GdaSqlFunction { GdaSqlAnyPart any; gchar *function_name; GSList *args_list; };
This structure represents a function or an aggregate with zero or more arguments.
GdaSqlAnyPart |
inheritance structure |
|
gchar * |
name of the function , in the form [[catalog.]schema.]function_name |
|
GSList * |
list of GdaSqlExpr expressions, one for each argument |
struct GdaSqlOperation { GdaSqlAnyPart any; GdaSqlOperatorType operator_type; GSList *operands; };
This structure represents an operation between one or more operands.
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlOperatorType |
||
GSList * |
list of GdaSqlExpr operands |
struct GdaSqlCase { GdaSqlAnyPart any; GdaSqlExpr *base_expr; GSList *when_expr_list; GSList *then_expr_list; GdaSqlExpr *else_expr; };
This structure represents a CASE WHEN... construct
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlExpr * |
expression to test |
|
GSList * |
list of GdaSqlExpr, one for each WHEN clause |
|
GSList * |
list of GdaSqlExpr, one for each THEN clause |
|
GdaSqlExpr * |
default expression for the CASE |
struct GdaSqlSelectField { GdaSqlAnyPart any; GdaSqlExpr *expr; gchar *field_name; /* may be NULL if expr does not refer to a table.field, can also be "*" */ gchar *table_name; /* may be NULL if expr does not refer to a table.field */ gchar *as; /* validity check with a connection */ GdaMetaDbObject *validity_meta_object; GdaMetaTableColumn *validity_meta_table_column; };
This structure represents a selected item in a SELECT statement (when executed, the returned data set
will have one column per selected item). Note that the table_name
and
field_name
field parts will be overwritten by Libgda,
set the value of expr->value
instead.
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlExpr * |
expression |
|
gchar * |
field name part of |
|
gchar * |
table name part of |
|
gchar * |
alias |
|
GdaMetaDbObject * |
||
GdaMetaTableColumn * |
struct GdaSqlSelectTarget { GdaSqlAnyPart any; GdaSqlExpr *expr; gchar *table_name; /* may be NULL if expr does not refer to a table */ gchar *as; /* validity check with a connection */ GdaMetaDbObject *validity_meta_object; };
This structure represents a target used to fetch data from in a SELECT statement; it can represent a table or
a sub select. Note that the table_name
part will be overwritten by Libgda,
set the value of expr->value
instead.
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlExpr * |
expression |
|
gchar * |
table name part of |
|
gchar * |
alias |
|
GdaMetaDbObject * |
struct GdaSqlSelectJoin { GdaSqlAnyPart any; GdaSqlSelectJoinType type; gint position; /* between a target at (pos < @position) and the one @position */ GdaSqlExpr *expr; GSList *use; /* list of GdaSqlField pointers */ };
This structure represents a join between two targets in a SELECT statement.
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlSelectJoinType |
type of join |
|
gint |
represents a join between a target at (pos < |
|
GdaSqlExpr * |
joining expression, or |
[allow-none] |
GSList * |
list of GdaSqlField pointers to use when joining, or |
[allow-none] |
struct GdaSqlSelectFrom { GdaSqlAnyPart any; GSList *targets; GSList *joins; };
This structure represents the FROM clause of a SELECT statement, it lists targets and joins
GdaSqlAnyPart |
inheritance structure |
|
GSList * |
list of GdaSqlSelectTarget. |
[element-type Gda.SqlSelectTarget] |
GSList * |
list of GdaSqlSelectJoin. |
[element-type Gda.SqlSelectJoin] |
struct GdaSqlSelectOrder { GdaSqlAnyPart any; GdaSqlExpr *expr; gboolean asc; gchar *collation_name; };
This structure represents the ordering of a SELECT statement.
GdaSqlAnyPart |
inheritance structure |
|
GdaSqlExpr * |
expression to order on |
|
gboolean |
TRUE is ordering is ascending |
|
gchar * |
name of the collation to use for ordering |
The GdaSqlBuilder object which features some easy to use API to build GdaSqlStatement structures or GdaStatement objects without having to worry about the details of GdaSqlStatement's contents.