ruby-informix 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Changelog +14 -0
  2. data/README +7 -7
  3. data/informix.c +246 -231
  4. data/informix.ec +17 -9
  5. metadata +2 -2
data/Changelog CHANGED
@@ -1,3 +1,17 @@
1
+ 0.6.1 13/10/2007
2
+ ------------------
3
+ Bugs fixed:
4
+ * Database#columns was returning an empty array from within the
5
+ Informix ActiveRecord adapter
6
+ (ActiveRecord::ConnectionAdapters::InformixAdapter#columns) if
7
+ called for different tables. This bug was raising the following
8
+ error in Ruby on Rails:
9
+
10
+ undefined method columname=
11
+
12
+ Noticed by Andr�s Rafael <aandresrafael at gmail dot com>
13
+
14
+
1
15
  0.6.0 08/28/2007
2
16
  ------------------
3
17
  New features:
data/README CHANGED
@@ -18,9 +18,9 @@ Ruby/Informix has been tested succesfully on the following platforms:
18
18
 
19
19
  Operating System Architecture Informix CSDK
20
20
  -------------------------------------------------------------
21
- Solaris 10 SPARC 11.10.UC1 3.00UC2
22
- Solaris 10 SPARC 9.40FC6 3.00UC2
23
- Solaris 9 SPARC 9.40FC6 2.90UC3
21
+ Solaris 10 SPARC64 11.10.UC1 3.00UC2
22
+ Solaris 10 SPARC64 9.40FC6 3.00UC2
23
+ Solaris 9 SPARC64 9.40FC6 2.90UC3
24
24
  Fedora Core 5 x86 10.00.UC3R1 2.90UC4
25
25
  Fedora Core 4 x86 10.00.UC3R1 2.90UC4
26
26
  SuSE Linux 9.3 x86 9.30TC1 2.90UC4
@@ -65,9 +65,8 @@ Objects (CLOB/BLOB).
65
65
 
66
66
  * use #drop for prepared statements and cursors or use them with blocks,
67
67
  to release Informix resources.
68
- * you can optimize cursor execution by changing the fetch and insert buffers,
69
- setting the environment variable FET_BUF_SIZE to up to 32767 for Informix 9.x,
70
- or BIG_FET_BUF_SIZE for Informix 10.x
68
+ * you can optimize cursor execution by changing the size of fetch and insert
69
+ buffers, setting the environment variable FET_BUF_SIZE to up to 32767.
71
70
 
72
71
 
73
72
  5. Caveats
@@ -77,7 +76,8 @@ Objects (CLOB/BLOB).
77
76
  6. Support
78
77
 
79
78
  Feel free to send me bug reports, feature requests, comments, patches or
80
- questions to my mailbox or Ruby/Informix's forums at Rubyforge.
79
+ questions to my mailbox or Ruby/Informix's forums and mailing list at
80
+ Rubyforge (http://rubyforge.org/projects/ruby-informix/)
81
81
 
82
82
 
83
83
  -----------------------------------------
data/informix.c CHANGED
@@ -1,7 +1,7 @@
1
1
  #include <sqlhdr.h>
2
2
  #include <sqliapi.h>
3
3
  #line 1 "informix.ec"
4
- /* $Id: informix.ec,v 1.10 2007/08/23 02:32:56 santana Exp $ */
4
+ /* $Id: informix.ec,v 1.12 2007/10/14 00:18:50 santana Exp $ */
5
5
  /*
6
6
  * Copyright (c) 2006-2007, Gerardo Santana Gomez Garrido <gerardo.santana@gmail.com>
7
7
  * All rights reserved.
@@ -31,7 +31,7 @@
31
31
  * POSSIBILITY OF SUCH DAMAGE.
32
32
  */
33
33
 
34
- static const char rcsid[] = "$Id: informix.ec,v 1.10 2007/08/23 02:32:56 santana Exp $";
34
+ static const char rcsid[] = "$Id: informix.ec,v 1.12 2007/10/14 00:18:50 santana Exp $";
35
35
 
36
36
  #include "ruby.h"
37
37
  #include "ifx_except.h"
@@ -2018,7 +2018,7 @@ rb_informix_connect(int argc, VALUE *argv, VALUE self)
2018
2018
  */
2019
2019
  static VALUE rb_informix_version(void)
2020
2020
  {
2021
- static const char * const ver = "0.6.0";
2021
+ static const char * const ver = "0.6.1";
2022
2022
  static VALUE driver_version;
2023
2023
 
2024
2024
  if (driver_version == 0)
@@ -2614,39 +2614,46 @@ static ifx_cursor_t _SQ0 = {0};
2614
2614
  result = rb_ary_new();
2615
2615
 
2616
2616
  cid = did + IDSIZE;
2617
+
2617
2618
  if (!*cid) {
2618
- snprintf(cid, IDSIZE, "COLS%lX", self);
2619
2619
  /*
2620
- * EXEC SQL declare :cid cursor for
2621
- * select colname, coltype, collength, extended_id,
2620
+ * EXEC SQL begin declare section;
2621
+ */
2622
+ #line 2149 "informix.ec"
2623
+ #line 2150 "informix.ec"
2624
+ char sid[IDSIZE];
2625
+ /*
2626
+ * EXEC SQL end declare section;
2627
+ */
2628
+ #line 2151 "informix.ec"
2629
+
2630
+
2631
+ snprintf(sid, IDSIZE, "COLS%lX", self);
2632
+ snprintf(cid, IDSIZE, "COLC%lX", self);
2633
+
2634
+ /*
2635
+ * EXEC SQL prepare :sid from
2636
+ * 'select colname, coltype, collength, extended_id,
2622
2637
  * type, default, c.colno
2623
2638
  * from syscolumns c, outer sysdefaults d
2624
- * where c.tabid = :tabid and c.tabid = d.tabid
2639
+ * where c.tabid = ? and c.tabid = d.tabid
2625
2640
  * and c.colno = d.colno
2626
- * order by c.colno;
2641
+ * order by c.colno';
2627
2642
  */
2628
- #line 2149 "informix.ec"
2643
+ #line 2156 "informix.ec"
2629
2644
  {
2630
- #line 2155 "informix.ec"
2631
- static const char *sqlcmdtxt[] =
2632
- #line 2155 "informix.ec"
2633
- {
2634
- #line 2155 "informix.ec"
2635
- "select colname , coltype , collength , extended_id , type , default , c . colno from syscolumns c , outer sysdefaults d where c . tabid = ? and c . tabid = d . tabid and c . colno = d . colno order by c . colno",
2636
- 0
2637
- };
2638
- #line 2155 "informix.ec"
2639
- static ifx_sqlvar_t _sqibind[] =
2640
- {
2641
- { 102, sizeof(tabid), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
2642
- #line 2155 "informix.ec"
2643
- };
2644
- static ifx_sqlda_t _SD0 = { 1, _sqibind, {0}, 1, 0 };
2645
- #line 2155 "informix.ec"
2646
- _sqibind[0].sqldata = (char *) &tabid;
2647
- #line 2155 "informix.ec"
2648
- sqli_curs_decl_stat(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqlcmdtxt, &_SD0, (ifx_sqlda_t *)0, 0, (ifx_literal_t *)0, (ifx_namelist_t *)0, 2, 0, 0);
2649
- #line 2155 "informix.ec"
2645
+ #line 2162 "informix.ec"
2646
+ sqli_prep(ESQLINTVERSION, sid, "select colname, coltype, collength, extended_id, type, default, c.colno from syscolumns c, outer sysdefaults d where c.tabid = ? and c.tabid = d.tabid and c.colno = d.colno order by c.colno",(ifx_literal_t *)0, (ifx_namelist_t *)0, 2, 0, 0 );
2647
+ #line 2162 "informix.ec"
2648
+ }
2649
+ /*
2650
+ * EXEC SQL declare :cid cursor for :sid;
2651
+ */
2652
+ #line 2163 "informix.ec"
2653
+ {
2654
+ #line 2163 "informix.ec"
2655
+ sqli_curs_decl_dynm(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqli_curs_locate(ESQLINTVERSION, sid, 1), 0, 0);
2656
+ #line 2163 "informix.ec"
2650
2657
  }
2651
2658
  if (SQLCODE < 0) {
2652
2659
  cid[0] = 0;
@@ -2655,13 +2662,21 @@ sqli_curs_decl_stat(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), ci
2655
2662
  }
2656
2663
 
2657
2664
  /*
2658
- * EXEC SQL open :cid;
2665
+ * EXEC SQL open :cid using :tabid;
2659
2666
  */
2660
- #line 2162 "informix.ec"
2667
+ #line 2170 "informix.ec"
2661
2668
  {
2662
- #line 2162 "informix.ec"
2663
- sqli_curs_open(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, (char *)0, (struct value *)0, 0, 0);
2664
- #line 2162 "informix.ec"
2669
+ #line 2170 "informix.ec"
2670
+ static ifx_sqlvar_t _sqibind[] =
2671
+ {
2672
+ { 102, sizeof(tabid), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
2673
+ #line 2170 "informix.ec"
2674
+ };
2675
+ static ifx_sqlda_t _SD0 = { 1, _sqibind, {0}, 1, 0 };
2676
+ #line 2170 "informix.ec"
2677
+ _sqibind[0].sqldata = (char *) &tabid;
2678
+ sqli_curs_open(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), &_SD0, (char *)0, (struct value *)0, 1, 0);
2679
+ #line 2170 "informix.ec"
2665
2680
  }
2666
2681
  if (SQLCODE < 0)
2667
2682
  raise_ifx_extended();
@@ -2671,9 +2686,9 @@ sqli_curs_decl_stat(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), ci
2671
2686
  * EXEC SQL fetch :cid into :colname, :coltype, :collength, :xid,
2672
2687
  * :deftype, :defvalue;
2673
2688
  */
2674
- #line 2167 "informix.ec"
2689
+ #line 2175 "informix.ec"
2675
2690
  {
2676
- #line 2168 "informix.ec"
2691
+ #line 2176 "informix.ec"
2677
2692
  static ifx_sqlvar_t _sqobind[] =
2678
2693
  {
2679
2694
  { 114, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -2682,24 +2697,24 @@ sqli_curs_decl_stat(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), ci
2682
2697
  { 102, sizeof(xid), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
2683
2698
  { 100, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
2684
2699
  { 114, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
2685
- #line 2168 "informix.ec"
2700
+ #line 2176 "informix.ec"
2686
2701
  };
2687
2702
  static ifx_sqlda_t _SD0 = { 6, _sqobind, {0}, 6, 0 };
2688
2703
  static _FetchSpec _FS1 = { 0, 1, 0 };
2689
- #line 2168 "informix.ec"
2704
+ #line 2176 "informix.ec"
2690
2705
  _sqobind[0].sqldata = colname;
2691
- #line 2168 "informix.ec"
2706
+ #line 2176 "informix.ec"
2692
2707
  _sqobind[1].sqldata = (char *) &coltype;
2693
- #line 2168 "informix.ec"
2708
+ #line 2176 "informix.ec"
2694
2709
  _sqobind[2].sqldata = (char *) &collength;
2695
- #line 2168 "informix.ec"
2710
+ #line 2176 "informix.ec"
2696
2711
  _sqobind[3].sqldata = (char *) &xid;
2697
- #line 2168 "informix.ec"
2712
+ #line 2176 "informix.ec"
2698
2713
  _sqobind[4].sqldata = deftype;
2699
- #line 2168 "informix.ec"
2714
+ #line 2176 "informix.ec"
2700
2715
  _sqobind[5].sqldata = defvalue;
2701
2716
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, &_SD0, (char *)0, &_FS1);
2702
- #line 2168 "informix.ec"
2717
+ #line 2176 "informix.ec"
2703
2718
  }
2704
2719
  if (SQLCODE < 0)
2705
2720
  raise_ifx_extended();
@@ -2797,11 +2812,11 @@ sqli_curs_decl_stat(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), ci
2797
2812
  /*
2798
2813
  * EXEC SQL close :cid;
2799
2814
  */
2800
- #line 2262 "informix.ec"
2815
+ #line 2270 "informix.ec"
2801
2816
  {
2802
- #line 2262 "informix.ec"
2817
+ #line 2270 "informix.ec"
2803
2818
  sqli_curs_close(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256));
2804
- #line 2262 "informix.ec"
2819
+ #line 2270 "informix.ec"
2805
2820
  }
2806
2821
 
2807
2822
  return result;
@@ -2827,13 +2842,13 @@ statement_free(void *p)
2827
2842
  /*
2828
2843
  * EXEC SQL begin declare section;
2829
2844
  */
2830
- #line 2284 "informix.ec"
2831
- #line 2285 "informix.ec"
2845
+ #line 2292 "informix.ec"
2846
+ #line 2293 "informix.ec"
2832
2847
  char *sid, *did;
2833
2848
  /*
2834
2849
  * EXEC SQL end declare section;
2835
2850
  */
2836
- #line 2286 "informix.ec"
2851
+ #line 2294 "informix.ec"
2837
2852
 
2838
2853
 
2839
2854
  free_input_slots(p);
@@ -2843,22 +2858,22 @@ statement_free(void *p)
2843
2858
  /*
2844
2859
  * EXEC SQL set connection :did;
2845
2860
  */
2846
- #line 2292 "informix.ec"
2861
+ #line 2300 "informix.ec"
2847
2862
  {
2848
- #line 2292 "informix.ec"
2863
+ #line 2300 "informix.ec"
2849
2864
  sqli_connect_set(0, did, 0);
2850
- #line 2292 "informix.ec"
2865
+ #line 2300 "informix.ec"
2851
2866
  }
2852
2867
  if (SQLCODE >= 0) {
2853
2868
  sid = ((cursor_t *)p)->stmt_id;
2854
2869
  /*
2855
2870
  * EXEC SQL free :sid;
2856
2871
  */
2857
- #line 2295 "informix.ec"
2872
+ #line 2303 "informix.ec"
2858
2873
  {
2859
- #line 2295 "informix.ec"
2874
+ #line 2303 "informix.ec"
2860
2875
  sqli_curs_free(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 258));
2861
- #line 2295 "informix.ec"
2876
+ #line 2303 "informix.ec"
2862
2877
  }
2863
2878
  }
2864
2879
 
@@ -2883,24 +2898,24 @@ statement_initialize(VALUE self, VALUE db, VALUE query)
2883
2898
  /*
2884
2899
  * EXEC SQL begin declare section;
2885
2900
  */
2886
- #line 2316 "informix.ec"
2887
- #line 2317 "informix.ec"
2901
+ #line 2324 "informix.ec"
2902
+ #line 2325 "informix.ec"
2888
2903
  char *c_query, *sid, *did;
2889
2904
  /*
2890
2905
  * EXEC SQL end declare section;
2891
2906
  */
2892
- #line 2318 "informix.ec"
2907
+ #line 2326 "informix.ec"
2893
2908
 
2894
2909
 
2895
2910
  Data_Get_Struct(db, char, did);
2896
2911
  /*
2897
2912
  * EXEC SQL set connection :did;
2898
2913
  */
2899
- #line 2321 "informix.ec"
2914
+ #line 2329 "informix.ec"
2900
2915
  {
2901
- #line 2321 "informix.ec"
2916
+ #line 2329 "informix.ec"
2902
2917
  sqli_connect_set(0, did, 0);
2903
- #line 2321 "informix.ec"
2918
+ #line 2329 "informix.ec"
2904
2919
  }
2905
2920
  if (SQLCODE < 0)
2906
2921
  raise_ifx_extended();
@@ -2916,11 +2931,11 @@ statement_initialize(VALUE self, VALUE db, VALUE query)
2916
2931
  /*
2917
2932
  * EXEC SQL prepare :sid from :c_query;
2918
2933
  */
2919
- #line 2333 "informix.ec"
2934
+ #line 2341 "informix.ec"
2920
2935
  {
2921
- #line 2333 "informix.ec"
2936
+ #line 2341 "informix.ec"
2922
2937
  sqli_prep(ESQLINTVERSION, sid, c_query,(ifx_literal_t *)0, (ifx_namelist_t *)0, -1, 0, 0 );
2923
- #line 2333 "informix.ec"
2938
+ #line 2341 "informix.ec"
2924
2939
  }
2925
2940
  if (SQLCODE < 0)
2926
2941
  raise_ifx_extended();
@@ -2929,11 +2944,11 @@ statement_initialize(VALUE self, VALUE db, VALUE query)
2929
2944
  /*
2930
2945
  * EXEC SQL describe :sid into output;
2931
2946
  */
2932
- #line 2338 "informix.ec"
2947
+ #line 2346 "informix.ec"
2933
2948
  {
2934
- #line 2338 "informix.ec"
2949
+ #line 2346 "informix.ec"
2935
2950
  sqli_describe_stmt(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), &output, 0);
2936
- #line 2338 "informix.ec"
2951
+ #line 2346 "informix.ec"
2937
2952
  }
2938
2953
  c->daOutput = output;
2939
2954
 
@@ -2997,13 +3012,13 @@ statement_call(int argc, VALUE *argv, VALUE self)
2997
3012
  /*
2998
3013
  * EXEC SQL begin declare section;
2999
3014
  */
3000
- #line 2398 "informix.ec"
3001
- #line 2399 "informix.ec"
3015
+ #line 2406 "informix.ec"
3016
+ #line 2407 "informix.ec"
3002
3017
  char *sid, *did;
3003
3018
  /*
3004
3019
  * EXEC SQL end declare section;
3005
3020
  */
3006
- #line 2400 "informix.ec"
3021
+ #line 2408 "informix.ec"
3007
3022
 
3008
3023
 
3009
3024
  Data_Get_Struct(self, cursor_t, c);
@@ -3012,11 +3027,11 @@ statement_call(int argc, VALUE *argv, VALUE self)
3012
3027
  /*
3013
3028
  * EXEC SQL set connection :did;
3014
3029
  */
3015
- #line 2405 "informix.ec"
3030
+ #line 2413 "informix.ec"
3016
3031
  {
3017
- #line 2405 "informix.ec"
3032
+ #line 2413 "informix.ec"
3018
3033
  sqli_connect_set(0, did, 0);
3019
- #line 2405 "informix.ec"
3034
+ #line 2413 "informix.ec"
3020
3035
  }
3021
3036
  if (SQLCODE < 0)
3022
3037
  raise_ifx_extended();
@@ -3036,11 +3051,11 @@ statement_call(int argc, VALUE *argv, VALUE self)
3036
3051
  * EXEC SQL execute :sid into descriptor output
3037
3052
  * using descriptor input;
3038
3053
  */
3039
- #line 2420 "informix.ec"
3054
+ #line 2428 "informix.ec"
3040
3055
  {
3041
- #line 2421 "informix.ec"
3056
+ #line 2429 "informix.ec"
3042
3057
  sqli_exec(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), input, (char *)0, (struct value *)0, output, (char *)0, (struct value *)0, 0);
3043
- #line 2421 "informix.ec"
3058
+ #line 2429 "informix.ec"
3044
3059
  }
3045
3060
  clean_input_slots(c);
3046
3061
  }
@@ -3048,11 +3063,11 @@ statement_call(int argc, VALUE *argv, VALUE self)
3048
3063
  /*
3049
3064
  * EXEC SQL execute :sid into descriptor output;
3050
3065
  */
3051
- #line 2425 "informix.ec"
3066
+ #line 2433 "informix.ec"
3052
3067
  {
3053
- #line 2425 "informix.ec"
3068
+ #line 2433 "informix.ec"
3054
3069
  sqli_exec(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), (ifx_sqlda_t *)0, (char *)0, (struct value *)0, output, (char *)0, (struct value *)0, 0);
3055
- #line 2425 "informix.ec"
3070
+ #line 2433 "informix.ec"
3056
3071
  }
3057
3072
 
3058
3073
  if (SQLCODE < 0)
@@ -3068,11 +3083,11 @@ statement_call(int argc, VALUE *argv, VALUE self)
3068
3083
  /*
3069
3084
  * EXEC SQL execute :sid using descriptor input;
3070
3085
  */
3071
- #line 2437 "informix.ec"
3086
+ #line 2445 "informix.ec"
3072
3087
  {
3073
- #line 2437 "informix.ec"
3088
+ #line 2445 "informix.ec"
3074
3089
  sqli_exec(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), input, (char *)0, (struct value *)0, (ifx_sqlda_t *)0, (char *)0, (struct value *)0, 0);
3075
- #line 2437 "informix.ec"
3090
+ #line 2445 "informix.ec"
3076
3091
  }
3077
3092
  clean_input_slots(c);
3078
3093
  }
