Merge branch 'v1.1.x'
authorMichael Wallner <mike@php.net>
Tue, 17 May 2016 09:55:34 +0000 (11:55 +0200)
committerMichael Wallner <mike@php.net>
Tue, 17 May 2016 09:55:34 +0000 (11:55 +0200)
package.xml
php_pq.h
src/php_pqres.c

index 64e47710484246c9224dbdeb10f427a8dac31ff8..05d3a07e2441bdf9abe18ef59e12e246bb02e4c2 100644 (file)
   <email>daverandom@php.net</email>
   <active>yes</active>
  </developer>
- <date>2016-05-03</date>
+ <date>2016-05-17</date>
  <version>
-  <release>2.0.2dev</release>
-  <api>2.0.0</api>
+  <release>2.1.0dev</release>
+  <api>2.1.0</api>
  </version>
  <stability>
   <release>stable</release>
@@ -46,7 +46,7 @@
  </stability>
  <license uri="http://copyfree.org/content/standard/licenses/2bsd/license.txt">BSD-2-Clause</license>
  <notes><![CDATA[
-* 
+* Added public readonly array pq\Result::$diag property, listing PQresultErrorField details (gh-issue #14)
 ]]></notes>
  <contents>
   <dir name="/">
  <dependencies>
   <required>
    <php>
-    <min>7.0.0</min>
+    <min>5.4.0</min>
+    <max>7.0.0</max>
+    <exclude>7.0.0</exclude>
    </php>
    <pearinstaller>
     <min>1.4.0</min>
index be04b2bb05feb14cbc755d0c1e3a3d48611dbada..0d56e4a48678d994afaf0ed8a6ebdff321cb9465 100644 (file)
--- a/php_pq.h
+++ b/php_pq.h
@@ -14,7 +14,7 @@
 #ifndef PHP_PQ_H
 #define PHP_PQ_H
 
-#define PHP_PQ_VERSION "2.0.2dev"
+#define PHP_PQ_VERSION "2.1.0dev"
 
 #ifdef PHP_WIN32
 #      define PHP_PQ_API __declspec(dllexport)
index 1bc0d1d11ce5ad5446f99a84e3123f75b72049c3..76518f2b73b1e9c5aa6ae34f7552c339806114ad 100644 (file)
@@ -477,6 +477,45 @@ static void php_pqres_object_read_error_message(zval *object, void *o, zval *ret
        }
 }
 
+static void php_pqres_object_read_diag(zval *object, void *o, zval *return_value)
+{
+       php_pqres_object_t *obj = o;
+       int i;
+       struct {
+               char code;
+               const char *const name;
+       } diag[] = {
+                       {PG_DIAG_SEVERITY,                      "severity"},
+                       {PG_DIAG_SQLSTATE,                      "sqlstate"},
+                       {PG_DIAG_MESSAGE_PRIMARY,       "message_primary"},
+                       {PG_DIAG_MESSAGE_DETAIL,        "message_detail"},
+                       {PG_DIAG_MESSAGE_HINT,          "message_hint"},
+                       {PG_DIAG_STATEMENT_POSITION,"statement_position"},
+                       {PG_DIAG_INTERNAL_POSITION,     "internal_position"},
+                       {PG_DIAG_INTERNAL_QUERY,        "internal_query"},
+                       {PG_DIAG_CONTEXT,                       "context"},
+                       {PG_DIAG_SCHEMA_NAME,           "schema_name"},
+                       {PG_DIAG_TABLE_NAME,            "table_name"},
+                       {PG_DIAG_COLUMN_NAME,           "column_name"},
+                       {PG_DIAG_DATATYPE_NAME,         "datatype_name"},
+                       {PG_DIAG_CONSTRAINT_NAME,       "constraint_name"},
+                       {PG_DIAG_SOURCE_FILE,           "source_file"},
+                       {PG_DIAG_SOURCE_LINE,           "source_line"},
+                       {PG_DIAG_SOURCE_FUNCTION,       "source_function"}
+       };
+
+       array_init_size(return_value, 32);
+       for (i = 0; i < sizeof(diag)/sizeof(diag[0]); ++i) {
+               char *value = PQresultErrorField(obj->intern->res, diag[i].code);
+
+               if (value) {
+                       add_assoc_string(return_value, diag[i].name, value);
+               } else {
+                       add_assoc_null(return_value, diag[i].name);
+               }
+       }
+}
+
 static void php_pqres_object_read_num_rows(zval *object, void *o, zval *return_value)
 {
        php_pqres_object_t *obj = o;
@@ -1125,7 +1164,15 @@ PHP_MINIT_FUNCTION(pqres)
        ph.read = php_pqres_object_read_error_message;
        zend_hash_str_add_mem(&php_pqres_object_prophandlers, "errorMessage", sizeof("errorMessage")-1, (void *) &ph, sizeof(ph));
 
+<<<<<<< HEAD
        zend_declare_property_long(php_pqres_class_entry, ZEND_STRL("numRows"), 0, ZEND_ACC_PUBLIC);
+=======
+       zend_declare_property_null(php_pqres_class_entry, ZEND_STRL("diag"), ZEND_ACC_PUBLIC TSRMLS_CC);
+       ph.read = php_pqres_object_read_diag;
+       zend_hash_add(&php_pqres_object_prophandlers, "diag", sizeof("diag"), (void *) &ph, sizeof(ph), NULL);
+
+       zend_declare_property_long(php_pqres_class_entry, ZEND_STRL("numRows"), 0, ZEND_ACC_PUBLIC TSRMLS_CC);
+>>>>>>> v1.1.x
        ph.read = php_pqres_object_read_num_rows;
        zend_hash_str_add_mem(&php_pqres_object_prophandlers, "numRows", sizeof("numRows")-1, (void *) &ph, sizeof(ph));