15 #ifndef TSA_POSTGRES_CONN__INCLUDED 16 #define TSA_POSTGRES_CONN__INCLUDED 39 static const pqxx::oid int_8byte = 20;
40 static const pqxx::oid int_4byte = 23;
41 static const pqxx::oid float_8byte = 701;
42 static const pqxx::oid float_4byte = 700;
43 static const pqxx::oid
boolean = 16;
44 static const pqxx::oid datetime = 1114;
45 static const pqxx::oid
date = 1082;
46 static const pqxx::oid varchar = 1043;
64 struct record_to_write {
66 std::vector<std::string> field_names;
67 std::vector<tsa::variant> values;
69 std::queue<record_to_write> m_records_to_write;
71 bool m_is_running =
false;
72 bool m_stop_now =
false;
73 bool m_verbose =
false;
74 void thread_fn__write_records_in_queue();
75 std::thread m_write_rec_thread;
76 bool m_thread_fn__once_only =
false;
78 mutable std::mutex m_mutex;
79 pqxx::connection* m_db_connection_ptr=
nullptr;
80 mutable std::mutex m_PG_mutex;
81 PGconn* m_PGconn_ptr =
nullptr;
89 void verify_connected(
void)
const;
94 { m_connection_string = cs; }
95 bool is_running(
void)
const;
96 bool is_connected(
void)
const;
97 virtual void start_threads(
void);
98 virtual void stop_threads(
void);
100 void insert_record__async(
const std::string& table_name,
101 const std::vector<tsa::variant>& values);
102 void insert_record__async(
const std::string& table_name,
103 const std::vector<std::string>& field_names,
104 const std::vector<tsa::variant>& values);
108 const std::vector<tsa::variant>& values);
111 const std::vector<std::string>& field_names,
112 const std::vector<tsa::variant>& values);
115 void insert_record__no_exception(
117 const std::vector<tsa::variant>& values);
120 void append_series_record(
122 const std::vector<tsa::variant>& values);
128 const std::vector<std::string>& fields_to_update,
129 const std::vector<tsa::variant>& new_values);
133 pqxx::result execute__no_lock(
const std::string& cmd)
const;
134 pqxx::result execute(
const std::string& cmd)
const;
139 virtual bool table_record_count_is_known(
void)
const override;
140 int64_t table_record_count(
const std::string& table_name);
141 virtual bool table_exists(
const std::string& table_name)
const override;
143 const std::string& table_name,
bool lock_mutex =
true)
const;
146 bool table_exists__no_lock(
const std::string& table_name);
149 void create_series_table(
159 const date_time& from_timestamp,
size_t num_records)
override;
165 virtual bool table_has_data(
const std::string& table_name)
override;
168 virtual void truncate_series_table(
const std::string& table_name,
170 virtual bool drop_series_table(
const std::string& table_name)
override;
186 class postgres_writer_out_stream_adaptor
188 tsa_declare_testable;
194 size_t m_flush_target_rec_count = (size_t)5e4;
195 size_t m_rec_count = 0;
196 size_t m_flush_size = (size_t)1e6;
199 virtual ~postgres_writer_out_stream_adaptor(
void) { ; }
201 virtual void osa__append(
const date_time& time_stamp,
202 std::vector<variant>&
record)
override;
203 virtual void osa__prepare_stream(
const std::string& target_name,
205 virtual void cmp__finalize(
void)
override;
206 void reset_buffer(
size_t num_records);
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
Class representing a Postgresql database. Allows ts-api to read and write series to and from a Postgr...
Definition: tsa_pg_database.h:61
Base class for all other database classes such as:
Definition: TSADBBase.h:47
Defines the columnar structure of a table. Each column has a name, data type and field size...
Definition: TSADataDef.h:88
Parent class for 'in-stream adaptors'. in_stream object rely on adaptors for access to underlying dat...
Definition: TSAStreams.h:52
Abstract base class for delegates of class out_stream.
Definition: TSAStreams.h:553
types
Definition: tsa_pg_database.h:38
static const date_time min
Constant representing the smallest allowed date_time.
Definition: TSATime.h:449
variant objects can represent values of different types.
Definition: TSAVariant.h:140
_value_types_type
Data type enumeration used throughout the library. Intended to be used via type_t.
Definition: TSATypeDef.h:166
Parent class for many library classes.
Definition: TSATypeDef.h:462
A date of the Gregorian calendar.
Definition: TSATime.h:119
Class representing a database record.
Definition: TSADBRecord.h:52
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
Class mem_table represents a memory based table. mem_table objects can be used in strategies both for...
Definition: TSAMemTable.h:48