## GdaQueryCondition GdaQueryCondition — Represents a condition within a query |

## Synopsis

                        GdaQueryCondition;
    enum                GdaQueryConditionType;
    enum                GdaQueryConditionOperator;
    GdaQueryCondition*  gda_query_condition_new             (GdaQuery *query,
                                                             GdaQueryConditionType type);
    GdaQueryCondition*  gda_query_condition_new_copy        (GdaQueryCondition *orig,
                                                             GHashTable *replacements);
    GdaQueryCondition*  gda_query_condition_new_from_sql    (GdaQuery *query,
                                                             const gchar *sql_cond,
                                                             GSList **targets,
                                                             GError **error);
    void                gda_query_condition_set_cond_type   (GdaQueryCondition *condition,
                                                             GdaQueryConditionType type);
    GdaQueryConditionType gda_query_condition_get_cond_type (GdaQueryCondition *condition);
    GSList*             gda_query_condition_get_children    (GdaQueryCondition *condition);
    GdaQueryCondition*  gda_query_condition_get_parent      (GdaQueryCondition *condition);
    GdaQueryCondition*  gda_query_condition_get_child_by_xml_id
                                                            (GdaQueryCondition *condition,
                                                             const gchar *xml_id);
    gboolean            gda_query_condition_is_ancestor     (GdaQueryCondition *condition,
                                                             GdaQueryCondition *ancestor);
    gboolean            gda_query_condition_is_leaf         (GdaQueryCondition *condition);
    gboolean            gda_query_condition_node_add_child  (GdaQueryCondition *condition,
                                                             GdaQueryCondition *child,
                                                             GError **error);
    void                gda_query_condition_node_del_child  (GdaQueryCondition *condition,
                                                             GdaQueryCondition *child);
    void                gda_query_condition_leaf_set_operator
                                                            (GdaQueryCondition *condition,
                                                             GdaQueryConditionOperator op,
                                                             GdaQueryField *field);
    GdaQueryField*      gda_query_condition_leaf_get_operator
                                                            (GdaQueryCondition *condition,
                                                             GdaQueryConditionOperator op);
    gboolean            gda_query_condition_represents_join (GdaQueryCondition *condition,
                                                             GdaQueryTarget **target1,
                                                             GdaQueryTarget **target2,
                                                             gboolean *is_equi_join);
    gboolean            gda_query_condition_represents_join_strict
                                                            (GdaQueryCondition *condition,
                                                             GdaQueryTarget **target1,
                                                             GdaQueryTarget **target2);
    GSList*             gda_query_condition_get_main_conditions
                                                            (GdaQueryCondition *condition);
    GSList*             gda_query_condition_get_ref_objects_all
                                                            (GdaQueryCondition *cond);

## Object Hierarchy

      GObject
       +----GdaObject
             +----GdaQueryObject
                   +----GdaQueryCondition

## Implemented Interfaces

GdaQueryCondition implements GdaXmlStorage, GdaReferer and GdaRenderer.

## Properties

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

## 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.

## Details

### GdaQueryCondition

    typedef struct _GdaQueryCondition GdaQueryCondition;

### Warning

`GdaQueryCondition` is deprecated and should not be used in newly-written code.

### enum GdaQueryConditionType

    typedef enum {
            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
    } GdaQueryConditionType;

### Warning

`GdaQueryConditionType` is deprecated and should not be used in newly-written code.

### enum GdaQueryConditionOperator

    typedef enum {
    	GDA_QUERY_CONDITION_OP_LEFT   = 0,
    	GDA_QUERY_CONDITION_OP_RIGHT  = 1,
    	GDA_QUERY_CONDITION_OP_RIGHT2 = 2
    } GdaQueryConditionOperator;

### Warning

`GdaQueryConditionOperator` is deprecated and should not be used in newly-written code.

### gda_query_condition_new ()

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

### Warning

`gda_query_condition_new` is deprecated and should not be used in newly-written code.

Creates a new GdaQueryCondition object

`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);

### Warning

`gda_query_condition_new_copy` is deprecated and should not be used in newly-written code.

This is a copy constructor

`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);

### Warning

`gda_query_condition_new_from_sql` is deprecated and should not be used in newly-written code.

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

`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);

### Warning

`gda_query_condition_set_cond_type` is deprecated and should not be used in newly-written code.

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.

`condition` : | a GdaQueryCondition object
`type` : |

### gda_query_condition_get_cond_type ()

    GdaQueryConditionType gda_query_condition_get_cond_type (GdaQueryCondition *condition);

### Warning

`gda_query_condition_get_cond_type` is deprecated and should not be used in newly-written code.

Get the type of `condition`

`condition` : | a GdaQueryCondition object
Returns : | the type

### gda_query_condition_get_children ()

    GSList*             gda_query_condition_get_children    (GdaQueryCondition *condition);

### Warning

`gda_query_condition_get_children` is deprecated and should not be used in newly-written code.

Get a list of GdaQueryCondition objects which are children of `condition`

`condition` : | a GdaQueryCondition object
Returns : | a new list of GdaQueryCondition objects

### gda_query_condition_get_parent ()

    GdaQueryCondition*  gda_query_condition_get_parent      (GdaQueryCondition *condition);

### Warning

`gda_query_condition_get_parent` is deprecated and should not be used in newly-written code.

Get the GdaQueryCondition object which is parent of `condition`

`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);

### Warning

`gda_query_condition_get_child_by_xml_id` is deprecated and should not be used in newly-written code.

Get a pointer to a GdaQueryCondition child from its XML Id

`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);

### Warning

`gda_query_condition_is_ancestor` is deprecated and should not be used in newly-written code.

Tests if `ancestor` is an ancestor of `condition`

`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);

### Warning

`gda_query_condition_is_leaf` is deprecated and should not be used in newly-written code.

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

`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);

### Warning

`gda_query_condition_node_add_child` is deprecated and should not be used in newly-written code.

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

`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);

### Warning

`gda_query_condition_node_del_child` is deprecated and should not be used in newly-written code.

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

`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);

### Warning

`gda_query_condition_leaf_set_operator` is deprecated and should not be used in newly-written code.

`condition` : |
`op` : |
`field` : |

### gda_query_condition_leaf_get_operator ()

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

### Warning

`gda_query_condition_leaf_get_operator` is deprecated and should not be used in newly-written code.

Get one of `condition`'s operators.

`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);

### Warning

`gda_query_condition_represents_join` is deprecated and should not be used in newly-written code.

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.

`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);

### Warning

`gda_query_condition_represents_join_strict` is deprecated and should not be used in newly-written code.

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.

`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);

### Warning

`gda_query_condition_get_main_conditions` is deprecated and should not be used in newly-written code.

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}

`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);

### Warning

`gda_query_condition_get_ref_objects_all` is deprecated and should not be used in newly-written code.

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

`cond` : | a GdaQueryCondition object
Returns : | a new list of referenced objects

## Property Details

### The `"cond-type"` property

      "cond-type"                gint                  : Read / Write

Allowed values: [0,17]

Default value: 17

### The `"join"` property

      "join"                     GdaQueryJoin*         : Read / Write

### The `"query"` property

      "query"                    GdaQuery*             : Read / Write / Construct Only