]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/myingres.sh
Add more ingres code
[bacula/bacula] / bacula / src / cats / myingres.sh
diff --git a/bacula/src/cats/myingres.sh b/bacula/src/cats/myingres.sh
new file mode 100644 (file)
index 0000000..cc9cf3d
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2009-2010 Free Software Foundation Europe e.V.
+
+   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
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   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
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+#ifndef _MYINGRES_SH
+#define _MYINGRES_SH
+
+EXEC SQL INCLUDE SQLDA;
+
+/* ---typedefs--- */
+
+typedef struct ing_timestamp {
+   unsigned short year;
+   unsigned char month;
+   unsigned char day;
+   unsigned int secs;
+   unsigned int nsecs;
+   unsigned char tzh;
+   unsigned char tzm;
+} ING_TIMESTAMP;
+
+typedef struct ing_field {
+   char *name;
+   int max_length;
+   unsigned int type;
+   unsigned int flags;         /* 1 == not null */
+} INGRES_FIELD;
+
+typedef struct ing_row {
+   IISQLVAR *sqlvar;           /* ptr to sqlvar[sqld] for one row */
+   struct ing_row *next;
+   int row_number;
+} ING_ROW;
+
+typedef enum ing_status {
+   ING_COMMAND_OK,
+   ING_TUPLES_OK,
+   ING_NO_RESULT,
+   ING_NO_ROWS_PROCESSED,
+   ING_EMPTY_RESULT,
+   ING_ERROR
+} ING_STATUS;
+
+typedef struct ing_varchar {
+   short len;
+   char* value;
+} ING_VARCHAR;
+
+/* It seems, Bacula needs the complete query result stored in one data structure */
+typedef struct ing_result {
+   IISQLDA *sqlda;             /* descriptor */
+   INGRES_FIELD *fields;
+   int num_rows;
+   int num_fields;
+   ING_STATUS status;
+   ING_ROW *first_row;
+   ING_ROW *act_row;           /* just for iterating */
+} INGresult;
+
+typedef struct ing_conn {
+   char *dbname;
+   char *user;
+   char *password;
+   int session_id;
+   char *msg;
+} INGconn;
+
+/* ---Prototypes--- */
+int INGgetCols(INGconn *dbconn, const char *query, bool transaction);
+char *INGgetvalue(INGresult *ing_res, int row_number, int column_number);
+bool INGgetisnull(INGresult *ing_res, int row_number, int column_number);
+int INGntuples(const INGresult *ing_res);
+int INGnfields(const INGresult *ing_res);
+char *INGfname(const INGresult *ing_res, int column_number);
+short INGftype(const INGresult *ing_res, int column_number);
+int INGexec(INGconn *dbconn, const char *query, bool transaction);
+INGresult *INGquery(INGconn *dbconn, const char *query, bool transaction);
+void INGclear(INGresult *ing_res);
+void INGcommit(const INGconn *dbconn);
+INGconn *INGconnectDB(char *dbname, char *user, char *passwd, int session_id);
+void INGsetDefaultLockingMode(INGconn *dbconn);
+void INGdisconnectDB(INGconn *dbconn);
+char *INGerrorMessage(const INGconn *dbconn);
+char *INGcmdTuples(INGresult *ing_res);
+
+#endif /* _MYINGRES_SH */