Skip to content

Commit f82ae1a

Browse files
release3.00.3
1 parent bac9e24 commit f82ae1a

File tree

133 files changed

+86412
-67684
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+86412
-67684
lines changed

CMakeLists.txt

Lines changed: 14 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ option(WITH_UNITTEST "Compile testcases." OFF)
1313

1414
add_library(${CMAKE_PROJECT_NAME})
1515
target_compile_features(${CMAKE_PROJECT_NAME} PRIVATE cxx_std_11)
16-
add_subdirectory(src)
16+
target_compile_features(${CMAKE_PROJECT_NAME} PRIVATE c_std_99)
17+
18+
if (API_TEST)
19+
add_subdirectory(test)
20+
endif()
1721

1822
if (USE_OPENSSL)
1923
if (NOT LINK_SHARED_LIBS)
@@ -22,9 +26,8 @@ if (USE_OPENSSL)
2226
# FindOpenSSL from cmake
2327
find_package(OpenSSL)
2428
if (OPENSSL_FOUND)
29+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
2530
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE USE_OPENSSL)
26-
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${OPENSSL_INCLUDE_DIR})
27-
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
2831
else()
2932
message(WARNING
3033
"Failed to compile ${CMAKE_PROJECT_NAME} with OpenSSL. Encrypted communication features are unavailable.\n"
@@ -122,67 +125,13 @@ if (WITH_UNITTEST)
122125
)
123126
endif()
124127

