// AmiSqlTable_t.cxx #include "dial_ws_ami/AmiSqlTable.h" #include using std::string; using std::cout; using std::endl; using dset::SelectQuery; using dset::InsertQuery; using dset::DeleteQuery; using dset::SqlResult; using dial::AmiSqlTable; namespace { void msg(string txt) { cout << "--- " << txt << " ---" << endl; } } // end unnamed namespace int AmiSqlTable_t() { msg("Begin testing AmiSqlTable"); AmiSqlTable table("ADA:dataset_repository:catalogs:atlas:insider"); msg("Checking validity"); assert(table.is_valid()); msg("Retrieve the schema"); SqlResult res = table.get_schema(); int ecode = table.error(); if( ecode != 0 ) { cout << "Query returned error:" << ecode << endl; cout << table.error_string(ecode) << endl; assert(false); } cout << res; msg("Execute an insert query"); SqlResult::Row row; row["idhi"] = "1"; row["idlo"] = "1"; row["sxml"] = "abcd"; InsertQuery iquery(row); if( table.execute_insert_query(iquery) != 0 ) { cout << "Query returned error:" << table.error() << endl; cout << table.error_string(table.error()) << endl; } msg("Fetch number of rows in table"); SelectQuery query("", "idhi = 1 and idlo = 1"); cout << "Number of rows = " << table.get_row_count(query) << endl; ecode = table.error(); if( ecode != 0 ) { cout << "Query returned error:" << ecode << endl; cout << table.error_string(ecode) << endl; } msg("Fetch number of cols in table"); cout << "Number of columns = " << table.get_col_count(query) << endl; ecode = table.error(); if( ecode != 0 ) { cout << "Query returned error:" << ecode << endl; cout << table.error_string(ecode) << endl; } msg("Execute a select query"); SelectQuery squery("idhi,idlo,sxml", "idhi = 1 and idlo = 1"); res = table.execute_select_query(squery); ecode = table.error(); if( ecode != 0 ) { cout << "Query returned error:" << ecode << endl; cout << table.error_string(ecode) << endl; } else cout << res; msg("Execute an update query"); SqlResult::Row row1; row1["idhi"] = "1"; row1["idlo"] = "1"; row1["sxml"] = "defg"; InsertQuery uquery(row1); if( table.execute_update_query(uquery, squery) != 0 ) { cout << "Query returned error:" << table.error() << endl; cout << table.error_string(table.error()) << endl; } msg("Execute a delete query"); DeleteQuery dquery; dquery.andconstraint("idhi = 1 and idlo = 1"); if( table.execute_delete_query(dquery) != 0 ) { cout << "Query returned error:" << table.error() << endl; cout << table.error_string(table.error()) << endl; } msg("All tests passed successfully"); return 0; } #ifdef CTEST_MAIN int main() { return AmiSqlTable_t(); } #endif