]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/myingres.sh
Fix segfault when loading Plugins
[bacula/bacula] / bacula / src / cats / myingres.sh
1 #ifndef _MYINGRES_SH
2 #define _MYINGRES_SH
3
4 EXEC SQL INCLUDE SQLDA;
5
6 /* ---typedefs--- */
7
8 typedef struct ing_field {
9    char          name[34];
10    int           max_length;
11    unsigned int  type;
12    unsigned int  flags;       // 1 == not null
13 } INGRES_FIELD;
14
15 typedef struct ing_row {
16     IISQLVAR *sqlvar;           /* ptr to sqlvar[sqld] for one row */
17     struct ing_row *next;
18     int row_number;
19 } ING_ROW;
20
21 typedef enum ing_status {
22     ING_COMMAND_OK,
23     ING_TUPLES_OK,
24     ING_NO_RESULT,
25     ING_NO_ROWS_PROCESSED,
26     ING_EMPTY_RESULT,
27     ING_ERROR
28 } ING_STATUS;
29
30 typedef struct ing_varchar {
31     short len;
32     char* value;
33 } ING_VARCHAR;
34
35 /* It seems, Bacula needs the complete query result stored in one data structure */
36 typedef struct ing_result {
37     IISQLDA *sqlda;             /* descriptor */
38     INGRES_FIELD *fields;
39     int num_rows;
40     int num_fields;
41     ING_STATUS status;
42     ING_ROW *first_row;
43     ING_ROW *act_row;           /* just for iterating */
44     char numrowstring[10];
45     
46 } INGresult;
47
48 typedef struct ing_conn {
49     char dbname[24];
50     char user[32];
51     char password[32];
52     char connection_name[32];
53     int session_id;
54     char *msg;
55 } INGconn;
56
57
58 /* ---Prototypes--- */
59 int     INGcheck();
60 ING_STATUS      INGresultStatus(INGresult *res);
61 short   INGgetCols(const char *stmt);
62 IISQLDA *INGgetDescriptor(short numCols, const char *stmt);
63 void    INGfreeDescriptor(IISQLDA *sqlda);
64 int     INGgetTypeSize(IISQLVAR *ingvar);
65 INGresult       *INGgetINGresult(IISQLDA *sqlda);
66 void    INGfreeINGresult(INGresult *ing_res);
67 ING_ROW *INGgetRowSpace(INGresult *ing_res);
68 void    INGfreeRowSpace(ING_ROW *row, IISQLDA *sqlda);
69 int     INGfetchAll(const char *stmt, INGresult *ing_res);
70 void    INGrowSeek(INGresult *res, int row_number);
71 char    *INGgetvalue(INGresult *res, int row_number, int column_number);
72 int     INGgetisnull(INGresult *res, int row_number, int column_number);
73 int     INGntuples(const INGresult *res);
74 int     INGnfields(const INGresult *res);
75 char    *INGfname(const INGresult *res, int column_number);
76 short   INGftype(const INGresult *res, int column_number);
77 INGresult       *INGexec(INGconn *db, const char *query);
78 void    INGclear(INGresult *res);
79 INGconn *INGconnectDB(char *dbname, char *user, char *passwd);
80 void    INGdisconnectDB(INGconn *dbconn);
81 char    *INGerrorMessage(const INGconn *conn);
82 char    *INGcmdTuples(INGresult *res);
83
84 #endif /* _MYINGRES_SH */