I tried to add a longtext value in a mysql database using gda but I have a SIGPIPE error when I execute the statement.
(gdb) bt
#0 0x00007ffff6ec12af in send () from /usr/lib/libc.so.6
#1 0x00007fffee217a4d in ?? () from /usr/lib/libmysqlclient.so.18
#2 0x00007fffee1f6349 in ?? () from /usr/lib/libmysqlclient.so.18
#3 0x00007fffee1f6623 in ?? () from /usr/lib/libmysqlclient.so.18
#4 0x00007fffee1f6d2a in ?? () from /usr/lib/libmysqlclient.so.18
#5 0x00007fffee1edee4 in mysql_set_character_set () from /usr/lib/libmysqlclient.so.18
#6 0x00007fffee1e5266 in mysql_stmt_param_metadata () from /usr/lib/libmysqlclient.so.18
#7 0x00007fffee1e753a in mysql_stmt_execute () from /usr/lib/libmysqlclient.so.18
#8 0x00007fffee73079a in gda_mysql_provider_statement_execute (provider=<optimized out>, cnc=0x777220, stmt=<optimized out>, params=<optimized out>,
model_usage=<optimized out>, col_types=<optimized out>, last_inserted_row=0x7fffffffead0, task_id=0x0, async_cb=0x0, cb_data=0x0, error=0x7fffffffeae0)
at gda-mysql-provider.c:2782
#9 0x00007ffff65c00c1 in gda_connection_statement_execute_v (cnc=cnc entry=0x777220, stmt=stmt entry=0x699680, params=params entry=0x62b0c0,
model_usage=model_usage entry=GDA_STATEMENT_MODEL_RANDOM_ACCESS, last_inserted_row=last_inserted_row entry=0x7fffffffead0, error=error entry=0x7fffffffeae0)
at gda-connection.c:3544
#10 0x00007ffff65c03b4 in gda_connection_statement_execute (cnc=0x777220, stmt=0x699680, params=0x62b0c0, model_usage=GDA_STATEMENT_MODEL_RANDOM_ACCESS,
last_inserted_row=0x7fffffffead0, error=0x7fffffffeae0) at gda-connection.c:3725
#11 0x00007ffff78c5a85 in ast_db_event_new_entry_full () from /usr/lib/libAST_DBLayer.so
#12 0x00007ffff78c5da3 in ast_db_event_information_new_entry_with_meta_and_hidden () from /usr/lib/libAST_DBLayer.so
#13 0x0000000000400b0a in main ()
GValue*
ast_db_event_new_entry_full(GdaConnection* dbConnection, gdouble time, const gchar* meta, const gchar* type, const gchar* subType, const gchar* state, gint sourceID, const gchar* username, gboolean hidden) {
GValue* result = NULL;
GValue* timeValue = gda_value_new(G_TYPE_DOUBLE);
g_value_set_double(timeValue, time);
GValue* metaValue = NULL;
if (meta != NULL)
metaValue = gda_value_new_from_string(meta, G_TYPE_STRING);
GValue* subTypeIDValue = ast_db_event_sub_types_get_or_register(dbConnection, subType, type);
if (subTypeIDValue != NULL) {
GValue* typeIDValue = ast_db_event_types_get_or_register(dbConnection, type);
if (typeIDValue != NULL) {
GValue* stateID = NULL;
if (state != NULL) {
stateID = ast_db_event_state_get_id(dbConnection, state);
} else {
stateID = gda_value_new_null();
}
if (stateID != NULL) {
GValue* sourceIDValue = gda_value_new(G_TYPE_INT);
g_value_set_int(sourceIDValue, sourceID);
GValue* userIDValue = NULL;
if (username != NULL) {
userIDValue = gda_value_new_from_string(username, G_TYPE_STRING);
} else {
userIDValue = gda_value_new_null();
}
GValue* isHiddenValue= NULL;
isHiddenValue = gda_value_new(G_TYPE_INT);
g_value_set_int(isHiddenValue, hidden ? 1 : 0);
GdaStatement *stmt = NULL;
GdaSet * set = NULL;
GdaSet * lastRow = NULL;
GdaHolder *p = NULL;
GError * err = NULL;
GObject * res = NULL;
stmt = ast_db_common_get_statement(dbConnection, "INSERT INTO Events (time, meta, fk_EventTypes, fk_EventSubTypes, fk_EventState, fk_Sources, username, isHidden) VALUES ( ##the_time::gdouble , ##the_meta::string::null , ##the_type::gint , ##the_subtype::gint, ##the_state::gint::null, ##the_sourceID::gint, ##the_user::string::null, ##is_hidden::gint::null )");
if (stmt != NULL) {
gda_statement_get_parameters (stmt, &set, NULL);
p = gda_set_get_holder (set, "the_time");
gda_holder_set_value (p, timeValue, NULL);
if (metaValue) {
p = gda_set_get_holder (set, "the_meta");
gda_holder_set_value (p, metaValue, NULL);
}
p = gda_set_get_holder (set, "the_type");
gda_holder_set_value (p, typeIDValue, NULL);
p = gda_set_get_holder (set, "the_subtype");
gda_holder_set_value (p, subTypeIDValue, NULL);
p = gda_set_get_holder (set, "the_state");
gda_holder_set_value (p, stateID, NULL);
p = gda_set_get_holder (set, "the_sourceID");
gda_holder_set_value (p, sourceIDValue, NULL);
p = gda_set_get_holder (set, "the_user");
gda_holder_set_value (p, userIDValue, NULL);
p = gda_set_get_holder (set, "is_hidden");
gda_holder_set_value (p, isHiddenValue, NULL);
res = gda_connection_statement_execute(dbConnection,stmt, set,GDA_STATEMENT_MODEL_RANDOM_ACCESS, &lastRow, &err);
if ((res != NULL) && (err == NULL)) {
GdaHolder *h = GDA_HOLDER(lastRow->holders->data);
const GValue* holderValue = gda_holder_get_value(h);
result = gda_value_new(G_TYPE_INT);
g_value_set_int(result, g_value_get_int(holderValue));
//Segmentation fault
//g_object_unref(holderValue);
g_object_unref(lastRow);
g_object_unref(res);
} else {
g_error ("Could not INSERT data into the 'Events' table: %s\n",
ast_error_get_error_message(err));
}
if (err != NULL)
g_error_free(err);
g_object_unref(set);
g_object_unref(stmt);
}
gda_value_free(sourceIDValue);
gda_value_free(userIDValue);
gda_value_free(stateID);
} else {
g_critical("ast:db:Failed to get the event state. State: %s. SubType: %s. Type: %s.", type, subType, state);
}
gda_value_free(typeIDValue);
} else {
g_critical("Ast:DB: Failed to get the type ID. Type: %s", type);
}
gda_value_free(subTypeIDValue);
} else {
g_critical("Ast:DB:Failed to get the subType ID. SubType: %s. Type: %s.", subType, type);
}
gda_value_free(timeValue);
if (metaValue)
gda_value_free(metaValue);
return result;
}