@@ -3080,11 +3095,11 @@ statement_call(int argc, VALUE *argv, VALUE self)
3080
3095
  /*
3081
3096
  * EXEC SQL execute :sid;
3082
3097
  */
3083
- #line 2441 "informix.ec"
3098
+ #line 2449 "informix.ec"
3084
3099
  {
3085
- #line 2441 "informix.ec"
3100
+ #line 2449 "informix.ec"
3086
3101
  sqli_exec(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), (ifx_sqlda_t *)0, (char *)0, (struct value *)0, (ifx_sqlda_t *)0, (char *)0, (struct value *)0, 0);
3087
- #line 2441 "informix.ec"
3102
+ #line 2449 "informix.ec"
3088
3103
  }
3089
3104
  }
3090
3105
  if (SQLCODE < 0)
@@ -3106,13 +3121,13 @@ statement_drop(VALUE self)
3106
3121
  /*
3107
3122
  * EXEC SQL begin declare section;
3108
3123
  */
3109
- #line 2459 "informix.ec"
3110
- #line 2460 "informix.ec"
3124
+ #line 2467 "informix.ec"
3125
+ #line 2468 "informix.ec"
3111
3126
  char *sid, *did;
3112
3127
  /*
3113
3128
  * EXEC SQL end declare section;
3114
3129
  */