125-
if (API_TEST)
126-
if (NOT DEFINED TEST_BINARY_NAME)
127-
set(TEST_BINARY_NAME ${CMAKE_PROJECT_NAME}_test) # default test binary name is DolphinDBAPI_test
128-
endif()
129-
option(COMPATI "this is a compatibility testing parameter" OFF)
130-
if (COMPATI AND DEFINED ENV{COMPATI_PATH})
131-
set(COMPATI_PATH $ENV{COMPATI_PATH})
132-
file(GLOB COMPATI_SRC "${COMPATI_PATH}/*_gtest.cpp" "${COMPATI_PATH}/gt_main.cpp")
133-
add_executable(${TEST_BINARY_NAME}
134-
${COMPATI_SRC}
135-
"test/config.cpp"
136-
)
137-
else()
138-
file(GLOB TEST_SRC "test/*_gtest.cpp" "test/gt_main.cpp")
139-
add_executable(${TEST_BINARY_NAME}
140-
${TEST_SRC}
141-
"test/config.cpp"
142-
"test/concurrent_testing/ConcurrentTest_gtest.cpp"
143-
"test/HA_testing/HighAvailableTest_gtest.cpp"
144-
)
145-
endif()
146-
147-
148-
if(USE_OPENSSL AND OPENSSL_FOUND)
149-
target_compile_definitions(${TEST_BINARY_NAME} PRIVATE TEST_OPENSSL)
150-
endif()
151-
if(USE_AERON AND HAS_AERON)
152-
target_compile_definitions(${TEST_BINARY_NAME} PRIVATE TEST_AERON)
153-
endif()
154-
155-
if (MSVC)
156-
target_compile_options(${TEST_BINARY_NAME} PRIVATE /W0 /utf-8 /MP /bigobj)
157-
target_compile_definitions(${TEST_BINARY_NAME} PRIVATE WINDOWS NOMINMAX WIN32_LEAN_AND_MEAN)
158-
elseif (MINGW)
159-
target_compile_options(${TEST_BINARY_NAME} PRIVATE -w -Wa,-mbig-obj -pthread -std=c++11 -g -O0)
160-
target_compile_definitions(${TEST_BINARY_NAME} PRIVATE WINDOWS _WIN32_WINNT=0x0600)
161-
else()
162-
target_compile_options(${TEST_BINARY_NAME} PRIVATE -w -pthread -std=c++11 -g -O0)
163-
endif()
164-
165-
if(CMAKE_VERSION VERSION_GREATER "3.27.0")
166-
cmake_policy(SET CMP0144 NEW)
167-
endif()
168-
169-
find_package(GTest 1.12.0 REQUIRED)
170-
if (NOT DEFINED API_INSTALL_DIR)
171-
set(API_INSTALL_LIB ${CMAKE_PROJECT_NAME})
172-
else()
173-
if (MSVC)
174-
set(LIB_NAME "${CMAKE_SHARED_LIBRARY_PREFIX}${CMAKE_PROJECT_NAME}.lib")
175-
else()
176-
set(LIB_NAME "${CMAKE_SHARED_LIBRARY_PREFIX}${CMAKE_PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
177-
endif()
178-
set(API_INSTALL_LIB ${API_INSTALL_DIR}/${LIB_NAME})
179-
endif()
180-
target_include_directories(${TEST_BINARY_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/include)
181-
182-
target_link_libraries(${TEST_BINARY_NAME} PRIVATE
183-
${API_INSTALL_LIB}
184-
GTest::gtest
185-
GTest::gmock
186-
GTest::gtest_main
128+
if (UNIX)
129+
file(GLOB HEADER_FILES "include/*.h")
130+
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${HEADER_FILES}")
131+
include(GNUInstallDirs)
132+
install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}
133+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dolphindb
187134
)
188135
endif()
136+
137+
add_subdirectory(src)

demo/src/DemoDBConnectionPool.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include "DolphinDB.h"
2+
#include <iostream>
3+
using namespace dolphindb;
4+
using namespace std;
5+
6+
int main()
7+
{
8+
auto cv = std::make_shared<std::condition_variable>();
9+
DBConnectionPool p("127.0.0.1", 8848, 1, "admin", "123456");
10+
int id = p.run("version()", cv);
11+
std::mutex cv_m;
12+
std::unique_lock<std::mutex> lk(cv_m);
13+
cv->wait(lk, [id, &p] {
14+
return p.isFinished(id);
15+
});
16+
std::cout << p.getData(id)->getString() << std::endl;
17+
}

demo/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ using namespace std;
88
int main()
99
{
1010
DBConnection conn;
11-
bool ret = conn.connect("127.0.0.1", 8848);
11+
bool ret = conn.connect("127.0.0.1", 8848, "admin", "123456");
1212
if (!ret) {
1313
cout << "Failed to connect to the server" << endl;
1414
return 0;

include/AsynWorker.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Copyright © 2018-2025 DolphinDB, Inc.
33
#pragma once
44

5+
#include <utility>
6+
57
#include "Concurrent.h"
68
#include "DBConnectionPoolImpl.h"
79

@@ -10,23 +12,23 @@ class DBConnection;
1012
class AsynWorker: public Runnable {
1113
public:
1214
using Task = DBConnectionPoolImpl::Task;
13-
AsynWorker(DBConnectionPoolImpl& pool, CountDownLatchSP latch, const SmartPointer<DBConnection>& conn,
14-
const SmartPointer<SynchronizedQueue<Task>>& queue, TaskStatusMgmt& status,
15-
const std::string& hostName, const std::string& userId , const std::string& password)
15+
AsynWorker(DBConnectionPoolImpl& pool, const CountDownLatchSP &latch, const std::shared_ptr<DBConnection>& conn,
16+
const std::shared_ptr<SynchronizedQueue<Task>>& queue, TaskStatusMgmt& status,
17+
std::string hostName, std::string userId , std::string password)
1618
: pool_(pool), latch_(latch), conn_(conn), queue_(queue),taskStatus_(status),
17-
hostName_(hostName), userId_(userId), password_(password){}
19+
hostName_(std::move(hostName)), userId_(std::move(userId)), password_(std::move(password)){}
1820
protected:
19-
virtual void run();
21+
void run() override;
2022

2123
private:
2224
DBConnectionPoolImpl& pool_;
2325
CountDownLatchSP latch_;
24-
SmartPointer<DBConnection> conn_;
25-
SmartPointer<SynchronizedQueue<Task>> queue_;
26+
std::shared_ptr<DBConnection> conn_;
27+
std::shared_ptr<SynchronizedQueue<Task>> queue_;
2628
TaskStatusMgmt& taskStatus_;
2729
const std::string hostName_;
2830
const std::string userId_;
2931
const std::string password_;
3032
};
3133

32-
}
34+
} // namespace dolphindb

include/BatchTableWriter.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44

55
#include "Exports.h"
66
#include "Concurrent.h"
7-
#include "Types.h"
8-
#include "Exceptions.h"
97
#include "Constant.h"
108
#include "Dictionary.h"
9+
#include "Exceptions.h"
1110
#include "Table.h"
12-
#include <unordered_map>
13-
#include <string>
14-
#include <vector>
15-
#include <memory>
11+
#include "Types.h"
12+
#include <cassert>
1613
#include <functional>
14+
#include <memory>
15+
#include <string>
16+
#include <thread>
1717
#include <tuple>
18-
#include <cassert>
18+
#include <unordered_map>
19+
#include <vector>
1920

2021
#ifdef _MSC_VER
2122
#pragma warning( push )
@@ -30,7 +31,7 @@ class EXPORT_DECL BatchTableWriter {
3031
/**
3132
* If fail to connect to the specified DolphinDB server, this function throw an exception.
3233
*/
33-
BatchTableWriter(const std::string& hostName, int port, const std::string& userId, const std::string& password, bool acquireLock=true);
34+
BatchTableWriter(std::string hostName, int port, std::string userId, std::string password, bool acquireLock=true);
3435

3536
virtual ~BatchTableWriter();
3637

@@ -115,7 +116,7 @@ class EXPORT_DECL BatchTableWriter {
115116
std::string createTmpSharedTable;
116117
SynchronizedQueue<std::vector<ConstantSP>> writeQueue;
117118
SynchronizedQueue<std::vector<ConstantSP>> saveQueue;
118-
ThreadSP writeThread;
119+
std::thread writeThread;
119120
TableSP writeTable;
120121

121122
Mutex writeMutex;
@@ -126,15 +127,15 @@ class EXPORT_DECL BatchTableWriter {
126127
bool finished = false;
127128
};
128129
//write failed or no data
129-
bool writeTableAllData(SmartPointer<DestTable> destTable,bool partitioned);
130+
bool writeTableAllData(const SmartPointer<DestTable>& destTable,bool partitioned);
130131
void insertRecursive(std::vector<ConstantSP>* row, DestTable* destTable, int colIndex){
131132
assert(colIndex == destTable->columnNum);
132133
std::ignore = colIndex;
133134
RWLockGuard<RWLock> _(&rwLock, false, acquireLock_);
134135
if(destTable->finished){
135136
throw RuntimeException(std::string("Failed to insert data. Error writing data in backgroud thread. Please use getUnwrittenData to get data not written to server and remove talbe (") + destTable->dbName + " " + destTable->tableName + ").");
136137
}
137-
destTable->writeQueue.push(std::move(*row));
138+
destTable->writeQueue.push(*row);
138139
destTable->writeNotifier.notify();
139140
}
140141

@@ -161,19 +162,19 @@ class EXPORT_DECL BatchTableWriter {
161162
throw RuntimeException("Failed to insert data, unsupported data type.");
162163
}
163164
ConstantSP createObject(int dataType, Constant* val);
164-
ConstantSP createObject(int dataType, ConstantSP val);
165+
ConstantSP createObject(int dataType, const ConstantSP& val);
165166
ConstantSP createObject(int dataType, char val);
166167
ConstantSP createObject(int dataType, short val);
167168
ConstantSP createObject(int dataType, const char* val);
168-
ConstantSP createObject(int dataType, std::string val);
169+
ConstantSP createObject(int dataType, const std::string& val);
169170
ConstantSP createObject(int dataType, const unsigned char* val);
170171
ConstantSP createObject(int dataType, unsigned char val[]);
171172
ConstantSP createObject(int dataType, long long val);
172173
ConstantSP createObject(int dataType, float val);
173174
ConstantSP createObject(int dataType, double val);
174175
ConstantSP createObject(int dataType, int val);
175176

176-
private:
177+
177178
const std::string hostName_;
178179
const int port_;
179180
const std::string userId_;
@@ -192,7 +193,7 @@ class EXPORT_DECL BatchTableWriter {
192193
};
193194

194195

195-
}
196+
} // namespace dolphindb
196197

197198
#ifdef _MSC_VER
198199
#pragma warning( pop )

include/Compress.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace dolphindb {
1010

1111
class CompressEncoderDecoder;
12-
typedef SmartPointer<CompressEncoderDecoder> CompressEncoderDecoderSP;
12+
using CompressEncoderDecoderSP = SmartPointer<CompressEncoderDecoder>;
1313

1414
class CompressionFactory {
1515
public:
@@ -30,37 +30,37 @@ class CompressionFactory {
3030
};
3131
#pragma pack ()
3232
static CompressEncoderDecoderSP GetEncodeDecoder(COMPRESS_METHOD type);
33-
static IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, Header &header);
33+
static IO_ERR decode(const DataInputStreamSP& compressSrc, DataOutputStreamSP &uncompressResult, Header &header);
3434
static IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, Header &header, bool checkSum);
3535
};
3636

