}
void sessionDataFree( char* key, void* item ) {
- if (!(strcmp(key,"xact_id")))
+ if (!(strcmp(key,"xact_id"))) {
+ if (writehandle)
+ dbi_conn_query(writehandle, "ROLLBACK;");
free(item);
+ }
return;
}
return jsonNULL;
}
- if (!osrfHashGet( (osrfHash*)ctx->session->userData, "xact_id" )) {
+ osrfLogDebug( OSRF_LOG_MARK, "Object seems to be of the correct type" );
+
+ if (!ctx->session || !ctx->session->userData || !osrfHashGet( (osrfHash*)ctx->session->userData, "xact_id" )) {
+ osrfLogError( OSRF_LOG_MARK, "No active transaction -- required for CREATE" );
+
osrfAppSessionStatus(
ctx->session,
OSRF_STATUS_BADREQUEST,
return jsonNULL;
}
+ osrfLogDebug( OSRF_LOG_MARK, "There is a transaction running..." );
+
dbhandle = writehandle;
osrfHash* fields = osrfHashGet(meta, "fields");
buffer_add(col_buf,"(");
buffer_add(val_buf,"VALUES (");
+
int i = 0;
int first = 1;
char* field_name;
if(!( strcmp( osrfHashGet(osrfHashGet(fields,field_name), "virtual"), "true" ) )) continue;
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
int pos = atoi(osrfHashGet(field, "array_position"));
char* value = jsonObjectToSimpleString( jsonObjectGetIndex( target, pos ) );
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
if (first) {
first = 0;
} else {
buffer_add(col_buf, field_name);
- if (jsonObjectGetIndex(target, pos)->type == JSON_NULL) {
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
+ if (!jsonObjectGetIndex(target, pos) || jsonObjectGetIndex(target, pos)->type == JSON_NULL) {
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
buffer_add( val_buf, "DEFAULT" );
} else if ( !strcmp(osrfHashGet(field, "primitive"), "number") ) {
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
if ( !strcmp(osrfHashGet(field, "datatype"), "INT8") ) {
buffer_fadd( val_buf, "%lld", atol(value) );
buffer_fadd( val_buf, "%f", atof(value) );
}
} else {
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
if ( dbi_conn_quote_string(writehandle, &value) ) {
buffer_fadd( val_buf, "%s", value );
}
}
+ osrfLogDebug( OSRF_LOG_MARK, "HERE..." );
+
free(value);
}
+
buffer_add(col_buf,")");
buffer_add(val_buf,")");
osrfLogDebug( OSRF_LOG_MARK, "Updating %s object with %s = %s", osrfHashGet(meta, "fieldmapper"), field_name, value);
- if (jsonObjectGetIndex(target, pos)->type == JSON_NULL) {
+ if (!jsonObjectGetIndex(target, pos) || jsonObjectGetIndex(target, pos)->type == JSON_NULL) {
if ( !(!( strcmp( osrfHashGet(meta, "classname"), "au" ) ) && !( strcmp( field_name, "passwd" ) )) ) { // arg at the special case!
if (first) first = 0;
else buffer_add(sql, ",");