*
* S Q L I T E
*/
-#define sql_store_result(x) (x)->result
-#define sql_free_result(x) my_sqlite_free_table(x)
-#define sql_fetch_row(x) my_sqlite_fetch_row(x)
-#define sql_query(x, y) my_sqlite_query((x), (y))
-#define sql_insert_id(x, y, z) my_sqlite_sql_insert_id((x), (y), (z))
+#define sql_store_result(x) (x)->result
+#define sql_free_result(x) my_sqlite_free_table(x)
+#define sql_fetch_row(x) my_sqlite_fetch_row(x)
+#define sql_query(x, y) my_sqlite_query((x), (y))
#ifdef HAVE_SQLITE3
-#define sql_close(x) sqlite3_close((x)->db)
-#define sql_affected_rows(x) sqlite3_changes((x)->db)
+#define sql_insert_id(x,y) sqlite3_last_insert_rowid((x)->db)
+#define sql_close(x) sqlite3_close((x)->db)
+#define sql_affected_rows(x) sqlite3_changes((x)->db)
#else
-#define sql_close(x) sqlite_close((x)->db)
-#define sql_affected_rows(x) 1
+#define sql_insert_id(x,y) sqlite_last_insert_rowid((x)->db)
+#define sql_close(x) sqlite_close((x)->db)
+#define sql_affected_rows(x) 1
#endif
-#define sql_strerror(x) (x)->sqlite_errmsg?(x)->sqlite_errmsg:"unknown"
-#define sql_num_rows(x) (x)->nrow
-#define sql_data_seek(x, i) (x)->row = (i)
-#define sql_field_seek(x, y) my_sqlite_field_seek((x), (y))
-#define sql_fetch_field(x) my_sqlite_fetch_field(x)
-#define sql_num_fields(x) ((x)->ncolumn)
-#define SQL_ROW char**
-#define SQL_MATCH "MATCH"
+#define sql_strerror(x) (x)->sqlite_errmsg?(x)->sqlite_errmsg:"unknown"
+#define sql_num_rows(x) (x)->nrow
+#define sql_data_seek(x, i) (x)->row = (i)
+#define sql_field_seek(x, y) my_sqlite_field_seek((x), (y))
+#define sql_fetch_field(x) my_sqlite_fetch_field(x)
+#define sql_num_fields(x) ((x)->ncolumn)
+#define SQL_ROW char**
+#define SQL_MATCH "MATCH"
#define sql_batch_start(x,y) my_batch_start(x,y)
#define sql_batch_end(x,y,z) my_batch_end(x,y,z)
int my_sqlite_query(B_DB *mdb, const char *cmd);
void my_sqlite_field_seek(B_DB *mdb, int field);
SQL_FIELD *my_sqlite_fetch_field(B_DB *mdb);
-int my_sqlite_sql_insert_id(B_DB *mdb, const char *query, const char *table_name);
extern const char* my_sqlite_batch_lock_query;
extern const char* my_sqlite_batch_unlock_query;
extern const char* my_sqlite_batch_fill_filename_query;
#define DB_STATUS int
/* "Generic" names for easier conversion */
-#define sql_store_result(x) mysql_store_result((x)->db)
-#define sql_use_result(x) mysql_use_result((x)->db)
-#define sql_free_result(x) my_mysql_free_result(x)
-#define sql_fetch_row(x) mysql_fetch_row((x)->result)
-#define sql_query(x, y) mysql_query((x)->db, (y))
-#define sql_strerror(x) mysql_error((x)->db)
-#define sql_num_rows(x) mysql_num_rows((x)->result)
-#define sql_data_seek(x, i) mysql_data_seek((x)->result, (i))
-#define sql_affected_rows(x) mysql_affected_rows((x)->db)
-#define sql_insert_id(x, y, z) my_mysql_sql_insert_id((x), (y), (z))
-#define sql_field_seek(x, y) mysql_field_seek((x)->result, (y))
-#define sql_fetch_field(x) mysql_fetch_field((x)->result)
-#define sql_num_fields(x) (int)mysql_num_fields((x)->result)
-#define SQL_ROW MYSQL_ROW
-#define SQL_FIELD MYSQL_FIELD
-#define SQL_MATCH "MATCH"
+#define sql_store_result(x) mysql_store_result((x)->db)
+#define sql_use_result(x) mysql_use_result((x)->db)
+#define sql_free_result(x) my_mysql_free_result(x)
+#define sql_fetch_row(x) mysql_fetch_row((x)->result)
+#define sql_query(x, y) mysql_query((x)->db, (y))
+#define sql_strerror(x) mysql_error((x)->db)
+#define sql_num_rows(x) mysql_num_rows((x)->result)
+#define sql_data_seek(x, i) mysql_data_seek((x)->result, (i))
+#define sql_affected_rows(x) mysql_affected_rows((x)->db)
+#define sql_insert_id(x,y) mysql_insert_id((x)->db)
+#define sql_field_seek(x, y) mysql_field_seek((x)->result, (y))
+#define sql_fetch_field(x) mysql_fetch_field((x)->result)
+#define sql_num_fields(x) (int)mysql_num_fields((x)->result)
+#define SQL_ROW MYSQL_ROW
+#define SQL_FIELD MYSQL_FIELD
+#define SQL_MATCH "MATCH"
#define sql_batch_start(x,y) my_batch_start(x,y)
#define sql_batch_end(x,y,z) my_batch_end(x,y,z)
extern const char* my_mysql_batch_fill_filename_query;
extern const char* my_mysql_batch_fill_path_query;
extern void my_mysql_free_result(B_DB *mdb);
-extern int my_mysql_sql_insert_id(B_DB *mdb, const char *query, const char *table_name);
#else
POSTGRESQL_ROW my_postgresql_fetch_row (B_DB *mdb);
int my_postgresql_query (B_DB *mdb, const char *query);
void my_postgresql_data_seek (B_DB *mdb, int row);
-int my_postgresql_insert_id (B_DB *mdb, const char *query, const char *table_name)
+int my_postgresql_currval (B_DB *mdb, const char *table_name);
void my_postgresql_field_seek (B_DB *mdb, int row);
POSTGRESQL_FIELD * my_postgresql_fetch_field(B_DB *mdb);
#define sql_num_rows(x) ((unsigned) PQntuples((x)->result))
#define sql_data_seek(x, i) my_postgresql_data_seek((x), (i))
#define sql_affected_rows(x) ((unsigned) atoi(PQcmdTuples((x)->result)))
-#define sql_insert_id(x, y, z) my_postgresql_insert_id((x), (y), (z))
+#define sql_insert_id(x,y) my_postgresql_currval((x), (y))
#define sql_field_seek(x, y) my_postgresql_field_seek((x), (y))
#define sql_fetch_field(x) my_postgresql_fetch_field(x)
#define sql_num_fields(x) ((x)->num_fields)
INGRES_ROW my_ingres_fetch_row (B_DB *mdb);
int my_ingres_query (B_DB *mdb, const char *query);
void my_ingres_data_seek (B_DB *mdb, int row);
+int my_ingres_currval (B_DB *mdb, const char *table_name);
void my_ingres_field_seek (B_DB *mdb, int row);
INGRES_FIELD * my_ingres_fetch_field(B_DB *mdb);
void my_ingres_close (B_DB *mdb);
-int my_ingres_insert_id (B_DB *mdb, const char *query, const char *table_name);
int my_ingres_batch_start(JCR *jcr, B_DB *mdb);
int my_ingres_batch_end(JCR *jcr, B_DB *mdb, const char *error);
extern const char* my_ingres_batch_fill_path_query;
/* "Generic" names for easier conversion */
-#define sql_store_result(x) ((x)->result)
-#define sql_free_result(x) my_ingres_free_result(x)
-#define sql_fetch_row(x) my_ingres_fetch_row(x)
-#define sql_query(x, y) my_ingres_query((x), (y))
-#define sql_close(x) my_ingres_close(x)
-#define sql_strerror(x) INGerrorMessage((x)->db)
-#define sql_num_rows(x) ((unsigned) INGntuples((x)->result))
-#define sql_data_seek(x, i) my_ingres_data_seek((x), (i))
-#define sql_affected_rows(x) ((x)->num_rows)
-#define sql_insert_id(x, y, z) my_ingres_insert_id((x), (y), (z))
-#define sql_field_seek(x, y) my_ingres_field_seek((x), (y))
-#define sql_fetch_field(x) my_ingres_fetch_field(x)
-#define sql_num_fields(x) ((x)->num_fields)
+#define sql_store_result(x) ((x)->result)
+#define sql_free_result(x) my_ingres_free_result(x)
+#define sql_fetch_row(x) my_ingres_fetch_row(x)
+#define sql_query(x, y) my_ingres_query((x), (y))
+#define sql_close(x) my_ingres_close(x)
+#define sql_strerror(x) INGerrorMessage((x)->db)
+#define sql_num_rows(x) ((unsigned) INGntuples((x)->result))
+#define sql_data_seek(x, i) my_ingres_data_seek((x), (i))
+#define sql_affected_rows(x) ((unsigned) atoi(INGcmdTuples((x)->result)))
+#define sql_insert_id(x,y) my_ingres_currval((x), (y))
+#define sql_field_seek(x, y) my_ingres_field_seek((x), (y))
+#define sql_fetch_field(x) my_ingres_fetch_field(x)
+#define sql_num_fields(x) ((x)->num_fields)
#define sql_batch_start(x,y) my_ingres_batch_start(x,y)
#define sql_batch_end(x,y,z) my_ingres_batch_end(x,y,z)
int my_dbi_getisnull (dbi_result *result, int row_number, int column_number);
char * my_dbi_getvalue (dbi_result *result, int row_number, unsigned int column_number);
//int my_dbi_getvalue (dbi_result *result, int row_number, unsigned int column_number, char *value);
-int my_dbi_sql_insert_id(B_DB *mdb, const char *query, const char *table_name);
+int my_dbi_sql_insert_id(B_DB *mdb, char *table_name);
int my_dbi_batch_start(JCR *jcr, B_DB *mdb);
int my_dbi_batch_end(JCR *jcr, B_DB *mdb, const char *error);
#define SQL_MATCH my_dbi_match[db_type]
/* #define sql_affected_rows(x) dbi_result_get_numrows_affected((x)->result) */
#define sql_affected_rows(x) 1
-#define sql_insert_id(x, y, z) my_dbi_sql_insert_id((x), (y), (z))
-#define sql_field_seek(x, y) my_dbi_field_seek((x), (y))
-#define sql_fetch_field(x) my_dbi_fetch_field(x)
-#define sql_num_fields(x) ((x)->num_fields)
+#define sql_insert_id(x,y) my_dbi_sql_insert_id((x), (y))
+#define sql_field_seek(x, y) my_dbi_field_seek((x), (y))
+#define sql_fetch_field(x) my_dbi_fetch_field(x)
+#define sql_num_fields(x) ((x)->num_fields)
#define sql_batch_start(x,y) my_dbi_batch_start(x,y)
#define sql_batch_end(x,y,z) my_dbi_batch_end(x,y,z)
#define sql_batch_insert(x,y,z) my_dbi_batch_insert(x,y,z)
(char)(jr->JobStatus), dt, edit_uint64(JobTDate, ed1),
edit_int64(jr->ClientId, ed2));
- jr->JobId = sql_insert_id(mdb, mdb->cmd, NT_("Job"));
- if (jr->JobId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create DB Job record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
+ jr->JobId = 0;
ok = false;
} else {
+ jr->JobId = sql_insert_id(mdb, NT_("Job"));
ok = true;
}
db_unlock(mdb);
pr->ActionOnPurge
);
Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
- pr->PoolId = sql_insert_id(mdb, mdb->cmd, NT_("Pool"));
- if (pr->PoolId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
+ pr->PoolId = 0;
stat = false;
} else {
+ pr->PoolId = sql_insert_id(mdb, NT_("Pool"));
stat = true;
}
db_unlock(mdb);
edit_uint64(dr->MediaTypeId, ed1),
edit_int64(dr->StorageId, ed2));
Dmsg1(200, "Create Device: %s\n", mdb->cmd);
- dr->DeviceId = sql_insert_id(mdb, mdb->cmd, NT_("Device"));
- if (dr->DeviceId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Device record %s failed: ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
+ dr->DeviceId = 0;
ok = false;
} else {
+ dr->DeviceId = sql_insert_id(mdb, NT_("Device"));
ok = true;
}
db_unlock(mdb);
Mmsg(mdb->cmd, "INSERT INTO Storage (Name,AutoChanger)"
" VALUES ('%s',%d)", sr->Name, sr->AutoChanger);
- sr->StorageId = sql_insert_id(mdb, mdb->cmd, NT_("Storage"));
- if (sr->StorageId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create DB Storage record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
ok = false;
} else {
+ sr->StorageId = sql_insert_id(mdb, NT_("Storage"));
sr->created = true;
ok = true;
}
mr->MediaType,
mr->ReadOnly);
Dmsg1(200, "Create mediatype: %s\n", mdb->cmd);
- mr->MediaTypeId = sql_insert_id(mdb, mdb->cmd, NT_("MediaType"));
- if (mr->MediaTypeId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db mediatype record %s failed: ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
+ mr->MediaTypeId = 0;
stat = false;
} else {
+ mr->MediaTypeId = sql_insert_id(mdb, NT_("MediaType"));
stat = true;
}
db_unlock(mdb);
Dmsg1(500, "Create Volume: %s\n", mdb->cmd);
- mr->MediaId = sql_insert_id(mdb, mdb->cmd), NT_("Media"));
- if (mr->MediaId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create DB Media record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
stat = 0;
} else {
+ mr->MediaId = sql_insert_id(mdb, NT_("Media"));
stat = 1;
if (mr->set_label_date) {
char dt[MAX_TIME_LENGTH];
edit_uint64(cr->FileRetention, ed1),
edit_uint64(cr->JobRetention, ed2));
- cr->ClientId = sql_insert_id(mdb, mdb->cmd, NT_("Client"));
- if (cr->ClientId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create DB Client record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
+ cr->ClientId = 0;
stat = 0;
} else {
+ cr->ClientId = sql_insert_id(mdb, NT_("Client"));
stat = 1;
}
db_unlock(mdb);
Mmsg(mdb->cmd, "INSERT INTO Path (Path) VALUES ('%s')", mdb->esc_name);
- ar->PathId = sql_insert_id(mdb, mdb->cmd, NT_("Path"));
- if (ar->PathId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Path record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
ar->PathId = 0;
stat = 0;
} else {
+ ar->PathId = sql_insert_id(mdb, NT_("Path"));
stat = 1;
}
Mmsg(mdb->cmd, "INSERT INTO FileSet (FileSet,MD5,CreateTime) "
"VALUES ('%s','%s','%s')", fsr->FileSet, fsr->MD5, fsr->cCreateTime);
- fsr->FileSetId = sql_insert_id(mdb, mdb->cmd, NT_("FileSet"));
- if (fsr->FileSetId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create DB FileSet record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
+ fsr->FileSetId = 0;
stat = false;
} else {
+ fsr->FileSetId = sql_insert_id(mdb, NT_("FileSet"));
fsr->created = true;
stat = true;
}
ar->FileIndex, ar->JobId, ar->PathId, ar->FilenameId,
ar->attr, digest);
- ar->FileId = sql_insert_id(mdb, mdb->cmd, NT_("File"));
- if (ar->FileId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db File record %s failed. ERR=%s"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
+ ar->FileId = 0;
stat = 0;
} else {
+ ar->FileId = sql_insert_id(mdb, NT_("File"));
stat = 1;
}
return stat;
Mmsg(mdb->cmd, "INSERT INTO Filename (Name) VALUES ('%s')", mdb->esc_name);
- ar->FilenameId = sql_insert_id(mdb, mdb->cmd, NT_("Filename"));
- if (ar->FilenameId == 0) {
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Filename record %s failed. ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
+ ar->FilenameId = 0;
+ } else {
+ ar->FilenameId = sql_insert_id(mdb, NT_("Filename"));
}
return ar->FilenameId > 0;
}