diff options
Diffstat (limited to 'database/sqlite/sqlite_functions.h')
-rw-r--r-- | database/sqlite/sqlite_functions.h | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/database/sqlite/sqlite_functions.h b/database/sqlite/sqlite_functions.h index 30a52bf7..3e41f6aa 100644 --- a/database/sqlite/sqlite_functions.h +++ b/database/sqlite/sqlite_functions.h @@ -3,7 +3,7 @@ #ifndef NETDATA_SQLITE_FUNCTIONS_H #define NETDATA_SQLITE_FUNCTIONS_H -#include "../../daemon/common.h" +#include "daemon/common.h" #include "sqlite3.h" // return a node list @@ -12,10 +12,17 @@ struct node_instance_list { uuid_t host_id; char *hostname; int live; - int querable; + int queryable; int hops; }; +typedef enum db_check_action_type { + DB_CHECK_NONE = 0x0000, + DB_CHECK_INTEGRITY = 0x0001, + DB_CHECK_FIX_DB = 0x0002, + DB_CHECK_RECLAIM_SPACE = 0x0004, + DB_CHECK_CONT = 0x00008 +} db_check_action_type_t; #define SQLITE_INSERT_DELAY (50) // Insert delay in case of lock @@ -34,11 +41,22 @@ struct node_instance_list { #define SQL_STORE_DIMENSION \ "INSERT OR REPLACE into dimension (dim_id, chart_id, id, name, multiplier, divisor , algorithm) values (?0001,?0002,?0003,?0004,?0005,?0006,?0007);" -#define SQL_FIND_DIMENSION_UUID "select dim_id from dimension where chart_id=@chart and id=@id and name=@name;" +#define SQL_FIND_DIMENSION_UUID \ + "select dim_id from dimension where chart_id=@chart and id=@id and name=@name and length(dim_id)=16;" -#define SQL_STORE_ACTIVE_DIMENSION \ +#define SQL_STORE_ACTIVE_DIMENSION \ "insert or replace into dimension_active (dim_id, date_created) values (@id, strftime('%s'));" -extern int sql_init_database(void); + +#define CHECK_SQLITE_CONNECTION(db_meta) \ + if (unlikely(!db_meta)) { \ + if (default_rrd_memory_mode != RRD_MEMORY_MODE_DBENGINE) { \ + return 1; \ + } \ + error_report("Database has not been initialized"); \ + return 1; \ + } + +extern int sql_init_database(db_check_action_type_t rebuild); extern void sql_close_database(void); extern int sql_store_host(uuid_t *guid, const char *hostname, const char *registry_hostname, int update_every, const char *os, const char *timezone, const char *tags); @@ -49,8 +67,7 @@ extern int sql_store_chart( extern int sql_store_dimension(uuid_t *dim_uuid, uuid_t *chart_uuid, const char *id, const char *name, collected_number multiplier, collected_number divisor, int algorithm); -extern uuid_t *find_dimension_uuid(RRDSET *st, RRDDIM *rd); -extern uuid_t *create_dimension_uuid(RRDSET *st, RRDDIM *rd); +extern int find_dimension_uuid(RRDSET *st, RRDDIM *rd, uuid_t *store_uuid); extern void store_active_dimension(uuid_t *dimension_uuid); extern uuid_t *find_chart_uuid(RRDHOST *host, const char *type, const char *id, const char *name); @@ -63,7 +80,9 @@ extern int find_uuid_type(uuid_t *uuid); extern void sql_rrdset2json(RRDHOST *host, BUFFER *wb); extern RRDHOST *sql_create_host_by_uuid(char *guid); -extern void db_execute(char *cmd); +extern int prepare_statement(sqlite3 *database, char *query, sqlite3_stmt **statement); +extern int execute_insert(sqlite3_stmt *res); +extern void db_execute(const char *cmd); extern int file_is_migrated(char *path); extern void add_migrated_file(char *path, uint64_t file_size); extern void db_unlock(void); @@ -74,7 +93,9 @@ extern void sql_build_context_param_list(struct context_param **param_list, RRDH extern void store_claim_id(uuid_t *host_id, uuid_t *claim_id); extern int update_node_id(uuid_t *host_id, uuid_t *node_id); extern int get_node_id(uuid_t *host_id, uuid_t *node_id); +extern int get_host_id(uuid_t *node_id, uuid_t *host_id); extern void invalidate_node_instances(uuid_t *host_id, uuid_t *claim_id); extern struct node_instance_list *get_node_list(void); extern void sql_load_node_id(RRDHOST *host); +extern void compute_chart_hash(RRDSET *st); #endif //NETDATA_SQLITE_FUNCTIONS_H |