+static void
+create_field (GdaConnection *gdacon, Table *table, Field *field)
+{
+ GError *error;
+ GdaServerProvider *pr;
+ GdaServerOperation *op;
+
+ pr = gda_connection_get_provider (gdacon);
+
+ error = NULL;
+ op = gda_server_provider_create_operation (pr, gdacon,
+ GDA_SERVER_OPERATION_ADD_COLUMN,
+ NULL,
+ &error);
+ if (op == NULL
+ || error != NULL)
+ {
+ g_warning ("Unable to create GdaServerOperation add_column: %s",
+ error != NULL && error->message != NULL ? error->message : "no detail");
+ }
+ else
+ {
+ error = NULL;
+ gda_server_operation_set_value_at (op, table->name, &error, "/COLUMN_DEF_P/TABLE_NAME");
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->name, &error, "/COLUMN_DEF_P/COLUMN_NAME");
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->data_type, &error, "/COLUMN_DEF_P/COLUMN_TYPE");
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, g_strdup_printf ("%d", field->size), &error, "/COLUMN_DEF_P/COLUMN_SIZE");
+
+ if (field->default_value != NULL)
+ {
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->default_value, &error, "/COLUMN_DEF_P/COLUMN_DEFAULT");
+ }
+
+ error = NULL;
+ g_message ("SQL: %s",
+ gda_server_provider_render_operation (pr, gdacon, op, &error));
+ }
+ if (op != NULL)
+ {
+ g_object_unref (op);
+ }
+}
+
+static void
+create_table (GdaConnection *gdacon, Table *table)
+{
+ GError *error;
+ GdaServerProvider *pr;
+ GdaServerOperation *op;
+
+ guint i;
+ GHashTableIter ht_iter;
+ gpointer key;
+ gpointer value;
+
+ pr = gda_connection_get_provider (gdacon);
+
+ error = NULL;
+ op = gda_server_provider_create_operation (pr, gdacon,
+ GDA_SERVER_OPERATION_CREATE_TABLE,
+ NULL,
+ &error);
+ if (op == NULL
+ || error != NULL)
+ {
+ g_warning ("Unable to create GdaServerOperation create_table: %s",
+ error != NULL && error->message != NULL ? error->message : "no detail");
+ }
+ else
+ {
+ error = NULL;
+ gda_server_operation_set_value_at (op, table->name, &error, "/TABLE_DEF_P/TABLE_NAME");
+
+ i = 0;
+ g_hash_table_iter_init (&ht_iter, table->ht_fields);
+ while (g_hash_table_iter_next (&ht_iter, &key, &value))
+ {
+ Field *field = (Field *)value;
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->name, &error, g_strdup_printf ("/FIELDS_A/@COLUMN_NAME/%d", i));
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->data_type, &error, g_strdup_printf ("/FIELDS_A/@COLUMN_TYPE/%d", i));
+
+ error = NULL;
+ gda_server_operation_set_value_at (op, g_strdup_printf ("%d", field->size), &error, g_strdup_printf ("/FIELDS_A/@COLUMN_SIZE/%d", i));
+
+ if (field->default_value != NULL)
+ {
+ error = NULL;
+ gda_server_operation_set_value_at (op, field->default_value, &error, g_strdup_printf ("/FIELDS_A/@COLUMN_DEFAULT/%d", i));
+ }
+
+ i++;
+ }
+
+ error = NULL;
+ g_message ("SQL: %s",
+ gda_server_provider_render_operation (pr, gdacon, op, &error));
+ }
+ if (op != NULL)
+ {
+ g_object_unref (op);
+ }
+}
+