libdballe
7.7
|
DB-ALLe database, in-memory db implementation. More...
#include <db.h>
Public Member Functions | |
DB (const std::string &arg) | |
db::Format | format () const override |
Return the format of this DB. | |
void | disappear () override |
Remove all our traces from the database, if applicable. More... | |
void | reset (const char *repinfo_file=0) override |
Reset the database, removing all existing DBALLE tables and re-creating them empty. More... | |
void | update_repinfo (const char *repinfo_file, int *added, int *deleted, int *updated) override |
Update the repinfo table in the database, with the data found in the given file. More... | |
std::map< std::string, int > | get_repinfo_priorities () override |
Get a mapping between rep_memo and their priorities. | |
void | insert_station_data (StationValues &vals, bool can_replace, bool station_can_add) override |
Insert station values into the database. More... | |
void | insert_data (DataValues &vals, bool can_replace, bool station_can_add) override |
Insert data values into the database. More... | |
void | remove_station_data (const Query &query) override |
Remove data from the database. More... | |
void | remove (const Query &rec) override |
Remove data from the database. More... | |
void | remove_all () override |
Remove all data from the database. More... | |
void | vacuum () override |
Remove orphan values from the database. More... | |
std::unique_ptr< db::CursorStation > | query_stations (const Query &query) override |
Start a query on the station variables archive. More... | |
std::unique_ptr< db::CursorStationData > | query_station_data (const Query &query) override |
Query the station variables in the database. More... | |
std::unique_ptr< db::CursorData > | query_data (const Query &query) override |
Query the database. More... | |
std::unique_ptr< db::CursorSummary > | query_summary (const Query &query) override |
Query a summary of what the result would be for a query. More... | |
void | attr_query_station (int data_id, std::function< void(std::unique_ptr< wreport::Var >)> &&dest) override |
Query attributes on a station value. More... | |
void | attr_query_data (int data_id, std::function< void(std::unique_ptr< wreport::Var >)> &&dest) override |
Query attributes on a data value. More... | |
void | attr_insert_station (int data_id, const Values &attrs) override |
Insert new attributes on a station value. More... | |
void | attr_insert_data (int data_id, const Values &attrs) override |
Insert new attributes on a data value. More... | |
void | attr_remove_station (int data_id, const db::AttrList &qcs) override |
Delete attributes from a station value. More... | |
void | attr_remove_data (int data_id, const db::AttrList &qcs) override |
Delete attributes from a data value. More... | |
bool | is_station_variable (int data_id, wreport::Varcode varcode) override |
Check if this varcode and data_id correspond to a station variable. More... | |
void | import_msg (const Message &msg, const char *repmemo, int flags) override |
Import a Message into the DB-All.e database. More... | |
bool | export_msgs (const Query &query, std::function< bool(std::unique_ptr< Message > &&)> dest) override |
Perform the query in `query', and send the results to dest. More... | |
void | dump (FILE *out) override |
Dump the entire contents of the database to an output stream. | |
![]() | |
virtual void | import_msgs (const Messages &msgs, const char *repmemo, int flags) |
Import Messages into the DB-All.e database. More... | |
Data Fields | |
Memdb | memdb |
In-memory database backend. | |
Repinfo | repinfo |
Protected Member Functions | |
void | raw_query_stations (const core::Query &rec, memdb::Results< memdb::Station > &res) |
Query stations, returning a list of station IDs. | |
void | raw_query_station_data (const core::Query &rec, memdb::Results< memdb::StationValue > &res) |
Query station data, returning a list of Value IDs. | |
void | raw_query_data (const core::Query &rec, memdb::Results< memdb::Value > &res) |
Query data, returning a list of Value IDs. | |
Protected Attributes | |
std::string | serialization_dir |
Friends | |
class | dballe::DB |
Additional Inherited Members | |
![]() | |
static db::Format | get_default_format () |
static void | set_default_format (db::Format format) |
static std::unique_ptr< DB > | connect (const char *dsn, const char *user, const char *password) |
Start a session with DB-All.e. More... | |
static std::unique_ptr< DB > | connect_from_file (const char *pathname) |
Create from a SQLite file pathname. More... | |
static std::unique_ptr< DB > | connect_from_url (const char *url) |
Create from an url-like specification, that can be: More... | |
static std::unique_ptr< DB > | connect_memory (const std::string &arg=std::string()) |
Create an in-memory database. | |
static std::unique_ptr< DB > | connect_test () |
Start a test session with DB-All.e. More... | |
static std::unique_ptr< DB > | create (std::unique_ptr< db::Connection > conn) |
Create a database from an open Connection. | |
static bool | is_url (const char *str) |
Return TRUE if the string looks like a DB URL. More... | |
static const char * | default_repinfo_file () |
Return the default repinfo file pathname. | |
DB-ALLe database, in-memory db implementation.
|
overridevirtual |
Insert new attributes on a data value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
attrs | The attributes to be added |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Insert new attributes on a station value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
attrs | The attributes to be added |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Query attributes on a data value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
dest | The function that will be called on each resulting attribute |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Query attributes on a station value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
dest | The function that will be called on each resulting attribute |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Delete attributes from a data value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
qcs | Array of WMO codes of the attributes to delete. If empty, all attributes associated to the value will be deleted. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Delete attributes from a station value.
data_id | The id (returned by Cursor::attr_reference_id()) used to refer to the value |
qcs | Array of WMO codes of the attributes to delete. If empty, all attributes associated to the value will be deleted. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Remove all our traces from the database, if applicable.
After this has been called, all other DB methods except for reset() will fail.
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Perform the query in `query', and send the results to dest.
Return false from dest to interrupt the query.
query | The query to perform |
dest | The function that will handle the resulting messages |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Import a Message into the DB-All.e database.
db | The DB-All.e database to write the data into |
msg | The Message containing the data to import |
repmemo | Report mnemonic to which imported data belong. If NULL is passed, then it will be chosen automatically based on the message type. |
flags | Customise different aspects of the import process. It is a bitmask of the various DBA_IMPORT_* macros. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Insert data values into the database.
The IDs of the station andl all variables that were inserted will be stored in vals.
vals | The values to insert. |
can_replace | If true, then existing data can be rewritten, else data can only be added. |
station_can_add | If false, it will not create a missing station record, and only data for existing stations can be added. If true, then if we are inserting data for a station that does not yet exists in the database, it will be created. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Insert station values into the database.
The IDs of the station andl all variables that were inserted will be stored in vals.
vals | The values to insert. |
can_replace | If true, then existing data can be rewritten, else data can only be added. |
station_can_add | If false, it will not create a missing station record, and only data for existing stations can be added. If true, then if we are inserting data for a station that does not yet exists in the database, it will be created. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Check if this varcode and data_id correspond to a station variable.
This is used only to implement attr_* functions to be used when this information is not known. A database for which this information is not relevant (for example, in v6 databases there is a single ID space for station and data variable) can return any arbitrary value, since later they will be ignored.
This should disappear once client APIs start making a distinction between attributes in station variables and attributes on data variables.
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Query the database.
When multiple values per variable are present, the results will be presented in increasing order of priority.
query | The record with the query data (see technical specifications, par. 1.6.4 "parameter output/input") |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Query the station variables in the database.
When multiple values per variable are present, the results will be presented in increasing order of priority.
query | The record with the query data (see technical specifications, par. 1.6.4 "parameter output/input") |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Start a query on the station variables archive.
The cursor will iterate over unique lat, lon, ident triples, and will contain all station vars. If a station var exists twice on two different networks, only one will be present: the one of the network with the highest priority.
query | The record with the query data (see Keywords used by dba_record) |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Query a summary of what the result would be for a query.
query | The record with the query data (see technical specifications, par. 1.6.4 "parameter output/input") |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Remove data from the database.
rec | The record with the query data (see technical specifications, par. 1.6.4 "parameter output/input") to select the items to be deleted |
Implements dballe::DB.
|
overridevirtual |
Remove all data from the database.
This is faster than remove() with an empty record, and unlike reset() it preserves existing report information.
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Remove data from the database.
rec | The record with the query data (see technical specifications, par. 1.6.4 "parameter output/input") to select the items to be deleted |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Reset the database, removing all existing DBALLE tables and re-creating them empty.
repinfo_file | The name of the CSV file with the report type information data to load. The file is in CSV format with 6 columns: report code, mnemonic id, description, priority, descriptor, table A category. If repinfo_file is NULL, then the default of /etc/dballe/repinfo.csv is used. |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Update the repinfo table in the database, with the data found in the given file.
repinfo_file | The name of the CSV file with the report type information data to load. The file is in CSV format with 6 columns: report code, mnemonic id, description, priority, descriptor, table A category. If repinfo_file is NULL, then the default of /etc/dballe/repinfo.csv is used. |
added | The number of repinfo entryes that have been added |
deleted | The number of repinfo entryes that have been deleted |
updated | The number of repinfo entryes that have been updated |
Implements dballe::DB.
Referenced by format().
|
overridevirtual |
Remove orphan values from the database.
Orphan values are currently:
Depending on database size, this routine can take a few minutes to execute.
Implements dballe::DB.
Referenced by format().