goto noconversion;
}
{
- long lval;
+ zend_long lval;
double dval;
switch (is_numeric_str_function(str, &lval, &dval)) {
}
}
-ZEND_RESULT_CODE php_pqres_success(PGresult *res TSRMLS_DC)
+ZEND_RESULT_CODE php_pqres_success(PGresult *res)
{
zval zexc;
}
}
+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[] = {
+#ifdef PG_DIAG_SEVERITY
+ {PG_DIAG_SEVERITY, "severity"},
+#endif
+#ifdef PG_DIAG_SQLSTATE
+ {PG_DIAG_SQLSTATE, "sqlstate"},
+#endif
+#ifdef PG_DIAG_MESSAGE_PRIMARY
+ {PG_DIAG_MESSAGE_PRIMARY, "message_primary"},
+#endif
+#ifdef PG_DIAG_MESSAGE_DETAIL
+ {PG_DIAG_MESSAGE_DETAIL, "message_detail"},
+#endif
+#ifdef PG_DIAG_MESSAGE_HINT
+ {PG_DIAG_MESSAGE_HINT, "message_hint"},
+#endif
+#ifdef PG_DIAG_STATEMENT_POSITION
+ {PG_DIAG_STATEMENT_POSITION,"statement_position"},
+#endif
+#ifdef PG_DIAG_INTERNAL_POSITION
+ {PG_DIAG_INTERNAL_POSITION, "internal_position"},
+#endif
+#ifdef PG_DIAG_INTERNAL_QUERY
+ {PG_DIAG_INTERNAL_QUERY, "internal_query"},
+#endif
+#ifdef PG_DIAG_CONTEXT
+ {PG_DIAG_CONTEXT, "context"},
+#endif
+#ifdef PG_DIAG_SCHEMA_NAME
+ {PG_DIAG_SCHEMA_NAME, "schema_name"},
+#endif
+#ifdef PG_DIAG_TABLE_NAME
+ {PG_DIAG_TABLE_NAME, "table_name"},
+#endif
+#ifdef PG_DIAG_COLUMN_NAME
+ {PG_DIAG_COLUMN_NAME, "column_name"},
+#endif
+#ifdef PG_DIAG_DATATYPE_NAME
+ {PG_DIAG_DATATYPE_NAME, "datatype_name"},
+#endif
+#ifdef PG_DIAG_CONSTRAINT_NAME
+ {PG_DIAG_CONSTRAINT_NAME, "constraint_name"},
+#endif
+#ifdef PG_DIAG_SOURCE_FILE
+ {PG_DIAG_SOURCE_FILE, "source_file"},
+#endif
+#ifdef PG_DIAG_SOURCE_LINE
+ {PG_DIAG_SOURCE_LINE, "source_line"},
+#endif
+#ifdef PG_DIAG_SOURCE_FUNCTION
+ {PG_DIAG_SOURCE_FUNCTION, "source_function"},
+#endif
+ };
+
+ 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;
obj->intern->auto_convert = zval_get_long(value);
}
-static ZEND_RESULT_CODE php_pqres_iteration(zval *zobj, php_pqres_object_t *obj, php_pqres_fetch_t fetch_type, zval *row TSRMLS_DC)
+static ZEND_RESULT_CODE php_pqres_iteration(zval *zobj, php_pqres_object_t *obj, php_pqres_fetch_t fetch_type, zval *row)
{
ZEND_RESULT_CODE rv;
php_pqres_fetch_t orig_fetch;
static ZEND_RESULT_CODE column_nn(php_pqres_object_t *obj, zval *zcol, php_pqres_col_t *col)
{
- long index = -1;
+ zend_long index = -1;
char *name = NULL;
if (!zcol) {
php_pqres_object_handlers.get_properties = php_pq_object_properties;
php_pqres_object_handlers.count_elements = php_pqres_count_elements;
- zend_hash_init(&php_pqres_object_prophandlers, 8, NULL, php_pq_object_prophandler_dtor, 1);
+ zend_hash_init(&php_pqres_object_prophandlers, 9, NULL, php_pq_object_prophandler_dtor, 1);
zend_declare_property_null(php_pqres_class_entry, ZEND_STRL("status"), ZEND_ACC_PUBLIC);
ph.read = php_pqres_object_read_status;
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));
+ zend_declare_property_null(php_pqres_class_entry, ZEND_STRL("diag"), ZEND_ACC_PUBLIC);
+ ph.read = php_pqres_object_read_diag;
+ zend_hash_str_add_mem(&php_pqres_object_prophandlers, "diag", sizeof("diag")-1, (void *) &ph, sizeof(ph));
+
zend_declare_property_long(php_pqres_class_entry, ZEND_STRL("numRows"), 0, ZEND_ACC_PUBLIC);
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));