[libgda] GdaDataSelect: take into account INSERT modification statement into column's attributes
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] GdaDataSelect: take into account INSERT modification statement into column's attributes
- Date: Sun, 24 Jul 2011 15:29:49 +0000 (UTC)
commit 709b996e3673407f234056aa504df3de9d4b533f
Author: Vivien Malerba <malerba gnome-db org>
Date: Sun Jul 24 13:07:09 2011 +0200
GdaDataSelect: take into account INSERT modification statement into column's attributes
libgda/gda-data-select.c | 29 ++++++++++++++++++++++++++++-
1 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/libgda/gda-data-select.c b/libgda/gda-data-select.c
index becd6e7..d48d440 100644
--- a/libgda/gda-data-select.c
+++ b/libgda/gda-data-select.c
@@ -1267,6 +1267,24 @@ gda_data_select_set_modification_statement (GdaDataSelect *model, GdaStatement *
}
}
+ if (mtype == INS_QUERY) {
+ /* update GdaDataSelect's column attributes with GdaHolder's attributes */
+ for (list = params->holders; list; list = list->next) {
+ GdaHolder *holder = GDA_HOLDER (list->data);
+ gint num;
+ gboolean is_old;
+ if (param_name_to_int (gda_holder_get_id (holder), &num, &is_old) &&
+ !is_old) {
+ GdaColumn *gdacol;
+ gdacol = gda_data_model_describe_column ((GdaDataModel*) model, num);
+ if (!gdacol)
+ continue;
+ gda_column_set_default_value (gdacol,
+ gda_holder_get_default_value (holder));
+ }
+ }
+ }
+
/* all ok, accept the modif statement */
if (model->priv->sh->modif_internals->modif_stmts[mtype]) {
g_object_unref (model->priv->sh->modif_internals->modif_stmts[mtype]);
@@ -1304,9 +1322,18 @@ gda_data_select_set_modification_statement (GdaDataSelect *model, GdaStatement *
for (hlist = model->priv->sh->modif_internals->modif_set->holders; hlist;
hlist = hlist->next) {
GdaHolder *h = GDA_HOLDER (hlist->data);
- g_print (" %s type=> %s (%d)\n", gda_holder_get_id (h),
+ const GValue *defval;
+ defval = gda_holder_get_default_value (h);
+ g_print (" %s type=> %s (%d)", gda_holder_get_id (h),
g_type_name (gda_holder_get_g_type (h)),
gda_holder_get_g_type (h));
+ if (defval) {
+ gchar *tmp;
+ tmp = gda_value_stringify (defval);
+ g_print (" defaults [%s]", tmp);
+ g_free (tmp);
+ }
+ g_print ("\n");
}
}
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]