#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_insert_autokey_record(x, y, z) my_sqlite_insert_autokey_record((x), (y), (z))
#ifdef HAVE_SQLITE3
#define sql_close(x) sqlite3_close((x)->db)
#define sql_affected_rows(x) sqlite3_changes((x)->db)
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);
+int my_sqlite_insert_autokey_record(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;
*
* S Q L I T E 3
*/
-#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_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_autokey_record(x, y, z) my_sqlite_insert_autokey_record((x), (y), (z))
#ifdef HAVE_SQLITE3
-#define sql_insert_id(x,y) sqlite3_last_insert_rowid((x)->db)
-#define sql_close(x) sqlite3_close((x)->db)
+#define sql_close(x) sqlite3_close((x)->db)
#else
-#define sql_insert_id(x,y) sqlite_last_insert_rowid((x)->db)
-#define sql_close(x) sqlite_close((x)->db)
+#define sql_close(x) sqlite_close((x)->db)
#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_affected_rows(x) sqlite3_changes((x)->db)
-#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_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_affected_rows(x) sqlite3_changes((x)->db)
+#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_batch_start(x,y) my_batch_start(x,y)
#define sql_batch_end(x,y,z) my_batch_end(x,y,z)
#define sql_batch_insert(x,y,z) my_batch_insert(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_insert_autokey_record(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 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_insert_autokey_record(x, y, z) my_mysql_insert_autokey_record((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)
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);
+extern int my_mysql_insert_autokey_record(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_insert_autokey_record (B_DB *mdb, const char *query, 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_autokey_record(x, y, z) my_postgresql_insert_autokey_record((x), (y), (z))
#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)
#ifdef HAVE_INGRES
#include "myingres.h"
-#include "lib/breg.h"
#define BDB_VERSION 12
-/* TEMP: the following is taken from select OID, typname from pg_type; */ /*SRE: huh? */
-#define IS_NUM(x) ((x) == 20 || (x) == 21 || (x) == 23 || (x) == 700 || (x) == 701)
+/* TEMP: the following is taken from $(II_SYSTEM)/ingres/files/eqsqlda.h IISQ_ types */
+#define IS_NUM(x) ((x) == 10 || (x) == 30 || (x) == 31)
#define IS_NOT_NULL(x) ((x) == 1)
typedef char **INGRES_ROW;
uint32_t cached_path_id;
bool allow_transactions; /* transactions allowed */
bool transaction; /* transaction started */
+ bool explicit_commit; /* do an explicit commit after each query */
int changes; /* changes made to db */
POOLMEM *fname; /* Filename only */
POOLMEM *path; /* Path only */
POOLMEM *esc_name; /* Escaped file name */
POOLMEM *esc_path; /* Escaped path name */
- BREGEXP *limit_filter; /* Filter LIMIT function in queries into supported SQL */
+ alist *query_filters; /* Filters to convert sql queries into supported Ingres SQL */
int fnl; /* file name length */
int pnl; /* path name length */
};
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_insert_autokey_record (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);
+bool my_ingres_batch_start(JCR *jcr, B_DB *mdb);
+bool my_ingres_batch_end(JCR *jcr, B_DB *mdb, const char *error);
typedef struct ATTR_DBR ATTR_DBR;
-int my_ingres_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar);
+bool my_ingres_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar);
char *my_ingres_copy_escape(char *dest, char *src, size_t len);
extern const char* my_ingres_batch_lock_path_query;
#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_insert_autokey_record(x, y, z) my_ingres_insert_autokey_record((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)
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_insert_autokey_record(B_DB *mdb, const char *query, const 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_insert_autokey_record(x, y, z) my_dbi_insert_autokey_record((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)
int DigestType;
};
+struct ROBJECT_DBR {
+ char *object_name;
+ char *object;
+ char *plugin_name;
+ uint32_t object_len;
+ uint32_t object_index;
+ int32_t object_compression;
+ uint32_t FileIndex;
+ uint32_t Stream;
+ uint32_t FileType;
+ JobId_t JobId;
+ DBId_t RestoreObjectId;
+};
+
/* File record -- same format as database */
struct FILE_DBR {