Skip to content

Commit 974593d

Browse files
committed
rebase. adding json flow
Signed-off-by: galsalomon66 <gal.salomon@gmail.com>
1 parent 0fc3e73 commit 974593d

File tree

6 files changed

+27
-22
lines changed

6 files changed

+27
-22
lines changed

example/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
add_executable(s3select_example s3select_example.cpp)
22
target_include_directories(s3select_example PUBLIC ../include ../rapidjson/include)
33
add_executable(s3select_scaleup s3select_scaleup.cpp)
4-
target_include_directories(s3select_scaleup PUBLIC ../include)
4+
target_include_directories(s3select_scaleup PUBLIC ../include ../rapidjson/include)
55

66
find_package(Arrow QUIET)
77

example/s3select_example.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@ int run_on_localFile(char* input_query)
458458
s3select_result result;
459459
s3selectEngine::csv_object::csv_defintions csv;
460460
csv.use_header_info = false;
461+
bool do_aggregate = false;
461462
//csv.column_delimiter='|';
462463
//csv.row_delimiter='\t';
463464

include/s3select.h

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2723,7 +2723,7 @@ class json_object : public base_s3object
27232723
JsonParserHandler JsonHandler;
27242724
size_t m_processed_bytes;
27252725
bool m_end_of_stream;
2726-
std::string s3select_result;
2726+
s3select_result m_result;
27272727
size_t m_row_count;
27282728
bool star_operation_ind;
27292729
std::string m_error_description;
@@ -2792,23 +2792,23 @@ class json_object : public base_s3object
27922792
//execute statement on row
27932793
//create response (TODO callback)
27942794

2795-
size_t result_len = s3select_result.size();
2795+
size_t result_len = m_result.size();
27962796
int status=0;
27972797
try{
2798-
status = getMatchRow(s3select_result);
2798+
status = getMatchRow(m_result);
27992799
}
28002800
catch(s3selectEngine::base_s3select_exception& e)
28012801
{
2802-
sql_error_handling(e,s3select_result);
2802+
sql_error_handling(e,m_result.str());
28032803
status = -1;
28042804
}
28052805

28062806
m_sa->clear_data();
2807-
if(star_operation_ind && (s3select_result.size() != result_len))
2807+
if(star_operation_ind && (m_result.size() != result_len))
28082808
{//as explained above the star-operation is displayed differently
28092809
std::string end_of_row;
28102810
end_of_row = "#=== " + std::to_string(m_row_count++) + " ===#\n";
2811-
s3select_result.append(end_of_row);
2811+
m_result.append(end_of_row);
28122812
}
28132813
return status;
28142814
}
@@ -2833,10 +2833,10 @@ class json_object : public base_s3object
28332833
//the error-handling takes care of the error flow.
28342834
m_error_description = e.what();
28352835
m_error_count++;
2836-
s3select_result.append(std::to_string(m_error_count));
2837-
s3select_result += " : ";
2838-
s3select_result.append(m_error_description);
2839-
s3select_result += m_csv_defintion.output_row_delimiter;
2836+
m_result.append(std::to_string(m_error_count));
2837+
m_result.append(std::string(" : "));
2838+
m_result.append(m_error_description);
2839+
m_result.append(&m_csv_defintion.output_row_delimiter,1);
28402840
}
28412841

