1
<refentry id="MgCondition">
3
<refentrytitle>MgCondition</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>LIBMERGEANT Library</refmiscinfo>
9
<refname>MgCondition</refname><refpurpose>Represents a condition within a query</refpurpose>
12
<refsynopsisdiv><title>Synopsis</title>
18
struct <link linkend="MgCondition-struct">MgCondition</link>;
19
enum <link linkend="MgConditionType">MgConditionType</link>;
20
enum <link linkend="MgConditionOperator">MgConditionOperator</link>;
21
<link linkend="guint">guint</link> <link linkend="mg-condition-get-type">mg_condition_get_type</link> (void);
22
<link linkend="GObject">GObject</link>* <link linkend="mg-condition-new">mg_condition_new</link> (<link linkend="MgQuery">MgQuery</link> *query,
23
<link linkend="MgConditionType">MgConditionType</link> type);
24
<link linkend="GObject">GObject</link>* <link linkend="mg-condition-new-copy">mg_condition_new_copy</link> (<link linkend="MgCondition">MgCondition</link> *orig,
25
<link linkend="GHashTable">GHashTable</link> *replacements);
26
<link linkend="void">void</link> <link linkend="mg-condition-set-cond-type">mg_condition_set_cond_type</link> (<link linkend="MgCondition">MgCondition</link> *condition,
27
<link linkend="MgConditionType">MgConditionType</link> type);
28
<link linkend="MgConditionType">MgConditionType</link> <link linkend="mg-condition-get-cond-type">mg_condition_get_cond_type</link> (<link linkend="MgCondition">MgCondition</link> *condition);
29
<link linkend="GSList">GSList</link>* <link linkend="mg-condition-get-children">mg_condition_get_children</link> (<link linkend="MgCondition">MgCondition</link> *condition);
30
<link linkend="MgCondition">MgCondition</link>* <link linkend="mg-condition-get-parent">mg_condition_get_parent</link> (<link linkend="MgCondition">MgCondition</link> *condition);
31
<link linkend="MgCondition">MgCondition</link>* <link linkend="mg-condition-get-child-by-xml-id">mg_condition_get_child_by_xml_id</link>
32
(<link linkend="MgCondition">MgCondition</link> *condition,
33
const <link linkend="gchar">gchar</link> *xml_id);
34
<link linkend="gboolean">gboolean</link> <link linkend="mg-condition-is-ancestor">mg_condition_is_ancestor</link> (<link linkend="MgCondition">MgCondition</link> *condition,
35
<link linkend="MgCondition">MgCondition</link> *ancestor);
36
<link linkend="gboolean">gboolean</link> <link linkend="mg-condition-is-leaf">mg_condition_is_leaf</link> (<link linkend="MgCondition">MgCondition</link> *condition);
37
<link linkend="gboolean">gboolean</link> <link linkend="mg-condition-node-add-child">mg_condition_node_add_child</link> (<link linkend="MgCondition">MgCondition</link> *condition,
38
<link linkend="MgCondition">MgCondition</link> *child,
39
<link linkend="GError">GError</link> **error);
40
<link linkend="void">void</link> <link linkend="mg-condition-node-del-child">mg_condition_node_del_child</link> (<link linkend="MgCondition">MgCondition</link> *condition,
41
<link linkend="MgCondition">MgCondition</link> *child);
42
<link linkend="void">void</link> <link linkend="mg-condition-leaf-set-operator">mg_condition_leaf_set_operator</link> (<link linkend="MgCondition">MgCondition</link> *condition,
43
<link linkend="MgConditionOperator">MgConditionOperator</link> op,
44
<link linkend="MgQfield">MgQfield</link> *field);
45
<link linkend="MgQfield">MgQfield</link>* <link linkend="mg-condition-leaf-get-operator">mg_condition_leaf_get_operator</link> (<link linkend="MgCondition">MgCondition</link> *condition,
46
<link linkend="MgConditionOperator">MgConditionOperator</link> op);
47
<link linkend="GSList">GSList</link>* <link linkend="mg-condition-get-ref-objects-all">mg_condition_get_ref_objects_all</link>
48
(<link linkend="MgCondition">MgCondition</link> *condition);
49
<link linkend="gboolean">gboolean</link> <link linkend="mg-condition-represents-join">mg_condition_represents_join</link> (<link linkend="MgCondition">MgCondition</link> *condition,
50
<link linkend="MgTarget">MgTarget</link> **target1,
51
<link linkend="MgTarget">MgTarget</link> **target2,
52
<link linkend="gboolean">gboolean</link> *is_equi_join);
53
<link linkend="GSList">GSList</link>* <link linkend="mg-condition-get-main-conditions">mg_condition_get_main_conditions</link>
54
(<link linkend="MgCondition">MgCondition</link> *condition);
59
<title>Object Hierarchy</title>
62
<link linkend="GObject">GObject</link>
63
+----<link linkend="MgBase">MgBase</link>
72
<title>Implemented Interfaces</title>
74
MgCondition implements
75
<link linkend="MgXmlStorage">MgXmlStorage</link>, <link linkend="MgRenderer">MgRenderer</link> and <link linkend="MgReferer">MgReferer</link>.</para>
81
<title>Properties</title>
84
"<link linkend="MgCondition--join">join</link>" <link linkend="gpointer">gpointer</link> : Read / Write
85
"<link linkend="MgCondition--query">query</link>" <link linkend="gpointer">gpointer</link> : Read / Write
92
<title>Description</title>
94
This object represents a condition within a query. Usually there is one such object to express a WHERE condition
95
and sometimes a <link linkend="MgJoin"><type>MgJoin</type></link> object con contain one as well to express a specific joinning condition.
98
There are two types of conditions: 'node' conditions (AND, OR, NOT), where there are one or more
99
children condition and 'leaf' conditions, where there are only operands.
104
<title>Details</title>
106
<title><anchor id="MgCondition-struct"/>struct MgCondition</title>
107
<indexterm><primary>MgCondition</primary></indexterm><programlisting>struct MgCondition;</programlisting>
112
<title><anchor id="MgConditionType"/>enum MgConditionType</title>
113
<indexterm><primary>MgConditionType</primary></indexterm><programlisting>typedef enum {
114
MG_CONDITION_NODE_AND,
115
MG_CONDITION_NODE_OR,
116
MG_CONDITION_NODE_NOT,
117
MG_CONDITION_LEAF_EQUAL,
118
MG_CONDITION_LEAF_DIFF,
119
MG_CONDITION_LEAF_SUP,
120
MG_CONDITION_LEAF_SUPEQUAL,
121
MG_CONDITION_LEAF_INF,
122
MG_CONDITION_LEAF_INFEQUAL,
123
MG_CONDITION_LEAF_LIKE,
124
MG_CONDITION_LEAF_SIMILAR,
125
MG_CONDITION_LEAF_REGEX,
126
MG_CONDITION_LEAF_REGEX_NOCASE,
127
MG_CONDITION_LEAF_NOT_REGEX,
128
MG_CONDITION_LEAF_NOT_REGEX_NOCASE,
129
MG_CONDITION_LEAF_IN,
130
MG_CONDITION_LEAF_BETWEEN,
131
MG_CONDITION_TYPE_UNKNOWN
138
<title><anchor id="MgConditionOperator"/>enum MgConditionOperator</title>
139
<indexterm><primary>MgConditionOperator</primary></indexterm><programlisting>typedef enum {
140
MG_CONDITION_OP_LEFT = 0,
141
MG_CONDITION_OP_RIGHT = 1,
142
MG_CONDITION_OP_RIGHT2 = 2
143
} MgConditionOperator;
149
<title><anchor id="mg-condition-get-type"/>mg_condition_get_type ()</title>
150
<indexterm><primary>mg_condition_get_type</primary></indexterm><programlisting><link linkend="guint">guint</link> mg_condition_get_type (void);</programlisting>
153
</para><variablelist role="params">
154
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
157
</simpara></listitem></varlistentry>
158
</variablelist></refsect2>
160
<title><anchor id="mg-condition-new"/>mg_condition_new ()</title>
161
<indexterm><primary>mg_condition_new</primary></indexterm><programlisting><link linkend="GObject">GObject</link>* mg_condition_new (<link linkend="MgQuery">MgQuery</link> *query,
162
<link linkend="MgConditionType">MgConditionType</link> type);</programlisting>
164
Creates a new <link linkend="MgCondition"><type>MgCondition</type></link> object</para>
167
</para><variablelist role="params">
168
<varlistentry><term><parameter>query</parameter> :</term>
169
<listitem><simpara> a <link linkend="MgQuery"><type>MgQuery</type></link> object
170
</simpara></listitem></varlistentry>
171
<varlistentry><term><parameter>type</parameter> :</term>
172
<listitem><simpara> the condition type
173
</simpara></listitem></varlistentry>
174
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly created object
175
</simpara></listitem></varlistentry>
176
</variablelist></refsect2>
178
<title><anchor id="mg-condition-new-copy"/>mg_condition_new_copy ()</title>
179
<indexterm><primary>mg_condition_new_copy</primary></indexterm><programlisting><link linkend="GObject">GObject</link>* mg_condition_new_copy (<link linkend="MgCondition">MgCondition</link> *orig,
180
<link linkend="GHashTable">GHashTable</link> *replacements);</programlisting>
182
This is a copy constructor</para>
185
</para><variablelist role="params">
186
<varlistentry><term><parameter>orig</parameter> :</term>
187
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> to copy
188
</simpara></listitem></varlistentry>
189
<varlistentry><term><parameter>replacements</parameter> :</term>
190
<listitem><simpara> a hash table to store replacements, or <literal>NULL</literal>
191
</simpara></listitem></varlistentry>
192
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the new object
193
</simpara></listitem></varlistentry>
194
</variablelist></refsect2>
196
<title><anchor id="mg-condition-set-cond-type"/>mg_condition_set_cond_type ()</title>
197
<indexterm><primary>mg_condition_set_cond_type</primary></indexterm><programlisting><link linkend="void">void</link> mg_condition_set_cond_type (<link linkend="MgCondition">MgCondition</link> *condition,
198
<link linkend="MgConditionType">MgConditionType</link> type);</programlisting>
200
Sets the kind of condition <parameter>condition</parameter> represents. If <parameter>type</parameter> implies a node condition and
201
<parameter>condition</parameter> currently represents a leaf, or if <parameter>type</parameter> implies a leaf condition and
202
<parameter>condition</parameter> currently represents a node, then <parameter>condition</parameter> is changed without any error.</para>
205
</para><variablelist role="params">
206
<varlistentry><term><parameter>condition</parameter> :</term>
207
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
208
</simpara></listitem></varlistentry>
209
<varlistentry><term><parameter>type</parameter> :</term>
211
</simpara></listitem></varlistentry>
212
</variablelist></refsect2>
214
<title><anchor id="mg-condition-get-cond-type"/>mg_condition_get_cond_type ()</title>
215
<indexterm><primary>mg_condition_get_cond_type</primary></indexterm><programlisting><link linkend="MgConditionType">MgConditionType</link> mg_condition_get_cond_type (<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
217
Get the type of <parameter>condition</parameter></para>
220
</para><variablelist role="params">
221
<varlistentry><term><parameter>condition</parameter> :</term>
222
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
223
</simpara></listitem></varlistentry>
224
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the type
225
</simpara></listitem></varlistentry>
226
</variablelist></refsect2>
228
<title><anchor id="mg-condition-get-children"/>mg_condition_get_children ()</title>
229
<indexterm><primary>mg_condition_get_children</primary></indexterm><programlisting><link linkend="GSList">GSList</link>* mg_condition_get_children (<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
231
Get a list of <link linkend="MgCondition"><type>MgCondition</type></link> objects which are children of <parameter>condition</parameter></para>
234
</para><variablelist role="params">
235
<varlistentry><term><parameter>condition</parameter> :</term>
236
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
237
</simpara></listitem></varlistentry>
238
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new list of <link linkend="MgCondition"><type>MgCondition</type></link> objects
239
</simpara></listitem></varlistentry>
240
</variablelist></refsect2>
242
<title><anchor id="mg-condition-get-parent"/>mg_condition_get_parent ()</title>
243
<indexterm><primary>mg_condition_get_parent</primary></indexterm><programlisting><link linkend="MgCondition">MgCondition</link>* mg_condition_get_parent (<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
245
Get the <link linkend="MgCondition"><type>MgCondition</type></link> object which is parent of <parameter>condition</parameter></para>
248
</para><variablelist role="params">
249
<varlistentry><term><parameter>condition</parameter> :</term>
250
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
251
</simpara></listitem></varlistentry>
252
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the parent object, or <literal>NULL</literal>
253
</simpara></listitem></varlistentry>
254
</variablelist></refsect2>
256
<title><anchor id="mg-condition-get-child-by-xml-id"/>mg_condition_get_child_by_xml_id ()</title>
257
<indexterm><primary>mg_condition_get_child_by_xml_id</primary></indexterm><programlisting><link linkend="MgCondition">MgCondition</link>* mg_condition_get_child_by_xml_id
258
(<link linkend="MgCondition">MgCondition</link> *condition,
259
const <link linkend="gchar">gchar</link> *xml_id);</programlisting>
261
Get a pointer to a <link linkend="MgCondition"><type>MgCondition</type></link> child from its XML Id</para>
264
</para><variablelist role="params">
265
<varlistentry><term><parameter>condition</parameter> :</term>
266
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
267
</simpara></listitem></varlistentry>
268
<varlistentry><term><parameter>xml_id</parameter> :</term>
269
<listitem><simpara> the XML Id of the requested <link linkend="MgCondition"><type>MgCondition</type></link> child
270
</simpara></listitem></varlistentry>
271
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="MgCondition"><type>MgCondition</type></link> object, or <literal>NULL</literal> if not found
272
</simpara></listitem></varlistentry>
273
</variablelist></refsect2>
275
<title><anchor id="mg-condition-is-ancestor"/>mg_condition_is_ancestor ()</title>
276
<indexterm><primary>mg_condition_is_ancestor</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_condition_is_ancestor (<link linkend="MgCondition">MgCondition</link> *condition,
277
<link linkend="MgCondition">MgCondition</link> *ancestor);</programlisting>
279
Tests if <parameter>ancestor</parameter> is an ancestor of <parameter>condition</parameter></para>
282
</para><variablelist role="params">
283
<varlistentry><term><parameter>condition</parameter> :</term>
284
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
285
</simpara></listitem></varlistentry>
286
<varlistentry><term><parameter>ancestor</parameter> :</term>
287
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
288
</simpara></listitem></varlistentry>
289
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if <parameter>ancestor</parameter> is an ancestor of <parameter>condition</parameter>
290
</simpara></listitem></varlistentry>
291
</variablelist></refsect2>
293
<title><anchor id="mg-condition-is-leaf"/>mg_condition_is_leaf ()</title>
294
<indexterm><primary>mg_condition_is_leaf</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_condition_is_leaf (<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
296
Tells if <parameter>condition</parameter> is a leaf condition (not AND, OR, NOT, etc)</para>
299
</para><variablelist role="params">
300
<varlistentry><term><parameter>condition</parameter> :</term>
301
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
302
</simpara></listitem></varlistentry>
303
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if <parameter>condition</parameter> is a leaf condition
304
</simpara></listitem></varlistentry>
305
</variablelist></refsect2>
307
<title><anchor id="mg-condition-node-add-child"/>mg_condition_node_add_child ()</title>
308
<indexterm><primary>mg_condition_node_add_child</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_condition_node_add_child (<link linkend="MgCondition">MgCondition</link> *condition,
309
<link linkend="MgCondition">MgCondition</link> *child,
310
<link linkend="GError">GError</link> **error);</programlisting>
312
Adds a child to <parameter>condition</parameter>; this is possible only if <parameter>condition</parameter> is a node type (AND, OR, etc)</para>
315
</para><variablelist role="params">
316
<varlistentry><term><parameter>condition</parameter> :</term>
317
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
318
</simpara></listitem></varlistentry>
319
<varlistentry><term><parameter>child</parameter> :</term>
320
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
321
</simpara></listitem></varlistentry>
322
<varlistentry><term><parameter>error</parameter> :</term>
323
<listitem><simpara> location to store error, or <literal>NULL</literal>
324
</simpara></listitem></varlistentry>
325
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if no error occurred
326
</simpara></listitem></varlistentry>
327
</variablelist></refsect2>
329
<title><anchor id="mg-condition-node-del-child"/>mg_condition_node_del_child ()</title>
330
<indexterm><primary>mg_condition_node_del_child</primary></indexterm><programlisting><link linkend="void">void</link> mg_condition_node_del_child (<link linkend="MgCondition">MgCondition</link> *condition,
331
<link linkend="MgCondition">MgCondition</link> *child);</programlisting>
333
Removes a child from <parameter>condition</parameter>; this is possible only if <parameter>condition</parameter> is a node type (AND, OR, etc)</para>
336
</para><variablelist role="params">
337
<varlistentry><term><parameter>condition</parameter> :</term>
338
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
339
</simpara></listitem></varlistentry>
340
<varlistentry><term><parameter>child</parameter> :</term>
341
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
342
</simpara></listitem></varlistentry>
343
</variablelist></refsect2>
345
<title><anchor id="mg-condition-leaf-set-operator"/>mg_condition_leaf_set_operator ()</title>
346
<indexterm><primary>mg_condition_leaf_set_operator</primary></indexterm><programlisting><link linkend="void">void</link> mg_condition_leaf_set_operator (<link linkend="MgCondition">MgCondition</link> *condition,
347
<link linkend="MgConditionOperator">MgConditionOperator</link> op,
348
<link linkend="MgQfield">MgQfield</link> *field);</programlisting>
351
</para><variablelist role="params">
352
<varlistentry><term><parameter>condition</parameter> :</term>
354
</simpara></listitem></varlistentry>
355
<varlistentry><term><parameter>op</parameter> :</term>
357
</simpara></listitem></varlistentry>
358
<varlistentry><term><parameter>field</parameter> :</term>
362
</simpara></listitem></varlistentry>
363
</variablelist></refsect2>
365
<title><anchor id="mg-condition-leaf-get-operator"/>mg_condition_leaf_get_operator ()</title>
366
<indexterm><primary>mg_condition_leaf_get_operator</primary></indexterm><programlisting><link linkend="MgQfield">MgQfield</link>* mg_condition_leaf_get_operator (<link linkend="MgCondition">MgCondition</link> *condition,
367
<link linkend="MgConditionOperator">MgConditionOperator</link> op);</programlisting>
369
Get one of <parameter>condition</parameter>'s operators.</para>
372
</para><variablelist role="params">
373
<varlistentry><term><parameter>condition</parameter> :</term>
374
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
375
</simpara></listitem></varlistentry>
376
<varlistentry><term><parameter>op</parameter> :</term>
377
<listitem><simpara> which oparetor is concerned
378
</simpara></listitem></varlistentry>
379
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the requested <link linkend="MgQfield"><type>MgQfield</type></link> object
380
</simpara></listitem></varlistentry>
381
</variablelist></refsect2>
383
<title><anchor id="mg-condition-get-ref-objects-all"/>mg_condition_get_ref_objects_all ()</title>
384
<indexterm><primary>mg_condition_get_ref_objects_all</primary></indexterm><programlisting><link linkend="GSList">GSList</link>* mg_condition_get_ref_objects_all
385
(<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
387
Get a complete list of the objects referenced by <parameter>cond</parameter>,
388
including its descendants (unlike the <link linkend="mg-referer-get-ref-objects"><function>mg_referer_get_ref_objects()</function></link>
389
function applied to <parameter>cond</parameter>).</para>
392
</para><variablelist role="params">
393
<varlistentry><term><parameter>condition</parameter> :</term>
395
</simpara></listitem></varlistentry>
396
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new list of referenced objects
397
</simpara></listitem></varlistentry>
398
</variablelist></refsect2>
400
<title><anchor id="mg-condition-represents-join"/>mg_condition_represents_join ()</title>
401
<indexterm><primary>mg_condition_represents_join</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_condition_represents_join (<link linkend="MgCondition">MgCondition</link> *condition,
402
<link linkend="MgTarget">MgTarget</link> **target1,
403
<link linkend="MgTarget">MgTarget</link> **target2,
404
<link linkend="gboolean">gboolean</link> *is_equi_join);</programlisting>
406
Tells if <parameter>condition</parameter> represents a join condition: it is a condition (within a <link linkend="MgQuery"><type>MgQuery</type></link> object)
407
for which the only <link linkend="MgQfField"><type>MgQfField</type></link> fields taking part in the condition are from two distincts
408
<link linkend="MgTarget"><type>MgTarget</type></link> objects. Such conditions can be assigned to a <link linkend="MgJoin"><type>MgJoin</type></link> object using the
409
<link linkend="mg-join-set-condition"><function>mg_join_set_condition()</function></link> method.
412
Additionnaly, if <parameter>condition</parameter> is a join condition, and if <parameter>target1</parameter> and <parameter>target2</parameter> are not <literal>NULL</literal>
413
then they are set to point to the two <link linkend="MgTarget"><type>MgTarget</type></link> objects taking part in the condition. In this
414
case <parameter>target1</parameter> and <parameter>target2</parameter> wil hold non <literal>NULL</literal> values.
417
In a similar way, if <parameter>is_equi_join</parameter> is not <literal>NULL</literal>, then it will be set to TRUE if the join
418
condition is an equi join (that is the only comparison operator is the equal sign and there are
419
only AND operators in the condition).
422
If <parameter>condition</parameter> is not a join condition, then <parameter>target1</parameter>, <parameter>target2</parameter> and <parameter>is_equi_join</parameter> are left
426
</para><variablelist role="params">
427
<varlistentry><term><parameter>condition</parameter> :</term>
428
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
429
</simpara></listitem></varlistentry>
430
<varlistentry><term><parameter>target1</parameter> :</term>
431
<listitem><simpara> place to store one of the targets, or <literal>NULL</literal>
432
</simpara></listitem></varlistentry>
433
<varlistentry><term><parameter>target2</parameter> :</term>
434
<listitem><simpara> place to store the other target, or <literal>NULL</literal>
435
</simpara></listitem></varlistentry>
436
<varlistentry><term><parameter>is_equi_join</parameter> :</term>
437
<listitem><simpara> place to store if the join is an equi join
438
</simpara></listitem></varlistentry>
439
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if <parameter>condition</parameter> is a join condition
440
</simpara></listitem></varlistentry>
441
</variablelist></refsect2>
443
<title><anchor id="mg-condition-get-main-conditions"/>mg_condition_get_main_conditions ()</title>
444
<indexterm><primary>mg_condition_get_main_conditions</primary></indexterm><programlisting><link linkend="GSList">GSList</link>* mg_condition_get_main_conditions
445
(<link linkend="MgCondition">MgCondition</link> *condition);</programlisting>
447
Makes a list of all the conditions which
448
are always verified by <parameter>condition</parameter> returns TRUE when evaluated.
449
Basically the returned list lists the atomic conditions which are AND'ed
450
together to form the complex <parameter>condition</parameter>.
453
Examples: if <parameter>condition</parameter> is:
454
--> "A and B" then the list will contains {A, B}
455
--> "A and (B or C)" it will contain {A, B or C}
456
--> "A and (B and not C)", it will contain {A, B, not C}</para>
459
</para><variablelist role="params">
460
<varlistentry><term><parameter>condition</parameter> :</term>
461
<listitem><simpara> a <link linkend="MgCondition"><type>MgCondition</type></link> object
462
</simpara></listitem></varlistentry>
463
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new list of <link linkend="MgCondition"><type>MgCondition</type></link> objects
464
</simpara></listitem></varlistentry>
465
</variablelist></refsect2>
469
<title>Properties</title>
471
<varlistentry><term><anchor id="MgCondition--join"/>"<literal>join</literal>" (<link linkend="gpointer">gpointer</link> : Read / Write)</term>
474
</listitem></varlistentry>
475
<varlistentry><term><anchor id="MgCondition--query"/>"<literal>query</literal>" (<link linkend="gpointer">gpointer</link> : Read / Write)</term>
478
</listitem></varlistentry>