3115
- #line 2461 "informix.ec"
3130
+ #line 2469 "informix.ec"
3116
3131
 
3117
3132
 
3118
3133
  Data_Get_Struct(self, cursor_t, c);
@@ -3123,11 +3138,11 @@ statement_drop(VALUE self)
3123
3138
  /*
3124
3139
  * EXEC SQL set connection :did;
3125
3140
  */
3126
- #line 2468 "informix.ec"
3141
+ #line 2476 "informix.ec"
3127
3142
  {
3128
- #line 2468 "informix.ec"
3143
+ #line 2476 "informix.ec"
3129
3144
  sqli_connect_set(0, did, 0);
3130
- #line 2468 "informix.ec"
3145
+ #line 2476 "informix.ec"
3131
3146
  }
3132
3147
  if (SQLCODE < 0)
3133
3148
  return Qnil;
@@ -3135,11 +3150,11 @@ statement_drop(VALUE self)
3135
3150
  /*
3136
3151
  * EXEC SQL free :sid;
3137
3152
  */
3138
- #line 2472 "informix.ec"
3153
+ #line 2480 "informix.ec"
3139
3154
  {
3140
- #line 2472 "informix.ec"
3155
+ #line 2480 "informix.ec"
3141
3156
  sqli_curs_free(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 258));
