![]() |
![]() |
![]() |
Libgnomedb Reference Manual | ![]() |
---|---|---|---|---|
GnomeDbJoin; enum GnomeDbJoinType; GType gnome_db_join_get_type (void); GObject* gnome_db_join_new_with_targets (GnomeDbQuery *query, GnomeDbTarget *target_1, GnomeDbTarget *target_2); GObject* gnome_db_join_new_with_xml_ids (GnomeDbQuery *query, const gchar *target_1_xml_id, const gchar *target_2_xml_id); GObject* gnome_db_join_new_copy (GnomeDbJoin *orig, GHashTable *replacements); void gnome_db_join_set_join_type (GnomeDbJoin *join, GnomeDbJoinType type); GnomeDbJoinType gnome_db_join_get_join_type (GnomeDbJoin *join); GnomeDbQuery* gnome_db_join_get_query (GnomeDbJoin *join); GnomeDbTarget* gnome_db_join_get_target_1 (GnomeDbJoin *join); GnomeDbTarget* gnome_db_join_get_target_2 (GnomeDbJoin *join); void gnome_db_join_swap_targets (GnomeDbJoin *join); gboolean gnome_db_join_set_condition (GnomeDbJoin *join, GnomeDbCondition *cond); GnomeDbCondition* gnome_db_join_get_condition (GnomeDbJoin *join); gboolean gnome_db_join_set_condition_from_fkcons (GnomeDbJoin *join); gboolean gnome_db_join_set_condition_from_sql (GnomeDbJoin *join, const gchar *cond, GError **error); const gchar* gnome_db_join_render_type (GnomeDbJoin *join);
"condition-changed" void user_function (GnomeDbJoin *dbjoin, gpointer user_data) : Run first "type-changed" void user_function (GnomeDbJoin *dbjoin, gpointer user_data) : Run first
This object is a join, within a SELECT query, between two different entities participating in the query; the entoties are themselves represented by GnomeDbTarget objects. It is important to specify joinning conditions as joins and not simply as WHERE conditions because the joins carry more information than a simple condition and because some features of Libmergeant rely on the joins analysis.
It implements the GnomeDbXmlStorage and GnomeDbReferer interfaces.
typedef enum { GNOME_DB_JOIN_TYPE_INNER, GNOME_DB_JOIN_TYPE_LEFT_OUTER, GNOME_DB_JOIN_TYPE_RIGHT_OUTER, GNOME_DB_JOIN_TYPE_FULL_OUTER, GNOME_DB_JOIN_TYPE_CROSS, GNOME_DB_JOIN_TYPE_LAST } GnomeDbJoinType;
GObject* gnome_db_join_new_with_targets (GnomeDbQuery *query, GnomeDbTarget *target_1, GnomeDbTarget *target_2);
Creates a new GnomeDbJoin object. Note: the GnomeDbTarget ranks (1st and 2nd) does not matter, but is necessary since the join may not be symetrical (LEFT or RIGHT join). Also, the GnomeDbJoin object may decide to swap the two if necessary.
query : |
a GnomeDbQuery object in which the join will occur |
target_1 : |
the 1st GnomeDbTarget object participating in the join |
target_2 : |
the 2nd GnomeDbTarget object participating in the join |
Returns : | the new object |
GObject* gnome_db_join_new_with_xml_ids (GnomeDbQuery *query, const gchar *target_1_xml_id, const gchar *target_2_xml_id);
Creates a new GnomeDbJoin object. Note: the GnomeDbTarget ranks (1st and 2nd) does not matter, but is necessary since the join may not be symetrical (LEFT or RIGHT join). Also, the GnomeDbJoin object may decide to swap the two if necessary.
query : |
a GnomeDbQuery object in which the join will occur |
target_1_xml_id : |
the 1st GnomeDbTarget object's XML id participating in the join |
target_2_xml_id : |
the 2nd GnomeDbTarget object's XML id participating in the join |
Returns : | the new object |
GObject* gnome_db_join_new_copy (GnomeDbJoin *orig, GHashTable *replacements);
Copy constructor
orig : |
a GnomeDbJoin to make a copy of |
replacements : |
a hash table to store replacements, or NULL
|
Returns : | a the new copy of orig
|
void gnome_db_join_set_join_type (GnomeDbJoin *join, GnomeDbJoinType type);
Sets the type of join
join : |
a GnomeDbJoin object |
type : |
the new type of join |
GnomeDbJoinType gnome_db_join_get_join_type (GnomeDbJoin *join);
Get the type of a join
join : |
a GnomeDbJoin object |
Returns : | the type of join
|
GnomeDbQuery* gnome_db_join_get_query (GnomeDbJoin *join);
Get the GnomeDbQuery to which join
is attached to
join : |
a GnomeDbJoin object |
Returns : | the GnomeDbQuery |
GnomeDbTarget* gnome_db_join_get_target_1 (GnomeDbJoin *join);
Get the 1st GnomeDbTarget participating in the join
join : |
a GnomeDbJoin object |
Returns : | the GnomeDbTarget |
GnomeDbTarget* gnome_db_join_get_target_2 (GnomeDbJoin *join);
Get the 2nd GnomeDbTarget participating in the join
join : |
a GnomeDbJoin object |
Returns : | the GnomeDbTarget |
void gnome_db_join_swap_targets (GnomeDbJoin *join);
Changes the relative roles of the two GnomeDbTarget objects. It does not change the join condition itself, and is usefull only for the internals of the GnomeDbQuery object
join : |
a GnomeDbJoin object |
gboolean gnome_db_join_set_condition (GnomeDbJoin *join, GnomeDbCondition *cond);
Sets cond
to be join
's condition. This is possible only if cond
uses
query fields which are either of type GnomeDbQfField and reference one of the two
targets which join
uses, or any other query field type.
join : |
a GnomeDbJoin object |
cond : |
a GnomeDbCondition object, or NULL to remove the join's condition
|
Returns : | TRUE if no error occurred |
GnomeDbCondition* gnome_db_join_get_condition (GnomeDbJoin *join);
Get the join's associated condition
join : |
a GnomeDbJoin object |
Returns : | the GnomeDbCondition object |
gboolean gnome_db_join_set_condition_from_fkcons (GnomeDbJoin *join);
Creates a GnomeDbCondition for join
using the foreign key constraints
present in the database if the two targets join
joins are database tables
(GnomeDbTable objects).
If there is more than one FK constraint between the database tables, then no join is created, and the call returns FALSE.
join : |
a GnomeDbJoin object |
Returns : | TRUE if suitable foreign keys were found and a join condition has been created |
gboolean gnome_db_join_set_condition_from_sql (GnomeDbJoin *join, const gchar *cond, GError **error);
Parses cond
and if it represents a valid SQL expression to be join
's
condition, then set it to be join
's condition.
join : |
a GnomeDbJoin object |
cond : |
a SQL expression |
error : |
place to store the error, or NULL
|
Returns : | a TRUE on success |
const gchar* gnome_db_join_render_type (GnomeDbJoin *join);
Get the SQL version of the join type ("INNER JOIN", "LEFT JOIN", etc)
join : |
a GnomeDbJoin object |
Returns : | the type as a const string |
void user_function (GnomeDbJoin *dbjoin, gpointer user_data) : Run first
dbjoin : |
the object which received the signal. |
user_data : |
user data set when the signal handler was connected. |
void user_function (GnomeDbJoin *dbjoin, gpointer user_data) : Run first
dbjoin : |
the object which received the signal. |
user_data : |
user data set when the signal handler was connected. |