Skip to content

Commit 8691786

Browse files
committedMay 14, 2010
- Give possibility to overload mysqlnd_result_init().
- Always use conn->m->stmt_init instead of mysqlnd_stmt_init()
1 parent dd85f9c commit 8691786

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed
 

‎ext/mysqlnd/mysqlnd.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,7 @@ MYSQLND_METHOD(mysqlnd_conn, list_fields)(MYSQLND * conn, const char *table, con
11271127
Prepare for the worst case.
11281128
MyISAM goes to 2500 BIT columns, double it for safety.
11291129
*/
1130-
result = mysqlnd_result_init(5000, conn->persistent TSRMLS_CC);
1130+
result = conn->m->result_init(5000, conn->persistent TSRMLS_CC);
11311131
if (!result) {
11321132
DBG_RETURN(NULL);
11331133
}
@@ -2211,7 +2211,8 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_conn)
22112211
MYSQLND_METHOD(mysqlnd_conn, end_psession),
22122212
MYSQLND_METHOD(mysqlnd_conn, send_close),
22132213

2214-
MYSQLND_METHOD(mysqlnd_conn, ssl_set)
2214+
MYSQLND_METHOD(mysqlnd_conn, ssl_set),
2215+
mysqlnd_result_init
22152216
MYSQLND_CLASS_METHODS_END;
22162217

22172218

‎ext/mysqlnd/mysqlnd_ps.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ MYSQLND_METHOD(mysqlnd_stmt, get_result)(MYSQLND_STMT * const s TSRMLS_DC)
157157
MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_BUFFERED_SETS);
158158

159159
do {
160-
result = mysqlnd_result_init(stmt->result->field_count, stmt->persistent TSRMLS_CC);
160+
result = conn->m->result_init(stmt->result->field_count, stmt->persistent TSRMLS_CC);
161161
if (!result) {
162162
SET_OOM_ERROR(stmt->conn->error_info);
163163
break;
@@ -359,7 +359,7 @@ MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const
359359
Create a new test statement, which we will prepare, but if anything
360360
fails, we will scrap it.
361361
*/
362-
s_to_prepare = mysqlnd_stmt_init(stmt->conn);
362+
s_to_prepare = stmt->conn->m->stmt_init(stmt->conn TSRMLS_CC);
363363
stmt_to_prepare = s_to_prepare->data;
364364
}
365365

@@ -383,7 +383,7 @@ MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const
383383
no metadata at prepare.
384384
*/
385385
if (stmt_to_prepare->field_count) {
386-
MYSQLND_RES * result = mysqlnd_result_init(stmt_to_prepare->field_count, stmt_to_prepare->persistent TSRMLS_CC);
386+
MYSQLND_RES * result = stmt->conn->m->result_init(stmt_to_prepare->field_count, stmt_to_prepare->persistent TSRMLS_CC);
387387
if (!result) {
388388
SET_OOM_ERROR(stmt->conn->error_info);
389389
goto fail;
@@ -1685,7 +1685,7 @@ MYSQLND_METHOD(mysqlnd_stmt, result_metadata)(MYSQLND_STMT * const s TSRMLS_DC)
16851685
result set, so we don't get one.
16861686
*/
16871687
do {
1688-
result = mysqlnd_result_init(stmt->field_count, stmt->persistent TSRMLS_CC);
1688+
result = stmt->conn->m->result_init(stmt->field_count, stmt->persistent TSRMLS_CC);
16891689
if (!result) {
16901690
break;
16911691
}

‎ext/mysqlnd/mysqlnd_result.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ mysqlnd_query_read_result_set_header(MYSQLND *conn, MYSQLND_STMT * s TSRMLS_DC)
445445
/* PS has already allocated it */
446446
conn->field_count = rset_header->field_count;
447447
if (!stmt) {
448-
result = conn->current_result = mysqlnd_result_init(rset_header->field_count, conn->persistent TSRMLS_CC);
448+
result = conn->current_result = conn->m->result_init(rset_header->field_count, conn->persistent TSRMLS_CC);
449449
} else {
450450
if (!stmt->result) {
451451
DBG_INF("This is 'SHOW'/'EXPLAIN'-like query.");
@@ -454,7 +454,7 @@ mysqlnd_query_read_result_set_header(MYSQLND *conn, MYSQLND_STMT * s TSRMLS_DC)
454454
prepared statements can't send result set metadata for these queries
455455
on prepare stage. Read it now.
456456
*/
457-
result = stmt->result = mysqlnd_result_init(rset_header->field_count, stmt->persistent TSRMLS_CC);
457+
result = stmt->result = conn->m->result_init(rset_header->field_count, stmt->persistent TSRMLS_CC);
458458
} else {
459459
/*
460460
Update result set metadata if it for some reason changed between
@@ -1617,7 +1617,7 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_res)
16171617
MYSQLND_CLASS_METHODS_END;
16181618

16191619

1620-
/* {{{ mysqlnd_result_init_ex */
1620+
/* {{{ mysqlnd_result_init */
16211621
PHPAPI MYSQLND_RES *
16221622
mysqlnd_result_init(unsigned int field_count, zend_bool persistent TSRMLS_DC)
16231623
{

‎ext/mysqlnd/mysqlnd_structs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ typedef enum_func_status (*func_mysqlnd_conn__send_close)(MYSQLND * conn TSRMLS_
390390

391391
typedef void (*func_mysqlnd_conn__ssl_set)(MYSQLND * const conn, const char * key, const char * const cert, const char * const ca, const char * const capath, const char * const cipher TSRMLS_DC);
392392

393+
typedef MYSQLND_RES * (*func_mysqlnd_conn__result_init)(unsigned int field_count, zend_bool persistent TSRMLS_DC);
393394

394395
struct st_mysqlnd_conn_methods
395396
{
@@ -460,6 +461,8 @@ struct st_mysqlnd_conn_methods
460461
func_mysqlnd_conn__send_close send_close;
461462

462463
func_mysqlnd_conn__ssl_set ssl_set;
464+
465+
func_mysqlnd_conn__result_init result_init;
463466
};
464467

465468

0 commit comments

Comments
 (0)
Please sign in to comment.