3142
- #line 2472 "informix.ec"
3157
+ #line 2480 "informix.ec"
3143
3158
  }
3144
3159
 
3145
3160
  return Qnil;
@@ -3181,13 +3196,13 @@ fetch(VALUE self, VALUE type, int bang)
3181
3196
  /*
3182
3197
  * EXEC SQL begin declare section;
3183
3198
  */
3184
- #line 2510 "informix.ec"
3185
- #line 2511 "informix.ec"
3199
+ #line 2518 "informix.ec"
3200
+ #line 2519 "informix.ec"
3186
3201
  char *cid, *did;
3187
3202
  /*
3188
3203
  * EXEC SQL end declare section;
3189
3204
  */
3190
- #line 2512 "informix.ec"
3205
+ #line 2520 "informix.ec"
3191
3206
 
3192
3207
  cursor_t *c;
3193
3208
  struct sqlda *output;
@@ -3201,11 +3216,11 @@ fetch(VALUE self, VALUE type, int bang)
3201
3216
  /*
3202
3217
  * EXEC SQL set connection :did;
3203
3218
  */
3204
- #line 2522 "informix.ec"
3219
+ #line 2530 "informix.ec"
3205
3220
  {
3206
- #line 2522 "informix.ec"
3221
+ #line 2530 "informix.ec"
3207
3222
  sqli_connect_set(0, did, 0);
3208
- #line 2522 "informix.ec"
3223
+ #line 2530 "informix.ec"
3209
3224
  }
3210
3225
  if (SQLCODE < 0)
3211
3226
  raise_ifx_extended();
@@ -3216,12 +3231,12 @@ fetch(VALUE self, VALUE type, int bang)
3216
3231
  /*
3217
3232
  * EXEC SQL fetch :cid using descriptor output;
3218
3233
  */
3219
- #line 2529 "informix.ec"
3234
+ #line 2537 "informix.ec"
3220
3235
  {
3221
- #line 2529 "informix.ec"
3236
+ #line 2537 "informix.ec"
3222
3237
  static _FetchSpec _FS0 = { 0, 1, 0 };
3223
3238
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, output, (char *)0, &_FS0);
3224
- #line 2529 "informix.ec"
3239
+ #line 2537 "informix.ec"
3225
3240
  }
3226
3241
  if (SQLCODE < 0)
3227
3242
  raise_ifx_extended();
@@ -3304,13 +3319,13 @@ fetch_many(VALUE self, VALUE n, VALUE type)
3304
3319
  /*
3305
3320
  * EXEC SQL begin declare section;
3306
3321
  */
3307
- #line 2608 "informix.ec"
3308
- #line 2609 "informix.ec"
3322
+ #line 2616 "informix.ec"
3323
+ #line 2617 "informix.ec"
3309
3324
  char *cid, *did;
3310
3325
  /*
3311
3326
  * EXEC SQL end declare section;
3312
3327
  */
3313
- #line 2610 "informix.ec"
3328
+ #line 2618 "informix.ec"
3314
3329
 
3315
3330
  cursor_t *c;
3316
3331
  struct sqlda *output;
@@ -3326,11 +3341,11 @@ fetch_many(VALUE self, VALUE n, VALUE type)
3326
3341
  /*
3327
3342
  * EXEC SQL set connection :did;
3328
3343
  */
3329
- #line 2622 "informix.ec"
3344
+ #line 2630 "informix.ec"
3330
3345
  {
3331
- #line 2622 "informix.ec"
3346
+ #line 2630 "informix.ec"
3332
3347
  sqli_connect_set(0, did, 0);
3333
- #line 2622 "informix.ec"
3348
+ #line 2630 "informix.ec"
3334
3349
  }
3335
3350
  if (SQLCODE < 0)
3336
3351
  raise_ifx_extended();
@@ -3350,12 +3365,12 @@ fetch_many(VALUE self, VALUE n, VALUE type)
3350
3365
  /*
3351
3366
  * EXEC SQL fetch :cid using descriptor output;
3352
3367
  */
3353
- #line 2638 "informix.ec"
3368
+ #line 2646 "informix.ec"
3354
3369
  {
3355
- #line 2638 "informix.ec"
3370
+ #line 2646 "informix.ec"
3356
3371
  static _FetchSpec _FS0 = { 0, 1, 0 };
3357
3372
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, output, (char *)0, &_FS0);
3358
- #line 2638 "informix.ec"
3373
+ #line 2646 "informix.ec"
3359
3374
  }
3360
3375
  if (SQLCODE < 0)
3361
3376
  raise_ifx_extended();
@@ -3434,13 +3449,13 @@ each(VALUE self, VALUE type, int bang)
3434
3449
  /*
3435
3450
  * EXEC SQL begin declare section;
3436
3451
  */
3437
- #line 2713 "informix.ec"
3438
- #line 2714 "informix.ec"
3452
+ #line 2721 "informix.ec"
3453
+ #line 2722 "informix.ec"
3439
3454
  char *cid, *did;
3440
3455
  /*
3441
3456
  * EXEC SQL end declare section;
3442
3457
  */
3443
- #line 2715 "informix.ec"
3458
+ #line 2723 "informix.ec"
3444
3459
 
3445
3460
  struct sqlda *output;
3446
3461
  VALUE record;
@@ -3453,11 +3468,11 @@ each(VALUE self, VALUE type, int bang)
3453
3468
  /*
3454
3469
  * EXEC SQL set connection :did;
3455
3470
  */
3456
- #line 2724 "informix.ec"
3471
+ #line 2732 "informix.ec"
3457
3472
  {
3458
- #line 2724 "informix.ec"
3473
+ #line 2732 "informix.ec"
3459
3474
  sqli_connect_set(0, did, 0);
3460
- #line 2724 "informix.ec"
3475
+ #line 2732 "informix.ec"
3461
3476
  }
3462
3477
  if (SQLCODE < 0)
