Merge branch 'master' of https://github.com/sunyinqi0508/AQuery2
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
## Windows
|
||||
- clang-msvc:
|
||||
- "%CXX%" -D_CRT_SECURE_NO_WARNINGS -shared server/server.cpp server/winhelper.cpp server/monetdb_conn.cpp -Imonetdb/msvc -Lmonetdb/msvc -lmonetdbe.lib --std=c++2a -o server.so
|
||||
- os.add_dll_directory(os.path.abspath('./monetdb/msvc'))
|
||||
- gcc-mingw (link w/ msvc monetdb):
|
||||
- "%CXX%" -shared -fPIC server/server.cpp server/winhelper.cpp server/monetdb_conn.cpp -Imonetdb/msvc msc-plugin/monetdbe.dll --std=c++2a -o server.so
|
||||
- os.add_dll_directory('c:/msys64/usr/bin')
|
||||
- os.add_dll_directory(os.path.abspath('./monetdb/msvc'))
|
||||
- gcc-mingw (link w/ mingw monetdb, can only load under mingw python):
|
||||
- $(CXX) server/server.cpp server/monetdb_conn.cpp -fPIC -shared $(OS_SUPPORT) --std=c++1z -O3 -march=native -o server.so -I./monetdb/msys64 -L./lib -lmonetdbe
|
||||
- add_dll_dir(os.path.abspath('./lib'))
|
||||
- msvc:
|
||||
- D:\gg\vs22\MSBuild\Current\Bin\msbuild "d:\gg\AQuery++\server\server.vcxproj" /p:configuration=Release /p:platform=x64
|
||||
- os.add_dll_directory(os.path.abspath('./monetdb/msvc'))
|
||||
@@ -100,6 +100,8 @@
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)\..\monetdb\msvc</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderOutputFile>../libaquery.pch</PrecompiledHeaderOutputFile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@@ -161,6 +163,8 @@
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)\..\monetdb\msvc</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeaderOutputFile>../libaquery.pch</PrecompiledHeaderOutputFile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
||||
@@ -108,6 +108,7 @@
|
||||
<PrecompiledHeaderFile>./server/pch.hpp</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>../libaquery.pch</PrecompiledHeaderOutputFile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@@ -178,6 +179,7 @@
|
||||
<PrecompiledHeaderFile>./server/pch.hpp</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>../libaquery.pch</PrecompiledHeaderOutputFile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
||||
@@ -98,6 +98,8 @@
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<LanguageStandard_C>stdc17</LanguageStandard_C>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@@ -130,6 +132,8 @@
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<LanguageStandard_C>stdc17</LanguageStandard_C>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
||||
+29
-20
@@ -320,35 +320,44 @@ int test_main()
|
||||
Server* server = reinterpret_cast<Server*>(cxt->alt_server);
|
||||
|
||||
const char* qs[]= {
|
||||
"CREATE TABLE test1(a INT, b INT, c INT, d INT);",
|
||||
"COPY OFFSET 2 INTO test1 FROM 'w:/gg/AQuery++/data/test.csv' ON SERVER USING DELIMITERS ',';",
|
||||
"SELECT sum(a), b, d, c FROM test1 GROUP BY c, b, d ORDER BY b ;",
|
||||
"QCREATE TABLE trade(stocksymbol INT, time INT, quantity INT, price INT);",
|
||||
"QCOPY OFFSET 2 INTO trade FROM 'w:/gg/AQuery++/data/trade_numerical.csv' ON SERVER USING DELIMITERS ',';",
|
||||
"QSELECT stocksymbol, (SUM((quantity * price)) / SUM(quantity)) AS weighted_average FROM trade GROUP BY stocksymbol ;",
|
||||
"Pdll_5lYrMY",
|
||||
"QSELECT stocksymbol, price FROM trade ORDER BY time ;",
|
||||
"Pdll_4Sg6Ri",
|
||||
"QSELECT stocksymbol, quantity, price FROM trade ORDER BY time ;",
|
||||
"Pdll_5h4kL2",
|
||||
"QSELECT stocksymbol, price FROM trade ORDER BY time ;",
|
||||
"Pdll_7tEWCO",
|
||||
"QSELECT query_c.weighted_moving_averages, query_c.stocksymbol FROM query_c;",
|
||||
"Pdll_7FCPnF"
|
||||
};
|
||||
n_recv = sizeof(qs)/(sizeof (char*));
|
||||
n_recvd = const_cast<char**>(qs);
|
||||
if (n_recv > 0) {
|
||||
void* handle = 0;
|
||||
handle = dlopen("./dll.so", RTLD_LAZY);
|
||||
cxt->init_session();
|
||||
for (int i = 0; i < n_recv; ++i)
|
||||
{
|
||||
server->exec(n_recvd[i]);
|
||||
//printf("%s, %d\n", n_recvd[i], n_recvd[i][0] == 'Q');
|
||||
switch (n_recvd[i][0]) {
|
||||
case 'Q': // SQL query for monetdbe
|
||||
{
|
||||
server->exec(n_recvd[i] + 1);
|
||||
printf("Exec Q%d: %s\n", i, n_recvd[i]);
|
||||
}
|
||||
break;
|
||||
case 'P': // Postprocessing procedure
|
||||
if (handle && !server->haserror()) {
|
||||
code_snippet c = reinterpret_cast<code_snippet>(dlsym(handle, n_recvd[i] + 1));
|
||||
c(cxt);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
n_recv = 0;
|
||||
}
|
||||
|
||||
cxt->log_level = LOG_INFO;
|
||||
puts(cpp_17 ?"true":"false");
|
||||
void* handle = dlopen("./dll.so", RTLD_LAZY);
|
||||
cxt->log("handle: %p\n", handle);
|
||||
if (handle) {
|
||||
cxt->log("inner\n");
|
||||
code_snippet c = reinterpret_cast<code_snippet>(dlsym(handle, "dll_C4nJZu"));
|
||||
cxt->log("routine: %p\n", c);
|
||||
if (c) {
|
||||
cxt->log("inner\n");
|
||||
cxt->log("return: %d\n", c(cxt));
|
||||
}
|
||||
dlclose(handle);
|
||||
}
|
||||
//static_assert(std::is_same_v<decltype(fill_integer_array<5, 1>()), std::integer_sequence<bool, 1,1,1,1,1>>, "");
|
||||
|
||||
return 0;
|
||||
|
||||
+4
-1
@@ -423,7 +423,10 @@ struct TableInfo {
|
||||
template <int ...vals> struct applier {
|
||||
inline constexpr static void apply(const TableInfo<Types...>& t, const char* __restrict sep = ",", const char* __restrict end = "\n",
|
||||
const vector_type<uint32_t>* __restrict view = nullptr, FILE* __restrict fp = nullptr)
|
||||
{ t.template print2<vals ...>(sep, end, view, fp); }};
|
||||
{
|
||||
t.template print2<vals ...>(sep, end, view, fp);
|
||||
}
|
||||
};
|
||||
|
||||
inline void printall(const char* __restrict sep = ",", const char* __restrict end = "\n",
|
||||
const vector_type<uint32_t>* __restrict view = nullptr, FILE* __restrict fp = nullptr) {
|
||||
|
||||
@@ -169,7 +169,6 @@ namespace types {
|
||||
template<class T>
|
||||
using GetLongType = typename GetLongTypeImpl<typename std::decay<T>::type>::type;
|
||||
|
||||
|
||||
template<class T>
|
||||
struct GetLongerTypeImpl {
|
||||
using type = Cond(
|
||||
|
||||
Reference in New Issue
Block a user