enum_func_status ret;
MYSQLND * conn;
MYSQLND_RES * result;
- zend_bool to_cache = FALSE;
DBG_ENTER("mysqlnd_stmt::store_result");
if (!stmt || !stmt->conn || !stmt->result) {
result->type = MYSQLND_RES_PS_BUF;
result->m.fetch_row = mysqlnd_fetch_stmt_row_buffered;
result->m.fetch_lengths = NULL;/* makes no sense */
+ result->m.row_decoder = php_mysqlnd_rowp_read_binary_protocol;
result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC);
- ret = result->m.store_result_fetch_data(conn, result, result->meta, TRUE, to_cache TSRMLS_CC);
+ ret = result->m.store_result_fetch_data(conn, result, result->meta, TRUE TSRMLS_CC);
if (PASS == ret) {
/* libmysql API docs say it should be so for SELECT statements */
current_row,
meta->field_count,
meta->fields,
- result->stored_data->persistent,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
result->unbuf->last_row_data,
row_packet->field_count,
row_packet->fields_metadata,
- FALSE,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC))
result->unbuf->last_row_data,
row_packet->field_count,
row_packet->fields_metadata,
- FALSE,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC))
data_cursor,
result->meta->field_count,
result->meta->fields,
- result->stored_data->persistent,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_COPY_ON_WRITE_PERFORMED, copy_on_write_performed,
STAT_COPY_ON_WRITE_SAVED, copy_on_write_saved);
- mnd_pefree(set->data, set->persistent);
+ mnd_efree(set->data);
set->data = NULL;
}
if (set->row_buffers) {
- mnd_pefree(set->row_buffers, set->persistent);
+ mnd_efree(set->row_buffers);
set->row_buffers = NULL;
}
set->data_cursor = NULL;
set->row_count = 0;
- mnd_pefree(set, set->persistent);
+ mnd_efree(set);
DBG_VOID_RETURN;
}
result->unbuf->last_row_data,
row_packet->field_count,
row_packet->fields_metadata,
- FALSE,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
result->unbuf->last_row_data,
field_count,
row_packet->fields_metadata,
- FALSE,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
current_row,
result->meta->field_count,
result->meta->fields,
- FALSE,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
current_row,
result->meta->field_count,
result->meta->fields,
- result->stored_data->persistent,
result->conn->options.numeric_and_datetime_as_unicode,
result->conn->options.int_and_float_native,
result->conn->stats TSRMLS_CC);
enum_func_status
MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND * const conn, MYSQLND_RES * result,
MYSQLND_RES_METADATA *meta,
- zend_bool binary_protocol,
- zend_bool to_cache TSRMLS_DC)
+ zend_bool binary_protocol TSRMLS_DC)
{
enum_func_status ret;
MYSQLND_PACKET_ROW *row_packet = NULL;
DBG_ENTER("mysqlnd_res::store_result_fetch_data");
- result->stored_data = set = mnd_pecalloc(1, sizeof(MYSQLND_RES_BUFFERED), to_cache);
+ result->stored_data = set = mnd_ecalloc(1, sizeof(MYSQLND_RES_BUFFERED));
if (!set) {
SET_OOM_ERROR(conn->error_info);
ret = FAIL;
goto end;
}
if (free_rows) {
- set->row_buffers = mnd_pemalloc((size_t)(free_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)), to_cache);
+ set->row_buffers = mnd_emalloc((size_t)(free_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
if (!set->row_buffers) {
SET_OOM_ERROR(conn->error_info);
ret = FAIL;
goto end;
}
}
- set->persistent = to_cache;
set->references = 1;
- result->m.row_decoder = binary_protocol? php_mysqlnd_rowp_read_binary_protocol:
- php_mysqlnd_rowp_read_text_protocol;
-
/* non-persistent */
row_packet = conn->protocol->m.get_row_packet(conn->protocol, FALSE TSRMLS_CC);
if (!row_packet) {
ret = FAIL;
goto end;
}
- new_row_buffers = mnd_perealloc(set->row_buffers,
- (size_t)(total_allocated_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)),
- set->persistent);
+ new_row_buffers = mnd_erealloc(set->row_buffers, (size_t)(total_allocated_rows * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
if (!new_row_buffers) {
SET_OOM_ERROR(conn->error_info);
ret = FAIL;
goto end;
}
/* if pecalloc is used valgrind barks gcc version 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036] (SUSE Linux) */
- set->data = mnd_pemalloc((size_t)(set->row_count * meta->field_count * sizeof(zval *)), to_cache);
+ set->data = mnd_emalloc((size_t)(set->row_count * meta->field_count * sizeof(zval *)));
if (!set->data) {
SET_OOM_ERROR(conn->error_info);
ret = FAIL;
ret = FAIL;
goto end;
}
- set->row_buffers = mnd_perealloc(set->row_buffers,
- (size_t) (set->row_count * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)),
- set->persistent);
+ set->row_buffers = mnd_erealloc(set->row_buffers, (size_t) (set->row_count * sizeof(MYSQLND_MEMORY_POOL_CHUNK *)));
}
if (conn->upsert_status.server_status & SERVER_MORE_RESULTS_EXISTS) {
zend_bool ps_protocol TSRMLS_DC)
{
enum_func_status ret;
- zend_bool to_cache = FALSE;
DBG_ENTER("mysqlnd_res::store_result");
result->type = MYSQLND_RES_NORMAL;
result->m.fetch_row = result->m.fetch_row_normal_buffered;
result->m.fetch_lengths = mysqlnd_fetch_lengths_buffered;
+ result->m.row_decoder = ps_protocol? php_mysqlnd_rowp_read_binary_protocol:
+ php_mysqlnd_rowp_read_text_protocol;
result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC);
result->lengths = mnd_ecalloc(result->field_count, sizeof(unsigned long));
+
if (!result->result_set_memory_pool || !result->lengths) {
SET_OOM_ERROR(conn->error_info);
DBG_RETURN(NULL);
CONN_SET_STATE(conn, CONN_FETCHING_DATA);
- ret = result->m.store_result_fetch_data(conn, result, result->meta, ps_protocol, to_cache TSRMLS_CC);
+ ret = result->m.store_result_fetch_data(conn, result, result->meta, ps_protocol TSRMLS_CC);
if (FAIL == ret) {
if (result->stored_data) {
conn->error_info = result->stored_data->error_info;
typedef enum_func_status (*func_mysqlnd_res__read_result_metadata)(MYSQLND_RES *result, MYSQLND * conn TSRMLS_DC);
typedef unsigned long * (*func_mysqlnd_res__fetch_lengths)(MYSQLND_RES * const result TSRMLS_DC);
-typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND * const conn, MYSQLND_RES *result, MYSQLND_RES_METADATA *meta, zend_bool binary_protocol, zend_bool to_cache TSRMLS_DC);
+typedef enum_func_status (*func_mysqlnd_res__store_result_fetch_data)(MYSQLND * const conn, MYSQLND_RES *result, MYSQLND_RES_METADATA *meta, zend_bool binary_protocol TSRMLS_DC);
typedef enum_func_status (*func_mysqlnd_res__initialize_result_set_rest)(MYSQLND_RES * const result TSRMLS_DC);
typedef void (*func_mysqlnd_res__free_result_buffers)(MYSQLND_RES * result TSRMLS_DC); /* private */
/* for decoding - binary or text protocol */
typedef enum_func_status (*func_mysqlnd_res__row_decoder)(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields,
unsigned int field_count, MYSQLND_FIELD *fields_metadata,
- zend_bool persistent,
zend_bool as_unicode, zend_bool as_int_or_float,
MYSQLND_STATS * stats TSRMLS_DC);
MYSQLND_MEMORY_POOL_CHUNK **row_buffers;
uint64_t row_count;
uint64_t initialized_rows;
- zend_bool persistent;
unsigned int references;