@@ -128,6 +128,8 @@ bool file_exists(const char *filename) {
128128 return (stat (filename, &buffer) == 0 );
129129}
130130
131+ const char *empty_cols[] = {" " };
132+
131133int insert_db (int argc, char *argv[]) {
132134 if (!file_exists (argv[2 ]))
133135 cout << " File does not exist" << endl;
@@ -136,7 +138,7 @@ int insert_db(int argc, char *argv[]) {
136138 return SQLT_RES_ERR;
137139 int col_count = atoi (argv[4 ]);
138140 int pk_col_count = atoi (argv[5 ]);
139- sqlite_index_blaster sqib (col_count, pk_col_count, ( const char *[]) { " " } , " " , page_size, 320 , argv[2 ]);
141+ sqlite_index_blaster sqib (col_count, pk_col_count, empty_cols , " " , page_size, 320 , argv[2 ]);
140142 char *parsed_csv[col_count];
141143 for (int i = 0 ; i < argc-6 ; i++) {
142144 read_csv (parsed_csv, argv[6 + i], col_count, false );
@@ -156,7 +158,7 @@ int read_db(int argc, char *argv[]) {
156158 return SQLT_RES_ERR;
157159 int col_count = atoi (argv[4 ]);
158160 int pk_col_count = atoi (argv[5 ]);
159- sqlite_index_blaster sqib (col_count, pk_col_count, ( const char *[]) { " " } , " " , page_size, 320 , argv[2 ]);
161+ sqlite_index_blaster sqib (col_count, pk_col_count, empty_cols , " " , page_size, 320 , argv[2 ]);
160162 int rec_len = 10000 ;
161163 uint8_t *rec = (uint8_t *) malloc (rec_len);
162164 int val_len = 2000 ;
@@ -318,12 +320,15 @@ void check_value(const char *key, int key_len, const char *val, int val_len,
318320 }
319321}
320322
323+ const char *census_col_names[] = {" cum_prop100k" , " rank" , " name" , " year" , " count" , " prop100k" , " pctwhite" , " pctblack" , " pctapi" , " pctaian" , " pct2prace" , " pcthispanic" };
324+ const void *census_col_values[12 ];
325+ const uint8_t census_col_types[] = {SQLT_TYPE_REAL, SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_INT32, SQLT_TYPE_INT32, SQLT_TYPE_REAL,
326+ SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL};
327+
321328bool test_census (int page_size, int cache_size, const char *filename) {
322329
323330 unlink (filename);
324- sqlite_index_blaster *sqib = new sqlite_index_blaster (12 , 3 ,
325- (const char *[]) {" cum_prop100k" , " rank" , " name" , " year" , " count" , " prop100k" , " pctwhite" , " pctblack" , " pctapi" , " pctaian" , " pct2prace" , " pcthispanic" },
326- " surnames" , page_size, cache_size, filename);
331+ sqlite_index_blaster *sqib = new sqlite_index_blaster (12 , 3 , census_col_names, " surnames" , page_size, cache_size, filename);
327332 ifstream file (" sample_data/census.txt" );
328333 if (file.is_open ()) {
329334 string line;
@@ -391,11 +396,19 @@ bool test_census(int page_size, int cache_size, const char *filename) {
391396 pcthispanic = 0 ;
392397 // cout << endl;
393398 uint8_t rec[line.length () + 500 ];
394- int rec_len = sqib->make_new_rec (rec, 12 ,
395- (const void *[]) {&cum_prop100k, &rank, name.c_str (), &year, &count, &prop100k,
396- &pctwhite, &pctblack, &pctapi, &pctaian, &pct2prace, &pcthispanic},
397- NULL , (uint8_t []) {SQLT_TYPE_REAL, SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_INT32, SQLT_TYPE_INT32, SQLT_TYPE_REAL,
398- SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL, SQLT_TYPE_REAL});
399+ census_col_values[0 ] = &cum_prop100k;
400+ census_col_values[1 ] = &rank;
401+ census_col_values[2 ] = (const void *) name.c_str ();
402+ census_col_values[3 ] = &year;
403+ census_col_values[4 ] = &count;
404+ census_col_values[5 ] = &prop100k;
405+ census_col_values[6 ] = &pctwhite;
406+ census_col_values[7 ] = &pctblack;
407+ census_col_values[8 ] = &pctapi;
408+ census_col_values[9 ] = &pctaian;
409+ census_col_values[10 ] = &pct2prace;
410+ census_col_values[11 ] = &pcthispanic;
411+ int rec_len = sqib->make_new_rec (rec, 12 , census_col_values, NULL , census_col_types);
399412 sqib->put (rec, -rec_len, NULL , 0 );
400413 }
401414 file.close ();
@@ -435,12 +448,15 @@ bool test_census() {
435448 return true ;
436449}
437450
451+ const char *baby_col_names[] = {" year" , " state" , " name" , " total_babies" , " primary_sex" , " primary_sex_ratio" , " per_100k_in_state" };
452+ const uint8_t baby_col_types[] = {SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_TEXT, SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_REAL, SQLT_TYPE_REAL};
453+ const void *baby_col_values[7 ];
454+
438455bool test_babynames (int page_size, int cache_size, const char *filename) {
439456
440457 unlink (filename);
441- sqlite_index_blaster *sqib = new sqlite_index_blaster (7 , 3 ,
442- (const char *[]) {" year" , " state" , " name" , " total_babies" , " primary_sex" , " primary_sex_ratio" , " per_100k_in_state" },
443- " gendered_names" , page_size, cache_size, filename);
458+ sqlite_index_blaster *sqib = new sqlite_index_blaster (7 , 3 , baby_col_names,
459+ " gendered_names" , page_size, cache_size, filename);
444460 ifstream file (" sample_data/babynames.txt" );
445461 if (file.is_open ()) {
446462 string line;
@@ -488,9 +504,14 @@ bool test_babynames(int page_size, int cache_size, const char *filename) {
488504 per_100k_in_state = 0 ;
489505 // cout << endl;
490506 uint8_t rec[line.length () + 100 ];
491- int rec_len = sqib->make_new_rec (rec, 7 ,
492- (const void *[]) {&year, state.c_str (), name.c_str (), &total_babies, primary_sex.c_str (), &primary_sex_ratio, &per_100k_in_state},
493- NULL , (uint8_t []) {SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_TEXT, SQLT_TYPE_INT32, SQLT_TYPE_TEXT, SQLT_TYPE_REAL, SQLT_TYPE_REAL});
507+ baby_col_values[0 ] = &year;
508+ baby_col_values[1 ] = (const void *) state.c_str ();
509+ baby_col_values[2 ] = (const void *) name.c_str ();
510+ baby_col_values[3 ] = &total_babies;
511+ baby_col_values[4 ] = (const void *) primary_sex.c_str ();
512+ baby_col_values[5 ] = &primary_sex_ratio;
513+ baby_col_values[6 ] = &per_100k_in_state;
514+ int rec_len = sqib->make_new_rec (rec, 7 , baby_col_values, NULL , baby_col_types);
494515 sqib->put (rec, -rec_len, NULL , 0 );
495516 }
496517 file.close ();
@@ -529,6 +550,8 @@ bool test_babynames() {
529550 return true ;
530551}
531552
553+ const char *const_kv[] = {" key" , " value" };
554+
532555bool test_random_data (int page_size, long start_count, int cache_size, char *filename) {
533556 unlink (filename);
534557 int U = page_size - 5 ;
@@ -541,7 +564,7 @@ bool test_random_data(int page_size, long start_count, int cache_size, char *fil
541564 int64_t data_sz = prepare_data (&data_buf, data_alloc_sz, KEY_LEN, VALUE_LEN, NUM_ENTRIES, 1 , true );
542565 cout << " Testing page size: " << page_size << " , count: " << NUM_ENTRIES
543566 << " , Data size: " << data_sz / 1000 << " kb" << " , Cache size: " << cache_size << " kb" << endl;
544- sqlite_index_blaster sqib (2 , 1 , ( const char *[]) { " key " , " value " } , " imain" , page_size, cache_size, filename);
567+ sqlite_index_blaster sqib (2 , 1 , const_kv , " imain" , page_size, cache_size, filename);
545568 for (int64_t pos = 0 ; pos < data_sz; pos++) {
546569 int8_t vlen;
547570 uint32_t key_len = read_vint32 (data_buf + pos, &vlen);
0 commit comments