char trig_deferrable[2];
char trig_initdeferred[2];
char trig_args[1024];
-char upd_rule[MAX_NAME_LEN], del_rule[MAX_NAME_LEN];
+char upd_rule[MAX_TABLE_LEN], del_rule[MAX_TABLE_LEN];
char pk_table_needed[MAX_TABLE_LEN + 1];
char fk_table_needed[MAX_TABLE_LEN + 1];
char *pkey_ptr, *fkey_ptr, *pk_table, *fk_table;
int i, j, k, num_keys;
-SWORD trig_nargs, upd_rule_type, del_rule_type, defer_type;
+SWORD trig_nargs, upd_rule_type=0, del_rule_type=0;
+#if (ODBCVER >= 0x0300)
+SWORD defer_type;
+#endif
char pkey[MAX_INFO_STRING];
Int2 result_cols;
return SQL_ERROR;
}
- result = SQLBindCol(htbl_stmt, 5, SQL_C_CHAR,\r
- upd_rule, sizeof(upd_rule), NULL);\r
- if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {\r
- stmt->errormsg = tbl_stmt->errormsg;\r
+ result = SQLBindCol(htbl_stmt, 5, SQL_C_CHAR,
+ upd_rule, sizeof(upd_rule), NULL);
+ if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
+ stmt->errormsg = tbl_stmt->errormsg;
stmt->errornumber = tbl_stmt->errornumber;
SC_log_error(func, "", stmt);
SQLFreeStmt(htbl_stmt, SQL_DROP);
return SQL_ERROR;
}
- result = SQLBindCol(htbl_stmt, 6, SQL_C_CHAR,\r
- del_rule, sizeof(del_rule), NULL);\r
- if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {\r
- stmt->errormsg = tbl_stmt->errormsg;\r
- stmt->errornumber = tbl_stmt->errornumber;\r
+ result = SQLBindCol(htbl_stmt, 6, SQL_C_CHAR,
+ del_rule, sizeof(del_rule), NULL);
+ if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
+ stmt->errormsg = tbl_stmt->errormsg;
+ stmt->errornumber = tbl_stmt->errornumber;
SC_log_error(func, "", stmt);
- SQLFreeStmt(htbl_stmt, SQL_DROP);\r
+ SQLFreeStmt(htbl_stmt, SQL_DROP);
return SQL_ERROR;
}
- result = SQLFetch(htbl_stmt);\r
- if (result == SQL_NO_DATA_FOUND)\r
- return SQL_SUCCESS;\r
+ result = SQLFetch(htbl_stmt);
+ if (result == SQL_NO_DATA_FOUND)
+ return SQL_SUCCESS;
- if(result != SQL_SUCCESS) {\r
- stmt->errormsg = SC_create_errormsg(htbl_stmt);\r
- stmt->errornumber = tbl_stmt->errornumber;\r
+ if(result != SQL_SUCCESS) {
+ stmt->errormsg = SC_create_errormsg(htbl_stmt);
+ stmt->errornumber = tbl_stmt->errornumber;
SC_log_error(func, "", stmt);
- SQLFreeStmt(htbl_stmt, SQL_DROP);\r
+ SQLFreeStmt(htbl_stmt, SQL_DROP);
return SQL_ERROR;
}
while (result == SQL_SUCCESS) {
/* Calculate the number of key parts */
- num_keys = (trig_nargs - 4) / 2;;\r
+ num_keys = (trig_nargs - 4) / 2;;
/* Handle action (i.e., 'cascade', 'restrict', 'setnull') */
- if (!strcmp(upd_rule, "RI_FKey_cascade_upd")) {\r
- upd_rule_type = SQL_CASCADE;\r
- } else if (!strcmp(upd_rule, "RI_FKey_noaction_upd")) {\r
- upd_rule_type = SQL_NO_ACTION;\r
- } else if (!strcmp(upd_rule, "RI_FKey_restrict_upd")) {\r
- upd_rule_type = SQL_NO_ACTION;\r
- } else if (!strcmp(upd_rule, "RI_FKey_setdefault_upd")) {\r
- upd_rule_type = SQL_SET_DEFAULT;\r
- } else if (!strcmp(upd_rule, "RI_FKey_setnull_upd")) {\r
- upd_rule_type = SQL_SET_NULL;\r
- }\r
- \r
- if (!strcmp(upd_rule, "RI_FKey_cascade_del")) {\r
- del_rule_type = SQL_CASCADE;\r
- } else if (!strcmp(upd_rule, "RI_FKey_noaction_del")) {\r
- del_rule_type = SQL_NO_ACTION;\r
- } else if (!strcmp(upd_rule, "RI_FKey_restrict_del")) {\r
- del_rule_type = SQL_NO_ACTION;\r
- } else if (!strcmp(upd_rule, "RI_FKey_setdefault_del")) {\r
- del_rule_type = SQL_SET_DEFAULT;\r
- } else if (!strcmp(upd_rule, "RI_FKey_setnull_del")) {\r
- del_rule_type = SQL_SET_NULL;\r
- } \r
-\r
-#if (ODBCVER >= 0x0300)\r
- /* Set deferrability type */\r
- if (!strcmp(trig_initdeferred, "y")) {\r
- defer_type = SQL_INITIALLY_DEFERRED;\r
- } else if (!strcmp(trig_deferrable, "y")) {\r
- defer_type = SQL_INITIALLY_IMMEDIATE;\r
- } else {\r
- defer_type = SQL_NOT_DEFERRABLE;\r
- }\r
-#endif /* ODBCVER >= 0x0300 */\r
-\r
- mylog("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n", trig_nargs, num_keys);\r
-\r
- /* Get to first primary key */\r
- pkey_ptr = trig_args;\r
- for (i = 0; i < 5; i++)\r
- pkey_ptr += strlen(pkey_ptr) + 1;\r
-\r
-\r
- /* Get to first foreign table */\r
- fk_table = trig_args;\r
- fk_table += strlen(fk_table) + 1;\r
-\r
- /* Get to first foreign key */\r
- fkey_ptr = trig_args;\r
- for (k = 0; k < 4; k++) \r
- fkey_ptr += strlen(fkey_ptr) + 1;\r
-
- for (k = 0; k < num_keys; k++) {\r
-
- mylog("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n", pkey_ptr, fk_table, fkey_ptr);\r
+ if (!strcmp(upd_rule, "RI_FKey_cascade_upd")) {
+ upd_rule_type = SQL_CASCADE;
+ } else if (!strcmp(upd_rule, "RI_FKey_noaction_upd")) {
+ upd_rule_type = SQL_NO_ACTION;
+ } else if (!strcmp(upd_rule, "RI_FKey_restrict_upd")) {
+ upd_rule_type = SQL_NO_ACTION;
+ } else if (!strcmp(upd_rule, "RI_FKey_setdefault_upd")) {
+ upd_rule_type = SQL_SET_DEFAULT;
+ } else if (!strcmp(upd_rule, "RI_FKey_setnull_upd")) {
+ upd_rule_type = SQL_SET_NULL;
+ }
+
+ if (!strcmp(upd_rule, "RI_FKey_cascade_del")) {
+ del_rule_type = SQL_CASCADE;
+ } else if (!strcmp(upd_rule, "RI_FKey_noaction_del")) {
+ del_rule_type = SQL_NO_ACTION;
+ } else if (!strcmp(upd_rule, "RI_FKey_restrict_del")) {
+ del_rule_type = SQL_NO_ACTION;
+ } else if (!strcmp(upd_rule, "RI_FKey_setdefault_del")) {
+ del_rule_type = SQL_SET_DEFAULT;
+ } else if (!strcmp(upd_rule, "RI_FKey_setnull_del")) {
+ del_rule_type = SQL_SET_NULL;
+ }
+
+#if (ODBCVER >= 0x0300)
+ /* Set deferrability type */
+ if (!strcmp(trig_initdeferred, "y")) {
+ defer_type = SQL_INITIALLY_DEFERRED;
+ } else if (!strcmp(trig_deferrable, "y")) {
+ defer_type = SQL_INITIALLY_IMMEDIATE;
+ } else {
+ defer_type = SQL_NOT_DEFERRABLE;
+ }
+#endif /* ODBCVER >= 0x0300 */
+
+ mylog("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n", trig_nargs, num_keys);
+
+ /* Get to first primary key */
+ pkey_ptr = trig_args;
+ for (i = 0; i < 5; i++)
+ pkey_ptr += strlen(pkey_ptr) + 1;
+
+
+ /* Get to first foreign table */
+ fk_table = trig_args;
+ fk_table += strlen(fk_table) + 1;
+
+ /* Get to first foreign key */
+ fkey_ptr = trig_args;
+ for (k = 0; k < 4; k++)
+ fkey_ptr += strlen(fkey_ptr) + 1;
+
+ for (k = 0; k < num_keys; k++) {
+
+ mylog("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n", pkey_ptr, fk_table, fkey_ptr);
row = (TupleNode *)malloc(sizeof(TupleNode) + (result_cols - 1) * sizeof(TupleField));
- mylog("pk_table_needed = '%s', pkey_ptr = '%s'\n", pk_table_needed, pkey_ptr);\r
+ mylog("pk_table_needed = '%s', pkey_ptr = '%s'\n", pk_table_needed, pkey_ptr);
set_tuplefield_null(&row->tuple[0]);
set_tuplefield_string(&row->tuple[1], "");
- set_tuplefield_string(&row->tuple[2], pk_table_needed);\r
- set_tuplefield_string(&row->tuple[3], pkey_ptr);\r
+ set_tuplefield_string(&row->tuple[2], pk_table_needed);
+ set_tuplefield_string(&row->tuple[3], pkey_ptr);
- mylog("fk_table = '%s', fkey_ptr = '%s'\n", fk_table, fkey_ptr);\r
+ mylog("fk_table = '%s', fkey_ptr = '%s'\n", fk_table, fkey_ptr);
set_tuplefield_null(&row->tuple[4]);
set_tuplefield_string(&row->tuple[5], "");
set_tuplefield_string(&row->tuple[6], fk_table);
- set_tuplefield_string(&row->tuple[7], fkey_ptr);\r
+ set_tuplefield_string(&row->tuple[7], fkey_ptr);
- set_tuplefield_int2(&row->tuple[8], (Int2) (k + 1));\r
+ set_tuplefield_int2(&row->tuple[8], (Int2) (k + 1));
- mylog("upd_rule = %d, del_rule= %d", upd_rule_type, del_rule_type);\r
- set_nullfield_int2(&row->tuple[9], (Int2) upd_rule_type);\r
- set_nullfield_int2(&row->tuple[10], (Int2) del_rule_type);\r
+ mylog("upd_rule = %d, del_rule= %d", upd_rule_type, del_rule_type);
+ set_nullfield_int2(&row->tuple[9], (Int2) upd_rule_type);
+ set_nullfield_int2(&row->tuple[10], (Int2) del_rule_type);
set_tuplefield_null(&row->tuple[11]);
set_tuplefield_null(&row->tuple[12]);
- set_tuplefield_string(&row->tuple[13], trig_args);\r
+ set_tuplefield_string(&row->tuple[13], trig_args);
-#if (ODBCVER >= 0x0300)\r
- mylog("defer_type = '%s', defer_type);\r
- set_tuplefield_int2(&row->tuple[14], defer_type);\r
-#endif /* ODBCVER >= 0x0300 */\r
+#if (ODBCVER >= 0x0300)
+ mylog("defer_type = '%s'", defer_type);
+ set_tuplefield_int2(&row->tuple[14], defer_type);
+#endif /* ODBCVER >= 0x0300 */
QR_add_tuple(stmt->result, row);
/* next primary/foreign key */
- for (j = 0; j < 2; j++) {\r
- pkey_ptr += strlen(pkey_ptr) + 1;\r
- fkey_ptr += strlen(fkey_ptr) + 1;\r
+ for (j = 0; j < 2; j++) {
+ pkey_ptr += strlen(pkey_ptr) + 1;
+ fkey_ptr += strlen(fkey_ptr) + 1;
}
}