![]() |
![]() |
![]() |
GNOME Data Access 4.0 manual | ![]() |
---|---|---|---|---|
#include <sql-parser/gda-sql-statement.h> GdaSqlStatement; enum GdaSqlStatementType; GdaSqlStatement* gda_sql_statement_new (GdaSqlStatementType type); GdaSqlStatement* gda_sql_statement_copy (GdaSqlStatement *stmt); void gda_sql_statement_free (GdaSqlStatement *stmt); gchar* gda_sql_statement_serialize (GdaSqlStatement *stmt); const gchar* gda_sql_statement_type_to_string (GdaSqlStatementType type); GdaSqlStatementType gda_sql_statement_string_to_type (const gchar *type); gboolean gda_sql_statement_check_structure (GdaSqlStatement *stmt, GError **error); gboolean gda_sql_statement_check_validity (GdaSqlStatement *stmt, GdaConnection *cnc, GError **error); void gda_sql_statement_check_clean (GdaSqlStatement *stmt); gboolean gda_sql_statement_normalize (GdaSqlStatement *stmt, GdaConnection *cnc, GError **error); GdaSqlAnyPart; enum GdaSqlAnyPartType; #define GDA_SQL_ANY_PART (x) gboolean (*GdaSqlForeachFunc) (GdaSqlAnyPart *, gpointer , GError **); gboolean gda_sql_any_part_foreach (GdaSqlAnyPart *node, GdaSqlForeachFunc func, gpointer data, GError **error); GdaSqlStatementUnknown; void gda_sql_statement_unknown_take_expressions (GdaSqlStatement *stmt, GSList *expressions); GdaSqlStatementTransaction; void gda_sql_statement_trans_take_mode (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_trans_take_name (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_trans_set_isol_level (GdaSqlStatement *stmt, GdaTransactionIsolation level); GdaSqlStatementSelect; void gda_sql_statement_select_take_distinct (GdaSqlStatement *stmt, gboolean distinct, GdaSqlExpr *distinct_expr); void gda_sql_statement_select_take_expr_list (GdaSqlStatement *stmt, GSList *expr_list); void gda_sql_statement_select_take_from (GdaSqlStatement *stmt, GdaSqlSelectFrom *from); void gda_sql_statement_select_take_where_cond (GdaSqlStatement *stmt, GdaSqlExpr *expr); void gda_sql_statement_select_take_group_by (GdaSqlStatement *stmt, GSList *group_by); void gda_sql_statement_select_take_having_cond (GdaSqlStatement *stmt, GdaSqlExpr *expr); void gda_sql_statement_select_take_order_by (GdaSqlStatement *stmt, GSList *order_by); void gda_sql_statement_select_take_limits (GdaSqlStatement *stmt, GdaSqlExpr *count, GdaSqlExpr *offset); GdaSqlStatementInsert; void gda_sql_statement_insert_take_table_name (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_insert_take_on_conflict (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_insert_take_fields_list (GdaSqlStatement *stmt, GSList *list); void gda_sql_statement_insert_take_1_values_list (GdaSqlStatement *stmt, GSList *list); void gda_sql_statement_insert_take_extra_values_list (GdaSqlStatement *stmt, GSList *list); void gda_sql_statement_insert_take_select (GdaSqlStatement *stmt, GdaSqlStatement *select); GdaSqlStatementDelete; void gda_sql_statement_delete_take_table_name (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_delete_take_condition (GdaSqlStatement *stmt, GdaSqlExpr *cond); GdaSqlStatementUpdate; void gda_sql_statement_update_take_table_name (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_update_take_on_conflict (GdaSqlStatement *stmt, GValue *value); void gda_sql_statement_update_take_condition (GdaSqlStatement *stmt, GdaSqlExpr *cond); void gda_sql_statement_update_take_set_value (GdaSqlStatement *stmt, GValue *fname, GdaSqlExpr *expr); GdaSqlStatementCompound; void gda_sql_statement_compound_set_type (GdaSqlStatement *stmt, GdaSqlStatementCompoundType type); void gda_sql_statement_compound_take_stmt (GdaSqlStatement *stmt, GdaSqlStatement *s); GdaSqlAnyPart* gda_sql_statement_compound_reduce (GdaSqlAnyPart *compound_or_select); GdaSqlExpr; GdaSqlParamSpec; GdaSqlParamSpec* gda_sql_param_spec_new (GValue *simple_spec); GdaSqlParamSpec* gda_sql_param_spec_copy (GdaSqlParamSpec *pspec); void gda_sql_param_spec_take_name (GdaSqlParamSpec *pspec, GValue *value); void gda_sql_param_spec_take_type (GdaSqlParamSpec *pspec, GValue *value); void gda_sql_param_spec_take_descr (GdaSqlParamSpec *pspec, GValue *value); void gda_sql_param_spec_take_nullok (GdaSqlParamSpec *pspec, GValue *value); void gda_sql_param_spec_free (GdaSqlParamSpec *pspec); gchar* gda_sql_param_spec_serialize (GdaSqlParamSpec *pspec); GdaSqlField; GdaSqlTable; GdaSqlTable* gda_sql_table_new (GdaSqlAnyPart *parent); void gda_sql_table_free (GdaSqlTable *table); GdaSqlTable* gda_sql_table_copy (GdaSqlTable *table); gchar* gda_sql_table_serialize (GdaSqlTable *table); void gda_sql_table_take_name (GdaSqlTable *table, GValue *value); GdaSqlFunction; GdaSqlFunction* gda_sql_function_new (GdaSqlAnyPart *parent); void gda_sql_function_free (GdaSqlFunction *function); GdaSqlFunction* gda_sql_function_copy (GdaSqlFunction *function); gchar* gda_sql_function_serialize (GdaSqlFunction *function); void gda_sql_function_take_name (GdaSqlFunction *function, GValue *value); void gda_sql_function_take_args_list (GdaSqlFunction *function, GSList *args); GdaSqlOperation; enum GdaSqlOperatorType; GdaSqlOperation* gda_sql_operation_new (GdaSqlAnyPart *parent); void gda_sql_operation_free (GdaSqlOperation *operation); GdaSqlOperation* gda_sql_operation_copy (GdaSqlOperation *operation); gchar* gda_sql_operation_serialize (GdaSqlOperation *operation); const gchar* gda_sql_operation_operator_to_string (GdaSqlOperatorType op); GdaSqlOperatorType gda_sql_operation_operator_from_string (const gchar *op); GdaSqlCase; GdaSqlCase* gda_sql_case_new (GdaSqlAnyPart *parent); void gda_sql_case_free (GdaSqlCase *scase); GdaSqlCase* gda_sql_case_copy (GdaSqlCase *scase); gchar* gda_sql_case_serialize (GdaSqlCase *scase); GdaSqlSelectField; GdaSqlSelectField* gda_sql_select_field_new (GdaSqlAnyPart *parent); void gda_sql_select_field_free (GdaSqlSelectField *field); GdaSqlSelectField* gda_sql_select_field_copy (GdaSqlSelectField *field); gchar* gda_sql_select_field_serialize (GdaSqlSelectField *field); void gda_sql_select_field_take_star_value (GdaSqlSelectField *field, GValue *value); void gda_sql_select_field_take_expr (GdaSqlSelectField *field, GdaSqlExpr *expr); void gda_sql_select_field_take_alias (GdaSqlSelectField *field, GValue *alias); GdaSqlSelectTarget; GdaSqlSelectTarget* gda_sql_select_target_new (GdaSqlAnyPart *parent); void gda_sql_select_target_free (GdaSqlSelectTarget *target); GdaSqlSelectTarget* gda_sql_select_target_copy (GdaSqlSelectTarget *target); gchar* gda_sql_select_target_serialize (GdaSqlSelectTarget *target); void gda_sql_select_target_take_table_name (GdaSqlSelectTarget *target, GValue *value); void gda_sql_select_target_take_select (GdaSqlSelectTarget *target, GdaSqlStatement *stmt); void gda_sql_select_target_take_alias (GdaSqlSelectTarget *target, GValue *alias); GdaSqlSelectJoin; GdaSqlSelectJoin* gda_sql_select_join_new (GdaSqlAnyPart *parent); void gda_sql_select_join_free (GdaSqlSelectJoin *join); GdaSqlSelectJoin* gda_sql_select_join_copy (GdaSqlSelectJoin *join); gchar* gda_sql_select_join_serialize (GdaSqlSelectJoin *join); const gchar* gda_sql_select_join_type_to_string (GdaSqlSelectJoinType type); GdaSqlSelectFrom; GdaSqlSelectFrom* gda_sql_select_from_new (GdaSqlAnyPart *parent); void gda_sql_select_from_free (GdaSqlSelectFrom *from); GdaSqlSelectFrom* gda_sql_select_from_copy (GdaSqlSelectFrom *from); gchar* gda_sql_select_from_serialize (GdaSqlSelectFrom *from); void gda_sql_select_from_take_new_target (GdaSqlSelectFrom *from, GdaSqlSelectTarget *target); void gda_sql_select_from_take_new_join (GdaSqlSelectFrom *from, GdaSqlSelectJoin *join); GdaSqlSelectOrder; GdaSqlSelectOrder* gda_sql_select_order_new (GdaSqlAnyPart *parent); void gda_sql_select_order_free (GdaSqlSelectOrder *order); GdaSqlSelectOrder* gda_sql_select_order_copy (GdaSqlSelectOrder *order); gchar* gda_sql_select_order_serialize (GdaSqlSelectOrder *order);
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).
Main parts of the GdaSqlStatement structure.
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.
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;
Container structure for an SQL statement.
gchar * |
the actual SQL string which corresponds to the statement, or NULL
|
GdaSqlStatementType |
the type of statement (SELECT, INSERT, etc) as a GdaSqlStatementType enum |
gpointer |
the actual contents of the statement, depends on stmt_type (can be a pointer to a
GdaSqlStatementSelect, GdaSqlStatementInsert, etc)
|
GdaMetaStruct * |
typedef enum { GDA_SQL_STATEMENT_SELECT, GDA_SQL_STATEMENT_INSERT, GDA_SQL_STATEMENT_UPDATE, GDA_SQL_STATEMENT_DELETE, GDA_SQL_STATEMENT_COMPOUND, GDA_SQL_STATEMENT_BEGIN, GDA_SQL_STATEMENT_ROLLBACK, GDA_SQL_STATEMENT_COMMIT, GDA_SQL_STATEMENT_SAVEPOINT, GDA_SQL_STATEMENT_ROLLBACK_SAVEPOINT, GDA_SQL_STATEMENT_DELETE_SAVEPOINT, GDA_SQL_STATEMENT_UNKNOWN, GDA_SQL_STATEMENT_NONE } GdaSqlStatementType;
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 |
GdaSqlStatement* gda_sql_statement_new (GdaSqlStatementType type);
|
|
Returns : |
GdaSqlStatement* gda_sql_statement_copy (GdaSqlStatement *stmt);
|
|
Returns : |
gchar* gda_sql_statement_serialize (GdaSqlStatement *stmt);
|
|
Returns : |
const gchar* gda_sql_statement_type_to_string (GdaSqlStatementType type);
|
|
Returns : |
GdaSqlStatementType gda_sql_statement_string_to_type (const gchar *type);
|
|
Returns : |
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 targetted).
|
a GdaSqlStatement pointer |
|
a place to store errors, or NULL
|
Returns : |
TRUE if no error occurred |
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.
|
a GdaSqlStatement pointer |
|
a GdaConnection object, or NULL
|
|
a place to store errors, or NULL
|
Returns : |
TRUE if no error occurred |
void gda_sql_statement_check_clean (GdaSqlStatement *stmt);
Cleans any data set by a previous call to gda_sql_statement_check_validity()
.
|
a pinter to a GdaSqlStatement structure |
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.
|
a pointer to a GdaSqlStatement structure |
|
a GdaConnection object, or NULL
|
|
|
Returns : |
TRUE if no error occurred |
typedef struct { GdaSqlAnyPartType type; GdaSqlAnyPart *parent; } GdaSqlAnyPart;
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 |
typedef enum { /* complete statements */ GDA_SQL_ANY_STMT_SELECT = GDA_SQL_STATEMENT_SELECT, GDA_SQL_ANY_STMT_INSERT = GDA_SQL_STATEMENT_INSERT, GDA_SQL_ANY_STMT_UPDATE = GDA_SQL_STATEMENT_UPDATE, GDA_SQL_ANY_STMT_DELETE = GDA_SQL_STATEMENT_DELETE, GDA_SQL_ANY_STMT_COMPOUND = GDA_SQL_STATEMENT_COMPOUND, GDA_SQL_ANY_STMT_BEGIN = GDA_SQL_STATEMENT_BEGIN, GDA_SQL_ANY_STMT_ROLLBACK = GDA_SQL_STATEMENT_ROLLBACK, GDA_SQL_ANY_STMT_COMMIT = GDA_SQL_STATEMENT_COMMIT, GDA_SQL_ANY_STMT_SAVEPOINT = GDA_SQL_STATEMENT_SAVEPOINT, GDA_SQL_ANY_STMT_ROLLBACK_SAVEPOINT = GDA_SQL_STATEMENT_ROLLBACK_SAVEPOINT, GDA_SQL_ANY_STMT_DELETE_SAVEPOINT = GDA_SQL_STATEMENT_DELETE_SAVEPOINT, GDA_SQL_ANY_STMT_UNKNOWN = GDA_SQL_STATEMENT_UNKNOWN, /* individual parts */ GDA_SQL_ANY_EXPR = 500, GDA_SQL_ANY_SQL_FIELD, GDA_SQL_ANY_SQL_TABLE, GDA_SQL_ANY_SQL_FUNCTION, GDA_SQL_ANY_SQL_OPERATION, GDA_SQL_ANY_SQL_CASE, GDA_SQL_ANY_SQL_SELECT_FIELD, GDA_SQL_ANY_SQL_SELECT_TARGET, GDA_SQL_ANY_SQL_SELECT_JOIN, GDA_SQL_ANY_SQL_SELECT_FROM, GDA_SQL_ANY_SQL_SELECT_ORDER } GdaSqlAnyPartType;
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 |
gboolean (*GdaSqlForeachFunc) (GdaSqlAnyPart *, gpointer , GError **);
Specifies the type of functions passed to gda_sql_any_part_foreach()
.
|
the current GdaSqlAnyPart node |
|
user data passed to gda_sql_any_part_foreach() .
|
|
pointer to a place to store errors |
Returns : |
FALSE if the gda_sql_any_part_foreach() should stop at this point and fail
|
gboolean gda_sql_any_part_foreach (GdaSqlAnyPart *node, GdaSqlForeachFunc func, gpointer data, GError **error);
Calls a function for each element of a GdaSqlAnyPart node
|
the stat node |
|
function to call for each sub node |
|
data to pass to func each time it is called
|
|
a place to store errors, or NULL (is also passed to func )
|
Returns : |
TRUE if func has been called for any sub node of node and always returned TRUE, or FALSE
otherwise.
|
typedef struct { GdaSqlAnyPart any; GSList *expressions; /* list of GdaSqlExpr pointers */ } GdaSqlStatementUnknown;
The SQL statement is of an unknown type (not any of the other parsed types). Such structure is created by the GdaSqlParser object when it cannot parse the SQL string, or when operating in delimiter mode (it only tries to delimit statements if there are several ones in the same SQL string).
Example of a GdaSqlStatement having a GdaSqlStatementUnknown as its contents (the parsed string is "a string;" which is not a valid SQL statement). The arrows are named after the attribute they represent (here the "expressions" attribute). Lists are represented by the GSList nodes and a "data" pointer which points to the data, and a "next" pointer which points to the next node in the list, all of the graphical items are in gray.
GdaSqlAnyPart |
inheritance structure |
GSList * |
a GSList of GdaSqlExpr expressions |
void gda_sql_statement_unknown_take_expressions (GdaSqlStatement *stmt, GSList *expressions);
|
|
|
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 |
void gda_sql_statement_trans_take_mode (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_trans_take_name (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_trans_set_isol_level (GdaSqlStatement *stmt, GdaTransactionIsolation level);
|
|
|
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;
The statement is a SELECT statement, any kind of SELECT statement can be represented using this structure (if this is not the case then report a bug).
Example of a GdaSqlStatement having a GdaSqlStatementSelect as its contents.
GdaSqlAnyPart |
inheritance structure |
gboolean |
TRUE if a DISTINCT clause applies |
GdaSqlExpr * |
expression on which the distinct applies, or NULL
|
GSList * |
list of expressions (as GdaSqlSelectField pointers), one for each column in the data set returned by the execution of the statement |
GdaSqlSelectFrom * |
target(s) of the SELECT statement |
GdaSqlExpr * |
condition expression filtering the resulting data set (WHERE condition) |
GSList * |
grouping expressions (as GdaSqlExpr pointers) |
GdaSqlExpr * |
condition expression filtering the grouped expressions (HAVING condition) |
GSList * |
ordering expressions (as GdaSqlSelectOrder pointers) |
GdaSqlExpr * |
size limiting expression (LIMIT clause) |
GdaSqlExpr * |
when limit_count is defined, the start offset for the limit
|
void gda_sql_statement_select_take_distinct (GdaSqlStatement *stmt, gboolean distinct, GdaSqlExpr *distinct_expr);
|
|
|
|
|
void gda_sql_statement_select_take_expr_list (GdaSqlStatement *stmt, GSList *expr_list);
|
|
|
void gda_sql_statement_select_take_from (GdaSqlStatement *stmt, GdaSqlSelectFrom *from);
|
|
|
void gda_sql_statement_select_take_where_cond (GdaSqlStatement *stmt, GdaSqlExpr *expr);
|
|
|
void gda_sql_statement_select_take_group_by (GdaSqlStatement *stmt, GSList *group_by);
|
|
|
void gda_sql_statement_select_take_having_cond (GdaSqlStatement *stmt, GdaSqlExpr *expr);
|
|
|
void gda_sql_statement_select_take_order_by (GdaSqlStatement *stmt, GSList *order_by);
|
|
|
void gda_sql_statement_select_take_limits (GdaSqlStatement *stmt, GdaSqlExpr *count, GdaSqlExpr *offset);
|
|
|
|
|
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).
Example of a GdaSqlStatement having a GdaSqlStatementInsert as its contents with 2 lists of values to insert.
Another example of a GdaSqlStatement having a GdaSqlStatementInsert as its contents, using a SELECT to express the values to insert.
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 |
void gda_sql_statement_insert_take_table_name (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_insert_take_on_conflict (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_insert_take_fields_list (GdaSqlStatement *stmt, GSList *list);
|
|
|
void gda_sql_statement_insert_take_1_values_list (GdaSqlStatement *stmt, GSList *list);
|
|
|
void gda_sql_statement_insert_take_extra_values_list (GdaSqlStatement *stmt, GSList *list);
|
|
|
void gda_sql_statement_insert_take_select (GdaSqlStatement *stmt, GdaSqlStatement *select);
|
|
|
typedef struct { GdaSqlAnyPart any; GdaSqlTable *table; GdaSqlExpr *cond; } GdaSqlStatementDelete;
The statement is a DELETE statement, any kind of DELETE statement can be represented using this structure (if this is not the case then report a bug).
GdaSqlAnyPart |
inheritance structure |
GdaSqlTable * |
name of the table from which data is deleted |
GdaSqlExpr * |
WHERE clause for the DELETE |
void gda_sql_statement_delete_take_table_name (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_delete_take_condition (GdaSqlStatement *stmt, GdaSqlExpr *cond);
|
|
|
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;
The statement is an UPDATE statement, any kind of UPDATE statement can be represented using this structure (if this is not the case then report a bug).
Example of a GdaSqlStatement having a GdaSqlStatementUpdate as its contents.
GdaSqlAnyPart |
inheritance structure |
gchar * |
conflict resolution clause if there is one (such as "OR REPLACE") |
GdaSqlTable * |
name of the table to which data is updated |
GSList * |
list of GdaSqlField fields which are updated |
GSList * |
list of GdaSqlExpr expressions containing the new values |
GdaSqlExpr * |
WHERE clause for the UPDATE |
void gda_sql_statement_update_take_table_name (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_update_take_on_conflict (GdaSqlStatement *stmt, GValue *value);
|
|
|
void gda_sql_statement_update_take_condition (GdaSqlStatement *stmt, GdaSqlExpr *cond);
|
|
|
void gda_sql_statement_update_take_set_value (GdaSqlStatement *stmt, GValue *fname, GdaSqlExpr *expr);
|
|
|
|
|
typedef struct { GdaSqlAnyPart any; GdaSqlStatementCompoundType compound_type; GSList *stmt_list; /* list of SELECT or COMPOUND statements */ } GdaSqlStatementCompound;
The statement is a compound selection statement: multiple SELECT or compound statements composed together with UNION, EXCEPT or INSERSECT operations. Any kind of compound statement can be represented using this structure (if this is not the case then report a bug).
Example of a GdaSqlStatement having a GdaSqlStatementCompound as its contents.
GdaSqlAnyPart |
inheritance structure |
GdaSqlStatementCompoundType |
the type of operation to compose the selection or compound statements making this statement |
GSList * |
a list of GdaSqlStatement making this statement |
void gda_sql_statement_compound_set_type (GdaSqlStatement *stmt, GdaSqlStatementCompoundType type);
|
|
|
void gda_sql_statement_compound_take_stmt (GdaSqlStatement *stmt, GdaSqlStatement *s);
|
|
|
GdaSqlAnyPart* gda_sql_statement_compound_reduce (GdaSqlAnyPart *compound_or_select);
|
|
Returns : |
typedef struct { 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; }; GdaSqlExpr *gda_sql_expr_new (GdaSqlAnyPart *parent); void gda_sql_expr_free (GdaSqlExpr *expr); GdaSqlExpr *gda_sql_expr_copy (GdaSqlExpr *expr); gchar *gda_sql_expr_serialize (GdaSqlExpr *expr); void gda_sql_expr_check_clean (GdaSqlExpr *expr); void gda_sql_expr_take_select (GdaSqlExpr *expr, GdaSqlStatement *stmt); /* * Any Table's field */ struct _GdaSqlField { GdaSqlAnyPart any; gchar *field_name; /* validity check with a connection */ GdaMetaTableColumn *validity_meta_table_column; }; GdaSqlField *gda_sql_field_new (GdaSqlAnyPart *parent); void gda_sql_field_free (GdaSqlField *field); GdaSqlField *gda_sql_field_copy (GdaSqlField *field); gchar *gda_sql_field_serialize (GdaSqlField *field); void gda_sql_field_check_clean (GdaSqlField *field); void gda_sql_field_take_name (GdaSqlField *field, GValue *value); /* * Any table */ struct _GdaSqlTable { GdaSqlAnyPart any; gchar *table_name; /* validity check with a connection */ GdaMetaDbObject *validity_meta_object; } GdaSqlExpr;
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.
GdaSqlAnyPart |
inheritance structure |
GValue * |
a GValue, or NULL
|
GdaSqlParamSpec * |
a GdaSqlParamSpec, or NULL if this is not a variable
|
GdaSqlFunction * |
not NULL if expression is a function or aggregate
|
GdaSqlOperation * |
not NULL if expression is a condition or an operation
|
GdaSqlAnyPart * |
not NULL if expression is a sub select statement (GdaSqlStatementSelect or GdaSqlStatementCompound)
|
GdaSqlCase * |
not NULL if expression is a CASE WHEN ... expression
|
gchar * |
not NULL if expression must be cast to another data type
|
typedef struct { 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 */ } GdaSqlParamSpec;
GdaSqlParamSpec* gda_sql_param_spec_new (GValue *simple_spec);
|
|
Returns : |
GdaSqlParamSpec* gda_sql_param_spec_copy (GdaSqlParamSpec *pspec);
|
|
Returns : |
void gda_sql_param_spec_take_name (GdaSqlParamSpec *pspec, GValue *value);
|
|
|
void gda_sql_param_spec_take_type (GdaSqlParamSpec *pspec, GValue *value);
|
|
|
void gda_sql_param_spec_take_descr (GdaSqlParamSpec *pspec, GValue *value);
|
|
|
void gda_sql_param_spec_take_nullok (GdaSqlParamSpec *pspec, GValue *value);
|
|
|
gchar* gda_sql_param_spec_serialize (GdaSqlParamSpec *pspec);
|
|
Returns : |
typedef struct _GdaSqlField GdaSqlField;
This structure represents the name of a table's field.
GdaSqlTable* gda_sql_table_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlTable structure, using parent
as its parent part.
|
a GdaSqlStatementSelect, GdaSqlStatementInsert, GdaSqlStatementDelete, GdaSqlStatementUpdate |
Returns : |
a new GdaSqlTable structure. |
void gda_sql_table_free (GdaSqlTable *table);
Frees a GdaSqlTable structure and its members.
|
a GdaSqlTable structure to be freed |
GdaSqlTable* gda_sql_table_copy (GdaSqlTable *table);
Creates a new GdaSqlTable structure initated with the values stored in table
.
|
a GdaSqlTable structure to be copied |
Returns : |
a new GdaSqlTable structure. |
gchar* gda_sql_table_serialize (GdaSqlTable *table);
Creates a new string representing a table. You need to free the returned string
using g_free()
;
|
|
Returns : |
a new string with the name of the field or "null" in case table is invalid.
|
void gda_sql_table_take_name (GdaSqlTable *table, GValue *value);
Sets the table's name using the string holded by value
. When call, value
is freed using
#gda_value_free()
.
|
|
|
a GValue holding a string to take from |
typedef struct { GdaSqlAnyPart any; gchar *function_name; GSList *args_list; /* validity check with a connection */ gpointer validity_meta_function; /* to be replaced with a pointer to a structure representing a DBMS data type in GdaMetaStruct */ } GdaSqlFunction;
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 |
gpointer |
GdaSqlFunction* gda_sql_function_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlFunction structure initated.
|
a GdaSqlExpr structure |
Returns : |
a new GdaSqlFunction structure. |
void gda_sql_function_free (GdaSqlFunction *function);
Frees a GdaSqlFunction structure and its members.
|
a GdaSqlFunction structure to be freed |
GdaSqlFunction* gda_sql_function_copy (GdaSqlFunction *function);
Creates a new GdaSqlFunction structure initated with the values stored in function
.
|
a GdaSqlFunction structure to be copied |
Returns : |
a new GdaSqlFunction structure. |
gchar* gda_sql_function_serialize (GdaSqlFunction *function);
Creates a new string representing a function. You need to free the returned string
using g_free()
;
|
a GdaSqlFunction structure |
Returns : |
a new string with the description of the function or "null" in case function is invalid.
|
void gda_sql_function_take_name (GdaSqlFunction *function, GValue *value);
Sets the function's arguments to point to args
, then sets the
list's data elements' parent to function
.
|
a GdaSqlFunction structure |
|
void gda_sql_function_take_args_list (GdaSqlFunction *function, GSList *args);
|
|
|
typedef struct { GdaSqlAnyPart any; GdaSqlOperatorType operator_type; GSList *operands; } GdaSqlOperation;
This structure represents an operation between one or more operands
GdaSqlAnyPart |
inheritance structure |
GdaSqlOperatorType |
|
GSList * |
list of GdaSqlExpr operands |
typedef enum { GDA_SQL_OPERATOR_TYPE_AND, GDA_SQL_OPERATOR_TYPE_OR, GDA_SQL_OPERATOR_TYPE_EQ, GDA_SQL_OPERATOR_TYPE_IS, GDA_SQL_OPERATOR_TYPE_LIKE, GDA_SQL_OPERATOR_TYPE_BETWEEN, GDA_SQL_OPERATOR_TYPE_GT, GDA_SQL_OPERATOR_TYPE_LT, GDA_SQL_OPERATOR_TYPE_GEQ, GDA_SQL_OPERATOR_TYPE_LEQ, GDA_SQL_OPERATOR_TYPE_DIFF, GDA_SQL_OPERATOR_TYPE_REGEXP, GDA_SQL_OPERATOR_TYPE_REGEXP_CI, GDA_SQL_OPERATOR_TYPE_NOT_REGEXP, GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI, GDA_SQL_OPERATOR_TYPE_SIMILAR, GDA_SQL_OPERATOR_TYPE_ISNULL, GDA_SQL_OPERATOR_TYPE_ISNOTNULL, GDA_SQL_OPERATOR_TYPE_NOT, GDA_SQL_OPERATOR_TYPE_IN, GDA_SQL_OPERATOR_TYPE_NOTIN, GDA_SQL_OPERATOR_TYPE_CONCAT, GDA_SQL_OPERATOR_TYPE_PLUS, GDA_SQL_OPERATOR_TYPE_MINUS, GDA_SQL_OPERATOR_TYPE_STAR, GDA_SQL_OPERATOR_TYPE_DIV, GDA_SQL_OPERATOR_TYPE_REM, GDA_SQL_OPERATOR_TYPE_BITAND, GDA_SQL_OPERATOR_TYPE_BITOR, GDA_SQL_OPERATOR_TYPE_BITNOT } GdaSqlOperatorType;
GdaSqlOperation* gda_sql_operation_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlOperation structure and sets its parent to parent
.
|
a GdaSqlExpr structure |
Returns : |
a new GdaSqlOperation structure. |
void gda_sql_operation_free (GdaSqlOperation *operation);
Frees a GdaSqlOperation structure and its members.
|
a GdaSqlOperation structure to be freed |
GdaSqlOperation* gda_sql_operation_copy (GdaSqlOperation *operation);
Creates a new GdaSqlOperation structure initated with the values stored in operation
.
|
a GdaSqlOperation structure to be copied |
Returns : |
a new GdaSqlOperation structure. |
gchar* gda_sql_operation_serialize (GdaSqlOperation *operation);
Creates a new string representing an operator. You need to free the returned string
using g_free()
;
|
a GdaSqlOperation structure |
Returns : |
a new string with the description of the operator or "null" in case operation is invalid.
|
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.
|
a GdaSqlOperation structure |
Returns : |
a string with the operator's name or NULL in case op is invalid.
|
GdaSqlOperatorType gda_sql_operation_operator_from_string (const gchar *op);
|
|
Returns : |
typedef struct { GdaSqlAnyPart any; GdaSqlExpr *base_expr; GSList *when_expr_list; GSList *then_expr_list; GdaSqlExpr *else_expr; } GdaSqlCase;
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 |
GdaSqlCase* gda_sql_case_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlCase structure and sets its parent to parent
.
|
a GdaSqlExpr structure |
Returns : |
a new GdaSqlCase structure. |
void gda_sql_case_free (GdaSqlCase *scase);
Frees a GdaSqlCase structure and its members.
|
GdaSqlCase* gda_sql_case_copy (GdaSqlCase *scase);
Creates a new GdaSqlCase structure initated with the values stored in sc
.
|
|
Returns : |
a new GdaSqlCase structure. |
gchar* gda_sql_case_serialize (GdaSqlCase *scase);
Creates a new string representing a CASE clausure. You need to free the returned string
using g_free()
;
|
|
Returns : |
a new string with the description of the CASE clausure or "null" in case sc is invalid.
|
typedef struct { 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; } GdaSqlSelectField;
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
table
field parts will be overwritten by Libgda,
set the value of expr->value
instead.
GdaSqlAnyPart |
inheritance structure |
GdaSqlExpr * |
expression |
gchar * |
field name part of expr if expr represents a field
|
gchar * |
table name part of expr if expr represents a field
|
gchar * |
alias |
GdaMetaDbObject * |
|
GdaMetaTableColumn * |
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 clausure.
|
a GdaSqlStatementSelect structure |
Returns : |
a new GdaSqlSelectField structure. |
void gda_sql_select_field_free (GdaSqlSelectField *field);
Frees a GdaSqlSelectField structure and its members.
|
a GdaSqlSelectField structure to be freed |
GdaSqlSelectField* gda_sql_select_field_copy (GdaSqlSelectField *field);
Creates a new GdaSqlSelectField structure initated with the values stored in field
.
|
a GdaSqlSelectField structure to be copied |
Returns : |
a new GdaSqlSelectField structure. |
gchar* gda_sql_select_field_serialize (GdaSqlSelectField *field);
Creates a new string representing an expresion used as field in a SELECT statement before the FROM clausure.
|
a GdaSqlSelectField structure |
Returns : |
a new string with the description of the expression or "null" in case field is invalid.
|
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
.
|
a GdaSqlSelectField structure |
|
a GValue to take from |
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
.
|
a GdaSqlSelectField structure |
|
a GdaSqlExpr to take from |
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.
|
a GdaSqlSelectField structure |
|
a GValue to take from |
typedef struct { 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; } GdaSqlSelectTarget;
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 expr if expr represents a table
|
gchar * |
alias |
GdaMetaDbObject * |
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.
|
a GdaSqlSelectFrom |
Returns : |
a new GdaSqlSelectTarget structure. |
void gda_sql_select_target_free (GdaSqlSelectTarget *target);
Frees a GdaSqlSelectTarget structure and its members.
|
a GdaSqlSelectTarget structure to be freed |
GdaSqlSelectTarget* gda_sql_select_target_copy (GdaSqlSelectTarget *target);
Creates a new GdaSqlSelectTarget structure initated with the values stored in target
.
|
a GdaSqlSelectTarget structure to be copied |
Returns : |
a new GdaSqlSelectTarget structure. |
gchar* gda_sql_select_target_serialize (GdaSqlSelectTarget *target);
Creates a new string representing a target used in a SELECT statement after the FROM clausure.
|
a GdaSqlSelectTarget structure |
Returns : |
a new string with the description of the expression or "null" in case field is invalid.
|
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.
|
a GdaSqlSelectTarget structure |
|
void gda_sql_select_target_take_select (GdaSqlSelectTarget *target, GdaSqlStatement *stmt);
|
|
|
void gda_sql_select_target_take_alias (GdaSqlSelectTarget *target, GValue *alias);
|
|
|
typedef struct { GdaSqlAnyPart any; GdaSqlSelectJoinType type; gint position; /* between a target at (pos < @position) and the one @position */ GdaSqlExpr *expr; GSList *use; } GdaSqlSelectJoin;
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 < position ) and the one at position
|
GdaSqlExpr * |
joining expression |
GSList * |
GdaSqlSelectJoin* gda_sql_select_join_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlSelectJoin structure and sets its parent to parent
.
|
a GdaSqlSelectFrom |
Returns : |
a new GdaSqlSelectJoin structure |
void gda_sql_select_join_free (GdaSqlSelectJoin *join);
Frees a GdaSqlSelectJoin structure and its members.
|
a GdaSqlSelectJoin structure to be freed |
GdaSqlSelectJoin* gda_sql_select_join_copy (GdaSqlSelectJoin *join);
Creates a new GdaSqlSelectJoin structure initated with the values stored in join
.
|
a GdaSqlSelectJoin structure to be copied |
Returns : |
a new GdaSqlSelectJoin structure. |
gchar* gda_sql_select_join_serialize (GdaSqlSelectJoin *join);
Creates a new string description of the join used in a SELECT statement.
|
a GdaSqlSelectJoin structure |
Returns : |
a new string with the description of the join or "null" in case join is invalid.
|
const gchar* gda_sql_select_join_type_to_string (GdaSqlSelectJoinType type);
Creates a new string representing the join type.
|
a GdaSqlSelectJoinType structure to be copied |
Returns : |
a string representing the Join type. |
typedef struct { GdaSqlAnyPart any; GSList *targets; GSList *joins; } GdaSqlSelectFrom;
This structure represents the FROM clause of a SELECT statement, it lists targets and joins
GdaSqlAnyPart |
inheritance structure |
GSList * |
list of GdaSqlSelectTarget |
GSList * |
list of GdaSqlSelectJoin |
GdaSqlSelectFrom* gda_sql_select_from_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlSelectFrom structure and sets its parent to parent
.
|
a GdaSqlStatementSelect |
Returns : |
a new GdaSqlSelectFrom structure |
void gda_sql_select_from_free (GdaSqlSelectFrom *from);
Frees a GdaSqlSelectFrom structure and its members.
|
a GdaSqlSelectFrom structure to be freed |
GdaSqlSelectFrom* gda_sql_select_from_copy (GdaSqlSelectFrom *from);
Creates a new GdaSqlSelectFrom structure initated with the values stored in from
.
|
a GdaSqlSelectFrom structure to be copied |
Returns : |
a new GdaSqlSelectFrom structure. |
gchar* gda_sql_select_from_serialize (GdaSqlSelectFrom *from);
Creates a new string description of the FROM clausure used in a SELECT statement.
|
a GdaSqlSelectFrom structure |
Returns : |
a new string with the description of the FROM or "null" in case from is invalid.
|
void gda_sql_select_from_take_new_target (GdaSqlSelectFrom *from, GdaSqlSelectTarget *target);
Append target
to the targets in the FROM clausure and set target
's parent to
from
; after call this function from
owns target
then you must not free it.
|
a GdaSqlSelectFrom structure |
|
a GdaSqlSelectTarget to take from |
void gda_sql_select_from_take_new_join (GdaSqlSelectFrom *from, GdaSqlSelectJoin *join);
Append join
to the joins in the FROM clausure and set join
's parent to
from
; after call this function from
owns join
then you must not free it.
|
a GdaSqlSelectFrom structure |
|
a GdaSqlSelectJoin to take from |
typedef struct { GdaSqlAnyPart any; GdaSqlExpr *expr; gboolean asc; gchar *collation_name; } GdaSqlSelectOrder;
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 |
GdaSqlSelectOrder* gda_sql_select_order_new (GdaSqlAnyPart *parent);
Creates a new GdaSqlSelectOrder structure and sets its parent to parent
.
|
a GdaSqlStatementSelect |
Returns : |
a new GdaSqlSelectOrder structure |
void gda_sql_select_order_free (GdaSqlSelectOrder *order);
Frees a GdaSqlSelectOrder structure and its members.
|
a GdaSqlSelectOrder structure to be freed |
GdaSqlSelectOrder* gda_sql_select_order_copy (GdaSqlSelectOrder *order);
Creates a new GdaSqlSelectOrder structure initated with the values stored in order
.
|
a GdaSqlSelectOrder structure to be copied |
Returns : |
a new GdaSqlSelectOrder structure. |
gchar* gda_sql_select_order_serialize (GdaSqlSelectOrder *order);
Creates a new string description of the ORDER BY clausure used in a SELECT statement.
|
a GdaSqlSelectOrder structure |
Returns : |
a new string with the description of the ORDER BY or "null" in case order is invalid.
|