X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fcats%2Fsql.c;h=1f79a814b806461cf32f1bb76b16ba62cd983bd9;hb=ab75c2027cd5cbbee384761dc315f480868d3f25;hp=4327955ce77bad370b02e210f2259c994e50d3f3;hpb=fa856c1262a2a3178f0ea237c21d2bb8e51c9f50;p=bacula%2Fbacula diff --git a/bacula/src/cats/sql.c b/bacula/src/cats/sql.c index 4327955ce7..1f79a814b8 100644 --- a/bacula/src/cats/sql.c +++ b/bacula/src/cats/sql.c @@ -6,7 +6,7 @@ The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public + modify it under the terms of version three of the GNU Affero General Public License as published by the Free Software Foundation and included in the file LICENSE. @@ -15,7 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Affero General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -77,6 +77,8 @@ B_DB *db_init(JCR *jcr, const char *db_driver, const char *db_name, const char * db_type = SQL_TYPE_SQLITE; } else if (strcasecmp(p, "sqlite3") == 0) { db_type = SQL_TYPE_SQLITE3; + } else if (strcasecmp(p, "ingres") == 0) { + db_type = SQL_TYPE_INGRES; } else { Jmsg1(jcr, M_ABORT, 0, _("Unknown database type: %s\n"), p); } @@ -183,30 +185,29 @@ static int db_max_connections_handler(void *ctx, int num_fields, char **row) */ bool db_check_max_connections(JCR *jcr, B_DB *mdb, uint32_t max_concurrent_jobs) { - uint32_t max_conn=0; - int ret=true; +#ifdef HAVE_BATCH_FILE_INSERT - /* Without Batch insert, no need to verify max_connections */ -#ifndef HAVE_BATCH_FILE_INSERT - return ret; -#endif + uint32_t max_conn = 0; - /* Check max_connections setting */ + /* With Batch insert, verify max_connections */ if (!db_sql_query(mdb, sql_get_max_connections[db_type], db_max_connections_handler, &max_conn)) { Jmsg(jcr, M_ERROR, 0, "Can't verify max_connections settings %s", mdb->errmsg); - return ret; + return false; } - if (max_conn && max_concurrent_jobs && max_concurrent_jobs > max_conn) { + if (max_conn && max_concurrent_jobs > max_conn) { Mmsg(mdb->errmsg, - _("On db_name=%s, %s max_connections=%d is lower than Director " - "MaxConcurentJobs=%d\n"), - mdb->db_name, db_get_type(), max_conn, max_concurrent_jobs); + _("Potential performance problem:\n" + "max_connections=%d set for %s database \"%s\" should be larger than Director's " + "MaxConcurrentJobs=%d\n"), + max_conn, db_get_type(), mdb->db_name, max_concurrent_jobs); Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg); - ret = false; + return false; } - return ret; +#endif + + return true; } /* NOTE!!! The following routines expect that the @@ -269,11 +270,7 @@ InsertDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd) } return 0; } - if (mdb->have_insert_id) { - mdb->num_rows = sql_affected_rows(mdb); - } else { - mdb->num_rows = 1; - } + mdb->num_rows = sql_affected_rows(mdb); if (mdb->num_rows != 1) { char ed1[30]; m_msg(file, line, &mdb->errmsg, _("Insertion problem: affected_rows=%s\n"), @@ -382,7 +379,7 @@ char *db_strerror(B_DB *mdb) void _db_lock(const char *file, int line, B_DB *mdb) { int errstat; - if ((errstat=rwl_writelock(&mdb->lock)) != 0) { + if ((errstat=rwl_writelock_p(&mdb->lock, file, line)) != 0) { berrno be; e_msg(file, line, M_FATAL, 0, "rwl_writelock failure. stat=%d: ERR=%s\n", errstat, be.bstrerror(errstat));