From 97e690b7d568f406b2a777cea1f1c78568da48e3 Mon Sep 17 00:00:00 2001 From: cuihaikuo Date: Thu, 5 Jul 2018 12:07:27 +0800 Subject: [PATCH] Add config option 'create_tables'. --- net/common/session.h | 2 ++ net/server/group-mgr.c | 7 ++++++- net/server/org-mgr.c | 7 ++++++- net/server/server-session.c | 6 ++++++ net/server/user-mgr.c | 6 +++++- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/net/common/session.h b/net/common/session.h index 40c76bc..06ad27e 100644 --- a/net/common/session.h +++ b/net/common/session.h @@ -95,6 +95,8 @@ struct CcnetSession sqlite3 *config_db; CcnetDB *db; + + gboolean create_tables; }; struct _CcnetSessionClass diff --git a/net/server/group-mgr.c b/net/server/group-mgr.c index a314294..b6bb094 100644 --- a/net/server/group-mgr.c +++ b/net/server/group-mgr.c @@ -90,7 +90,12 @@ open_db (CcnetGroupManager *manager) return -1; manager->priv->db = db; - return check_db_table (manager, db); + if (manager->session->create_tables && check_db_table (manager, db) < 0) { + ccnet_warning ("Failed to create group db tables.\n"); + return -1; + } + + return 0; } /* -------- Group Database Management ---------------- */ diff --git a/net/server/org-mgr.c b/net/server/org-mgr.c index 3ee24f8..f93b31f 100644 --- a/net/server/org-mgr.c +++ b/net/server/org-mgr.c @@ -75,7 +75,12 @@ open_db (CcnetOrgManager *manager) return -1; manager->priv->db = db; - return check_db_table (db); + if (manager->session->create_tables && check_db_table (db) < 0) { + ccnet_warning ("Failed to create org db tables.\n"); + return -1; + } + + return 0; } void ccnet_org_manager_start (CcnetOrgManager *manager) diff --git a/net/server/server-session.c b/net/server/server-session.c index 6a78d58..bc97021 100644 --- a/net/server/server-session.c +++ b/net/server/server-session.c @@ -131,6 +131,7 @@ static int init_mysql_database (CcnetSession *session) char *host, *user, *passwd, *db, *unix_socket, *charset; int port; gboolean use_ssl = FALSE; + gboolean create_tables = TRUE; int max_connections = 0; host = ccnet_key_file_get_string (session->keyf, "Database", "HOST"); @@ -165,6 +166,11 @@ static int init_mysql_database (CcnetSession *session) unix_socket = ccnet_key_file_get_string (session->keyf, "Database", "UNIX_SOCKET"); use_ssl = g_key_file_get_boolean (session->keyf, "Database", "USE_SSL", NULL); + + if (g_key_file_has_key (session->keyf, "Database", "CREATE_TABLES", NULL)) + create_tables = g_key_file_get_boolean (session->keyf, "Database", "CREATE_TABLES", NULL); + session->create_tables = create_tables; + charset = ccnet_key_file_get_string (session->keyf, "Database", "CONNECTION_CHARSET"); diff --git a/net/server/user-mgr.c b/net/server/user-mgr.c index 0973959..155cd1c 100644 --- a/net/server/user-mgr.c +++ b/net/server/user-mgr.c @@ -764,7 +764,11 @@ open_db (CcnetUserManager *manager) return -1; manager->priv->db = db; - return check_db_table (db); + if (manager->session->create_tables && check_db_table (db) < 0) { + ccnet_warning ("Failed to create user db tables.\n"); + return -1; + } + return 0; }