3463
3478
  raise_ifx_extended();
@@ -3469,12 +3484,12 @@ each(VALUE self, VALUE type, int bang)
3469
3484
  /*
3470
3485
  * EXEC SQL fetch :cid using descriptor output;
3471
3486
  */
3472
- #line 2732 "informix.ec"
3487
+ #line 2740 "informix.ec"
3473
3488
  {
3474
- #line 2732 "informix.ec"
3489
+ #line 2740 "informix.ec"
3475
3490
  static _FetchSpec _FS0 = { 0, 1, 0 };
3476
3491
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, output, (char *)0, &_FS0);
3477
- #line 2732 "informix.ec"
3492
+ #line 2740 "informix.ec"
3478
3493
  }
3479
3494
  if (SQLCODE < 0)
3480
3495
  raise_ifx_extended();
@@ -3613,13 +3628,13 @@ inscur_put(int argc, VALUE *argv, VALUE self)
3613
3628
  /*
3614
3629
  * EXEC SQL begin declare section;
3615
3630
  */
3616
- #line 2867 "informix.ec"
3617
- #line 2868 "informix.ec"
3631
+ #line 2875 "informix.ec"
3632
+ #line 2876 "informix.ec"
3618
3633
  char *cid, *did;
3619
3634
  /*
3620
3635
  * EXEC SQL end declare section;
3621
3636
  */
3622
- #line 2869 "informix.ec"
3637
+ #line 2877 "informix.ec"
3623
3638
 
3624
3639
 
3625
3640
  Data_Get_Struct(self, cursor_t, c);
@@ -3630,11 +3645,11 @@ inscur_put(int argc, VALUE *argv, VALUE self)
3630
3645
  /*
3631
3646
  * EXEC SQL set connection :did;
3632
3647
  */
3633
- #line 2876 "informix.ec"
3648
+ #line 2884 "informix.ec"
3634
3649
  {
3635
- #line 2876 "informix.ec"
3650
+ #line 2884 "informix.ec"
3636
3651
  sqli_connect_set(0, did, 0);
3637
- #line 2876 "informix.ec"
3652
+ #line 2884 "informix.ec"
3638
3653
  }
3639
3654
  if (SQLCODE < 0)
3640
3655
  raise_ifx_extended();
@@ -3650,11 +3665,11 @@ inscur_put(int argc, VALUE *argv, VALUE self)
3650
3665
  /*
3651
3666
  * EXEC SQL put :cid using descriptor input;
3652
3667
  */
3653
- #line 2888 "informix.ec"
3668
+ #line 2896 "informix.ec"
3654
3669
  {
3655
- #line 2888 "informix.ec"
3670
+ #line 2896 "informix.ec"
3656
3671
  sqli_curs_put(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), input, (char *)0);
3657
- #line 2888 "informix.ec"
3672
+ #line 2896 "informix.ec"
3658
3673
  }
3659
3674
  clean_input_slots(c);
3660
3675
  if (SQLCODE < 0)
@@ -3679,13 +3694,13 @@ inscur_flush(VALUE self)
3679
3694
  /*
3680
3695
  * EXEC SQL begin declare section;
3681
3696
  */
3682
- #line 2909 "informix.ec"
3683
- #line 2910 "informix.ec"
3697
+ #line 2917 "informix.ec"
3698
+ #line 2918 "informix.ec"
3684
3699
  char *cid, *did;
3685
3700
  /*
3686
3701
  * EXEC SQL end declare section;
3687
3702
  */
3688
- #line 2911 "informix.ec"
3703
+ #line 2919 "informix.ec"
3689
3704
 
3690
3705
 
3691
3706
  Data_Get_Struct(self, cursor_t, c);
@@ -3696,11 +3711,11 @@ inscur_flush(VALUE self)
3696
3711
  /*
3697
3712
  * EXEC SQL set connection :did;
3698
3713
  */
3699
- #line 2918 "informix.ec"
3714
+ #line 2926 "informix.ec"
3700
3715
  {
3701
- #line 2918 "informix.ec"
3716
+ #line 2926 "informix.ec"
3702
3717
  sqli_connect_set(0, did, 0);
3703
- #line 2918 "informix.ec"
3718
+ #line 2926 "informix.ec"
3704
3719
  }
3705
3720
  if (SQLCODE < 0)
3706
3721
  raise_ifx_extended();
@@ -3709,11 +3724,11 @@ inscur_flush(VALUE self)
3709
3724
  /*
3710
3725
  * EXEC SQL flush :cid;
3711
3726
  */
3712
- #line 2923 "informix.ec"
3727
+ #line 2931 "informix.ec"
3713
3728
  {
3714
- #line 2923 "informix.ec"
3729
+ #line 2931 "informix.ec"
3715
3730
  sqli_curs_flush(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256));
3716
- #line 2923 "informix.ec"
3731
+ #line 2931 "informix.ec"
3717
3732
  }
3718
3733
  return self;
3719
3734
  }
@@ -3733,14 +3748,14 @@ scrollcur_entry(VALUE self, VALUE index, VALUE type, int bang)
3733
3748
  /*
3734
3749
  * EXEC SQL begin declare section;
3735
3750
  */
3736
- #line 2939 "informix.ec"
3737
- #line 2940 "informix.ec"
3751
+ #line 2947 "informix.ec"
3752
+ #line 2948 "informix.ec"
3738
3753
  char *cid, *did;
3739
3754
  long pos;
3740
3755
  /*
3741
3756
  * EXEC SQL end declare section;
3742
3757
  */
3743
- #line 2942 "informix.ec"
3758
+ #line 2950 "informix.ec"
3744
3759
 
3745
3760
 
3746
3761
  Data_Get_Struct(self, cursor_t, c);
@@ -3751,11 +3766,11 @@ long pos;
3751
3766
  /*
3752
3767
  * EXEC SQL set connection :did;
3753
3768
  */
3754
- #line 2949 "informix.ec"
3769
+ #line 2957 "informix.ec"
3755
3770
  {
3756
- #line 2949 "informix.ec"
3771
+ #line 2957 "informix.ec"
3757
3772
  sqli_connect_set(0, did, 0);
3758
- #line 2949 "informix.ec"
3773
+ #line 2957 "informix.ec"
3759
3774
  }
3760
3775
  if (SQLCODE < 0)
3761
3776
  return Qnil;
@@ -3767,60 +3782,60 @@ long pos;
3767
3782
  /*
3768
3783
  * EXEC SQL fetch current :cid using descriptor output;
3769
3784
  */
3770
- #line 2957 "informix.ec"
3785
+ #line 2965 "informix.ec"
3771
3786
  {
3772
- #line 2957 "informix.ec"
3787
+ #line 2965 "informix.ec"
3773
3788
  static _FetchSpec _FS0 = { 0, 5, 0 };
3774
3789
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, output, (char *)0, &_FS0);
3775
- #line 2957 "informix.ec"
3790
+ #line 2965 "informix.ec"
3776
3791
  }
3777
3792
  else if ((pos = NUM2LONG(index) + 1) > 0)
3778
3793
  /*
3779
3794
  * EXEC SQL fetch absolute :pos :cid using descriptor output;
3780
3795
  */
