| 
						
						
						
					 | 
					 | 
					@ -1,8 +1,8 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "./server/aggregations.h"
 | 
					 | 
					 | 
					 | 
					#include "./server/aggregations.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include <unordered_map>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "csv.h"
 | 
					 | 
					 | 
					 | 
					#include "csv.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "./server/libaquery.h"
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "./server/hasher.h"
 | 
					 | 
					 | 
					 | 
					#include "./server/hasher.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <unordered_map>
 | 
					 | 
					 | 
					 | 
					#include "./server/libaquery.h"
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    extern "C" int __DLLEXPORT__ dllmain(Context* cxt) { 
 | 
					 | 
					 | 
					 | 
					    extern "C" int __DLLEXPORT__ dllmain(Context* cxt) { 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        using namespace std;
 | 
					 | 
					 | 
					 | 
					        using namespace std;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -18,40 +18,40 @@ test_a.init("a");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_b.init("b");
 | 
					 | 
					 | 
					 | 
					test_b.init("b");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_c.init("c");
 | 
					 | 
					 | 
					 | 
					test_c.init("c");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_d.init("d");
 | 
					 | 
					 | 
					 | 
					test_d.init("d");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					io::CSVReader<4> csv_reader_1qh80y("test.csv");
 | 
					 | 
					 | 
					 | 
					io::CSVReader<4> csv_reader_6pX2fy("test.csv");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					csv_reader_1qh80y.read_header(io::ignore_extra_column, "a","b","c","d");
 | 
					 | 
					 | 
					 | 
					csv_reader_6pX2fy.read_header(io::ignore_extra_column, "a","b","c","d");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int tmp_6JfuovoZ;
 | 
					 | 
					 | 
					 | 
					int tmp_1E7DxvaO;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int tmp_4B4ADRgW;
 | 
					 | 
					 | 
					 | 
					int tmp_5JwTTT4O;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int tmp_3JHd3elW;
 | 
					 | 
					 | 
					 | 
					int tmp_3gbplDAu;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int tmp_1heR8kZw;
 | 
					 | 
					 | 
					 | 
					int tmp_XK4BgA6z;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					while(csv_reader_1qh80y.read_row(tmp_6JfuovoZ,tmp_4B4ADRgW,tmp_3JHd3elW,tmp_1heR8kZw)) { 
 | 
					 | 
					 | 
					 | 
					while(csv_reader_6pX2fy.read_row(tmp_1E7DxvaO,tmp_5JwTTT4O,tmp_3gbplDAu,tmp_XK4BgA6z)) { 
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_a.emplace_back(tmp_6JfuovoZ);
 | 
					 | 
					 | 
					 | 
					test_a.emplace_back(tmp_1E7DxvaO);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_b.emplace_back(tmp_4B4ADRgW);
 | 
					 | 
					 | 
					 | 
					test_b.emplace_back(tmp_5JwTTT4O);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_c.emplace_back(tmp_3JHd3elW);
 | 
					 | 
					 | 
					 | 
					test_c.emplace_back(tmp_3gbplDAu);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					test_d.emplace_back(tmp_1heR8kZw);
 | 
					 | 
					 | 
					 | 
					test_d.emplace_back(tmp_XK4BgA6z);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					typedef record<decltype(test_a[0]),decltype(test_b[0]),decltype(test_d[0])> record_type3he5qd1;
 | 
					 | 
					 | 
					 | 
					typedef record<decltype(test_a[0]),decltype(test_b[0]),decltype(test_d[0])> record_type61iBrX3;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					unordered_map<record_type3he5qd1, vector_type<uint32_t>, transTypes<record_type3he5qd1, hasher>> g59vWI2v;
 | 
					 | 
					 | 
					 | 
					unordered_map<record_type61iBrX3, vector_type<uint32_t>, transTypes<record_type61iBrX3, hasher>> g7sUysrP;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					for (uint32_t i3P = 0; i3P < test_a.size; ++i3P){
 | 
					 | 
					 | 
					 | 
					for (uint32_t i2I = 0; i2I < test_a.size; ++i2I){
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					g59vWI2v[forward_as_tuple(test_a[i3P],test_b[i3P],test_d[i3P])].emplace_back(i3P);
 | 
					 | 
					 | 
					 | 
					g7sUysrP[forward_as_tuple(test_a[i2I],test_b[i2I],test_d[i2I])].emplace_back(i2I);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto out_6JAp = new TableInfo<decays<decltype(sum(test_c))>,value_type<decays<decltype(test_b)>>,value_type<decays<decltype(test_d)>>>("out_6JAp", 3);
 | 
					 | 
					 | 
					 | 
					auto out_1SHu = new TableInfo<decays<decltype(sum(test_c))>,value_type<decays<decltype(test_b)>>,value_type<decays<decltype(test_d)>>>("out_1SHu", 3);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					cxt->tables.insert({"out_6JAp", out_6JAp});
 | 
					 | 
					 | 
					 | 
					cxt->tables.insert({"out_1SHu", out_1SHu});
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto& out_6JAp_sumtestc = *(ColRef<decays<decltype(sum(test_c))>> *)(&out_6JAp->colrefs[0]);
 | 
					 | 
					 | 
					 | 
					auto& out_1SHu_sumtestc = *(ColRef<decays<decltype(sum(test_c))>> *)(&out_1SHu->colrefs[0]);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto& out_6JAp_b = *(ColRef<value_type<decays<decltype(test_b)>>> *)(&out_6JAp->colrefs[1]);
 | 
					 | 
					 | 
					 | 
					auto& out_1SHu_b = *(ColRef<value_type<decays<decltype(test_b)>>> *)(&out_1SHu->colrefs[1]);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto& out_6JAp_d = *(ColRef<value_type<decays<decltype(test_d)>>> *)(&out_6JAp->colrefs[2]);
 | 
					 | 
					 | 
					 | 
					auto& out_1SHu_d = *(ColRef<value_type<decays<decltype(test_d)>>> *)(&out_1SHu->colrefs[2]);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_sumtestc.init("sumtestc");
 | 
					 | 
					 | 
					 | 
					out_1SHu_sumtestc.init("sumtestc");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_b.init("b");
 | 
					 | 
					 | 
					 | 
					out_1SHu_b.init("b");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_d.init("d");
 | 
					 | 
					 | 
					 | 
					out_1SHu_d.init("d");
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					for(auto& i2Y : g59vWI2v) {
 | 
					 | 
					 | 
					 | 
					for(auto& i64 : g7sUysrP) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto &key_1yBYhdd = i2Y.first;
 | 
					 | 
					 | 
					 | 
					auto &key_645kbJO = i64.first;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto &val_61QXy6G = i2Y.second;
 | 
					 | 
					 | 
					 | 
					auto &val_1UnUa89 = i64.second;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_sumtestc.emplace_back(sum(test_c[val_61QXy6G]));
 | 
					 | 
					 | 
					 | 
					out_1SHu_sumtestc.emplace_back(sum(test_c[val_1UnUa89]));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_b.emplace_back(get<1>(key_1yBYhdd));
 | 
					 | 
					 | 
					 | 
					out_1SHu_b.emplace_back(get<1>(key_645kbJO));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					out_6JAp_d.emplace_back(get<2>(key_1yBYhdd));
 | 
					 | 
					 | 
					 | 
					out_1SHu_d.emplace_back(get<2>(key_645kbJO));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					auto d1dyPtv0 = out_6JAp->order_by_view<-3,1>();
 | 
					 | 
					 | 
					 | 
					auto d6tAcglo = out_1SHu->order_by_view<-3,1>();
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					print(d1dyPtv0);
 | 
					 | 
					 | 
					 | 
					print(d6tAcglo);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					return 0;
 | 
					 | 
					 | 
					 | 
					return 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 |