1 /********************************************************************/
2 /* */
3 /* s7 Seed7 interpreter */
4 /* Copyright (C) 1990 - 2020 Thomas Mertes */
5 /* */
6 /* This program is free software; you can redistribute it and/or */
7 /* modify it under the terms of the GNU General Public License as */
8 /* published by the Free Software Foundation; either version 2 of */
9 /* the License, or (at your option) any later version. */
10 /* */
11 /* This program is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public */
17 /* License along with this program; if not, write to the */
18 /* Free Software Foundation, Inc., 51 Franklin Street, */
19 /* Fifth Floor, Boston, MA 02110-1301, USA. */
20 /* */
21 /* Module: Library */
22 /* File: seed7/src/sqllib.c */
23 /* Changes: 2013, 2014, 2017 - 2020 Thomas Mertes */
24 /* Content: All primitive actions for database access. */
25 /* */
26 /********************************************************************/
27
28 #include "version.h"
29
30 #include "stdio.h"
31
32 #include "common.h"
33 #include "data.h"
34 #include "syvarutl.h"
35 #include "objutl.h"
36 #include "runerr.h"
37 #include "sql_rtl.h"
38 #include "sql_drv.h"
39
40
41
sql_bind_bigint(listType arguments)42 objectType sql_bind_bigint (listType arguments)
43
44 { /* sql_bind_bigint */
45 isit_sqlstmt(arg_1(arguments));
46 isit_int(arg_2(arguments));
47 isit_bigint(arg_3(arguments));
48 sqlBindBigInt(take_sqlstmt(arg_1(arguments)),
49 take_int(arg_2(arguments)),
50 take_bigint(arg_3(arguments)));
51 return SYS_EMPTY_OBJECT;
52 } /* sql_bind_bigint */
53
54
55
sql_bind_bigrat(listType arguments)56 objectType sql_bind_bigrat (listType arguments)
57
58 { /* sql_bind_bigrat */
59 isit_sqlstmt(arg_1(arguments));
60 isit_int(arg_2(arguments));
61 isit_bigint(arg_3(arguments));
62 isit_bigint(arg_4(arguments));
63 sqlBindBigRat(take_sqlstmt(arg_1(arguments)),
64 take_int(arg_2(arguments)),
65 take_bigint(arg_3(arguments)),
66 take_bigint(arg_4(arguments)));
67 return SYS_EMPTY_OBJECT;
68 } /* sql_bind_bigrat */
69
70
71
sql_bind_bool(listType arguments)72 objectType sql_bind_bool (listType arguments)
73
74 { /* sql_bind_bool */
75 isit_sqlstmt(arg_1(arguments));
76 isit_int(arg_2(arguments));
77 isit_bool(arg_3(arguments));
78 sqlBindBool(take_sqlstmt(arg_1(arguments)),
79 take_int(arg_2(arguments)),
80 take_bool(arg_3(arguments)) == SYS_TRUE_OBJECT);
81 return SYS_EMPTY_OBJECT;
82 } /* sql_bind_bool */
83
84
85
sql_bind_bstri(listType arguments)86 objectType sql_bind_bstri (listType arguments)
87
88 { /* sql_bind_bstri */
89 isit_sqlstmt(arg_1(arguments));
90 isit_int(arg_2(arguments));
91 isit_bstri(arg_3(arguments));
92 sqlBindBStri(take_sqlstmt(arg_1(arguments)),
93 take_int(arg_2(arguments)),
94 take_bstri(arg_3(arguments)));
95 return SYS_EMPTY_OBJECT;
96 } /* sql_bind_bstri */
97
98
99
sql_bind_duration(listType arguments)100 objectType sql_bind_duration (listType arguments)
101
102 { /* sql_bind_duration */
103 isit_sqlstmt(arg_1(arguments));
104 isit_int(arg_2(arguments));
105 isit_int(arg_3(arguments));
106 isit_int(arg_4(arguments));
107 isit_int(arg_5(arguments));
108 isit_int(arg_6(arguments));
109 isit_int(arg_7(arguments));
110 isit_int(arg_8(arguments));
111 isit_int(arg_9(arguments));
112 sqlBindDuration(take_sqlstmt(arg_1(arguments)),
113 take_int(arg_2(arguments)),
114 take_int(arg_3(arguments)),
115 take_int(arg_4(arguments)),
116 take_int(arg_5(arguments)),
117 take_int(arg_6(arguments)),
118 take_int(arg_7(arguments)),
119 take_int(arg_8(arguments)),
120 take_int(arg_9(arguments)));
121 return SYS_EMPTY_OBJECT;
122 } /* sql_bind_duration */
123
124
125
sql_bind_float(listType arguments)126 objectType sql_bind_float (listType arguments)
127
128 { /* sql_bind_float */
129 isit_sqlstmt(arg_1(arguments));
130 isit_int(arg_2(arguments));
131 isit_float(arg_3(arguments));
132 sqlBindFloat(take_sqlstmt(arg_1(arguments)),
133 take_int(arg_2(arguments)),
134 take_float(arg_3(arguments)));
135 return SYS_EMPTY_OBJECT;
136 } /* sql_bind_float */
137
138
139
sql_bind_int(listType arguments)140 objectType sql_bind_int (listType arguments)
141
142 { /* sql_bind_int */
143 isit_sqlstmt(arg_1(arguments));
144 isit_int(arg_2(arguments));
145 isit_int(arg_3(arguments));
146 sqlBindInt(take_sqlstmt(arg_1(arguments)),
147 take_int(arg_2(arguments)),
148 take_int(arg_3(arguments)));
149 return SYS_EMPTY_OBJECT;
150 } /* sql_bind_int */
151
152
153
sql_bind_null(listType arguments)154 objectType sql_bind_null (listType arguments)
155
156 { /* sql_bind_null */
157 isit_sqlstmt(arg_1(arguments));
158 isit_int(arg_2(arguments));
159 sqlBindNull(take_sqlstmt(arg_1(arguments)),
160 take_int(arg_2(arguments)));
161 return SYS_EMPTY_OBJECT;
162 } /* sql_bind_null */
163
164
165
sql_bind_stri(listType arguments)166 objectType sql_bind_stri (listType arguments)
167
168 { /* sql_bind_stri */
169 isit_sqlstmt(arg_1(arguments));
170 isit_int(arg_2(arguments));
171 isit_stri(arg_3(arguments));
172 sqlBindStri(take_sqlstmt(arg_1(arguments)),
173 take_int(arg_2(arguments)),
174 take_stri(arg_3(arguments)));
175 return SYS_EMPTY_OBJECT;
176 } /* sql_bind_stri */
177
178
179
sql_bind_time(listType arguments)180 objectType sql_bind_time (listType arguments)
181
182 { /* sql_bind_time */
183 isit_sqlstmt(arg_1(arguments));
184 isit_int(arg_2(arguments));
185 isit_int(arg_3(arguments));
186 isit_int(arg_4(arguments));
187 isit_int(arg_5(arguments));
188 isit_int(arg_6(arguments));
189 isit_int(arg_7(arguments));
190 isit_int(arg_8(arguments));
191 isit_int(arg_9(arguments));
192 isit_int(arg_10(arguments));
193 sqlBindTime(take_sqlstmt(arg_1(arguments)),
194 take_int(arg_2(arguments)),
195 take_int(arg_3(arguments)),
196 take_int(arg_4(arguments)),
197 take_int(arg_5(arguments)),
198 take_int(arg_6(arguments)),
199 take_int(arg_7(arguments)),
200 take_int(arg_8(arguments)),
201 take_int(arg_9(arguments)),
202 take_int(arg_10(arguments)));
203 return SYS_EMPTY_OBJECT;
204 } /* sql_bind_time */
205
206
207
sql_column_bigint(listType arguments)208 objectType sql_column_bigint (listType arguments)
209
210 {
211 bigIntType number;
212
213 /* sql_column_bigint */
214 isit_sqlstmt(arg_1(arguments));
215 isit_int(arg_2(arguments));
216 number = sqlColumnBigInt(take_sqlstmt(arg_1(arguments)),
217 take_int(arg_2(arguments)));
218 return bld_bigint_temp(number);
219 } /* sql_column_bigint */
220
221
222
sql_column_bigrat(listType arguments)223 objectType sql_column_bigrat (listType arguments)
224
225 { /* sql_column_bigrat */
226 isit_sqlstmt(arg_1(arguments));
227 isit_int(arg_2(arguments));
228 isit_bigint(arg_3(arguments));
229 isit_bigint(arg_4(arguments));
230 sqlColumnBigRat(take_sqlstmt(arg_1(arguments)),
231 take_int(arg_2(arguments)),
232 &arg_3(arguments)->value.bigIntValue,
233 &arg_4(arguments)->value.bigIntValue);
234 return SYS_EMPTY_OBJECT;
235 } /* sql_column_bigrat */
236
237
238
sql_close(listType arguments)239 objectType sql_close (listType arguments)
240
241 { /* sql_close */
242 isit_database(arg_1(arguments));
243 sqlClose(take_database(arg_1(arguments)));
244 return SYS_EMPTY_OBJECT;
245 } /* sql_close */
246
247
248
sql_cmp_db(listType arguments)249 objectType sql_cmp_db (listType arguments)
250
251 {
252 memSizeType ref1;
253 memSizeType ref2;
254 intType signumValue;
255
256 /* sql_cmp_db */
257 isit_database(arg_1(arguments));
258 isit_database(arg_2(arguments));
259 ref1 = (memSizeType) take_database(arg_1(arguments));
260 ref2 = (memSizeType) take_database(arg_2(arguments));
261 if (ref1 < ref2) {
262 signumValue = -1;
263 } else if (ref1 > ref2) {
264 signumValue = 1;
265 } else {
266 signumValue = 0;
267 } /* if */
268 return bld_int_temp(signumValue);
269 } /* sql_cmp_db */
270
271
272
sql_cmp_stmt(listType arguments)273 objectType sql_cmp_stmt (listType arguments)
274
275 {
276 memSizeType ref1;
277 memSizeType ref2;
278 intType signumValue;
279
280 /* sql_cmp_stmt */
281 isit_sqlstmt(arg_1(arguments));
282 isit_sqlstmt(arg_2(arguments));
283 ref1 = (memSizeType) take_sqlstmt(arg_1(arguments));
284 ref2 = (memSizeType) take_sqlstmt(arg_2(arguments));
285 if (ref1 < ref2) {
286 signumValue = -1;
287 } else if (ref1 > ref2) {
288 signumValue = 1;
289 } else {
290 signumValue = 0;
291 } /* if */
292 return bld_int_temp(signumValue);
293 } /* sql_cmp_stmt */
294
295
296
sql_column_bool(listType arguments)297 objectType sql_column_bool (listType arguments)
298
299 { /* sql_column_bool */
300 isit_sqlstmt(arg_1(arguments));
301 isit_int(arg_2(arguments));
302 if (sqlColumnBool(take_sqlstmt(arg_1(arguments)),
303 take_int(arg_2(arguments)))) {
304 return SYS_TRUE_OBJECT;
305 } else {
306 return SYS_FALSE_OBJECT;
307 } /* if */
308 } /* sql_column_bool */
309
310
311
sql_column_bstri(listType arguments)312 objectType sql_column_bstri (listType arguments)
313
314 {
315 bstriType bstri;
316
317 /* sql_column_bstri */
318 isit_sqlstmt(arg_1(arguments));
319 isit_int(arg_2(arguments));
320 bstri = sqlColumnBStri(take_sqlstmt(arg_1(arguments)),
321 take_int(arg_2(arguments)));
322 return bld_bstri_temp(bstri);
323 } /* sql_column_bstri */
324
325
326
sql_column_duration(listType arguments)327 objectType sql_column_duration (listType arguments)
328
329 { /* sql_column_duration */
330 isit_sqlstmt(arg_1(arguments));
331 isit_int(arg_2(arguments));
332 isit_int(arg_3(arguments));
333 isit_int(arg_4(arguments));
334 isit_int(arg_5(arguments));
335 isit_int(arg_6(arguments));
336 isit_int(arg_7(arguments));
337 isit_int(arg_8(arguments));
338 isit_int(arg_9(arguments));
339 sqlColumnDuration(take_sqlstmt(arg_1(arguments)),
340 take_int(arg_2(arguments)),
341 &arg_3(arguments)->value.intValue,
342 &arg_4(arguments)->value.intValue,
343 &arg_5(arguments)->value.intValue,
344 &arg_6(arguments)->value.intValue,
345 &arg_7(arguments)->value.intValue,
346 &arg_8(arguments)->value.intValue,
347 &arg_9(arguments)->value.intValue);
348 return SYS_EMPTY_OBJECT;
349 } /* sql_column_duration */
350
351
352
sql_column_float(listType arguments)353 objectType sql_column_float (listType arguments)
354
355 {
356 floatType number;
357
358 /* sql_column_float */
359 isit_sqlstmt(arg_1(arguments));
360 isit_int(arg_2(arguments));
361 number = sqlColumnFloat(take_sqlstmt(arg_1(arguments)),
362 take_int(arg_2(arguments)));
363 return bld_float_temp(number);
364 } /* sql_column_float */
365
366
367
sql_column_int(listType arguments)368 objectType sql_column_int (listType arguments)
369
370 {
371 intType number;
372
373 /* sql_column_int */
374 isit_sqlstmt(arg_1(arguments));
375 isit_int(arg_2(arguments));
376 number = sqlColumnInt(take_sqlstmt(arg_1(arguments)),
377 take_int(arg_2(arguments)));
378 return bld_int_temp(number);
379 } /* sql_column_int */
380
381
382
sql_column_stri(listType arguments)383 objectType sql_column_stri (listType arguments)
384
385 {
386 striType stri;
387
388 /* sql_column_stri */
389 isit_sqlstmt(arg_1(arguments));
390 isit_int(arg_2(arguments));
391 stri = sqlColumnStri(take_sqlstmt(arg_1(arguments)),
392 take_int(arg_2(arguments)));
393 return bld_stri_temp(stri);
394 } /* sql_column_stri */
395
396
397
sql_column_time(listType arguments)398 objectType sql_column_time (listType arguments)
399
400 {
401 boolType is_dst;
402
403 /* sql_column_time */
404 isit_sqlstmt(arg_1(arguments));
405 isit_int(arg_2(arguments));
406 isit_int(arg_3(arguments));
407 isit_int(arg_4(arguments));
408 isit_int(arg_5(arguments));
409 isit_int(arg_6(arguments));
410 isit_int(arg_7(arguments));
411 isit_int(arg_8(arguments));
412 isit_int(arg_9(arguments));
413 isit_int(arg_10(arguments));
414 isit_bool(arg_11(arguments));
415 sqlColumnTime(take_sqlstmt(arg_1(arguments)),
416 take_int(arg_2(arguments)),
417 &arg_3(arguments)->value.intValue,
418 &arg_4(arguments)->value.intValue,
419 &arg_5(arguments)->value.intValue,
420 &arg_6(arguments)->value.intValue,
421 &arg_7(arguments)->value.intValue,
422 &arg_8(arguments)->value.intValue,
423 &arg_9(arguments)->value.intValue,
424 &arg_10(arguments)->value.intValue,
425 &is_dst);
426 if (is_dst) {
427 arg_11(arguments)->value.objValue = SYS_TRUE_OBJECT;
428 } else {
429 arg_11(arguments)->value.objValue = SYS_FALSE_OBJECT;
430 } /* if */
431 return SYS_EMPTY_OBJECT;
432 } /* sql_column_time */
433
434
435
436 /**
437 * Execute a commit statement for the database/arg_1.
438 */
sql_commit(listType arguments)439 objectType sql_commit (listType arguments)
440
441 { /* sql_commit */
442 isit_database(arg_1(arguments));
443 sqlCommit(take_database(arg_1(arguments)));
444 return SYS_EMPTY_OBJECT;
445 } /* sql_commit */
446
447
448
449 /**
450 * Assign source/arg_3 to dest/arg_1.
451 * A copy function assumes that dest/arg_1 contains a legal value.
452 */
sql_cpy_db(listType arguments)453 objectType sql_cpy_db (listType arguments)
454
455 {
456 objectType dest;
457
458 /* sql_cpy_db */
459 dest = arg_1(arguments);
460 isit_database(dest);
461 is_variable(dest);
462 isit_database(arg_3(arguments));
463 sqlCpyDb(&dest->value.databaseValue, take_database(arg_3(arguments)));
464 return SYS_EMPTY_OBJECT;
465 } /* sql_cpy_db */
466
467
468
469 /**
470 * Assign source/arg_3 to dest/arg_1.
471 * A copy function assumes that dest/arg_1 contains a legal value.
472 */
sql_cpy_stmt(listType arguments)473 objectType sql_cpy_stmt (listType arguments)
474
475 {
476 objectType dest;
477
478 /* sql_cpy_stmt */
479 dest = arg_1(arguments);
480 isit_sqlstmt(dest);
481 is_variable(dest);
482 isit_sqlstmt(arg_3(arguments));
483 sqlCpyStmt(&dest->value.sqlStmtValue, take_sqlstmt(arg_3(arguments)));
484 return SYS_EMPTY_OBJECT;
485 } /* sql_cpy_stmt */
486
487
488
489 /**
490 * Initialize dest/arg_1 and assign source/arg_3 to it.
491 * A create function assumes that the contents of dest/arg_1
492 * is undefined. Create functions can be used to initialize
493 * constants.
494 */
sql_create_db(listType arguments)495 objectType sql_create_db (listType arguments)
496
497 { /* sql_create_db */
498 isit_database(arg_3(arguments));
499 SET_CATEGORY_OF_OBJ(arg_1(arguments), DATABASEOBJECT);
500 arg_1(arguments)->value.databaseValue = sqlCreateDb(take_database(arg_3(arguments)));
501 return SYS_EMPTY_OBJECT;
502 } /* sql_create_db */
503
504
505
506 /**
507 * Initialize dest/arg_1 and assign source/arg_3 to it.
508 * A create function assumes that the contents of dest/arg_1
509 * is undefined. Create functions can be used to initialize
510 * constants.
511 */
sql_create_stmt(listType arguments)512 objectType sql_create_stmt (listType arguments)
513
514 { /* sql_create_stmt */
515 isit_sqlstmt(arg_3(arguments));
516 SET_CATEGORY_OF_OBJ(arg_1(arguments), SQLSTMTOBJECT);
517 arg_1(arguments)->value.sqlStmtValue = sqlCreateStmt(take_sqlstmt(arg_3(arguments)));
518 return SYS_EMPTY_OBJECT;
519 } /* sql_create_stmt */
520
521
522
sql_destr_db(listType arguments)523 objectType sql_destr_db (listType arguments)
524
525 { /* sql_destr_db */
526 isit_database(arg_1(arguments));
527 sqlDestrDb(take_database(arg_1(arguments)));
528 arg_1(arguments)->value.databaseValue = NULL;
529 SET_UNUSED_FLAG(arg_1(arguments));
530 return SYS_EMPTY_OBJECT;
531 } /* sql_destr_db */
532
533
534
sql_destr_stmt(listType arguments)535 objectType sql_destr_stmt (listType arguments)
536
537 { /* sql_destr_stmt */
538 isit_sqlstmt(arg_1(arguments));
539 sqlDestrStmt(take_sqlstmt(arg_1(arguments)));
540 arg_1(arguments)->value.sqlStmtValue = NULL;
541 SET_UNUSED_FLAG(arg_1(arguments));
542 return SYS_EMPTY_OBJECT;
543 } /* sql_destr_stmt */
544
545
546
sql_driver(listType arguments)547 objectType sql_driver (listType arguments)
548
549 { /* sql_driver */
550 isit_database(arg_1(arguments));
551 return bld_int_temp(sqlDriver(take_database(arg_1(arguments))));
552 } /* sql_driver */
553
554
555
sql_empty_db(listType arguments)556 objectType sql_empty_db (listType arguments)
557
558 { /* sql_empty_db */
559 return bld_database_temp(NULL);
560 } /* sql_empty_db */
561
562
563
sql_empty_stmt(listType arguments)564 objectType sql_empty_stmt (listType arguments)
565
566 { /* sql_empty_stmt */
567 return bld_sqlstmt_temp(NULL);
568 } /* sql_empty_stmt */
569
570
571
sql_eq_db(listType arguments)572 objectType sql_eq_db (listType arguments)
573
574 { /* sql_eq_db */
575 isit_database(arg_1(arguments));
576 isit_database(arg_3(arguments));
577 if (take_database(arg_1(arguments)) ==
578 take_database(arg_3(arguments))) {
579 return SYS_TRUE_OBJECT;
580 } else {
581 return SYS_FALSE_OBJECT;
582 } /* if */
583 } /* sql_eq_db */
584
585
586
sql_eq_stmt(listType arguments)587 objectType sql_eq_stmt (listType arguments)
588
589 { /* sql_eq_stmt */
590 isit_sqlstmt(arg_1(arguments));
591 isit_sqlstmt(arg_3(arguments));
592 if (take_sqlstmt(arg_1(arguments)) ==
593 take_sqlstmt(arg_3(arguments))) {
594 return SYS_TRUE_OBJECT;
595 } else {
596 return SYS_FALSE_OBJECT;
597 } /* if */
598 } /* sql_eq_stmt */
599
600
601
sql_err_code(listType arguments)602 objectType sql_err_code (listType arguments)
603
604 { /* sql_err_code */
605 return bld_int_temp(sqlErrCode());
606 } /* sql_err_code */
607
608
609
sql_err_db_func(listType arguments)610 objectType sql_err_db_func (listType arguments)
611
612 { /* sql_err_db_func */
613 return bld_stri_temp(sqlErrDbFunc());
614 } /* sql_err_db_func */
615
616
617
sql_err_lib_func(listType arguments)618 objectType sql_err_lib_func (listType arguments)
619
620 { /* sql_err_lib_func */
621 return bld_stri_temp(sqlErrLibFunc());
622 } /* sql_err_lib_func */
623
624
625
sql_err_message(listType arguments)626 objectType sql_err_message (listType arguments)
627
628 { /* sql_err_message */
629 return bld_stri_temp(sqlErrMessage());
630 } /* sql_err_message */
631
632
633
sql_execute(listType arguments)634 objectType sql_execute (listType arguments)
635
636 { /* sql_execute */
637 isit_sqlstmt(arg_1(arguments));
638 sqlExecute(take_sqlstmt(arg_1(arguments)));
639 return SYS_EMPTY_OBJECT;
640 } /* sql_execute */
641
642
643
sql_fetch(listType arguments)644 objectType sql_fetch (listType arguments)
645
646 {
647 boolType success;
648
649 /* sql_fetch */
650 isit_sqlstmt(arg_1(arguments));
651 success = sqlFetch(take_sqlstmt(arg_1(arguments)));
652 if (success) {
653 return SYS_TRUE_OBJECT;
654 } else {
655 return SYS_FALSE_OBJECT;
656 } /* if */
657 } /* sql_fetch */
658
659
660
661 /**
662 * Get the current auto-commit mode for database/arg_1.
663 */
sql_get_auto_commit(listType arguments)664 objectType sql_get_auto_commit (listType arguments)
665
666 {
667 boolType autoCommit;
668
669 /* sql_get_auto_commit */
670 isit_database(arg_1(arguments));
671 autoCommit = sqlGetAutoCommit(take_database(arg_1(arguments)));
672 if (autoCommit) {
673 return SYS_TRUE_OBJECT;
674 } else {
675 return SYS_FALSE_OBJECT;
676 } /* if */
677 } /* sql_get_auto_commit */
678
679
680
sql_is_null(listType arguments)681 objectType sql_is_null (listType arguments)
682
683 { /* sql_is_null */
684 isit_sqlstmt(arg_1(arguments));
685 isit_int(arg_2(arguments));
686 if (sqlIsNull(take_sqlstmt(arg_1(arguments)),
687 take_int(arg_2(arguments)))) {
688 return SYS_TRUE_OBJECT;
689 } else {
690 return SYS_FALSE_OBJECT;
691 } /* if */
692 } /* sql_is_null */
693
694
695
sql_ne_db(listType arguments)696 objectType sql_ne_db (listType arguments)
697
698 { /* sql_ne_db */
699 isit_database(arg_1(arguments));
700 isit_database(arg_3(arguments));
701 if (take_database(arg_1(arguments)) !=
702 take_database(arg_3(arguments))) {
703 return SYS_TRUE_OBJECT;
704 } else {
705 return SYS_FALSE_OBJECT;
706 } /* if */
707 } /* sql_ne_db */
708
709
710
sql_ne_stmt(listType arguments)711 objectType sql_ne_stmt (listType arguments)
712
713 { /* sql_ne_stmt */
714 isit_sqlstmt(arg_1(arguments));
715 isit_sqlstmt(arg_3(arguments));
716 if (take_sqlstmt(arg_1(arguments)) !=
717 take_sqlstmt(arg_3(arguments))) {
718 return SYS_TRUE_OBJECT;
719 } else {
720 return SYS_FALSE_OBJECT;
721 } /* if */
722 } /* sql_ne_stmt */
723
724
725
sql_open_db2(listType arguments)726 objectType sql_open_db2 (listType arguments)
727
728 {
729 databaseType database;
730
731 /* sql_open_db2 */
732 isit_stri(arg_2(arguments));
733 isit_int(arg_3(arguments));
734 isit_stri(arg_4(arguments));
735 isit_stri(arg_5(arguments));
736 isit_stri(arg_6(arguments));
737 database = sqlOpenDb2(take_stri(arg_2(arguments)),
738 take_int(arg_3(arguments)),
739 take_stri(arg_4(arguments)),
740 take_stri(arg_5(arguments)),
741 take_stri(arg_6(arguments)));
742 return bld_database_temp(database);
743 } /* sql_open_db2 */
744
745
746
sql_open_fire(listType arguments)747 objectType sql_open_fire (listType arguments)
748
749 {
750 databaseType database;
751
752 /* sql_open_fire */
753 isit_stri(arg_2(arguments));
754 isit_int(arg_3(arguments));
755 isit_stri(arg_4(arguments));
756 isit_stri(arg_5(arguments));
757 isit_stri(arg_6(arguments));
758 database = sqlOpenFire(take_stri(arg_2(arguments)),
759 take_int(arg_3(arguments)),
760 take_stri(arg_4(arguments)),
761 take_stri(arg_5(arguments)),
762 take_stri(arg_6(arguments)));
763 return bld_database_temp(database);
764 } /* sql_open_fire */
765
766
767
sql_open_lite(listType arguments)768 objectType sql_open_lite (listType arguments)
769
770 {
771 databaseType database;
772
773 /* sql_open_lite */
774 isit_stri(arg_2(arguments));
775 isit_int(arg_3(arguments));
776 isit_stri(arg_4(arguments));
777 isit_stri(arg_5(arguments));
778 isit_stri(arg_6(arguments));
779 database = sqlOpenLite(take_stri(arg_2(arguments)),
780 take_int(arg_3(arguments)),
781 take_stri(arg_4(arguments)),
782 take_stri(arg_5(arguments)),
783 take_stri(arg_6(arguments)));
784 return bld_database_temp(database);
785 } /* sql_open_lite */
786
787
788
sql_open_my(listType arguments)789 objectType sql_open_my (listType arguments)
790
791 {
792 databaseType database;
793
794 /* sql_open_my */
795 isit_stri(arg_2(arguments));
796 isit_int(arg_3(arguments));
797 isit_stri(arg_4(arguments));
798 isit_stri(arg_5(arguments));
799 isit_stri(arg_6(arguments));
800 database = sqlOpenMy(take_stri(arg_2(arguments)),
801 take_int(arg_3(arguments)),
802 take_stri(arg_4(arguments)),
803 take_stri(arg_5(arguments)),
804 take_stri(arg_6(arguments)));
805 return bld_database_temp(database);
806 } /* sql_open_my */
807
808
809
sql_open_oci(listType arguments)810 objectType sql_open_oci (listType arguments)
811
812 {
813 databaseType database;
814
815 /* sql_open_oci */
816 isit_stri(arg_2(arguments));
817 isit_int(arg_3(arguments));
818 isit_stri(arg_4(arguments));
819 isit_stri(arg_5(arguments));
820 isit_stri(arg_6(arguments));
821 database = sqlOpenOci(take_stri(arg_2(arguments)),
822 take_int(arg_3(arguments)),
823 take_stri(arg_4(arguments)),
824 take_stri(arg_5(arguments)),
825 take_stri(arg_6(arguments)));
826 return bld_database_temp(database);
827 } /* sql_open_oci */
828
829
830
sql_open_odbc(listType arguments)831 objectType sql_open_odbc (listType arguments)
832
833 {
834 databaseType database;
835
836 /* sql_open_odbc */
837 isit_stri(arg_2(arguments));
838 isit_stri(arg_3(arguments));
839 isit_stri(arg_4(arguments));
840 isit_stri(arg_5(arguments));
841 isit_stri(arg_6(arguments));
842 database = sqlOpenOdbc(take_stri(arg_2(arguments)),
843 take_stri(arg_3(arguments)),
844 take_stri(arg_4(arguments)),
845 take_stri(arg_5(arguments)),
846 take_stri(arg_6(arguments)));
847 return bld_database_temp(database);
848 } /* sql_open_odbc */
849
850
851
sql_open_post(listType arguments)852 objectType sql_open_post (listType arguments)
853
854 {
855 databaseType database;
856
857 /* sql_open_post */
858 isit_stri(arg_2(arguments));
859 isit_int(arg_3(arguments));
860 isit_stri(arg_4(arguments));
861 isit_stri(arg_5(arguments));
862 isit_stri(arg_6(arguments));
863 database = sqlOpenPost(take_stri(arg_2(arguments)),
864 take_int(arg_3(arguments)),
865 take_stri(arg_4(arguments)),
866 take_stri(arg_5(arguments)),
867 take_stri(arg_6(arguments)));
868 return bld_database_temp(database);
869 } /* sql_open_post */
870
871
872
sql_open_sqlsrv(listType arguments)873 objectType sql_open_sqlsrv (listType arguments)
874
875 {
876 databaseType database;
877
878 /* sql_open_sqlsrv */
879 isit_stri(arg_2(arguments));
880 isit_int(arg_3(arguments));
881 isit_stri(arg_4(arguments));
882 isit_stri(arg_5(arguments));
883 isit_stri(arg_6(arguments));
884 database = sqlOpenSqlServer(take_stri(arg_2(arguments)),
885 take_int(arg_3(arguments)),
886 take_stri(arg_4(arguments)),
887 take_stri(arg_5(arguments)),
888 take_stri(arg_6(arguments)));
889 return bld_database_temp(database);
890 } /* sql_open_sqlsrv */
891
892
893
sql_open_tds(listType arguments)894 objectType sql_open_tds (listType arguments)
895
896 {
897 databaseType database;
898
899 /* sql_open_tds */
900 isit_stri(arg_2(arguments));
901 isit_int(arg_3(arguments));
902 isit_stri(arg_4(arguments));
903 isit_stri(arg_5(arguments));
904 isit_stri(arg_6(arguments));
905 database = sqlOpenTds(take_stri(arg_2(arguments)),
906 take_int(arg_3(arguments)),
907 take_stri(arg_4(arguments)),
908 take_stri(arg_5(arguments)),
909 take_stri(arg_6(arguments)));
910 return bld_database_temp(database);
911 } /* sql_open_tds */
912
913
914
sql_prepare(listType arguments)915 objectType sql_prepare (listType arguments)
916
917 {
918 sqlStmtType sqlStatement;
919
920 /* sql_prepare */
921 isit_database(arg_1(arguments));
922 isit_stri(arg_2(arguments));
923 sqlStatement = sqlPrepare(take_database(arg_1(arguments)),
924 take_stri(arg_2(arguments)));
925 return bld_sqlstmt_temp(sqlStatement);
926 } /* sql_prepare */
927
928
929
930 /**
931 * Execute a rollback statement for the database/arg_1.
932 */
sql_rollback(listType arguments)933 objectType sql_rollback (listType arguments)
934
935 { /* sql_rollback */
936 isit_database(arg_1(arguments));
937 sqlRollback(take_database(arg_1(arguments)));
938 return SYS_EMPTY_OBJECT;
939 } /* sql_rollback */
940
941
942
943 /**
944 * Set the auto-commit mode for database/arg_1.
945 */
sql_set_auto_commit(listType arguments)946 objectType sql_set_auto_commit (listType arguments)
947
948 { /* sql_set_auto_commit */
949 isit_database(arg_1(arguments));
950 isit_bool(arg_2(arguments));
951 sqlSetAutoCommit(take_database(arg_1(arguments)),
952 take_bool(arg_3(arguments)) == SYS_TRUE_OBJECT);
953 return SYS_EMPTY_OBJECT;
954 } /* sql_set_auto_commit */
955
956
957
sql_stmt_column_count(listType arguments)958 objectType sql_stmt_column_count (listType arguments)
959
960 {
961 intType column_count;
962
963 /* sql_stmt_column_count */
964 isit_sqlstmt(arg_1(arguments));
965 column_count = sqlStmtColumnCount(take_sqlstmt(arg_1(arguments)));
966 return bld_int_temp(column_count);
967 } /* sql_stmt_column_count */
968
969
970
sql_stmt_column_name(listType arguments)971 objectType sql_stmt_column_name (listType arguments)
972
973 {
974 striType name;
975
976 /* sql_stmt_column_name */
977 isit_sqlstmt(arg_1(arguments));
978 isit_int(arg_2(arguments));
979 name = sqlStmtColumnName(take_sqlstmt(arg_1(arguments)),
980 take_int(arg_2(arguments)));
981 return bld_stri_temp(name);
982 } /* sql_stmt_column_name */
983