void driver_filtered(sqlite3* db, double maxKmFare, time_t minStage,void (*callback)(Driver*)){ def_stmt("select name,surname,car_manufacturer,car_model,car_average_speed,km_fare,satisfied_clients,unsatisfied_clients,hired_at,id " "from Driver where km_fare < @maxKmFare and (strftime('%s','now')-hired_at) > @minStage"); bind_double_v("@maxKmFare",maxKmFare); bind_int64_v("@minStage",minStage); while(sqlite3_step(q) == SQLITE_ROW){ Driver* d; d = driver_create(col_text(0),col_text(1),col_text(2),col_text(3),col_double(4),col_double(5),col_int(6),col_int(7),col_int64(8)); d->id = col_id(9); callback(d); } sqlite3_reset(q); }
int main(void) { int testRes=1; while(true) { SQLconnection con; con.setup("test","test","test","127.0.0.1",SQLconnection::MYSQL_DEFAULT_PORT); unsigned char connectionStatus = con.connect(); if(connectionStatus == 1) { printf("SQL 1 connections available\n"); } /*else if(connectionStatus == 1) { printf("ERROR 1 MYSQL SERVER WAS MISSING\n\n"); testRes = 0; break; }*/ else { printf("ERROR BOTH MYSQL SERVERS WAS MISSING\n\n"); testRes = 0; break; } char dropTable[] = "DROP TABLE IF EXISTS `test`;"; char makeTable[] = "CREATE TABLE `test` (`id` bigint(20) unsigned NOT NULL,`fruit` char(32) NOT NULL,`color` enum('black','brown','red','orange','yellow','green','blue','purple','gray','white') NOT NULL,`number` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; char setIndex[] = "ALTER TABLE `test` ADD PRIMARY KEY(`id`), MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT;"; { DBResult res; if(!con.query(dropTable,res)) { printf("dropTable: FAILED SETTING UP, IN NON TARGET TEST.\n"); return 0; } if(!con.query(makeTable,res)) { printf("makeTable: FAILED SETTING UP, IN NON TARGET TEST.\n"); return 0; } if(!con.query(setIndex,res)) { printf("indexTable: FAILED SETTING UP, IN NON TARGET TEST.\n"); return 0; } } { DBResult res; SQLgen q; q.insertPartialINSERT("test"); sqlCol col_id("id"); q.addCSV(col_id); sqlCol col_fruit("fruit"); q.addCSVCol(col_fruit); sqlCol col_color("color"); q.addCSVCol(col_color); sqlCol col_number("number"); q.addCSVCol(col_number); q.insertPartialVALUES(); q.addCSVAutoincrment(); q.addCSVvalue("apple"); q.addCSVvalue("red"); q.addCSVnumber("12345"); if(!con.query(q.c_strdbg(),res)) { printf("ERROR in one of: insertPartialINSERT(), addCSV(), addCSVCol(), insertPartialVALUES(), addCSVAutoincrment(), addCSVvalue(), addCSVnumber()\n"); return 0; } q.clearAll(); q.insertSet("test"); q.setAutoincrment("id"); q.setValue("fruit","orange"); q.setValue("color","orange"); q.setNumber("number",2831093); if(!con.query(q.c_strdbg(),res)) { printf("ERROR in one of: insertPartialINSERT(), addCSV(), addCSVCol(), insertPartialVALUES(), addCSVAutoincrment(), addCSVvalue(), addCSVnumber()\n"); return 0; } } { SQLgen q; DBResult res; q.clearAll(); q.selectCol(); sqlCol fruit("fruit"); q.addCSVCol(fruit); sqlCol number("number"); q.addCSVCol(number); q.selectCol("test"); q.whereLessThan("number",(int)20000); q.c_strdbg(); if(con.query(q,res)) { if(auto row = res.getNextRow()) { char * theFruitFromTheDatabase = fruit.getThisField(row); if( 12345 == atoi(number.getThisField(row)) ) { printf("Basic Select passed\n"); } else { printf("ERROR 'WRONG RESULT' in one of: selectCol(), addCSVCol(), whereLessThan() sqlCol::* \n"); return 0; } } else { printf("ERROR 'NO ROWS' in one of: selectCol(), addCSVCol(), whereLessThan() sqlCol::* \n"); } } else { con.getError(); printf("ERROR 'NO RESULT' in one of: selectCol(), addCSVCol(), whereLessThan() sqlCol::* \n"); } } { DBResult res; SQLgen q; } con.disconnect(); if(0 != con.connected()) { } break; } return testRes; }
// ========================================================================= CRef<CSeq_table> CWiggleReader::xMakeTable(void) // ========================================================================= { CRef<CSeq_table> table(new CSeq_table); table->SetFeat_type(0); CRef<CSeq_id> chrom_id = xMakeChromId(); CRef<CSeq_loc> table_loc(new CSeq_loc); { // Seq-table location CRef<CSeqTable_column> col_id(new CSeqTable_column); table->SetColumns().push_back(col_id); col_id->SetHeader().SetField_name("Seq-table location"); col_id->SetDefault().SetLoc(*table_loc); } { // Seq-id CRef<CSeqTable_column> col_id(new CSeqTable_column); table->SetColumns().push_back(col_id); col_id->SetHeader().SetField_id(CSeqTable_column_info::eField_id_location_id); col_id->SetDefault().SetId(*chrom_id); } // position CRef<CSeqTable_column> col_pos(new CSeqTable_column); table->SetColumns().push_back(col_pos); col_pos->SetHeader().SetField_id(CSeqTable_column_info::eField_id_location_from); CSeqTable_multi_data::TInt& pos = col_pos->SetData().SetInt(); SWiggleStat stat; xPreprocessValues(stat); xSetTotalLoc(*table_loc, *chrom_id); size_t size = m_Values.size(); table->SetNum_rows(size); pos.reserve(size); CSeqTable_multi_data::TInt* span_ptr = 0; { // span CRef<CSeqTable_column> col_span(new CSeqTable_column); table->SetColumns().push_back(col_span); col_span->SetHeader().SetField_name("span"); if ( stat.m_FixedSpan ) { col_span->SetDefault().SetInt(stat.m_Span); } else { span_ptr = &col_span->SetData().SetInt(); span_ptr->reserve(size); } } if ( stat.m_HaveGaps ) { CRef<CSeqTable_column> col_step(new CSeqTable_column); table->SetColumns().push_back(col_step); col_step->SetHeader().SetField_name("value_gap"); col_step->SetDefault().SetReal(m_GapValue); } if (m_iFlags & fAsByte) { // values CRef<CSeqTable_column> col_min(new CSeqTable_column); table->SetColumns().push_back(col_min); col_min->SetHeader().SetField_name("value_min"); col_min->SetDefault().SetReal(stat.m_Min); CRef<CSeqTable_column> col_step(new CSeqTable_column); table->SetColumns().push_back(col_step); col_step->SetHeader().SetField_name("value_step"); col_step->SetDefault().SetReal(stat.m_Step); CRef<CSeqTable_column> col_val(new CSeqTable_column); table->SetColumns().push_back(col_val); col_val->SetHeader().SetField_name("values"); if ( 1 ) { AutoPtr< vector<char> > values(new vector<char>()); values->reserve(size); ITERATE ( TValues, it, m_Values ) { pos.push_back(it->m_Pos); if ( span_ptr ) { span_ptr->push_back(it->m_Span); } values->push_back(stat.AsByte(it->m_Value)); }