|
39 | 39 | #include "php_pgsql.h"
|
40 | 40 | #include "php_globals.h"
|
41 | 41 | #include "zend_exceptions.h"
|
42 |
| -#include "pgsql_arginfo.h" |
43 | 42 |
|
44 | 43 | #ifdef HAVE_PGSQL
|
45 | 44 |
|
|
61 | 60 | #define PGSQL_MAX_LENGTH_OF_LONG 30
|
62 | 61 | #define PGSQL_MAX_LENGTH_OF_DOUBLE 60
|
63 | 62 |
|
| 63 | +char pgsql_libpq_version[16]; |
| 64 | + |
| 65 | +#include "pgsql_arginfo.h" |
| 66 | + |
64 | 67 | #if ZEND_LONG_MAX < UINT_MAX
|
65 | 68 | #define PGSQL_RETURN_OID(oid) do { \
|
66 | 69 | if (oid > ZEND_LONG_MAX) { \
|
@@ -431,8 +434,6 @@ static void php_libpq_version(char *buf, size_t len)
|
431 | 434 |
|
432 | 435 | PHP_MINIT_FUNCTION(pgsql)
|
433 | 436 | {
|
434 |
| - char buf[16]; |
435 |
| - |
436 | 437 | REGISTER_INI_ENTRIES();
|
437 | 438 |
|
438 | 439 | le_plink = zend_register_list_destructors_ex(NULL, _close_pgsql_plink, "pgsql link persistent", module_number);
|
@@ -468,108 +469,10 @@ PHP_MINIT_FUNCTION(pgsql)
|
468 | 469 | pgsql_lob_object_handlers.compare = zend_objects_not_comparable;
|
469 | 470 |
|
470 | 471 | /* libpq version */
|
471 |
| - php_libpq_version(buf, sizeof(buf)); |
472 |
| - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", buf, CONST_CS | CONST_PERSISTENT); |
473 |
| - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", buf, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); |
474 |
| - /* For connection option */ |
475 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT); |
476 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT); |
477 |
| - /* For pg_fetch_array() */ |
478 |
| - REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT); |
479 |
| - REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT); |
480 |
| - REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT); |
481 |
| - /* For pg_last_notice() */ |
482 |
| - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT); |
483 |
| - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT); |
484 |
| - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT); |
485 |
| - /* For pg_connection_status() */ |
486 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT); |
487 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT); |
488 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT); |
489 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT); |
490 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT); |
491 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT); |
492 |
| -#ifdef CONNECTION_SSL_STARTUP |
493 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT); |
494 |
| -#endif |
495 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT); |
496 |
| - /* For pg_connect_poll() */ |
497 |
| - REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT); |
498 |
| - REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT); |
499 |
| - REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT); |
500 |
| - REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT); |
501 |
| - REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT); |
502 |
| - /* For pg_transaction_status() */ |
503 |
| - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT); |
504 |
| - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT); |
505 |
| - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT); |
506 |
| - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT); |
507 |
| - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT); |
508 |
| - /* For pg_set_error_verbosity() */ |
509 |
| - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT); |
510 |
| - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT); |
511 |
| - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT); |
512 |
| - /* For lo_seek() */ |
513 |
| - REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); |
514 |
| - REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); |
515 |
| - REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); |
516 |
| - /* For pg_result_status() return value type */ |
517 |
| - REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT); |
518 |
| - REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT); |
519 |
| - /* For pg_result_status() return value */ |
520 |
| - REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT); |
521 |
| - REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT); |
522 |
| - REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT); |
523 |
| - REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT); |
524 |
| - REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT); |
525 |
| - REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT); |
526 |
| - REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT); |
527 |
| - REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT); |
528 |
| - /* For pg_result_error_field() field codes */ |
529 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT); |
530 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT); |
531 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT); |
532 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT); |
533 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT); |
534 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT); |
535 |
| -#ifdef PG_DIAG_INTERNAL_POSITION |
536 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT); |
537 |
| -#endif |
538 |
| -#ifdef PG_DIAG_INTERNAL_QUERY |
539 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT); |
540 |
| -#endif |
541 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT); |
542 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT); |
543 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT); |
544 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT); |
545 |
| -#ifdef PG_DIAG_SCHEMA_NAME |
546 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT); |
547 |
| -#endif |
548 |
| -#ifdef PG_DIAG_TABLE_NAME |
549 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT); |
550 |
| -#endif |
551 |
| -#ifdef PG_DIAG_COLUMN_NAME |
552 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT); |
553 |
| -#endif |
554 |
| -#ifdef PG_DIAG_DATATYPE_NAME |
555 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT); |
556 |
| -#endif |
557 |
| -#ifdef PG_DIAG_CONSTRAINT_NAME |
558 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT); |
559 |
| -#endif |
560 |
| -#ifdef PG_DIAG_SEVERITY_NONLOCALIZED |
561 |
| - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT); |
562 |
| -#endif |
563 |
| - /* pg_convert options */ |
564 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT); |
565 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT); |
566 |
| - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT); |
567 |
| - /* pg_insert/update/delete/select options */ |
568 |
| - REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT); |
569 |
| - REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT); |
570 |
| - REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT); |
571 |
| - REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT); |
572 |
| - REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT); |
| 472 | + php_libpq_version(pgsql_libpq_version, sizeof(pgsql_libpq_version)); |
| 473 | + |
| 474 | + register_pgsql_symbols(module_number); |
| 475 | + |
573 | 476 | return SUCCESS;
|
574 | 477 | }
|
575 | 478 |
|
@@ -610,8 +513,7 @@ PHP_MINFO_FUNCTION(pgsql)
|
610 | 513 |
|
611 | 514 | php_info_print_table_start();
|
612 | 515 | php_info_print_table_header(2, "PostgreSQL Support", "enabled");
|
613 |
| - php_libpq_version(buf, sizeof(buf)); |
614 |
| - php_info_print_table_row(2, "PostgreSQL (libpq) Version", buf); |
| 516 | + php_info_print_table_row(2, "PostgreSQL (libpq) Version", pgsql_libpq_version); |
615 | 517 | #ifdef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT
|
616 | 518 | php_info_print_table_row(2, "Multibyte character support", "enabled");
|
617 | 519 | #else
|
@@ -910,9 +812,7 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type
|
910 | 812 | break;
|
911 | 813 | case PHP_PG_VERSION:
|
912 | 814 | array_init(return_value);
|
913 |
| - char buf[16]; |
914 |
| - php_libpq_version(buf, sizeof(buf)); |
915 |
| - add_assoc_string(return_value, "client", buf); |
| 815 | + add_assoc_string(return_value, "client", pgsql_libpq_version); |
916 | 816 | add_assoc_long(return_value, "protocol", PQprotocolVersion(pgsql));
|
917 | 817 | if (PQprotocolVersion(pgsql) >= 3) {
|
918 | 818 | /* 8.0 or grater supports protorol version 3 */
|
|
0 commit comments