3781
- #line 2959 "informix.ec"
3796
+ #line 2967 "informix.ec"
3782
3797
  {
3783
- #line 2959 "informix.ec"
3798
+ #line 2967 "informix.ec"
3784
3799
  static ifx_sqlvar_t _sqibind[] =
3785
3800
  {
3786
3801
  { 103, sizeof(pos), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
3787
- #line 2959 "informix.ec"
3802
+ #line 2967 "informix.ec"
3788
3803
  };
3789
3804
  static ifx_sqlda_t _SD0 = { 1, _sqibind, {0}, 1, 0 };
3790
3805
  static _FetchSpec _FS1 = { 0, 6, 0 };
3791
- #line 2959 "informix.ec"
3806
+ #line 2967 "informix.ec"
3792
3807
  _sqibind[0].sqldata = (char *) &pos;
3793
3808
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), &_SD0, output, (char *)0, &_FS1);
3794
- #line 2959 "informix.ec"
3809
+ #line 2967 "informix.ec"
3795
3810
  }
3796
3811
  else {
3797
3812
  /*
3798
3813
  * EXEC SQL fetch last :cid;
3799
3814
  */
3800
- #line 2961 "informix.ec"
3815
+ #line 2969 "informix.ec"
3801
3816
  {
3802
- #line 2961 "informix.ec"
3817
+ #line 2969 "informix.ec"
3803
3818
  static _FetchSpec _FS0 = { 0, 4, 0 };
3804
3819
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, (ifx_sqlda_t *)0, (char *)0, &_FS0);
3805
- #line 2961 "informix.ec"
3820
+ #line 2969 "informix.ec"
3806
3821
  }
3807
3822
  /*
3808
3823
  * EXEC SQL fetch relative :pos :cid using descriptor output;
3809
3824
  */
3810
- #line 2962 "informix.ec"
3825
+ #line 2970 "informix.ec"
3811
3826
  {
3812
- #line 2962 "informix.ec"
3827
+ #line 2970 "informix.ec"
3813
3828
  static ifx_sqlvar_t _sqibind[] =
3814
3829
  {
3815
3830
  { 103, sizeof(pos), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
3816
- #line 2962 "informix.ec"
3831
+ #line 2970 "informix.ec"
3817
3832
  };
3818
3833
  static ifx_sqlda_t _SD0 = { 1, _sqibind, {0}, 1, 0 };
3819
3834
  static _FetchSpec _FS1 = { 0, 7, 0 };
3820
- #line 2962 "informix.ec"
3835
+ #line 2970 "informix.ec"
3821
3836
  _sqibind[0].sqldata = (char *) &pos;
3822
3837
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), &_SD0, output, (char *)0, &_FS1);
3823
- #line 2962 "informix.ec"
3838
+ #line 2970 "informix.ec"
3824
3839
  }
3825
3840
  }
3826
3841
 
@@ -3845,13 +3860,13 @@ scrollcur_subseq(VALUE self, VALUE start, VALUE length, VALUE type)
3845
3860
  /*
3846
3861
  * EXEC SQL begin declare section;
3847
3862
  */
3848
- #line 2983 "informix.ec"
3849
- #line 2984 "informix.ec"
3863
+ #line 2991 "informix.ec"
3864
+ #line 2992 "informix.ec"
3850
3865
  long pos;
3851
3866
  /*
3852
3867
  * EXEC SQL end declare section;
3853
3868
  */
3854
- #line 2985 "informix.ec"
3869
+ #line 2993 "informix.ec"
3855
3870
 
3856
3871
 
3857
3872
  first = scrollcur_entry(self, start, type, 0);
@@ -3983,14 +3998,14 @@ scrollcur_rel(int argc, VALUE *argv, VALUE self, int dir, VALUE type, int bang)
3983
3998
  /*
3984
3999
  * EXEC SQL begin declare section;
3985
4000
  */
3986
- #line 3113 "informix.ec"
3987
- #line 3114 "informix.ec"
4001
+ #line 3121 "informix.ec"
4002
+ #line 3122 "informix.ec"
3988
4003
  char *cid, *did;
3989
4004
  long pos;
3990
4005
  /*
3991
4006
  * EXEC SQL end declare section;
3992
4007
  */
3993
- #line 3116 "informix.ec"
4008
+ #line 3124 "informix.ec"
3994
4009
 
3995
4010
 
3996
4011
  Data_Get_Struct(self, cursor_t, c);
@@ -4001,11 +4016,11 @@ long pos;
4001
4016
  /*
4002
4017
  * EXEC SQL set connection :did;
4003
4018
  */
4004
- #line 3123 "informix.ec"
4019
+ #line 3131 "informix.ec"
4005
4020
  {
4006
- #line 3123 "informix.ec"
4021
+ #line 3131 "informix.ec"
4007
4022
  sqli_connect_set(0, did, 0);
4008
- #line 3123 "informix.ec"
4023
+ #line 3131 "informix.ec"
4009
4024
  }
4010
4025
  if (SQLCODE < 0)
4011
4026
  return Qnil;
@@ -4018,20 +4033,20 @@ long pos;
4018
4033
  /*
4019
4034
  * EXEC SQL fetch relative :pos :cid using descriptor output;
4020
4035
  */
4021
- #line 3132 "informix.ec"
4036
+ #line 3140 "informix.ec"
4022
4037
  {
4023
- #line 3132 "informix.ec"
4038
+ #line 3140 "informix.ec"
4024
4039
  static ifx_sqlvar_t _sqibind[] =
4025
4040
  {
4026
4041
  { 103, sizeof(pos), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4027
- #line 3132 "informix.ec"
4042
+ #line 3140 "informix.ec"
4028
4043
  };
4029
4044
  static ifx_sqlda_t _SD0 = { 1, _sqibind, {0}, 1, 0 };
4030
4045
  static _FetchSpec _FS1 = { 0, 7, 0 };
4031
- #line 3132 "informix.ec"
4046
+ #line 3140 "informix.ec"
4032
4047
  _sqibind[0].sqldata = (char *) &pos;
4033
4048
  sqli_curs_fetch(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), &_SD0, output, (char *)0, &_FS1);
4034
- #line 3132 "informix.ec"
4049
+ #line 3140 "informix.ec"
4035
4050
  }
4036
4051
 
4037
4052
  if (SQLCODE == SQLNOTFOUND)
@@ -4331,13 +4346,13 @@ cursor_close_or_free(cursor_t *c, short op)
4331
4346
  /*
4332
4347
  * EXEC SQL begin declare section;
4333
4348
  */
4334
- #line 3428 "informix.ec"
4335
- #line 3429 "informix.ec"
4349
+ #line 3436 "informix.ec"
4350
+ #line 3437 "informix.ec"
4336
4351
  char *cid, *sid, *did;
4337
4352
  /*
4338
4353
  * EXEC SQL end declare section;
4339
4354
  */
4340
- #line 3430 "informix.ec"
4355
+ #line 3438 "informix.ec"
4341
4356
 
4342
4357
 
4343
4358
  if (op == 1 && !c->is_open)
@@ -4355,11 +4370,11 @@ cursor_close_or_free(cursor_t *c, short op)
4355
4370
  /*
4356
4371
  * EXEC SQL set connection :did;
4357
4372
  */
4358
- #line 3444 "informix.ec"
4373
+ #line 3452 "informix.ec"
4359
4374
  {
4360
- #line 3444 "informix.ec"
4375
+ #line 3452 "informix.ec"
4361
4376
  sqli_connect_set(0, did, 0);
4362
- #line 3444 "informix.ec"
4377
+ #line 3452 "informix.ec"
4363
4378
  }