3737
class CompressEncoderDecoder {
3838
public:
3939
virtual IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, const CompressionFactory::Header &header) = 0;
4040
virtual IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, CompressionFactory::Header &header, bool checkSum) = 0;
41-
virtual ~CompressEncoderDecoder(){}
41+
virtual ~CompressEncoderDecoder() = default;
4242
};
4343

4444
class CompressLZ4 : public CompressEncoderDecoder {
4545
public:
46-
virtual IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, const CompressionFactory::Header &header) override;
47-
virtual IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, CompressionFactory::Header &header, bool checkSum) override;
48-
virtual ~CompressLZ4() override;
46+
IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, const CompressionFactory::Header &header) override;
47+
IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, CompressionFactory::Header &header, bool checkSum) override;
48+
~CompressLZ4() override;
4949
private:
5050
char * newBuffer(int size);
5151
std::vector<char*> tempBufList_;
5252
};
5353

5454
class CompressDeltaofDelta : public CompressEncoderDecoder {
5555
public:
56-
virtual IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, const CompressionFactory::Header &header) override;
57-
virtual IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, CompressionFactory::Header &header, bool checkSum) override;
58-
virtual ~CompressDeltaofDelta() override;
56+
IO_ERR decode(DataInputStreamSP compressSrc, DataOutputStreamSP &uncompressResult, const CompressionFactory::Header &header) override;
57+
IO_ERR encodeContent(const VectorSP &vec, const DataOutputStreamSP &compressResult, CompressionFactory::Header &header, bool checkSum) override;
58+
~CompressDeltaofDelta() override;
5959
private:
6060
char * newBuffer(int size);
6161
std::vector<char*> tempBufList_;
6262
static const int maxDecompressedSize_;
6363
static const int maxCompressedSize_;
6464
};
6565

66-
}//dolphindb
66+
} // namespace dolphindb

0 commit comments

Comments
 (0)