GdaQueryCondition

GdaQueryCondition — Represents a condition within a query

Functions

Properties

gint cond-type Read / Write
GdaQueryJoin * join Read / Write
GdaQuery * query Read / Write / Construct Only

Types and Values

Object Hierarchy

    GObject
    ╰── GdaObject
        ╰── GdaQueryObject
            ╰── GdaQueryCondition

Implemented Interfaces

GdaQueryCondition implements GdaXmlStorage, GdaRenderer and GdaReferer.

Description

This object represents a condition within a query. Usually there is one such object to express a WHERE condition and sometimes a GdaQueryJoin object con contain one as well to express a specific joinning condition.

There are two types of conditions: 'node' conditions (AND, OR, NOT), where there are one or more children condition and 'leaf' conditions, where there are only operands.

Functions

gda_query_condition_new ()

GdaQueryCondition *
gda_query_condition_new (GdaQuery *query,
                         GdaQueryConditionType type);

Creates a new GdaQueryCondition object

Parameters

query

a GdaQuery object

 

type

the condition type

 

Returns

the newly created object


gda_query_condition_new_copy ()

GdaQueryCondition *
gda_query_condition_new_copy (GdaQueryCondition *orig,
                              GHashTable *replacements);

This is a copy constructor

Parameters

orig

a GdaQueryCondition to copy

 

replacements

a hash table to store replacements, or NULL

 

Returns

the new object


gda_query_condition_new_from_sql ()

GdaQueryCondition *
gda_query_condition_new_from_sql (GdaQuery *query,
                                  const gchar *sql_cond,
                                  GSList **targets,
                                  GError **error);

Creates a new GdaQueryCondition object, which references other objects of query , from the sql_cond statement.

Parameters

query

a GdaQuery object

 

sql_cond

a SQL statement representing a valid condition

 

targets

location to store a list of targets used by the new condition (and its children), or NULL

 

error

location to store error, or NULL

 

Returns

a new GdaQueryCondition, or NULL if there was an error in sql_cond


gda_query_condition_set_cond_type ()

void
gda_query_condition_set_cond_type (GdaQueryCondition *condition,
                                   GdaQueryConditionType type);

Sets the kind of condition condition represents. If type implies a node condition and condition currently represents a leaf, or if type implies a leaf condition and condition currently represents a node, then condition is changed without any error.

Parameters

condition

a GdaQueryCondition object

 

gda_query_condition_get_cond_type ()

GdaQueryConditionType
gda_query_condition_get_cond_type (GdaQueryCondition *condition);

Get the type of condition

Parameters

condition

a GdaQueryCondition object

 

Returns

the type


gda_query_condition_get_children ()

GSList *
gda_query_condition_get_children (GdaQueryCondition *condition);

Get a list of GdaQueryCondition objects which are children of condition

Parameters

condition

a GdaQueryCondition object

 

Returns

a new list of GdaQueryCondition objects


gda_query_condition_get_parent ()

GdaQueryCondition *
gda_query_condition_get_parent (GdaQueryCondition *condition);

Get the GdaQueryCondition object which is parent of condition

Parameters

condition

a GdaQueryCondition object

 

Returns

the parent object, or NULL


gda_query_condition_get_child_by_xml_id ()

GdaQueryCondition *
gda_query_condition_get_child_by_xml_id
                               (GdaQueryCondition *condition,
                                const gchar *xml_id);

Get a pointer to a GdaQueryCondition child from its XML Id

Parameters

condition

a GdaQueryCondition object

 

xml_id

the XML Id of the requested GdaQueryCondition child

 

Returns

the GdaQueryCondition object, or NULL if not found


gda_query_condition_is_ancestor ()

gboolean
gda_query_condition_is_ancestor (GdaQueryCondition *condition,
                                 GdaQueryCondition *ancestor);

Tests if ancestor is an ancestor of condition

Parameters

condition

a GdaQueryCondition object

 

ancestor

a GdaQueryCondition object

 

Returns

TRUE if ancestor is an ancestor of condition


gda_query_condition_is_leaf ()

gboolean
gda_query_condition_is_leaf (GdaQueryCondition *condition);

Tells if condition is a leaf condition (not AND, OR, NOT, etc)

Parameters

condition

a GdaQueryCondition object

 

Returns

TRUE if condition is a leaf condition


gda_query_condition_node_add_child ()

gboolean
gda_query_condition_node_add_child (GdaQueryCondition *condition,
                                    GdaQueryCondition *child,
                                    GError **error);

Adds a child to condition ; this is possible only if condition is a node type (AND, OR, etc)

Parameters

condition

a GdaQueryCondition object

 

child

a GdaQueryCondition object

 

error

location to store error, or NULL

 

Returns

TRUE if no error occurred


gda_query_condition_node_del_child ()

void
gda_query_condition_node_del_child (GdaQueryCondition *condition,
                                    GdaQueryCondition *child);

Removes a child from condition ; this is possible only if condition is a node type (AND, OR, etc)

Parameters

condition

a GdaQueryCondition object

 

child

a GdaQueryCondition object

 

gda_query_condition_leaf_set_operator ()

void
gda_query_condition_leaf_set_operator (GdaQueryCondition *condition,
                                       GdaQueryConditionOperator op,
                                       GdaQueryField *field);