4364
4379
  if (SQLCODE < 0)
4365
4380
  return;
@@ -4368,11 +4383,11 @@ cursor_close_or_free(cursor_t *c, short op)
4368
4383
  /*
4369
4384
  * EXEC SQL close :cid;
4370
4385
  */
4371
- #line 3449 "informix.ec"
4386
+ #line 3457 "informix.ec"
4372
4387
  {
4373
- #line 3449 "informix.ec"
4388
+ #line 3457 "informix.ec"
4374
4389
  sqli_curs_close(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256));
4375
- #line 3449 "informix.ec"
4390
+ #line 3457 "informix.ec"
4376
4391
  }
4377
4392
 
4378
4393
  if (op == 2) {
@@ -4380,20 +4395,20 @@ cursor_close_or_free(cursor_t *c, short op)
4380
4395
  /*
4381
4396
  * EXEC SQL free :cid;
4382
4397
  */
4383
- #line 3453 "informix.ec"
4398
+ #line 3461 "informix.ec"
4384
4399
  {
4385
- #line 3453 "informix.ec"
4400
+ #line 3461 "informix.ec"
4386
4401
  sqli_curs_free(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 258));
4387
- #line 3453 "informix.ec"
4402
+ #line 3461 "informix.ec"
4388
4403
  }
4389
4404
  /*
4390
4405
  * EXEC SQL free :sid;
4391
4406
  */
4392
- #line 3453 "informix.ec"
4407
+ #line 3461 "informix.ec"
4393
4408
  {
4394
- #line 3453 "informix.ec"
4409
+ #line 3461 "informix.ec"
4395
4410
  sqli_curs_free(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 258));
4396
- #line 3453 "informix.ec"
4411
+ #line 3461 "informix.ec"
4397
4412
  }
4398
4413
  }
4399
4414
  }
@@ -4437,14 +4452,14 @@ cursor_initialize(int argc, VALUE *argv, VALUE self)
4437
4452
  /*
4438
4453
  * EXEC SQL begin declare section;
4439
4454
  */
4440
- #line 3493 "informix.ec"
4441
- #line 3494 "informix.ec"
4455
+ #line 3501 "informix.ec"
4456
+ #line 3502 "informix.ec"
4442
4457
  char *c_query;
4443
4458
  char *cid, *sid, *did;
4444
4459
  /*
4445
4460
  * EXEC SQL end declare section;
4446
4461
  */
4447
- #line 3496 "informix.ec"
4462
+ #line 3504 "informix.ec"
4448
4463
 
4449
4464
 
4450
4465
  rb_scan_args(argc, argv, "21", &db, &query, &options);
@@ -4453,11 +4468,11 @@ cursor_initialize(int argc, VALUE *argv, VALUE self)
4453
4468
  /*
4454
4469
  * EXEC SQL set connection :did;
4455
4470
  */
4456
- #line 3501 "informix.ec"
4471
+ #line 3509 "informix.ec"
4457
4472
  {
4458
- #line 3501 "informix.ec"
4473
+ #line 3509 "informix.ec"
4459
4474
  sqli_connect_set(0, did, 0);
4460
- #line 3501 "informix.ec"
4475
+ #line 3509 "informix.ec"
4461
4476
  }
4462
4477
  if (SQLCODE < 0)
4463
4478
  raise_ifx_extended();
@@ -4480,11 +4495,11 @@ cursor_initialize(int argc, VALUE *argv, VALUE self)
4480
4495
  /*
4481
4496
  * EXEC SQL prepare :sid from :c_query;
4482
4497
  */
4483
- #line 3520 "informix.ec"
4498
+ #line 3528 "informix.ec"
4484
4499
  {
4485
- #line 3520 "informix.ec"
4500
+ #line 3528 "informix.ec"
4486
4501
  sqli_prep(ESQLINTVERSION, sid, c_query,(ifx_literal_t *)0, (ifx_namelist_t *)0, -1, 0, 0 );
4487
- #line 3520 "informix.ec"
4502
+ #line 3528 "informix.ec"
4488
4503
  }
4489
4504
  if (SQLCODE < 0)
4490
4505
  raise_ifx_extended();
@@ -4493,41 +4508,41 @@ cursor_initialize(int argc, VALUE *argv, VALUE self)
4493
4508
  /*
4494
4509
  * EXEC SQL declare :cid scroll cursor with hold for :sid;
4495
4510
  */
4496
- #line 3525 "informix.ec"
4511
+ #line 3533 "informix.ec"
4497
4512
  {
4498
- #line 3525 "informix.ec"
4513
+ #line 3533 "informix.ec"
4499
4514
  sqli_curs_decl_dynm(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqli_curs_locate(ESQLINTVERSION, sid, 1), 4128, 0);
4500
- #line 3525 "informix.ec"
4515
+ #line 3533 "informix.ec"
4501
4516
  }
4502
4517
  else if (RTEST(hold))
4503
4518
  /*
4504
4519
  * EXEC SQL declare :cid cursor with hold for :sid;
4505
4520
  */
4506
- #line 3527 "informix.ec"
4521
+ #line 3535 "informix.ec"
4507
4522
  {
4508
- #line 3527 "informix.ec"
4523
+ #line 3535 "informix.ec"
4509
4524
  sqli_curs_decl_dynm(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqli_curs_locate(ESQLINTVERSION, sid, 1), 4096, 0);
4510
- #line 3527 "informix.ec"
4525
+ #line 3535 "informix.ec"
4511
4526
  }
4512
4527
  else if (RTEST(scroll))
4513
4528
  /*
4514
4529
  * EXEC SQL declare :cid scroll cursor for :sid;
4515
4530
  */
4516
- #line 3529 "informix.ec"
4531
+ #line 3537 "informix.ec"
4517
4532
  {
4518
- #line 3529 "informix.ec"
4533
+ #line 3537 "informix.ec"
4519
4534
  sqli_curs_decl_dynm(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqli_curs_locate(ESQLINTVERSION, sid, 1), 32, 0);
4520
- #line 3529 "informix.ec"
4535
+ #line 3537 "informix.ec"
4521
4536
  }
4522
4537
  else
4523
4538
  /*
4524
4539
  * EXEC SQL declare :cid cursor for :sid;
4525
4540
  */
4526
- #line 3531 "informix.ec"
4541
+ #line 3539 "informix.ec"
4527
4542
  {
4528
- #line 3531 "informix.ec"
4543
+ #line 3539 "informix.ec"
4529
4544
  sqli_curs_decl_dynm(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 0), cid, sqli_curs_locate(ESQLINTVERSION, sid, 1), 0, 0);
4530
- #line 3531 "informix.ec"
4545
+ #line 3539 "informix.ec"
4531
4546
  }
4532
4547
 
4533
4548
  if (SQLCODE < 0)
@@ -4537,11 +4552,11 @@ cursor_initialize(int argc, VALUE *argv, VALUE self)
4537
4552
  /*
4538
4553
  * EXEC SQL describe :sid into output;
4539
4554
  */
4540
- #line 3537 "informix.ec"
4555
+ #line 3545 "informix.ec"
4541
4556
  {
4542
- #line 3537 "informix.ec"
4557
+ #line 3545 "informix.ec"
4543
4558
  sqli_describe_stmt(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, sid, 257), &output, 0);
