Skip to content

Commit 7ff6498

Browse files
committed
fix: fix ci tests
1 parent 6f59556 commit 7ff6498

File tree

1 file changed

+36
-28
lines changed

1 file changed

+36
-28
lines changed

examples/chdbArrowTest.cpp

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
#include "../programs/local/chdb.h"
88
#include "../contrib/arrow/cpp/src/arrow/c/abi.h"
99

10+
// Global test configuration
11+
static constexpr size_t TEST_TOTAL_ROWS = 100000;
12+
static constexpr size_t TEST_BATCH_SIZE = 10000;
13+
1014
// Custom ArrowArrayStream implementation data
1115
struct CustomStreamData
1216
{
@@ -16,7 +20,7 @@ struct CustomStreamData
1620
size_t batch_size;
1721
std::string last_error;
1822

19-
CustomStreamData() : schema_sent(false), current_row(0), total_rows(1000000), batch_size(10000) {}
23+
CustomStreamData() : schema_sent(false), current_row(0), total_rows(TEST_TOTAL_ROWS), batch_size(TEST_BATCH_SIZE) {}
2024

2125
// Reset the stream to allow reading from the beginning
2226
void reset()
@@ -344,7 +348,7 @@ static void test_assert_row_count(chdb_result* result, uint64_t expected_rows, c
344348
void test_arrow_scan(chdb_connection conn)
345349
{
346350
std::cout << "\n=== Creating Custom ArrowArrayStream ===\n";
347-
std::cout << "Data specification: 1,000,000 rows × 2 columns (id: int64, value: string)\n";
351+
std::cout << "Data specification: " << TEST_TOTAL_ROWS << " rows × 2 columns (id: int64, value: string)\n";
348352

349353
struct ArrowArrayStream stream;
350354
memset(&stream, 0, sizeof(stream));
@@ -375,9 +379,9 @@ void test_arrow_scan(chdb_connection conn)
375379
result = chdb_arrow_unregister_table(conn, non_exist_table_name);
376380
test_assert_chdb_state(result, "Unregister non-existent table: " + std::string(non_exist_table_name));
377381

378-
// Test 3: Count rows - should be exactly 1,000,000
382+
// Test 3: Count rows - should be exactly TEST_TOTAL_ROWS
379383
chdb_result * count_result = chdb_query(conn, "SELECT COUNT(*) as total_rows FROM arrowstream(test_arrow_table)", "CSV");
380-
test_assert_row_count(count_result, 1000000, "Count total rows");
384+
test_assert_row_count(count_result, TEST_TOTAL_ROWS, "Count total rows");
381385
chdb_destroy_query_result(count_result);
382386

383387
// Test 4: Sample first 5 rows - should contain id=0,1,2,3,4
@@ -387,31 +391,33 @@ void test_arrow_scan(chdb_connection conn)
387391
test_assert_query_result_contains(sample_result, "4,\"value_4\"", "First 5 rows contain fifth row");
388392
chdb_destroy_query_result(sample_result);
389393

390-
// Test 5: Sample last 5 rows - should contain id=999999,999998,999997,999996,999995
394+
// Test 5: Sample last 5 rows - should contain id=(TEST_TOTAL_ROWS-1) to (TEST_TOTAL_ROWS-5)
391395
reset_arrow_stream(&stream);
392396
chdb_result * last_result = chdb_query(conn, "SELECT * FROM arrowstream(test_arrow_table) ORDER BY id DESC LIMIT 5", "CSV");
393-
test_assert_query_result_contains(last_result, "999999,\"value_999999\"", "Last 5 rows contain last row");
394-
test_assert_query_result_contains(last_result, "999995,\"value_999995\"", "Last 5 rows contain fifth row");
397+
std::string last_row_expected = std::to_string(TEST_TOTAL_ROWS - 1) + ",\"value_" + std::to_string(TEST_TOTAL_ROWS - 1) + "\"";
398+
std::string fifth_last_row_expected = std::to_string(TEST_TOTAL_ROWS - 5) + ",\"value_" + std::to_string(TEST_TOTAL_ROWS - 5) + "\"";
399+
test_assert_query_result_contains(last_result, last_row_expected, "Last 5 rows contain last row");
400+
test_assert_query_result_contains(last_result, fifth_last_row_expected, "Last 5 rows contain fifth row");
395401
chdb_destroy_query_result(last_result);
396402

397403
// Test 6: Multiple table registration tests
398-
// Create second ArrowArrayStream with different data (500,000 rows)
404+
// Create second ArrowArrayStream with different data (50% of TEST_TOTAL_ROWS)
399405
struct ArrowArrayStream stream2;
400406
memset(&stream2, 0, sizeof(stream2));
401407
auto * stream_data2 = new CustomStreamData();
402-
stream_data2->total_rows = 500000; // Different row count
408+
stream_data2->total_rows = TEST_TOTAL_ROWS / 2; // 50% of main table
403409
stream_data2->current_row = 0;
404410
stream2.get_schema = custom_get_schema;
405411
stream2.get_next = custom_get_next;
406412
stream2.get_last_error = custom_get_last_error;
407413
stream2.release = custom_release;
408414
stream2.private_data = stream_data2;
409415

410-
// Create third ArrowArrayStream with different data (100,000 rows)
416+
// Create third ArrowArrayStream with different data (10% of TEST_TOTAL_ROWS)
411417
struct ArrowArrayStream stream3;
412418
memset(&stream3, 0, sizeof(stream3));
413419
auto * stream_data3 = new CustomStreamData();
414-
stream_data3->total_rows = 100000; // Different row count
420+
stream_data3->total_rows = TEST_TOTAL_ROWS / 10; // 10% of main table
415421
stream_data3->current_row = 0;
416422
stream3.get_schema = custom_get_schema;
417423
stream3.get_next = custom_get_next;
@@ -435,17 +441,17 @@ void test_arrow_scan(chdb_connection conn)
435441
// Test 6a: Verify each table has correct row counts
436442
reset_arrow_stream(&stream);
437443
chdb_result * count1_result = chdb_query(conn, "SELECT COUNT(*) FROM arrowstream(test_arrow_table)", "CSV");
438-
test_assert_row_count(count1_result, 1000000, "First table row count");
444+
test_assert_row_count(count1_result, TEST_TOTAL_ROWS, "First table row count");
439445
chdb_destroy_query_result(count1_result);
440446

441447
reset_arrow_stream(&stream2);
442448
chdb_result * count2_result = chdb_query(conn, "SELECT COUNT(*) FROM arrowstream(test_arrow_table_2)", "CSV");
443-
test_assert_row_count(count2_result, 500000, "Second table row count");
449+
test_assert_row_count(count2_result, TEST_TOTAL_ROWS / 2, "Second table row count");
444450
chdb_destroy_query_result(count2_result);
445451

446452
reset_arrow_stream(&stream3);
447453
chdb_result * count3_result = chdb_query(conn, "SELECT COUNT(*) FROM arrowstream(test_arrow_table_3)", "CSV");
448-
test_assert_row_count(count3_result, 100000, "Third table row count");
454+
test_assert_row_count(count3_result, TEST_TOTAL_ROWS / 10, "Third table row count");
449455
chdb_destroy_query_result(count3_result);
450456

451457
// Test 6b: Test cross-table JOIN query
@@ -609,16 +615,16 @@ static void create_arrow_array(struct ArrowArray * array, uint64_t row_count)
609615
void test_arrow_array_scan(chdb_connection conn)
610616
{
611617
std::cout << "\n=== Testing ArrowArray Scan Functions ===\n";
612-
std::cout << "Data specification: 1,000,000 rows × 2 columns (id: int64, value: string)\n";
618+
std::cout << "Data specification: " << TEST_TOTAL_ROWS << " rows × 2 columns (id: int64, value: string)\n";
613619

614620
// Create ArrowSchema (reuse existing function)
615621
struct ArrowSchema schema;
616622
create_schema(&schema);
617623

618-
// Create ArrowArray with 1,000,000 rows
624+
// Create ArrowArray with TEST_TOTAL_ROWS rows
619625
struct ArrowArray array;
620626
memset(&array, 0, sizeof(array));
621-
create_arrow_array(&array, 1000000);
627+
create_arrow_array(&array, TEST_TOTAL_ROWS);
622628

623629
std::cout << "✓ ArrowArray initialization completed\n";
624630
std::cout << "Starting registration with chDB...\n";
@@ -634,7 +640,7 @@ void test_arrow_array_scan(chdb_connection conn)
634640
test_assert_chdb_state(result, "Register ArrowArray to table: " + std::string(table_name));
635641

636642
chdb_result * count_result = chdb_query(conn, "SELECT COUNT(*) as total_rows FROM arrowstream(test_arrow_array_table)", "CSV");
637-
test_assert_row_count(count_result, 1000000, "Count total rows");
643+
test_assert_row_count(count_result, TEST_TOTAL_ROWS, "Count total rows");
638644
chdb_destroy_query_result(count_result);
639645

640646
result = chdb_arrow_unregister_table(conn, table_name);
@@ -661,27 +667,29 @@ void test_arrow_array_scan(chdb_connection conn)
661667
test_assert_chdb_state(result, "Register ArrowArray for last rows query");
662668

663669
chdb_result * last_result = chdb_query(conn, "SELECT * FROM arrowstream(test_arrow_array_table) ORDER BY id DESC LIMIT 5", "CSV");
664-
test_assert_query_result_contains(last_result, "999999,\"value_999999\"", "Last 5 rows contain last row");
665-
test_assert_query_result_contains(last_result, "999995,\"value_999995\"", "Last 5 rows contain fifth row");
670+
std::string last_row_expected = std::to_string(TEST_TOTAL_ROWS - 1) + ",\"value_" + std::to_string(TEST_TOTAL_ROWS - 1) + "\"";
671+
std::string fifth_last_row_expected = std::to_string(TEST_TOTAL_ROWS - 5) + ",\"value_" + std::to_string(TEST_TOTAL_ROWS - 5) + "\"";
672+
test_assert_query_result_contains(last_result, last_row_expected, "Last 5 rows contain last row");
673+
test_assert_query_result_contains(last_result, fifth_last_row_expected, "Last 5 rows contain fifth row");
666674
chdb_destroy_query_result(last_result);
667675

668676
result = chdb_arrow_unregister_table(conn, table_name);
669677
test_assert_chdb_state(result, "Unregister ArrowArray table after last rows query");
670678

671679
// Test 5: Independent multiple table tests
672-
// Create second ArrowArray with different data (500,000 rows)
680+
// Create second ArrowArray with different data (50% of TEST_TOTAL_ROWS)
673681
struct ArrowSchema schema2;
674682
create_schema(&schema2);
675683
struct ArrowArray array2;
676684
memset(&array2, 0, sizeof(array2));
677-
create_arrow_array(&array2, 500000);
685+
create_arrow_array(&array2, TEST_TOTAL_ROWS / 2);
678686

679-
// Create third ArrowArray with different data (100,000 rows)
687+
// Create third ArrowArray with different data (10% of TEST_TOTAL_ROWS)
680688
struct ArrowSchema schema3;
681689
create_schema(&schema3);
682690
struct ArrowArray array3;
683691
memset(&array3, 0, sizeof(array3));
684-
create_arrow_array(&array3, 100000);
692+
create_arrow_array(&array3, TEST_TOTAL_ROWS / 10);
685693

686694
const char * table_name2 = "test_arrow_array_table_2";
687695
const char * table_name3 = "test_arrow_array_table_3";
@@ -691,23 +699,23 @@ void test_arrow_array_scan(chdb_connection conn)
691699
chdb_arrow_schema arrow_schema3 = reinterpret_cast<chdb_arrow_schema>(&schema3);
692700
chdb_arrow_array arrow_array3 = reinterpret_cast<chdb_arrow_array>(&array3);
693701

694-
// Test 5a: Register -> Query -> Unregister for second table (500K rows)
702+
// Test 5a: Register -> Query -> Unregister for second table (50% rows)
695703
result = chdb_arrow_array_scan(conn, table_name2, arrow_schema2, arrow_array2);
696704
test_assert_chdb_state(result, "Register second ArrowArray to table: " + std::string(table_name2));
697705

698706
chdb_result * count2_result = chdb_query(conn, "SELECT COUNT(*) FROM arrowstream(test_arrow_array_table_2)", "CSV");
699-
test_assert_row_count(count2_result, 500000, "Second array table row count");
707+
test_assert_row_count(count2_result, TEST_TOTAL_ROWS / 2, "Second array table row count");
700708
chdb_destroy_query_result(count2_result);
701709

702710
result = chdb_arrow_unregister_table(conn, table_name2);
703711
test_assert_chdb_state(result, "Unregister second ArrowArray table");
704712

705-
// Test 5b: Register -> Query -> Unregister for third table (100K rows)
713+
// Test 5b: Register -> Query -> Unregister for third table (10% rows)
706714
result = chdb_arrow_array_scan(conn, table_name3, arrow_schema3, arrow_array3);
707715
test_assert_chdb_state(result, "Register third ArrowArray to table: " + std::string(table_name3));
708716

709717
chdb_result * count3_result = chdb_query(conn, "SELECT COUNT(*) FROM arrowstream(test_arrow_array_table_3)", "CSV");
710-
test_assert_row_count(count3_result, 100000, "Third array table row count");
718+
test_assert_row_count(count3_result, TEST_TOTAL_ROWS / 10, "Third array table row count");
711719
chdb_destroy_query_result(count3_result);
712720

713721
result = chdb_arrow_unregister_table(conn, table_name3);

0 commit comments

Comments
 (0)