/* ** Copyright (C) 2001-2024 Zabbix SIA ** ** This program is free software: you can redistribute it and/or modify it under the terms of ** the GNU Affero General Public License as published by the Free Software Foundation, version 3. ** ** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU Affero General Public License for more details. ** ** You should have received a copy of the GNU Affero General Public License along with this program. ** If not, see <https://www.gnu.org/licenses/>. **/ #ifndef ZABBIX_DBUPGRADE_H #define ZABBIX_DBUPGRADE_H #include "zbxcommon.h" #include "zbxdbschema.h" typedef struct { int (*function)(void); int version; int duplicates; unsigned char mandatory; } zbx_dbpatch_t; #define ZBX_DBPATCH_FUNCTION_PARAM_LEN 255 #define DBPATCH_VERSION(zabbix_version) zbx_dbpatches_##zabbix_version #define DBPATCHES_ARRAY_DECL(zabbix_version) extern zbx_dbpatch_t zbx_dbpatches_##zabbix_version[] #define DBPATCH_START(zabbix_version) zbx_dbpatch_t DBPATCH_VERSION(zabbix_version)[] = { #define DBPATCH_END() {0}}; #ifdef HAVE_SQLITE3 #define DBPATCH_ADD(version, duplicates, mandatory) {NULL, version, duplicates, mandatory}, #else #define DBPATCH_ADD(version, duplicates, mandatory) {DBpatch_##version, version, duplicates, mandatory}, #ifdef HAVE_MYSQL #define ZBX_FS_SQL_NAME "`%s`" #else #define ZBX_FS_SQL_NAME "%s" #endif int DBcreate_table(const zbx_db_table_t *table); int DBrename_table(const char *table_name, const char *new_name); int DBdrop_table(const char *table_name); int DBadd_field(const char *table_name, const zbx_db_field_t *field); int DBrename_field(const char *table_name, const char *field_name, const zbx_db_field_t *field); int DBmodify_field_type(const char *table_name, const zbx_db_field_t *field, const zbx_db_field_t *old_field); int DBdrop_field_autoincrement(const char *table_name, const zbx_db_field_t *field); int DBset_not_null(const char *table_name, const zbx_db_field_t *field); int DBset_default(const char *table_name, const zbx_db_field_t *field); int DBdrop_default(const char *table_name, const zbx_db_field_t *field); int DBdrop_not_null(const char *table_name, const zbx_db_field_t *field); int DBdrop_field(const char *table_name, const char *field_name); int DBcreate_index(const char *table_name, const char *index_name, const char *fields, int unique); int DBdrop_index(const char *table_name, const char *index_name); int DBrename_index(const char *table_name, const char *old_name, const char *new_name, const char *fields, int unique); int DBadd_foreign_key(const char *table_name, int id, const zbx_db_field_t *field); int DBdrop_foreign_key(const char *table_name, int id); #if defined(HAVE_POSTGRESQL) int DBcheck_field_type(const char *table_name, const zbx_db_field_t *field); #endif int DBcreate_changelog_insert_trigger(const char *table_name, const char *field_name); int DBcreate_changelog_update_trigger(const char *table_name, const char *field_name); int DBcreate_changelog_delete_trigger(const char *table_name, const char *field_name); int zbx_dbupgrade_attach_trigger_with_function_on_insert(const char *table_name, const char *original_column_name, const char *indexed_column_name, const char *function, const char *idname); int zbx_dbupgrade_drop_trigger_on_insert(const char *table_name, const char *indexed_column_name); int zbx_dbupgrade_drop_trigger_function_on_insert(const char *table_name, const char *indexed_column_name, const char *function); int zbx_dbupgrade_attach_trigger_with_function_on_update(const char *table_name, const char *original_column_name, const char *indexed_column_name, const char *function, const char *idname); int zbx_dbupgrade_drop_trigger_on_update(const char *table_name, const char *indexed_column_name); int zbx_dbupgrade_drop_trigger_function_on_update(const char *table_name, const char *indexed_column_name, const char *function); #endif /* !HAVE_SQLITE3 */ unsigned char DBget_program_type(void); int DBget_config_timeout(void); #endif