4544
- #line 3537 "informix.ec"
4559
+ #line 3545 "informix.ec"
4545
4560
  }
4546
4561
  c->daOutput = output;
4547
4562
 
@@ -4669,13 +4684,13 @@ cursor_open(int argc, VALUE *argv, VALUE self)
4669
4684
  /*
4670
4685
  * EXEC SQL begin declare section;
4671
4686
  */
4672
- #line 3661 "informix.ec"
4673
- #line 3662 "informix.ec"
4687
+ #line 3669 "informix.ec"
4688
+ #line 3670 "informix.ec"
4674
4689
  char *cid, *did;
4675
4690
  /*
4676
4691
  * EXEC SQL end declare section;
4677
4692
  */
4678
- #line 3663 "informix.ec"
4693
+ #line 3671 "informix.ec"
4679
4694
 
4680
4695
 
4681
4696
  Data_Get_Struct(self, cursor_t, c);
@@ -4687,11 +4702,11 @@ cursor_open(int argc, VALUE *argv, VALUE self)
4687
4702
  /*
4688
4703
  * EXEC SQL set connection :did;
4689
4704
  */
4690
- #line 3671 "informix.ec"
4705
+ #line 3679 "informix.ec"
4691
4706
  {
4692
- #line 3671 "informix.ec"
4707
+ #line 3679 "informix.ec"
4693
4708
  sqli_connect_set(0, did, 0);
4694
- #line 3671 "informix.ec"
4709
+ #line 3679 "informix.ec"
4695
4710
  }
4696
4711
  if (SQLCODE < 0)
4697
4712
  raise_ifx_extended();
@@ -4710,11 +4725,11 @@ cursor_open(int argc, VALUE *argv, VALUE self)
4710
4725
  * EXEC SQL open :cid using descriptor input
4711
4726
  * with reoptimization;
4712
4727
  */
4713
- #line 3685 "informix.ec"
4728
+ #line 3693 "informix.ec"
4714
4729
  {
4715
- #line 3686 "informix.ec"
4730
+ #line 3694 "informix.ec"
4716
4731
  sqli_curs_open(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), input, (char *)0, (struct value *)0, 1, 1);
4717
- #line 3686 "informix.ec"
4732
+ #line 3694 "informix.ec"
4718
4733
  }
4719
4734
  clean_input_slots(c);
4720
4735
  }
@@ -4722,22 +4737,22 @@ cursor_open(int argc, VALUE *argv, VALUE self)
4722
4737
  /*
4723
4738
  * EXEC SQL open :cid with reoptimization;
4724
4739
  */
4725
- #line 3690 "informix.ec"
4740
+ #line 3698 "informix.ec"
4726
4741
  {
4727
- #line 3690 "informix.ec"
4742
+ #line 3698 "informix.ec"
4728
4743
  sqli_curs_open(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, (char *)0, (struct value *)0, 0, 1);
4729
- #line 3690 "informix.ec"
4744
+ #line 3698 "informix.ec"
4730
4745
  }
4731
4746
  }
4732
4747
  else
4733
4748
  /*
4734
4749
  * EXEC SQL open :cid;
4735
4750
  */
4736
- #line 3693 "informix.ec"
4751
+ #line 3701 "informix.ec"
4737
4752
  {
4738
- #line 3693 "informix.ec"
4753
+ #line 3701 "informix.ec"
4739
4754
  sqli_curs_open(ESQLINTVERSION, sqli_curs_locate(ESQLINTVERSION, cid, 256), (ifx_sqlda_t *)0, (char *)0, (struct value *)0, 0, 0);
4740
- #line 3693 "informix.ec"
4755
+ #line 3701 "informix.ec"
4741
4756
  }
4742
4757
 
4743
4758
  if (SQLCODE < 0)
@@ -5003,4 +5018,4 @@ void Init_informix(void)
5003
5018
  rbifx_except_init(rb_mInformix, &esyms);
5004
5019
  }
5005
5020
 
5006
- #line 3956 "informix.ec"
5021
+ #line 3964 "informix.ec"
@@ -1,4 +1,4 @@
1
- /* $Id: informix.ec,v 1.10 2007/08/23 02:32:56 santana Exp $ */
1
+ /* $Id: informix.ec,v 1.12 2007/10/14 00:18:50 santana Exp $ */
2
2
  /*
3
3
  * Copyright (c) 2006-2007, Gerardo Santana Gomez Garrido <gerardo.santana@gmail.com>
4
4
  * All rights reserved.
@@ -28,7 +28,7 @@
28
28
  * POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- static const char rcsid[] = "$Id: informix.ec,v 1.10 2007/08/23 02:32:56 santana Exp $";
31
+ static const char rcsid[] = "$Id: informix.ec,v 1.12 2007/10/14 00:18:50 santana Exp $";
32
32
 
33
33
  #include "ruby.h"
34
34
  #include "ifx_except.h"
@@ -1775,7 +1775,7 @@ rb_informix_connect(int argc, VALUE *argv, VALUE self)
1775
1775
  */
1776
1776
  static VALUE rb_informix_version(void)
1777
1777
  {
1778
- static const char * const ver = "0.6.0";
1778
+ static const char * const ver = "0.6.1";
1779
1779
  static VALUE driver_version;
1780
1780
 
1781
1781
  if (driver_version == 0)
@@ -2144,22 +2144,30 @@ rb_database_columns(VALUE self, VALUE tablename)
2144
2144
  result = rb_ary_new();
2145
2145
 
2146
2146
  cid = did + IDSIZE;
2147
+
2147
2148
  if (!*cid) {
2148
- snprintf(cid, IDSIZE, "COLS%lX", self);
2149
- EXEC SQL declare :cid cursor for
2150
- select colname, coltype, collength, extended_id,
2149
+ EXEC SQL begin declare section;
2150
+ char sid[IDSIZE];
2151
+ EXEC SQL end declare section;
2152
+
2153
+ snprintf(sid, IDSIZE, "COLS%lX", self);
2154
+ snprintf(cid, IDSIZE, "COLC%lX", self);
2155
+
2156
+ EXEC SQL prepare :sid from
2157
+ 'select colname, coltype, collength, extended_id,
2151
2158
  type, default, c.colno
2152
2159
  from syscolumns c, outer sysdefaults d
2153
- where c.tabid = :tabid and c.tabid = d.tabid
2160
+ where c.tabid = ? and c.tabid = d.tabid
2154
2161
  and c.colno = d.colno
2155
- order by c.colno;
2162
+ order by c.colno';
2163
+ EXEC SQL declare :cid cursor for :sid;
2156
2164
  if (SQLCODE < 0) {
2157
2165
  cid[0] = 0;
2158
2166
  raise_ifx_extended();
2159
2167
  }
2160
2168
  }
2161
2169
 
2162
- EXEC SQL open :cid;
2170
+ EXEC SQL open :cid using :tabid;
2163
2171
  if (SQLCODE < 0)
2164
2172
  raise_ifx_extended();
2165
2173
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: ruby-informix
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.6.0
7
- date: 2007-08-28 00:00:00 -05:00
6
+ version: 0.6.1
7
+ date: 2007-10-13 00:00:00 -05:00
8
8
  summary: Informix driver for Ruby
9
9
  require_paths:
10
10
  - lib