28422842
public:
@@ -2845,21 +2845,21 @@ class json_object : public base_s3object
28452845
{
28462846
int status=0;
28472847
m_processed_bytes += stream_length;
2848-
s3select_result.clear();
2848+
m_result.clear();
28492849

28502850
if(!stream_length || !json_stream)//TODO m_processed_bytes(?)
28512851
{//last processing cycle
28522852
JsonHandler.process_json_buffer(0, 0, true);//TODO end-of-stream = end-of-row
28532853
m_end_of_stream = true;
28542854
sql_execution_on_row_cb();
2855-
result = s3select_result;
2855+
result = m_result.str();
28562856
return 0;
28572857
}
28582858

28592859
try{
28602860
//the handler is processing any buffer size and return results per each buffer
28612861
status = JsonHandler.process_json_buffer((char*)json_stream, stream_length);
2862-
result = s3select_result;//TODO remove this result copy
2862+
result = m_result.str();//TODO remove this result copy
28632863
}
28642864
catch(std::exception &e)
28652865
{
@@ -2878,6 +2878,8 @@ class json_object : public base_s3object
28782878

28792879
~json_object() = default;
28802880

2881+
};
2882+
28812883
class merge_results : public base_s3object
28822884
{//purpose: upon processing several stream on a single aggregate query, this object should merge results.
28832885

include/s3select_oper.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,6 +1335,8 @@ class base_statement
13351335
m_projection_alias(nullptr), m_eval_stack_depth(0), m_skip_non_aggregate_op(false),
13361336
execution_phase(multiple_executions_en::NA){}
13371337

1338+
multiple_executions_en execution_phase;
1339+
13381340
virtual value& eval()
13391341
{
13401342
//purpose: on aggregation flow to run only the correct subtree(aggregation subtree)

test/s3select_test.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -825,8 +825,7 @@ void test_single_column_single_row(const char* input_query,const char* expected_
825825
#ifdef _ARROW_EXIST
826826
parquet_csv_report_error(parquet_result.str(),csv_result.str());
827827
#endif
828-
json_csv_report_error(json_result, s3select_result);
829-
ASSERT_EQ(s3select_result, std::string(expected_result));
828+
json_csv_report_error(json_result, csv_result.str());
830829
ASSERT_EQ(csv_result.str(), std::string(expected_result));
831830
}
832831

@@ -2664,7 +2663,8 @@ void generate_csv_quote_and_escape(std::string& out, char quote = '"', char escp
26642663

26652664
TEST(TestS3selectFunctions, csv_quote_string_and_escape_char)
26662665
{
2667-
std::string input, s3select_result_1, s3select_result_2, s3select_result_3;
2666+
std::string input;
2667+
s3select_result s3select_result_1, s3select_result_2, s3select_result_3;
26682668
csv_object::csv_defintions csv;
26692669
generate_csv_quote_and_escape(input);
26702670
s3select s3select_syntax1, s3select_syntax2, s3select_syntax3;
@@ -2683,7 +2683,7 @@ TEST(TestS3selectFunctions, csv_quote_string_and_escape_char)
26832683
s3selectEngine::csv_object s3_csv_object_second(&s3select_syntax2, csv);
26842684
s3_csv_object_second.run_s3select_on_object(s3select_result_2, input.c_str(), input.size(), false, false, true);
26852685

2686-
EXPECT_EQ(s3select_result_1, s3select_result_2);
2686+
EXPECT_EQ(s3select_result_1.str(), s3select_result_2.str());
26872687

26882688
csv.escape_char = '\0';
26892689
csv.quot_char = '\0';
@@ -2695,13 +2695,13 @@ TEST(TestS3selectFunctions, csv_quote_string_and_escape_char)
26952695
s3selectEngine::csv_object s3_csv_object_third(&s3select_syntax3, csv);
26962696
s3_csv_object_third.run_s3select_on_object(s3select_result_3, input.c_str(), input.size(), false, false, true);
26972697

2698-
EXPECT_EQ(s3select_result_3, input);
2698+
EXPECT_EQ(s3select_result_3.str(), input);
26992699
}
27002700

27012701
TEST(TestS3selectFunctions, csv_comment_line_and_trim_char)
27022702
{
27032703
std::string input;
2704-
std::string s3select_result_1, s3select_result_2;
2704+
s3select_result s3select_result_1, s3select_result_2;
27052705
generate_csv_quote_and_escape(input);
27062706
s3select s3select_syntax;
27072707

@@ -2725,7 +2725,7 @@ TEST(TestS3selectFunctions, csv_comment_line_and_trim_char)
27252725
s3selectEngine::csv_object s3_csv_object_second(&s3select_syntax, csv);
27262726
s3_csv_object_second.run_s3select_on_object(s3select_result_2, input.c_str(), input.size(), false, false, true);
27272727

2728-
EXPECT_EQ(s3select_result_1, s3select_result_2);
2728+
EXPECT_EQ(s3select_result_1.str(), s3select_result_2.str());
27292729
}
27302730

27312731
TEST(TestS3selectFunctions, presto_syntax_alignments)

test/s3select_test.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ std::string run_s3select(std::string expression,std::string input, const char* j
691691
}
692692

693693
run_json_query(json_query, js, json_result);
694-
json_csv_report_error(json_result, s3select_result);
694+
json_csv_report_error(json_result, csv_result.str());
695695

696696
return csv_result.str();
697697
}

0 commit comments

Comments
 (0)