summaryrefslogtreecommitdiff
path: root/vendor/thecodingmachine/safe/generated/ingres-ii.php
blob: 9ea8b5f353ca4f2dc73ce8072b97217a12456ea2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
<?php

namespace Safe;

use Safe\Exceptions\IngresiiException;

/**
 * ingres_autocommit is called before opening a
 * transaction (before the first call to
 * ingres_query or just after a call to
 * ingres_rollback or
 * ingres_commit) to switch the
 * autocommit mode of the server on or off (when the script begins
 * the autocommit mode is off).
 *
 * When autocommit mode is on, every query is automatically
 * committed by the server, as if ingres_commit
 * was called after every call to ingres_query.
 * To see if autocommit is enabled use,
 * ingres_autocommit_state.
 *
 * By default Ingres will rollback any uncommitted transactions at the end of
 * a request. Use this function or ingres_commit to
 * ensure your data is committed to the database.
 *
 * @param resource $link The connection link identifier
 * @throws IngresiiException
 *
 */
function ingres_autocommit($link): void
{
    error_clear_last();
    $result = \ingres_autocommit($link);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_close closes the connection to
 * the Ingres server that is associated with the specified link.
 *
 * ingres_close is usually unnecessary, as it
 * will not close persistent connections and all non-persistent connections
 * are automatically closed at the end of the script.
 *
 * @param resource $link The connection link identifier
 * @throws IngresiiException
 *
 */
function ingres_close($link): void
{
    error_clear_last();
    $result = \ingres_close($link);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_commit commits the currently open
 * transaction, making all changes made to the database permanent.
 *
 * This closes the transaction. A new transaction can be opened by sending a
 * query with ingres_query.
 *
 * You can also have the server commit automatically after every
 * query by calling ingres_autocommit before
 * opening the transaction.
 *
 * By default Ingres will roll back any uncommitted transactions at the end of
 * a request. Use this function or ingres_autocommit to
 * ensure your that data is committed to the database.
 *
 * @param resource $link The connection link identifier
 * @throws IngresiiException
 *
 */
function ingres_commit($link): void
{
    error_clear_last();
    $result = \ingres_commit($link);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_connect opens a connection with the
 * given Ingres database.
 *
 * The connection is closed when the script ends or when
 * ingres_close is called on this link.
 *
 * @param string $database The database name. Must follow the syntax:
 *
 * [vnode::]dbname[/svr_class]
 * @param string $username The Ingres user name
 * @param string $password The password associated with username
 * @param array $options ingres_connect options
 *
 *
 *
 *
 * Option name
 * Option type
 * Description
 * Example
 *
 *
 *
 *
 * date_century_boundary
 * integer
 * The threshold by which a 2-digit year is determined to be in
 * the current century or in the next century. Equivalent to II_DATE_CENTURY_BOUNDARY.
 * 50
 *
 *
 * group
 * string
 * Specifies the group ID of the user, equivalent to the "-G"
 * flag
 * payroll
 *
 *
 * role
 * string
 * The role ID of the application. If a role password is
 * required, the parameter value should be specified as "role/password"
 *
 *
 * effective_user
 * string
 * The ingres user account being impersonated, equivalent to the "-u" flag
 * another_user
 *
 *
 * dbms_password
 * string
 * The internal database password for the user connecting to Ingres
 * s3cr3t
 *
 *
 * table_structure
 * string
 *
 * The default structure for new tables.
 * Valid values for table_structure are:
 *
 * INGRES_STRUCTURE_BTREE
 * INGRES_STRUCTURE_HASH
 * INGRES_STRUCTURE_HEAP
 * INGRES_STRUCTURE_ISAM
 * INGRES_STRUCTURE_CBTREE
 * INGRES_STRUCTURE_CISAM
 * INGRES_STRUCTURE_CHASH
 * INGRES_STRUCTURE_CHEAP
 *
 *
 *
 * INGRES_STRUCTURE_BTREE
 *
 *
 * index_structure
 * string
 *
 * The default structure for new secondary indexes. Valid values
 * for index_structure are:
 *
 * INGRES_STRUCTURE_CBTREE
 * INGRES_STRUCTURE_CISAM
 * INGRES_STRUCTURE_CHASH
 * INGRES_STRUCTURE_BTREE
 * INGRES_STRUCTURE_HASH
 * INGRES_STRUCTURE_ISAM
 *
 *
 *
 * INGRES_STRUCTURE_HASH
 *
 *
 * login_local
 * boolean
 * Determines how the connection user ID and password are
 * used when a VNODE is included in the target database string.
 * If set to TRUE, the user ID and password are used to locally access
 * the VNODE, and the VNODE login information is used to establish the DBMS
 * connection. If set to FALSE, the process user ID is used to access
 * the VNODE, and the connection user ID and password are used in place
 * of the VNODE login information to establish the DBMS connection.
 * This parameter is ignored if no VNODE is included in the target
 * database string. The default is FALSE.
 * TRUE
 *
 *
 * timezone
 * string
 * Controls the timezone of the session. If not set it will
 * default to the value defined by II_TIMEZONE_NAME. If
 * II_TIMEZONE_NAME is not defined, NA-PACIFIC (GMT-8 with Daylight
 * Savings) is used.
 *
 *
 * date_format
 * integer
 * Sets the allowable input and output format for Ingres dates.
 * Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is
 * not set the default date format is US, e.g. mm/dd/yy. Valid values
 * for date_format are:
 *
 * INGRES_DATE_DMY
 * INGRES_DATE_FINISH
 * INGRES_DATE_GERMAN
 * INGRES_DATE_ISO
 * INGRES_DATE_ISO4
 * INGRES_DATE_MDY
 * INGRES_DATE_MULTINATIONAL
 * INGRES_DATE_MULTINATIONAL4
 * INGRES_DATE_YMD
 * INGRES_DATE_US
 *
 *
 *
 * INGRES_DATE_MULTINATIONAL4
 *
 *
 * decimal_separator
 * string
 * The character identifier for decimal data
 * ","
 *
 *
 * money_lort
 * integer
 * Leading or trailing currency sign. Valid values for money_lort
 * are:
 *
 * INGRES_MONEY_LEADING
 * INGRES_MONEY_TRAILING
 *
 *
 *
 * INGRES_MONEY_TRAILING
 *
 *
 * money_sign
 * string
 * The currency symbol to be used with the MONEY datatype
 * €
 *
 *
 * money_precision
 * integer
 * The precision of the MONEY datatype
 * 3
 *
 *
 * float4_precision
 * integer
 * Precision of the FLOAT4 datatype
 * 10
 *
 *
 * float8_precision
 * integer
 * Precision of the FLOAT8 data
 * 10
 *
 *
 * blob_segment_length
 * integer
 * The amount of data in bytes to fetch at a time when retrieving
 * BLOB or CLOB data, defaults to 4096 bytes when not explicitly set
 * 8192
 *
 *
 *
 *
 *
 * The default structure for new tables.
 * Valid values for table_structure are:
 *
 * INGRES_STRUCTURE_BTREE
 * INGRES_STRUCTURE_HASH
 * INGRES_STRUCTURE_HEAP
 * INGRES_STRUCTURE_ISAM
 * INGRES_STRUCTURE_CBTREE
 * INGRES_STRUCTURE_CISAM
 * INGRES_STRUCTURE_CHASH
 * INGRES_STRUCTURE_CHEAP
 *
 *
 * The default structure for new secondary indexes. Valid values
 * for index_structure are:
 *
 * INGRES_STRUCTURE_CBTREE
 * INGRES_STRUCTURE_CISAM
 * INGRES_STRUCTURE_CHASH
 * INGRES_STRUCTURE_BTREE
 * INGRES_STRUCTURE_HASH
 * INGRES_STRUCTURE_ISAM
 *
 *
 * Sets the allowable input and output format for Ingres dates.
 * Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is
 * not set the default date format is US, e.g. mm/dd/yy. Valid values
 * for date_format are:
 *
 * INGRES_DATE_DMY
 * INGRES_DATE_FINISH
 * INGRES_DATE_GERMAN
 * INGRES_DATE_ISO
 * INGRES_DATE_ISO4
 * INGRES_DATE_MDY
 * INGRES_DATE_MULTINATIONAL
 * INGRES_DATE_MULTINATIONAL4
 * INGRES_DATE_YMD
 * INGRES_DATE_US
 *
 *
 * Leading or trailing currency sign. Valid values for money_lort
 * are:
 *
 * INGRES_MONEY_LEADING
 * INGRES_MONEY_TRAILING
 *
 * @return resource Returns a Ingres link resource on success
 * @throws IngresiiException
 *
 */
function ingres_connect(string $database = null, string $username = null, string $password = null, array $options = null)
{
    error_clear_last();
    if ($options !== null) {
        $result = \ingres_connect($database, $username, $password, $options);
    } elseif ($password !== null) {
        $result = \ingres_connect($database, $username, $password);
    } elseif ($username !== null) {
        $result = \ingres_connect($database, $username);
    } elseif ($database !== null) {
        $result = \ingres_connect($database);
    } else {
        $result = \ingres_connect();
    }
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
    return $result;
}


/**
 * Execute a query prepared using ingres_prepare.
 *
 * @param resource $result The result query identifier
 * @param array $params An array of parameter values to be used with the query
 * @param string $types A string containing a sequence of types for the parameter values
 * passed. See the types parameter in
 * ingres_query for the list of type codes.
 * @throws IngresiiException
 *
 */
function ingres_execute($result, array $params = null, string $types = null): void
{
    error_clear_last();
    if ($types !== null) {
        $result = \ingres_execute($result, $params, $types);
    } elseif ($params !== null) {
        $result = \ingres_execute($result, $params);
    } else {
        $result = \ingres_execute($result);
    }
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_field_name returns the name of a field
 * in a query result.
 *
 * @param resource $result The query result identifier
 * @param int $index index is the field whose name will be
 * retrieved.
 *
 * The possible values of index depend upon
 * the value
 * of ingres.array_index_start.
 * If ingres.array_index_start
 * is 1 (the default)
 * then index must be
 * between 1 and the value returned
 * by ingres_num_fields. If ingres.array_index_start
 * is 0 then index must
 * be between 0
 * and ingres_num_fields -
 * 1.
 * @return string Returns the name of a field
 * in a query result
 * @throws IngresiiException
 *
 */
function ingres_field_name($result, int $index): string
{
    error_clear_last();
    $result = \ingres_field_name($result, $index);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
    return $result;
}


/**
 * Get the type of a field in a query result.
 *
 * @param resource $result The query result identifier
 * @param int $index index is the field whose type will be
 * retrieved.
 *
 * The possible values of index depend upon
 * the value
 * of ingres.array_index_start.
 * If ingres.array_index_start
 * is 1 (the default)
 * then index must be
 * between 1 and the value returned
 * by ingres_num_fields. If ingres.array_index_start
 * is 0 then index must
 * be between 0
 * and ingres_num_fields -
 * 1.
 * @return string ingres_field_type returns the type of a
 * field in a query result.  Examples of
 * types returned are IIAPI_BYTE_TYPE,
 * IIAPI_CHA_TYPE, IIAPI_DTE_TYPE,
 * IIAPI_FLT_TYPE, IIAPI_INT_TYPE,
 * IIAPI_VCH_TYPE. Some of these types can map to more
 * than one SQL type depending on the length of the field (see
 * ingres_field_length). For example
 * IIAPI_FLT_TYPE can be a float4 or a float8. For detailed
 * information, see the Ingres OpenAPI User Guide, Appendix
 * "Data Types" in the Ingres documentation.
 * @throws IngresiiException
 *
 */
function ingres_field_type($result, int $index): string
{
    error_clear_last();
    $result = \ingres_field_type($result, $index);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
    return $result;
}


/**
 *
 *
 * @param resource $result The query result identifier
 * @throws IngresiiException
 *
 */
function ingres_free_result($result): void
{
    error_clear_last();
    $result = \ingres_free_result($result);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * Open a persistent connection to an Ingres database.
 *
 * There are only two differences between this function and
 * ingres_connect: First, when connecting, the
 * function will initially try to find a (persistent) link that is
 * already opened with the same parameters.  If one is found, an
 * identifier for it will be returned instead of opening a new
 * connection. Second, the connection to the Ingres server will not
 * be closed when the execution of the script ends.  Instead, the
 * link will remain open for future use
 * (ingres_close will not close links
 * established by ingres_pconnect). This type
 * of link is therefore called "persistent".
 *
 * @param string $database The database name. Must follow the syntax:
 *
 * [vnode::]dbname[/svr_class]
 * @param string $username The Ingres user name
 * @param string $password The password associated with username
 * @param array $options See ingres_connect for the list of options that
 * can be passed
 * @return resource Returns an Ingres link resource on success
 * @throws IngresiiException
 *
 */
function ingres_pconnect(string $database = null, string $username = null, string $password = null, array $options = null)
{
    error_clear_last();
    if ($options !== null) {
        $result = \ingres_pconnect($database, $username, $password, $options);
    } elseif ($password !== null) {
        $result = \ingres_pconnect($database, $username, $password);
    } elseif ($username !== null) {
        $result = \ingres_pconnect($database, $username);
    } elseif ($database !== null) {
        $result = \ingres_pconnect($database);
    } else {
        $result = \ingres_pconnect();
    }
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
    return $result;
}


/**
 * This function is used to position the cursor associated with the result
 * resource before issuing a fetch.  If ingres.array_index_start
 * is set to 0 then the first row is 0 else it is 1.
 * ingres_result_seek can be used only with queries that
 * make use of scrollable
 * cursors. It cannot be used with
 * ingres_unbuffered_query.
 *
 * @param resource $result The result identifier for a query
 * @param int $position The row to position the cursor on. If ingres.array_index_start
 * is set to 0, then the first row is 0, else it is 1
 * @throws IngresiiException
 *
 */
function ingres_result_seek($result, int $position): void
{
    error_clear_last();
    $result = \ingres_result_seek($result, $position);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_rollback rolls back the currently
 * open transaction, actually cancelling all changes made to the
 * database during the transaction.
 *
 * This closes the transaction. A new transaction can be opened by sending a
 * query with ingres_query.
 *
 * @param resource $link The connection link identifier
 * @throws IngresiiException
 *
 */
function ingres_rollback($link): void
{
    error_clear_last();
    $result = \ingres_rollback($link);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}


/**
 * ingres_set_environment is called to set environmental
 * options that affect the output of certain values from Ingres, such as the
 * timezone, date format, decimal character separator, and float precision.
 *
 * @param resource $link The connection link identifier
 * @param array $options An enumerated array of option name/value pairs. The following table
 * lists the option name and the expected type
 *
 *
 *
 *
 *
 * Option name
 * Option type
 * Description
 * Example
 *
 *
 *
 *
 * date_century_boundary
 * integer
 * The threshold by which a 2-digit year is determined to be in
 * the current century or in the next century. Equivalent to II_DATE_CENTURY_BOUNDARY
 * 50
 *
 *
 * timezone
 * string
 * Controls the timezone of the session. If not set, it will
 * default the value defined by II_TIMEZONE_NAME. If
 * II_TIMEZONE_NAME is not defined, NA-PACIFIC (GMT-8 with Daylight
 * Savings) is used.
 * UNITED-KINGDOM
 *
 *
 * date_format
 * integer
 * Sets the allowable input and output format for Ingres dates.
 * Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is
 * not set, the default date format is US, for example mm/dd/yy. Valid values
 * for date_format are:
 *
 * INGRES_DATE_DMY
 * INGRES_DATE_FINISH
 * INGRES_DATE_GERMAN
 * INGRES_DATE_ISO
 * INGRES_DATE_ISO4
 * INGRES_DATE_MDY
 * INGRES_DATE_MULTINATIONAL
 * INGRES_DATE_MULTINATIONAL4
 * INGRES_DATE_YMD
 * INGRES_DATE_US
 *
 *
 *
 * INGRES_DATE_ISO4
 *
 *
 * decimal_separator
 * string
 * The character identifier for decimal data
 * ","
 *
 *
 * money_lort
 * integer
 * Leading or trailing currency sign. Valid values for money_lort
 * are:
 *
 * INGRES_MONEY_LEADING
 * INGRES_MONEY_TRAILING
 *
 *
 *
 * INGRES_MONEY_LEADING
 *
 *
 * money_sign
 * string
 * The currency symbol to be used with the MONEY datatype
 * €
 *
 *
 * money_precision
 * integer
 * The precision of the MONEY datatype
 * 2
 *
 *
 * float4_precision
 * integer
 * Precision of the FLOAT4 datatype
 * 10
 *
 *
 * float8_precision
 * integer
 * Precision of the FLOAT8 data
 * 10
 *
 *
 * blob_segment_length
 * integer
 * The amount of data in bytes to fetch at a time when retrieving
 * BLOB or CLOB data. Defaults to 4096 bytes when not set explicitly
 * 8192
 *
 *
 *
 *
 *
 * Sets the allowable input and output format for Ingres dates.
 * Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is
 * not set, the default date format is US, for example mm/dd/yy. Valid values
 * for date_format are:
 *
 * INGRES_DATE_DMY
 * INGRES_DATE_FINISH
 * INGRES_DATE_GERMAN
 * INGRES_DATE_ISO
 * INGRES_DATE_ISO4
 * INGRES_DATE_MDY
 * INGRES_DATE_MULTINATIONAL
 * INGRES_DATE_MULTINATIONAL4
 * INGRES_DATE_YMD
 * INGRES_DATE_US
 *
 *
 * Leading or trailing currency sign. Valid values for money_lort
 * are:
 *
 * INGRES_MONEY_LEADING
 * INGRES_MONEY_TRAILING
 *
 * @throws IngresiiException
 *
 */
function ingres_set_environment($link, array $options): void
{
    error_clear_last();
    $result = \ingres_set_environment($link, $options);
    if ($result === false) {
        throw IngresiiException::createFromPhpError();
    }
}