|
|
|
#undef BUILDING_AQDATABASE
|
|
|
|
|
|
#include <aqdatabase/aqdb.h>
|
|
#include <aqdatabase/aqdb_db.h>
|
|
#include <aqdatabase/aqdb_value.h>
|
|
|
|
#include <gwenhywfar/gwenhywfar.h>
|
|
#include <gwenhywfar/cgui.h>
|
|
#include <gwenhywfar/debug.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
int setup_database_with_table(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_open started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
AQDB_DB_free(db);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int create_objects(AQDB_DB *db, AQDB_ID tableId, int numberOfObjects) {
|
|
int rv;
|
|
int n;
|
|
|
|
for (n=0; n<numberOfObjects; n++) {
|
|
AQDB_OBJECT *o;
|
|
char numbuf[256];
|
|
|
|
/* create object (8 fields) */
|
|
o=AQDB_Object_new(tableId, 0, 8);
|
|
if (o==NULL) {
|
|
fprintf(stderr, "No object created.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
AQDB_Object_SetFieldInt64(o, 0, n+1); /* id */
|
|
AQDB_Object_SetFieldInt64(o, 1, numberOfObjects+n+1);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "NAMESPACE-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 2, numbuf);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "CODE-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 3, numbuf);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "NAME-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 4, numbuf);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "SYM-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 5, numbuf);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "DESCRIPTION-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 6, numbuf);
|
|
|
|
snprintf(numbuf, sizeof(numbuf)-1, "SMU-%d", n+1);
|
|
numbuf[sizeof(numbuf)-1]=0;
|
|
AQDB_Object_SetFieldString(o, 7, numbuf);
|
|
|
|
rv=AQDB_DB_AddObject(db, tableId, o);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Object_free(o);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int test_db_factory(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_factory started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_create(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_create started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_open(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_open started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_close(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_close started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_create_table(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_create_table started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ|AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_create_table_and_open_db(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
|
|
fprintf(stderr, "test_db_create_table_and_open_db started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_create_and_open_table(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
AQDB_ID tableId;
|
|
|
|
fprintf(stderr, "test_db_create_and_open_table started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
tableId=0;
|
|
rv=AQDB_DB_OpenTable(db, "commodity",
|
|
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
|
|
&tableId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_create_object(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
AQDB_ID tableId;
|
|
|
|
fprintf(stderr, "test_db_create_object started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
tableId=0;
|
|
rv=AQDB_DB_OpenTable(db, "commodity",
|
|
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
|
|
&tableId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_OBJECT *o;
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
cl=AQDB_DB_GetColumnList(db, tableId);
|
|
if (cl==NULL) {
|
|
fprintf(stderr, "No column list.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
o=AQDB_Object_new(tableId, 0, AQDB_Column_List_GetCount(cl));
|
|
if (o==NULL) {
|
|
fprintf(stderr, "No object created.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
AQDB_Object_SetFieldInt64(o, 0, 0x11111111);
|
|
AQDB_Object_SetFieldInt64(o, 1, 0xaaaaaaaa);
|
|
AQDB_Object_SetFieldString(o, 2, "NAMESPACE1");
|
|
AQDB_Object_SetFieldString(o, 3, "CODE1");
|
|
AQDB_Object_SetFieldString(o, 4, "NAME1");
|
|
AQDB_Object_SetFieldString(o, 5, "SYM1");
|
|
AQDB_Object_SetFieldString(o, 6, "DESCRIPTION1");
|
|
AQDB_Object_SetFieldString(o, 7, "1111");
|
|
|
|
|
|
rv=AQDB_DB_AddObject(db, tableId, o);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_query(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
AQDB_ID tableId;
|
|
|
|
fprintf(stderr, "test_db_create_object started\n");
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Create(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
#if 0
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
#endif
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_COLUMN *c;
|
|
|
|
cl=AQDB_Column_List_new();
|
|
|
|
/* member "id" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "id", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "flags" */
|
|
c=AQDB_Column_new(AQDB_DataType_Int, "flags", 8);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "nameSpace" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "nameSpace", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "code" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "code", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "name" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "name", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "symbol" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "symbol", 16);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "description" */
|
|
c=AQDB_Column_new(AQDB_DataType_String, "description", 64);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
/* member "smallestUnit" */
|
|
c=AQDB_Column_new(AQDB_DataType_Amount, "smallestUnit", 256);
|
|
AQDB_Column_List_Add(c, cl);
|
|
|
|
rv=AQDB_DB_CreateTable(db, "commodity", AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE, cl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to create table (%d)\n", rv);
|
|
AQDB_Column_List_free(cl);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
AQDB_Column_List_free(cl);
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
tableId=0;
|
|
rv=AQDB_DB_OpenTable(db, "commodity",
|
|
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
|
|
&tableId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
AQDB_COLUMN_LIST *cl;
|
|
AQDB_OBJECT *o;
|
|
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
cl=AQDB_DB_GetColumnList(db, tableId);
|
|
if (cl==NULL) {
|
|
fprintf(stderr, "No column list.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
o=AQDB_Object_new(tableId, 0, AQDB_Column_List_GetCount(cl));
|
|
if (o==NULL) {
|
|
fprintf(stderr, "No object created.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
AQDB_Object_SetFieldInt64(o, 0, 0x11111111); /* id */
|
|
AQDB_Object_SetFieldInt64(o, 1, 0xaaaaaaaa);
|
|
AQDB_Object_SetFieldString(o, 2, "NAMESPACE1");
|
|
AQDB_Object_SetFieldString(o, 3, "CODE1");
|
|
AQDB_Object_SetFieldString(o, 4, "NAME1");
|
|
AQDB_Object_SetFieldString(o, 5, "SYM1");
|
|
AQDB_Object_SetFieldString(o, 6, "DESCRIPTION1");
|
|
AQDB_Object_SetFieldString(o, 7, "1111");
|
|
|
|
|
|
rv=AQDB_DB_AddObject(db, tableId, o);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to add object (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (1) {
|
|
AQDB_ID queryId;
|
|
AQDB_ID resultList[64];
|
|
int idListLen;
|
|
int i;
|
|
|
|
rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
idListLen=64;
|
|
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
fprintf(stderr, "Number of objects: %i\n", idListLen);
|
|
for (i=0; i<idListLen; i++) {
|
|
fprintf(stderr, " - %03d: %d\n", i, resultList[i]);
|
|
}
|
|
|
|
rv=AQDB_DB_QueryClose(db, queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_query_multi_objects(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
AQDB_ID tableId;
|
|
|
|
fprintf(stderr, "test_db_create_object started\n");
|
|
rv=setup_database_with_table(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "ERROR: Unable to setup db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
tableId=0;
|
|
rv=AQDB_DB_OpenTable(db, "commodity",
|
|
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
|
|
&tableId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
/* create objects */
|
|
rv=create_objects(db, tableId, 1024);
|
|
if (rv) {
|
|
fprintf(stderr, "Error creating objects.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
/* done editing */
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
|
|
if (1) {
|
|
AQDB_ID queryId;
|
|
AQDB_ID resultList[64];
|
|
int idListLen;
|
|
int i;
|
|
int pos;
|
|
|
|
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
|
|
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x22222222\"", 0, &queryId);
|
|
rv=AQDB_DB_QuerySubmit(db, tableId, 0, NULL, 0, &queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
idListLen=64;
|
|
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
for (pos=0;;) {
|
|
fprintf(stderr, "Number of objects: %i\n", idListLen);
|
|
for (i=0; i<idListLen; i++) {
|
|
fprintf(stderr, " - %5d (%2d): %d\n", pos++, i, resultList[i]);
|
|
}
|
|
|
|
idListLen=64;
|
|
rv=AQDB_DB_QueryGetNext(db, queryId, resultList, &idListLen);
|
|
if (rv<0) {
|
|
if (rv!=GWEN_ERROR_NOT_FOUND) {
|
|
fprintf(stderr, "ERROR: Unable to get next query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
};
|
|
|
|
rv=AQDB_DB_QueryClose(db, queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int test_db_rollback(const char *url, const char *dirname, const char *fname) {
|
|
AQDB_DB *db=NULL;
|
|
int rv;
|
|
AQDB_ID tableId;
|
|
|
|
fprintf(stderr, "test_db_rollback\n");
|
|
rv=setup_database_with_table(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "ERROR: Unable to setup db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DbFactory(url, &db);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to instantiate db (%d)\n", rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=AQDB_DB_Open(db, AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
tableId=0;
|
|
rv=AQDB_DB_OpenTable(db, "commodity",
|
|
AQDB_ACTION_FLAGS_READ | AQDB_ACTION_FLAGS_WRITE,
|
|
&tableId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to open table (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
if (1) {
|
|
rv=AQDB_DB_BeginEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to begin edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
/* create objects */
|
|
rv=create_objects(db, tableId, 1024);
|
|
if (rv) {
|
|
fprintf(stderr, "Error creating objects.\n");
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
/* done editing */
|
|
rv=AQDB_DB_EndEdit(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to end edit session (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
|
|
if (1) {
|
|
AQDB_ID queryId;
|
|
AQDB_ID resultList[64];
|
|
int idListLen;
|
|
int i;
|
|
int pos;
|
|
|
|
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x11111111\"", 0, &queryId);
|
|
//rv=AQDB_DB_QuerySubmit(db, tableId, 0, "$id==\"0x22222222\"", 0, &queryId);
|
|
rv=AQDB_DB_QuerySubmit(db, tableId, 0, NULL, 0, &queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to submit a query (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
idListLen=64;
|
|
rv=AQDB_DB_QueryGetFirst(db, queryId, resultList, &idListLen);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to get first query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
for (pos=0;;) {
|
|
fprintf(stderr, "Number of objects: %i\n", idListLen);
|
|
for (i=0; i<idListLen; i++) {
|
|
fprintf(stderr, " - %5d (%2d): %d\n", pos++, i, resultList[i]);
|
|
}
|
|
|
|
idListLen=64;
|
|
rv=AQDB_DB_QueryGetNext(db, queryId, resultList, &idListLen);
|
|
if (rv<0) {
|
|
if (rv!=GWEN_ERROR_NOT_FOUND) {
|
|
fprintf(stderr, "ERROR: Unable to get next query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
};
|
|
|
|
rv=AQDB_DB_QueryClose(db, queryId);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close the query results (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
|
|
if (1) {
|
|
AQDB_SESSION_DESCR_LIST *sl;
|
|
AQDB_SESSION_DESCR *sd;
|
|
|
|
sl=AQDB_SessionDescr_List_new();
|
|
rv=AQDB_DB_GetRollbackSessions(db, sl);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Error getting rollback sessions (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
sd=AQDB_SessionDescr_List_First(sl);
|
|
while(sd) {
|
|
fprintf(stderr, "- session %d (%s, %d additions, %d deletions, %d modifications)\n",
|
|
(int) AQDB_SessionDescr_GetSessionId(sd),
|
|
AQDB_SessionDescr_GetUserName(sd),
|
|
(int) AQDB_SessionDescr_GetAdditions(sd),
|
|
(int) AQDB_SessionDescr_GetDeletions(sd),
|
|
(int) AQDB_SessionDescr_GetModifications(sd));
|
|
sd=AQDB_SessionDescr_List_Next(sd);
|
|
}
|
|
}
|
|
|
|
|
|
rv=AQDB_DB_Close(db, 0);
|
|
if (rv<0) {
|
|
fprintf(stderr, "ERROR: Unable to close db (%d)\n", rv);
|
|
AQDB_DB_free(db);
|
|
return 2;
|
|
}
|
|
|
|
|
|
|
|
AQDB_DB_free(db);
|
|
|
|
fprintf(stderr, "Ok.\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int test_database_module(const char *url, const char *dirname, const char *fname) {
|
|
int rv;
|
|
|
|
#if 0
|
|
rv=test_db_factory(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_factory()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_create(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_create()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_open(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_open()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
#endif
|
|
|
|
rv=test_db_close(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_close()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_create_table(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_create_table()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_create_table_and_open_db(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_create_table_and_open_db()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_create_and_open_table(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_create_and_open_table()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
rv=test_db_create_object(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_create_object()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
|
|
rv=test_db_query(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_query()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
|
|
rv=test_db_query_multi_objects(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_query_multi_objects()\n");
|
|
return 2;
|
|
}
|
|
if (fname)
|
|
unlink(fname);
|
|
|
|
|
|
rv=test_db_rollback(url, dirname, fname);
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_rollback()\n");
|
|
return 2;
|
|
}
|
|
//if (fname)
|
|
// unlink(fname);
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
int rv;
|
|
GWEN_GUI *gui;
|
|
|
|
rv=GWEN_Init();
|
|
if (rv) {
|
|
DBG_ERROR_ERR(0, rv);
|
|
return rv;
|
|
}
|
|
|
|
rv=AQDB_Init();
|
|
if (rv) {
|
|
DBG_ERROR_ERR(0, rv);
|
|
return rv;
|
|
}
|
|
|
|
gui=GWEN_Gui_CGui_new();
|
|
GWEN_Gui_SetCharSet(gui, "ISO-8859-15");
|
|
GWEN_Gui_SetGui(gui);
|
|
GWEN_Logger_SetLevel(AQDB_LOGDOMAIN, GWEN_LoggerLevel_Info);
|
|
|
|
|
|
unlink("/tmp/aqdatabase-db1.db");
|
|
rv=test_database_module("file:///tmp/aqdatabase-db1.db", NULL, "/tmp/aqdatabase-db1.db");
|
|
if (rv) {
|
|
fprintf(stderr, "FAILED: test_db_factory()\n");
|
|
return 2;
|
|
}
|
|
|
|
|
|
rv=AQDB_Fini();
|
|
if (rv) {
|
|
DBG_ERROR_ERR(0, rv);
|
|
return 2;
|
|
}
|
|
|
|
rv=GWEN_Fini();
|
|
if (rv) {
|
|
DBG_ERROR_ERR(0, rv);
|
|
return 2;
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|