* never have errors, or it is really fatal.
*/
B_DB *
-db_init_database(void *jcr, char *db_name, char *db_user, char *db_password,
+db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password,
char *db_address, int db_port, char *db_socket)
{
B_DB *mdb;
+ if (!db_user) {
+ Jmsg(jcr, M_FATAL, 0, _("A user name for MySQL must be supplied.\n"));
+ return NULL;
+ }
P(mutex); /* lock DB queue */
/* Look to see if DB already open */
for (mdb=NULL; (mdb=(B_DB *)qnext(&db_list, &mdb->bq)); ) {
memset(mdb, 0, sizeof(B_DB));
mdb->db_name = bstrdup(db_name);
mdb->db_user = bstrdup(db_user);
- mdb->db_password = bstrdup(db_password);
+ if (db_password) {
+ mdb->db_password = bstrdup(db_password);
+ }
if (db_address) {
mdb->db_address = bstrdup(db_address);
}
* which are returned in the errmsg
*/
int
-db_open_database(void *jcr, B_DB *mdb)
+db_open_database(JCR *jcr, B_DB *mdb)
{
int errstat;
mdb->db_socket, /* default = socket */
CLIENT_FOUND_ROWS); /* flags */
- /* If no connect, try once more incase it is a timing problem */
+ /* If no connect, try once more in case it is a timing problem */
if (mdb->db == NULL) {
mdb->db = mysql_real_connect(
&(mdb->mysql), /* db */
mdb->db_name, /* database name */
mdb->db_port, /* default port */
mdb->db_socket, /* default = socket */
- 0); /* flags = none */
+ CLIENT_FOUND_ROWS); /* flags */
}
Dmsg0(50, "mysql_real_connect done\n");
return 0;
}
+#ifdef HAVE_TREAD_SAFE_MYSQL
my_thread_init();
+#endif
mdb->connected = TRUE;
V(mutex);
}
void
-db_close_database(void *jcr, B_DB *mdb)
+db_close_database(JCR *jcr, B_DB *mdb)
{
P(mutex);
mdb->ref_count--;
+#ifdef HAVE_TREAD_SAFE_MYSQL
my_thread_end();
+#endif
if (mdb->ref_count == 0) {
qdchain(&mdb->bq);
if (mdb->connected && mdb->db) {
* For MySQL, NULL causes the auto-increment value
* to be updated.
*/
-int db_next_index(void *jcr, B_DB *mdb, char *table, char *index)
+int db_next_index(JCR *jcr, B_DB *mdb, char *table, char *index)
{
strcpy(index, "NULL");
return 1;
* Escape strings so that MySQL is happy
*
* NOTE! len is the length of the old string. Your new
- * string must be long enough (max 2*old) to hold
+ * string must be long enough (max 2*old+1) to hold
* the escaped output.
*/
void
* list on one line horizontally.
*/
void
-list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, int full_list)
+list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_type type)
{
SQL_FIELD *field;
SQL_ROW row;
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
col_len = strlen(field->name);
- if (full_list) {
+ if (type == VERT_LIST) {
if (col_len > max_len) {
max_len = col_len;
}
}
}
- if (full_list) {
- goto horizontal_list;
+ if (type == VERT_LIST) {
+ goto vertical_list;
}
list_dashes(mdb, send, ctx);
list_dashes(mdb, send, ctx);
return;
-horizontal_list:
+vertical_list:
while ((row = sql_fetch_row(mdb)) != NULL) {
sql_field_seek(mdb, 0);