gda_query_condition_leaf_get_operator ()

GdaQueryField *
gda_query_condition_leaf_get_operator (GdaQueryCondition *condition,
                                       GdaQueryConditionOperator op);

Get one of condition 's operators.

Parameters

condition

a GdaQueryCondition object

 

op

which oparetor is concerned

 

Returns

the requested GdaQueryField object


gda_query_condition_represents_join ()

gboolean
gda_query_condition_represents_join (GdaQueryCondition *condition,
                                     GdaQueryTarget **target1,
                                     GdaQueryTarget **target2,
                                     gboolean *is_equi_join);

Tells if condition represents a join condition: it is a condition (within a GdaQuery object) for which the only GdaQueryFieldField fields taking part in the condition are from two distincts GdaQueryTarget objects. Such conditions can be assigned to a GdaQueryJoin object using the gda_query_join_set_condition() or gda_query_join_set_condition_from_fkcons() methods.

Additionnaly, if condition is a join condition, and if target1 and target2 are not NULL then they are set to point to the two GdaQueryTarget objects taking part in the condition. In this case target1 and target2 wil hold non NULL values.

In a similar way, if is_equi_join is not NULL, then it will be set to TRUE if the join condition is an equi join (that is the only comparison operator is the equal sign and there are only AND operators in the condition).

If condition is not a join condition, then target1 , target2 and is_equi_join are left untouched.

Parameters

condition

a GdaQueryCondition object

 

target1

place to store one of the targets, or NULL

 

target2

place to store the other target, or NULL

 

is_equi_join

place to store if the join is an equi join

 

Returns

TRUE if condition is a join condition


gda_query_condition_represents_join_strict ()

gboolean
gda_query_condition_represents_join_strict
                               (GdaQueryCondition *condition,
                                GdaQueryTarget **target1,
                                GdaQueryTarget **target2);

Tells if condition represents a strict join condition: it is a join condition as defined for the gda_query_condition_represents_join() method, but where the condition is either "target1.field1=target2.field2" or a list of such conditions conjuncted by the AND operator.

If condition is not a join condition, then target1 and target2 are left untouched.

Parameters

condition

a GdaQueryCondition object

 

target1

place to store one of the targets, or NULL

 

target2

place to store the other target, or NULL

 

Returns

TRUE if condition is a strict join condition


gda_query_condition_get_main_conditions ()

GSList *
gda_query_condition_get_main_conditions
                               (GdaQueryCondition *condition);

Makes a list of all the conditions which are always verified by condition when it returns TRUE when evaluated. Basically the returned list lists the atomic conditions which are AND'ed together to form the complex condition .

Examples: if condition is:

  • "A and B" then the list will contains {A, B}

  • "A and (B or C)" it will contain {A, B or C}

  • "A and (B and not C)", it will contain {A, B, not C}

Parameters

condition

a GdaQueryCondition object

 

Returns

a new list of GdaQueryCondition objects


gda_query_condition_get_ref_objects_all ()

GSList *
gda_query_condition_get_ref_objects_all
                               (GdaQueryCondition *cond);

Get a complete list of the objects referenced by cond , including its descendants (unlike the gda_referer_get_ref_objects() function applied to cond ).

Parameters

cond

a GdaQueryCondition object

 

Returns

a new list of referenced objects

Types and Values

GdaQueryCondition

typedef struct _GdaQueryCondition GdaQueryCondition;


enum GdaQueryConditionType

Members

GDA_QUERY_CONDITION_NODE_AND

   

GDA_QUERY_CONDITION_NODE_OR

   

GDA_QUERY_CONDITION_NODE_NOT

   

GDA_QUERY_CONDITION_LEAF_EQUAL

   

GDA_QUERY_CONDITION_LEAF_DIFF

   

GDA_QUERY_CONDITION_LEAF_SUP

   

GDA_QUERY_CONDITION_LEAF_SUPEQUAL

   

GDA_QUERY_CONDITION_LEAF_INF

   

GDA_QUERY_CONDITION_LEAF_INFEQUAL

   

GDA_QUERY_CONDITION_LEAF_LIKE

   

GDA_QUERY_CONDITION_LEAF_SIMILAR

   

GDA_QUERY_CONDITION_LEAF_REGEX

   

GDA_QUERY_CONDITION_LEAF_REGEX_NOCASE

   

GDA_QUERY_CONDITION_LEAF_NOT_REGEX

   

GDA_QUERY_CONDITION_LEAF_NOT_REGEX_NOCASE

   

GDA_QUERY_CONDITION_LEAF_IN

   

GDA_QUERY_CONDITION_LEAF_BETWEEN

   

GDA_QUERY_CONDITION_TYPE_UNKNOWN

   

enum GdaQueryConditionOperator

Members

GDA_QUERY_CONDITION_OP_LEFT

   

GDA_QUERY_CONDITION_OP_RIGHT

   

GDA_QUERY_CONDITION_OP_RIGHT2

   

Property Details

The “cond-type” property

  “cond-type”                gint

Flags: Read / Write

Allowed values: [0,17]

Default value: 17


The “join” property

  “join”                     GdaQueryJoin *

Flags: Read / Write


The “query” property

  “query”                    GdaQuery *

Flags: Read / Write / Construct Only