@@ -2255,12 +2255,15 @@ char tables_query[MAX_STATEMENT_LEN];
2255
2255
char trig_deferrable [2 ];
2256
2256
char trig_initdeferred [2 ];
2257
2257
char trig_args [1024 ];
2258
- char upd_rule [MAX_NAME_LEN ],del_rule [MAX_NAME_LEN ];
2258
+ char upd_rule [MAX_TABLE_LEN ],del_rule [MAX_TABLE_LEN ];
2259
2259
char pk_table_needed [MAX_TABLE_LEN + 1 ];
2260
2260
char fk_table_needed [MAX_TABLE_LEN + 1 ];
2261
2261
char * pkey_ptr ,* fkey_ptr ,* pk_table ,* fk_table ;
2262
2262
int i ,j ,k ,num_keys ;
2263
- SWORD trig_nargs ,upd_rule_type ,del_rule_type ,defer_type ;
2263
+ SWORD trig_nargs ,upd_rule_type = 0 ,del_rule_type = 0 ;
2264
+ #if (ODBCVER >=0x0300 )
2265
+ SWORD defer_type ;
2266
+ #endif
2264
2267
char pkey [MAX_INFO_STRING ];
2265
2268
Int2 result_cols ;
2266
2269
@@ -2694,136 +2697,136 @@ Int2 result_cols;
2694
2697
return SQL_ERROR ;
2695
2698
}
2696
2699
2697
- result = SQLBindCol (htbl_stmt ,5 ,SQL_C_CHAR ,
2698
- upd_rule ,sizeof (upd_rule ),NULL );
2699
- if ((result != SQL_SUCCESS )&& (result != SQL_SUCCESS_WITH_INFO )) {
2700
- stmt -> errormsg = tbl_stmt -> errormsg ;
2700
+ result = SQLBindCol (htbl_stmt ,5 ,SQL_C_CHAR ,
2701
+ upd_rule ,sizeof (upd_rule ),NULL );
2702
+ if ((result != SQL_SUCCESS )&& (result != SQL_SUCCESS_WITH_INFO )) {
2703
+ stmt -> errormsg = tbl_stmt -> errormsg ;
2701
2704
stmt -> errornumber = tbl_stmt -> errornumber ;
2702
2705
SC_log_error (func ,"" ,stmt );
2703
2706
SQLFreeStmt (htbl_stmt ,SQL_DROP );
2704
2707
return SQL_ERROR ;
2705
2708
}
2706
2709
2707
- result = SQLBindCol (htbl_stmt ,6 ,SQL_C_CHAR ,
2708
- del_rule ,sizeof (del_rule ),NULL );
2709
- if ((result != SQL_SUCCESS )&& (result != SQL_SUCCESS_WITH_INFO )) {
2710
- stmt -> errormsg = tbl_stmt -> errormsg ;
2711
- stmt -> errornumber = tbl_stmt -> errornumber ;
2710
+ result = SQLBindCol (htbl_stmt ,6 ,SQL_C_CHAR ,
2711
+ del_rule ,sizeof (del_rule ),NULL );
2712
+ if ((result != SQL_SUCCESS )&& (result != SQL_SUCCESS_WITH_INFO )) {
2713
+ stmt -> errormsg = tbl_stmt -> errormsg ;
2714
+ stmt -> errornumber = tbl_stmt -> errornumber ;
2712
2715
SC_log_error (func ,"" ,stmt );
2713
- SQLFreeStmt (htbl_stmt ,SQL_DROP );
2716
+ SQLFreeStmt (htbl_stmt ,SQL_DROP );
2714
2717
return SQL_ERROR ;
2715
2718
}
2716
2719
2717
- result = SQLFetch (htbl_stmt );
2718
- if (result == SQL_NO_DATA_FOUND )
2719
- return SQL_SUCCESS ;
2720
+ result = SQLFetch (htbl_stmt );
2721
+ if (result == SQL_NO_DATA_FOUND )
2722
+ return SQL_SUCCESS ;
2720
2723
2721
- if (result != SQL_SUCCESS ) {
2722
- stmt -> errormsg = SC_create_errormsg (htbl_stmt );
2723
- stmt -> errornumber = tbl_stmt -> errornumber ;
2724
+ if (result != SQL_SUCCESS ) {
2725
+ stmt -> errormsg = SC_create_errormsg (htbl_stmt );
2726
+ stmt -> errornumber = tbl_stmt -> errornumber ;
2724
2727
SC_log_error (func ,"" ,stmt );
2725
- SQLFreeStmt (htbl_stmt ,SQL_DROP );
2728
+ SQLFreeStmt (htbl_stmt ,SQL_DROP );
2726
2729
return SQL_ERROR ;
2727
2730
}
2728
2731
2729
2732
while (result == SQL_SUCCESS ) {
2730
2733
2731
2734
/*Calculate the number of key parts */
2732
- num_keys = (trig_nargs - 4 ) /2 ;;
2735
+ num_keys = (trig_nargs - 4 ) /2 ;;
2733
2736
2734
2737
/*Handle action (i.e., 'cascade', 'restrict', 'setnull') */
2735
- if (!strcmp (upd_rule ,"RI_FKey_cascade_upd" )) {
2736
- upd_rule_type = SQL_CASCADE ;
2737
- }else if (!strcmp (upd_rule ,"RI_FKey_noaction_upd" )) {
2738
- upd_rule_type = SQL_NO_ACTION ;
2739
- }else if (!strcmp (upd_rule ,"RI_FKey_restrict_upd" )) {
2740
- upd_rule_type = SQL_NO_ACTION ;
2741
- }else if (!strcmp (upd_rule ,"RI_FKey_setdefault_upd" )) {
2742
- upd_rule_type = SQL_SET_DEFAULT ;
2743
- }else if (!strcmp (upd_rule ,"RI_FKey_setnull_upd" )) {
2744
- upd_rule_type = SQL_SET_NULL ;
2745
- }
2746
-
2747
- if (!strcmp (upd_rule ,"RI_FKey_cascade_del" )) {
2748
- del_rule_type = SQL_CASCADE ;
2749
- }else if (!strcmp (upd_rule ,"RI_FKey_noaction_del" )) {
2750
- del_rule_type = SQL_NO_ACTION ;
2751
- }else if (!strcmp (upd_rule ,"RI_FKey_restrict_del" )) {
2752
- del_rule_type = SQL_NO_ACTION ;
2753
- }else if (!strcmp (upd_rule ,"RI_FKey_setdefault_del" )) {
2754
- del_rule_type = SQL_SET_DEFAULT ;
2755
- }else if (!strcmp (upd_rule ,"RI_FKey_setnull_del" )) {
2756
- del_rule_type = SQL_SET_NULL ;
2757
- }
2758
-
2759
- #if (ODBCVER >=0x0300 )
2760
- /* Set deferrability type */
2761
- if (!strcmp (trig_initdeferred ,"y" )) {
2762
- defer_type = SQL_INITIALLY_DEFERRED ;
2763
- }else if (!strcmp (trig_deferrable ,"y" )) {
2764
- defer_type = SQL_INITIALLY_IMMEDIATE ;
2765
- }else {
2766
- defer_type = SQL_NOT_DEFERRABLE ;
2767
- }
2768
- #endif /* ODBCVER >= 0x0300 */
2769
-
2770
- mylog ("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n" ,trig_nargs ,num_keys );
2771
-
2772
- /*Get to first primary key */
2773
- pkey_ptr = trig_args ;
2774
- for (i = 0 ;i < 5 ;i ++ )
2775
- pkey_ptr += strlen (pkey_ptr )+ 1 ;
2776
-
2777
-
2778
- /*Get to first foreign table */
2779
- fk_table = trig_args ;
2780
- fk_table += strlen (fk_table )+ 1 ;
2781
-
2782
- /* Get to first foreign key */
2783
- fkey_ptr = trig_args ;
2784
- for (k = 0 ;k < 4 ;k ++ )
2785
- fkey_ptr += strlen (fkey_ptr )+ 1 ;
2786
-
2787
- for (k = 0 ;k < num_keys ;k ++ ) {
2788
-
2789
- mylog ("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n" ,pkey_ptr ,fk_table ,fkey_ptr );
2738
+ if (!strcmp (upd_rule ,"RI_FKey_cascade_upd" )) {
2739
+ upd_rule_type = SQL_CASCADE ;
2740
+ }else if (!strcmp (upd_rule ,"RI_FKey_noaction_upd" )) {
2741
+ upd_rule_type = SQL_NO_ACTION ;
2742
+ }else if (!strcmp (upd_rule ,"RI_FKey_restrict_upd" )) {
2743
+ upd_rule_type = SQL_NO_ACTION ;
2744
+ }else if (!strcmp (upd_rule ,"RI_FKey_setdefault_upd" )) {
2745
+ upd_rule_type = SQL_SET_DEFAULT ;
2746
+ }else if (!strcmp (upd_rule ,"RI_FKey_setnull_upd" )) {
2747
+ upd_rule_type = SQL_SET_NULL ;
2748
+ }
2749
+
2750
+ if (!strcmp (upd_rule ,"RI_FKey_cascade_del" )) {
2751
+ del_rule_type = SQL_CASCADE ;
2752
+ }else if (!strcmp (upd_rule ,"RI_FKey_noaction_del" )) {
2753
+ del_rule_type = SQL_NO_ACTION ;
2754
+ }else if (!strcmp (upd_rule ,"RI_FKey_restrict_del" )) {
2755
+ del_rule_type = SQL_NO_ACTION ;
2756
+ }else if (!strcmp (upd_rule ,"RI_FKey_setdefault_del" )) {
2757
+ del_rule_type = SQL_SET_DEFAULT ;
2758
+ }else if (!strcmp (upd_rule ,"RI_FKey_setnull_del" )) {
2759
+ del_rule_type = SQL_SET_NULL ;
2760
+ }
2761
+
2762
+ #if (ODBCVER >=0x0300 )
2763
+ /* Set deferrability type */
2764
+ if (!strcmp (trig_initdeferred ,"y" )) {
2765
+ defer_type = SQL_INITIALLY_DEFERRED ;
2766
+ }else if (!strcmp (trig_deferrable ,"y" )) {
2767
+ defer_type = SQL_INITIALLY_IMMEDIATE ;
2768
+ }else {
2769
+ defer_type = SQL_NOT_DEFERRABLE ;
2770
+ }
2771
+ #endif /* ODBCVER >= 0x0300 */
2772
+
2773
+ mylog ("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n" ,trig_nargs ,num_keys );
2774
+
2775
+ /*Get to first primary key */
2776
+ pkey_ptr = trig_args ;
2777
+ for (i = 0 ;i < 5 ;i ++ )
2778
+ pkey_ptr += strlen (pkey_ptr )+ 1 ;
2779
+
2780
+
2781
+ /*Get to first foreign table */
2782
+ fk_table = trig_args ;
2783
+ fk_table += strlen (fk_table )+ 1 ;
2784
+
2785
+ /* Get to first foreign key */
2786
+ fkey_ptr = trig_args ;
2787
+ for (k = 0 ;k < 4 ;k ++ )
2788
+ fkey_ptr += strlen (fkey_ptr )+ 1 ;
2789
+
2790
+ for (k = 0 ;k < num_keys ;k ++ ) {
2791
+
2792
+ mylog ("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n" ,pkey_ptr ,fk_table ,fkey_ptr );
2790
2793
2791
2794
row = (TupleNode * )malloc (sizeof (TupleNode )+ (result_cols - 1 )* sizeof (TupleField ));
2792
2795
2793
- mylog ("pk_table_needed = '%s', pkey_ptr = '%s'\n" ,pk_table_needed ,pkey_ptr );
2796
+ mylog ("pk_table_needed = '%s', pkey_ptr = '%s'\n" ,pk_table_needed ,pkey_ptr );
2794
2797
set_tuplefield_null (& row -> tuple [0 ]);
2795
2798
set_tuplefield_string (& row -> tuple [1 ],"" );
2796
- set_tuplefield_string (& row -> tuple [2 ],pk_table_needed );
2797
- set_tuplefield_string (& row -> tuple [3 ],pkey_ptr );
2799
+ set_tuplefield_string (& row -> tuple [2 ],pk_table_needed );
2800
+ set_tuplefield_string (& row -> tuple [3 ],pkey_ptr );
2798
2801
2799
- mylog ("fk_table = '%s', fkey_ptr = '%s'\n" ,fk_table ,fkey_ptr );
2802
+ mylog ("fk_table = '%s', fkey_ptr = '%s'\n" ,fk_table ,fkey_ptr );
2800
2803
set_tuplefield_null (& row -> tuple [4 ]);
2801
2804
set_tuplefield_string (& row -> tuple [5 ],"" );
2802
2805
set_tuplefield_string (& row -> tuple [6 ],fk_table );
2803
- set_tuplefield_string (& row -> tuple [7 ],fkey_ptr );
2806
+ set_tuplefield_string (& row -> tuple [7 ],fkey_ptr );
2804
2807
2805
- set_tuplefield_int2 (& row -> tuple [8 ], (Int2 ) (k + 1 ));
2808
+ set_tuplefield_int2 (& row -> tuple [8 ], (Int2 ) (k + 1 ));
2806
2809
2807
- mylog ("upd_rule = %d, del_rule= %d" ,upd_rule_type ,del_rule_type );
2808
- set_nullfield_int2 (& row -> tuple [9 ], (Int2 )upd_rule_type );
2809
- set_nullfield_int2 (& row -> tuple [10 ], (Int2 )del_rule_type );
2810
+ mylog ("upd_rule = %d, del_rule= %d" ,upd_rule_type ,del_rule_type );
2811
+ set_nullfield_int2 (& row -> tuple [9 ], (Int2 )upd_rule_type );
2812
+ set_nullfield_int2 (& row -> tuple [10 ], (Int2 )del_rule_type );
2810
2813
2811
2814
set_tuplefield_null (& row -> tuple [11 ]);
2812
2815
set_tuplefield_null (& row -> tuple [12 ]);
2813
2816
2814
- set_tuplefield_string (& row -> tuple [13 ],trig_args );
2817
+ set_tuplefield_string (& row -> tuple [13 ],trig_args );
2815
2818
2816
- #if (ODBCVER >=0x0300 )
2817
- mylog ("defer_type = '%s', defer_type);
2818
- set_tuplefield_int2 (& row -> tuple [14 ],defer_type );
2819
- #endif /* ODBCVER >= 0x0300 */
2819
+ #if (ODBCVER >=0x0300 )
2820
+ mylog ("defer_type = '%s'" ,defer_type );
2821
+ set_tuplefield_int2 (& row -> tuple [14 ],defer_type );
2822
+ #endif /* ODBCVER >= 0x0300 */
2820
2823
2821
2824
QR_add_tuple (stmt -> result ,row );
2822
2825
2823
2826
/*next primary/foreign key */
2824
- for (j = 0 ;j < 2 ;j ++ ) {
2825
- pkey_ptr += strlen (pkey_ptr )+ 1 ;
2826
- fkey_ptr += strlen (fkey_ptr )+ 1 ;
2827
+ for (j = 0 ;j < 2 ;j ++ ) {
2828
+ pkey_ptr += strlen (pkey_ptr )+ 1 ;
2829
+ fkey_ptr += strlen (fkey_ptr )+ 1 ;
2827
2830
}
2828
2831
}
2829
2832