Lines Matching refs:stmt

52 static void mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const stmt TSRMLS_DC);
53 static void mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const stmt, unsigned int param_no …
59 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
66 if (!stmt || !stmt->conn || !stmt->result) { in MYSQLND_METHOD()
69 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
71 conn = stmt->conn; in MYSQLND_METHOD()
74 if (!stmt->field_count) { in MYSQLND_METHOD()
78 if (stmt->cursor_exists) { in MYSQLND_METHOD()
85 stmt->state != MYSQLND_STMT_WAITING_USE_OR_STORE) in MYSQLND_METHOD()
92 stmt->default_rset_handler = s->m->store_result; in MYSQLND_METHOD()
94 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
95 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
98 result = stmt->result; in MYSQLND_METHOD()
109 stmt->upsert_status.affected_rows = stmt->result->stored_data->row_count; in MYSQLND_METHOD()
111 stmt->state = MYSQLND_STMT_USE_OR_STORE_CALLED; in MYSQLND_METHOD()
114 stmt->result->m.free_result_contents(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
115 mnd_efree(stmt->result); in MYSQLND_METHOD()
116 stmt->result = NULL; in MYSQLND_METHOD()
117 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
129 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
134 if (!stmt || !stmt->conn || !stmt->result) { in MYSQLND_METHOD()
137 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
139 conn = stmt->conn; in MYSQLND_METHOD()
142 if (!stmt->field_count) { in MYSQLND_METHOD()
146 if (stmt->cursor_exists) { in MYSQLND_METHOD()
152 …if (CONN_GET_STATE(conn) != CONN_FETCHING_DATA || stmt->state != MYSQLND_STMT_WAITING_USE_OR_STORE… in MYSQLND_METHOD()
158 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
159 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
163 result = conn->m->result_init(stmt->result->field_count, stmt->persistent TSRMLS_CC); in MYSQLND_METHOD()
165 SET_OOM_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
169 result->meta = stmt->result->meta->m->clone_metadata(stmt->result->meta, FALSE TSRMLS_CC); in MYSQLND_METHOD()
171 SET_OOM_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
176 stmt->upsert_status.affected_rows = result->stored_data->row_count; in MYSQLND_METHOD()
177 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
180 stmt->error_info = conn->error_info; in MYSQLND_METHOD()
181 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
199 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
202 DBG_RETURN((stmt && stmt->conn && (stmt->conn->upsert_status.server_status & in MYSQLND_METHOD()
214 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
218 if (!stmt || !stmt->conn || !stmt->result) { in MYSQLND_METHOD()
221 conn = stmt->conn; in MYSQLND_METHOD()
222 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
228 …DBG_INF_FMT("server_status=%u cursor=%u", stmt->upsert_status.server_status, stmt->upsert_status.s… in MYSQLND_METHOD()
245 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_skip_metadata() local
252 if (!stmt || !stmt->conn || !stmt->conn->protocol) { in mysqlnd_stmt_skip_metadata()
255 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in mysqlnd_stmt_skip_metadata()
257 …field_packet = stmt->conn->protocol->m.get_result_field_packet(stmt->conn->protocol, FALSE TSRMLS_… in mysqlnd_stmt_skip_metadata()
259 SET_OOM_ERROR(stmt->error_info); in mysqlnd_stmt_skip_metadata()
260 SET_OOM_ERROR(stmt->conn->error_info); in mysqlnd_stmt_skip_metadata()
264 for (;i < stmt->param_count; i++) { in mysqlnd_stmt_skip_metadata()
265 if (FAIL == PACKET_READ(field_packet, stmt->conn)) { in mysqlnd_stmt_skip_metadata()
282 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_read_prepare_response() local
287 if (!stmt || !stmt->conn || !stmt->conn->protocol) { in mysqlnd_stmt_read_prepare_response()
290 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in mysqlnd_stmt_read_prepare_response()
292 …prepare_resp = stmt->conn->protocol->m.get_prepare_response_packet(stmt->conn->protocol, FALSE TSR… in mysqlnd_stmt_read_prepare_response()
294 SET_OOM_ERROR(stmt->error_info); in mysqlnd_stmt_read_prepare_response()
295 SET_OOM_ERROR(stmt->conn->error_info); in mysqlnd_stmt_read_prepare_response()
299 if (FAIL == PACKET_READ(prepare_resp, stmt->conn)) { in mysqlnd_stmt_read_prepare_response()
304 stmt->error_info = stmt->conn->error_info = prepare_resp->error_info; in mysqlnd_stmt_read_prepare_response()
308 stmt->stmt_id = prepare_resp->stmt_id; in mysqlnd_stmt_read_prepare_response()
309 stmt->warning_count = stmt->conn->upsert_status.warning_count = prepare_resp->warning_count; in mysqlnd_stmt_read_prepare_response()
310 stmt->field_count = stmt->conn->field_count = prepare_resp->field_count; in mysqlnd_stmt_read_prepare_response()
311 stmt->param_count = prepare_resp->param_count; in mysqlnd_stmt_read_prepare_response()
324 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_prepare_read_eof() local
329 if (!stmt || !stmt->conn || !stmt->conn->protocol) { in mysqlnd_stmt_prepare_read_eof()
332 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in mysqlnd_stmt_prepare_read_eof()
334 fields_eof = stmt->conn->protocol->m.get_eof_packet(stmt->conn->protocol, FALSE TSRMLS_CC); in mysqlnd_stmt_prepare_read_eof()
336 SET_OOM_ERROR(stmt->error_info); in mysqlnd_stmt_prepare_read_eof()
337 SET_OOM_ERROR(stmt->conn->error_info); in mysqlnd_stmt_prepare_read_eof()
339 if (FAIL == (ret = PACKET_READ(fields_eof, stmt->conn))) { in mysqlnd_stmt_prepare_read_eof()
340 if (stmt->result) { in mysqlnd_stmt_prepare_read_eof()
341 stmt->result->m.free_result_contents(stmt->result TSRMLS_CC); in mysqlnd_stmt_prepare_read_eof()
342 mnd_efree(stmt->result); in mysqlnd_stmt_prepare_read_eof()
343 memset(stmt, 0, sizeof(MYSQLND_STMT_DATA)); in mysqlnd_stmt_prepare_read_eof()
344 stmt->state = MYSQLND_STMT_INITTED; in mysqlnd_stmt_prepare_read_eof()
347 stmt->upsert_status.server_status = fields_eof->server_status; in mysqlnd_stmt_prepare_read_eof()
348 stmt->upsert_status.warning_count = fields_eof->warning_count; in mysqlnd_stmt_prepare_read_eof()
349 stmt->state = MYSQLND_STMT_PREPARED; in mysqlnd_stmt_prepare_read_eof()
363 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
365 MYSQLND_STMT_DATA * stmt_to_prepare = stmt; in MYSQLND_METHOD()
368 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
371 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
373 SET_ERROR_AFF_ROWS(stmt); in MYSQLND_METHOD()
374 SET_ERROR_AFF_ROWS(stmt->conn); in MYSQLND_METHOD()
376 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
377 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
379 if (stmt->state > MYSQLND_STMT_INITTED) { in MYSQLND_METHOD()
381 if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
383 stmt->default_rset_handler = s->m->use_result; in MYSQLND_METHOD()
384 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD()
387 if (stmt->state > MYSQLND_STMT_WAITING_USE_OR_STORE && stmt->result) { in MYSQLND_METHOD()
388 stmt->result->m.skip_result(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
394 s_to_prepare = stmt->conn->m->stmt_init(stmt->conn TSRMLS_CC); in MYSQLND_METHOD()
421 …MYSQLND_RES * result = stmt->conn->m->result_init(stmt_to_prepare->field_count, stmt_to_prepare->p… in MYSQLND_METHOD()
423 SET_OOM_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
440 if (stmt_to_prepare != stmt) { in MYSQLND_METHOD()
450 stmt_to_prepare = stmt; in MYSQLND_METHOD()
451 stmt = tmp_swap_data; in MYSQLND_METHOD()
455 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
460 if (stmt_to_prepare != stmt && s_to_prepare) { in MYSQLND_METHOD()
463 stmt->state = MYSQLND_STMT_INITTED; in MYSQLND_METHOD()
475 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_execute_parse_response() local
480 if (!stmt || !stmt->conn) { in mysqlnd_stmt_execute_parse_response()
483 conn = stmt->conn; in mysqlnd_stmt_execute_parse_response()
486 ret = mysqlnd_query_read_result_set_header(stmt->conn, s TSRMLS_CC); in mysqlnd_stmt_execute_parse_response()
488 stmt->error_info = conn->error_info; in mysqlnd_stmt_execute_parse_response()
489 stmt->upsert_status.affected_rows = conn->upsert_status.affected_rows; in mysqlnd_stmt_execute_parse_response()
493 stmt->state = MYSQLND_STMT_PREPARED; in mysqlnd_stmt_execute_parse_response()
494 stmt->send_types_to_server = 1; in mysqlnd_stmt_execute_parse_response()
503 SET_EMPTY_ERROR(stmt->error_info); in mysqlnd_stmt_execute_parse_response()
504 SET_EMPTY_ERROR(stmt->conn->error_info); in mysqlnd_stmt_execute_parse_response()
505 stmt->upsert_status = conn->upsert_status; in mysqlnd_stmt_execute_parse_response()
506 stmt->state = MYSQLND_STMT_EXECUTED; in mysqlnd_stmt_execute_parse_response()
512 stmt->result->type = MYSQLND_RES_PS_BUF; in mysqlnd_stmt_execute_parse_response()
513 if (!stmt->result->conn) { in mysqlnd_stmt_execute_parse_response()
518 stmt->result->conn = stmt->conn->m->get_reference(stmt->conn TSRMLS_CC); in mysqlnd_stmt_execute_parse_response()
522 stmt->field_count = stmt->result->field_count = conn->field_count; in mysqlnd_stmt_execute_parse_response()
523 stmt->result->lengths = NULL; in mysqlnd_stmt_execute_parse_response()
524 if (stmt->field_count) { in mysqlnd_stmt_execute_parse_response()
525 stmt->state = MYSQLND_STMT_WAITING_USE_OR_STORE; in mysqlnd_stmt_execute_parse_response()
531 DBG_INF_FMT("server_status=%u cursor=%u", stmt->upsert_status.server_status, in mysqlnd_stmt_execute_parse_response()
532 stmt->upsert_status.server_status & SERVER_STATUS_CURSOR_EXISTS); in mysqlnd_stmt_execute_parse_response()
534 if (stmt->upsert_status.server_status & SERVER_STATUS_CURSOR_EXISTS) { in mysqlnd_stmt_execute_parse_response()
536 stmt->cursor_exists = TRUE; in mysqlnd_stmt_execute_parse_response()
539 stmt->default_rset_handler = s->m->use_result; in mysqlnd_stmt_execute_parse_response()
541 } else if (stmt->flags & CURSOR_TYPE_READ_ONLY) { in mysqlnd_stmt_execute_parse_response()
554 stmt->default_rset_handler = s->m->store_result; in mysqlnd_stmt_execute_parse_response()
559 stmt->default_rset_handler = s->m->use_result; in mysqlnd_stmt_execute_parse_response()
565 if (stmt->upsert_status.server_status & SERVER_PS_OUT_PARAMS) { in mysqlnd_stmt_execute_parse_response()
583 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
591 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
594 conn = stmt->conn; in MYSQLND_METHOD()
595 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
597 SET_ERROR_AFF_ROWS(stmt); in MYSQLND_METHOD()
598 SET_ERROR_AFF_ROWS(stmt->conn); in MYSQLND_METHOD()
600 if (stmt->result && stmt->state >= MYSQLND_STMT_PREPARED && stmt->field_count) { in MYSQLND_METHOD()
607 if (stmt->result_bind && in MYSQLND_METHOD()
608 stmt->result_zvals_separated_once == TRUE && in MYSQLND_METHOD()
609 stmt->state >= MYSQLND_STMT_USER_FETCHING) in MYSQLND_METHOD()
624 for (i = 0; i < stmt->field_count; i++) { in MYSQLND_METHOD()
625 if (stmt->result_bind[i].bound == TRUE) { in MYSQLND_METHOD()
626 zval_copy_ctor(stmt->result_bind[i].zv); in MYSQLND_METHOD()
636 if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
639 stmt->default_rset_handler = s->m->use_result; in MYSQLND_METHOD()
640 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD()
643 if (stmt->state > MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
646 stmt->result->m.skip_result(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
649 if (stmt->state > MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
651 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
659 stmt->result->m.free_result_buffers(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
660 } else if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
664 SET_STMT_ERROR(stmt, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync); in MYSQLND_METHOD()
669 if (stmt->param_count) { in MYSQLND_METHOD()
671 if (!stmt->param_bind) { in MYSQLND_METHOD()
672 SET_STMT_ERROR(stmt, CR_PARAMS_NOT_BOUND, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
677 for (i = 0; i < stmt->param_count; i++) { in MYSQLND_METHOD()
678 if (stmt->param_bind[i].zv == NULL) { in MYSQLND_METHOD()
686 SET_STMT_ERROR(stmt, CR_PARAMS_NOT_BOUND, UNKNOWN_SQLSTATE, msg); in MYSQLND_METHOD()
697 ret = stmt->conn->m->simple_command(stmt->conn, COM_STMT_EXECUTE, (char *)request, request_len, in MYSQLND_METHOD()
701 …SET_STMT_ERROR(stmt, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, "Couldn't generate the request. Possibly … in MYSQLND_METHOD()
709 stmt->error_info = conn->error_info; in MYSQLND_METHOD()
713 stmt->execute_count++; in MYSQLND_METHOD()
717 …DBG_INF_FMT("server_status=%u cursor=%u", stmt->upsert_status.server_status, stmt->upsert_status.s… in MYSQLND_METHOD()
719 if (ret == PASS && conn->last_query_type == QUERY_UPSERT && stmt->upsert_status.affected_rows) { in MYSQLND_METHOD()
720 …MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn->stats, STAT_ROWS_AFFECTED_PS, stmt->upsert_status.affecte… in MYSQLND_METHOD()
732 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_fetch_row_buffered() local
738 DBG_INF_FMT("stmt=%lu", stmt != NULL ? stmt->stmt_id : 0L); in mysqlnd_stmt_fetch_row_buffered()
745 if (stmt->result_bind) { in mysqlnd_stmt_fetch_row_buffered()
764 if (stmt->update_max_length) { in mysqlnd_stmt_fetch_row_buffered()
784 if (stmt->result_bind[i].zv) { in mysqlnd_stmt_fetch_row_buffered()
785 zval_dtor(stmt->result_bind[i].zv); in mysqlnd_stmt_fetch_row_buffered()
789 if (stmt->result_bind[i].bound == TRUE) { in mysqlnd_stmt_fetch_row_buffered()
800 Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(current_row[i]); in mysqlnd_stmt_fetch_row_buffered()
801 stmt->result_bind[i].zv->value = current_row[i]->value; in mysqlnd_stmt_fetch_row_buffered()
803 zval_copy_ctor(stmt->result_bind[i].zv); in mysqlnd_stmt_fetch_row_buffered()
806 ZVAL_NULL(stmt->result_bind[i].zv); in mysqlnd_stmt_fetch_row_buffered()
832 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_fetch_row_unbuffered() local
855 row_packet->skip_extraction = stmt && stmt->result_bind? FALSE:TRUE; in mysqlnd_stmt_fetch_row_unbuffered()
886 if (stmt->result_bind[i].bound == TRUE) { in mysqlnd_stmt_fetch_row_unbuffered()
893 zval_dtor(stmt->result_bind[i].zv); in mysqlnd_stmt_fetch_row_unbuffered()
895 if (IS_NULL != (Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(data)) ) { in mysqlnd_stmt_fetch_row_unbuffered()
906 stmt->result_bind[i].zv->value = data->value; in mysqlnd_stmt_fetch_row_unbuffered()
912 MYSQLND_INC_CONN_STATISTIC(stmt->conn->stats, STAT_ROWS_FETCHED_FROM_CLIENT_PS_UNBUF); in mysqlnd_stmt_fetch_row_unbuffered()
929 stmt->conn->error_info = row_packet->error_info; in mysqlnd_stmt_fetch_row_unbuffered()
930 stmt->error_info = row_packet->error_info; in mysqlnd_stmt_fetch_row_unbuffered()
961 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
966 if (!stmt || !stmt->conn || !stmt->result) { in MYSQLND_METHOD()
969 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
971 conn = stmt->conn; in MYSQLND_METHOD()
973 if (!stmt->field_count || in MYSQLND_METHOD()
974 (!stmt->cursor_exists && CONN_GET_STATE(conn) != CONN_FETCHING_DATA) || in MYSQLND_METHOD()
975 (stmt->cursor_exists && CONN_GET_STATE(conn) != CONN_READY) || in MYSQLND_METHOD()
976 (stmt->state != MYSQLND_STMT_WAITING_USE_OR_STORE)) in MYSQLND_METHOD()
984 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
986 MYSQLND_INC_CONN_STATISTIC(stmt->conn->stats, STAT_PS_UNBUFFERED_SETS); in MYSQLND_METHOD()
987 result = stmt->result; in MYSQLND_METHOD()
989 DBG_INF_FMT("%scursor exists", stmt->cursor_exists? "":"no "); in MYSQLND_METHOD()
990 result->m.use_result(stmt->result, TRUE TSRMLS_CC); in MYSQLND_METHOD()
991 result->m.fetch_row = stmt->cursor_exists? mysqlnd_fetch_stmt_row_cursor: in MYSQLND_METHOD()
993 stmt->state = MYSQLND_STMT_USE_OR_STORE_CALLED; in MYSQLND_METHOD()
1009 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_fetch_stmt_row_cursor() local
1015 if (!stmt || !stmt->conn || !result || !result->conn || !result->unbuf) { in mysqlnd_fetch_stmt_row_cursor()
1020 DBG_INF_FMT("stmt=%lu flags=%u", stmt->stmt_id, flags); in mysqlnd_fetch_stmt_row_cursor()
1022 if (stmt->state < MYSQLND_STMT_USER_FETCHING) { in mysqlnd_fetch_stmt_row_cursor()
1024 SET_CLIENT_ERROR(stmt->conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, in mysqlnd_fetch_stmt_row_cursor()
1033 SET_EMPTY_ERROR(stmt->error_info); in mysqlnd_fetch_stmt_row_cursor()
1034 SET_EMPTY_ERROR(stmt->conn->error_info); in mysqlnd_fetch_stmt_row_cursor()
1036 int4store(buf, stmt->stmt_id); in mysqlnd_fetch_stmt_row_cursor()
1039 if (FAIL == stmt->conn->m->simple_command(stmt->conn, COM_STMT_FETCH, (char *)buf, sizeof(buf), in mysqlnd_fetch_stmt_row_cursor()
1042 stmt->error_info = stmt->conn->error_info; in mysqlnd_fetch_stmt_row_cursor()
1046 row_packet->skip_extraction = stmt->result_bind? FALSE:TRUE; in mysqlnd_fetch_stmt_row_cursor()
1075 if (stmt->result_bind[i].bound == TRUE) { in mysqlnd_fetch_stmt_row_cursor()
1082 zval_dtor(stmt->result_bind[i].zv); in mysqlnd_fetch_stmt_row_cursor()
1084 DBG_INF_FMT("i=%u bound_var=%p type=%u refc=%u", i, stmt->result_bind[i].zv, in mysqlnd_fetch_stmt_row_cursor()
1085 Z_TYPE_P(data), Z_REFCOUNT_P(stmt->result_bind[i].zv)); in mysqlnd_fetch_stmt_row_cursor()
1086 if (IS_NULL != (Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(data))) { in mysqlnd_fetch_stmt_row_cursor()
1096 stmt->result_bind[i].zv->value = data->value; in mysqlnd_fetch_stmt_row_cursor()
1119 MYSQLND_INC_CONN_STATISTIC(stmt->conn->stats, STAT_ROWS_FETCHED_FROM_CLIENT_PS_CURSOR); in mysqlnd_fetch_stmt_row_cursor()
1126 stmt->upsert_status.warning_count = in mysqlnd_fetch_stmt_row_cursor()
1127 stmt->conn->upsert_status.warning_count = in mysqlnd_fetch_stmt_row_cursor()
1130 stmt->upsert_status.server_status = in mysqlnd_fetch_stmt_row_cursor()
1131 stmt->conn->upsert_status.server_status = in mysqlnd_fetch_stmt_row_cursor()
1136 stmt->upsert_status.warning_count = in mysqlnd_fetch_stmt_row_cursor()
1137 stmt->conn->upsert_status.warning_count = in mysqlnd_fetch_stmt_row_cursor()
1139 stmt->upsert_status.server_status = in mysqlnd_fetch_stmt_row_cursor()
1140 stmt->conn->upsert_status.server_status = in mysqlnd_fetch_stmt_row_cursor()
1156 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1159 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1162 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
1164 if (!stmt->result || in MYSQLND_METHOD()
1165 stmt->state < MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
1166 SET_STMT_ERROR(stmt, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync); in MYSQLND_METHOD()
1170 } else if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
1173 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD()
1175 stmt->state = MYSQLND_STMT_USER_FETCHING; in MYSQLND_METHOD()
1177 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1178 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1180 …DBG_INF_FMT("result_bind=%p separated_once=%u", stmt->result_bind, stmt->result_zvals_separated_on… in MYSQLND_METHOD()
1185 if (stmt->result_bind && !stmt->result_zvals_separated_once) { in MYSQLND_METHOD()
1191 for (i = 0; i < stmt->result->field_count; i++) { in MYSQLND_METHOD()
1192 if (stmt->result_bind[i].bound == TRUE) { in MYSQLND_METHOD()
1193 zval_dtor(stmt->result_bind[i].zv); in MYSQLND_METHOD()
1194 ZVAL_NULL(stmt->result_bind[i].zv); in MYSQLND_METHOD()
1197 stmt->result_zvals_separated_once = TRUE; in MYSQLND_METHOD()
1200 ret = stmt->result->m.fetch_row(stmt->result, (void*)s, 0, fetched_anything TSRMLS_CC); in MYSQLND_METHOD()
1210 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1215 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1218 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
1220 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1221 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1223 if (stmt->stmt_id) { in MYSQLND_METHOD()
1224 MYSQLND * conn = stmt->conn; in MYSQLND_METHOD()
1225 if (stmt->param_bind) { in MYSQLND_METHOD()
1229 for (i = 0; i < stmt->param_count; i++) { in MYSQLND_METHOD()
1230 if (stmt->param_bind[i].flags & MYSQLND_PARAM_BIND_BLOB_USED) { in MYSQLND_METHOD()
1231 stmt->param_bind[i].flags &= ~MYSQLND_PARAM_BIND_BLOB_USED; in MYSQLND_METHOD()
1242 if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
1244 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD()
1245 stmt->state = MYSQLND_STMT_USER_FETCHING; in MYSQLND_METHOD()
1248 if (stmt->result) { in MYSQLND_METHOD()
1250 stmt->result->m.skip_result(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
1260 int4store(cmd_buf, stmt->stmt_id); in MYSQLND_METHOD()
1265 stmt->error_info = conn->error_info; in MYSQLND_METHOD()
1267 stmt->upsert_status = conn->upsert_status; in MYSQLND_METHOD()
1280 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1287 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1290 DBG_INF_FMT("stmt=%lu param_no=%u data_len=%lu", stmt->stmt_id, param_no, length); in MYSQLND_METHOD()
1292 conn = stmt->conn; in MYSQLND_METHOD()
1294 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1295 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1297 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1298 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1302 if (!stmt->param_bind) { in MYSQLND_METHOD()
1303 SET_STMT_ERROR(stmt, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync); in MYSQLND_METHOD()
1308 if (param_no >= stmt->param_count) { in MYSQLND_METHOD()
1309 SET_STMT_ERROR(stmt, CR_INVALID_PARAMETER_NO, UNKNOWN_SQLSTATE, "Invalid parameter number"); in MYSQLND_METHOD()
1313 if (stmt->param_bind[param_no].type != MYSQL_TYPE_LONG_BLOB) { in MYSQLND_METHOD()
1314 SET_STMT_ERROR(stmt, CR_INVALID_BUFFER_USE, UNKNOWN_SQLSTATE, mysqlnd_not_bound_as_blob); in MYSQLND_METHOD()
1333 stmt->param_bind[param_no].flags |= MYSQLND_PARAM_BIND_BLOB_USED; in MYSQLND_METHOD()
1335 int4store(cmd_buf, stmt->stmt_id); in MYSQLND_METHOD()
1343 stmt->error_info = conn->error_info; in MYSQLND_METHOD()
1347 SET_OOM_ERROR(stmt->error_info); in MYSQLND_METHOD()
1375 SET_STMT_ERROR(stmt, CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, in MYSQLND_METHOD()
1392 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1394 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1397 DBG_INF_FMT("stmt=%lu param_count=%u", stmt->stmt_id, stmt->param_count); in MYSQLND_METHOD()
1399 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1400 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1408 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1409 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1411 if (stmt->param_count) { in MYSQLND_METHOD()
1415 …SET_STMT_ERROR(stmt, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, "Re-binding (still) not supported"… in MYSQLND_METHOD()
1418 } else if (stmt->param_bind) { in MYSQLND_METHOD()
1424 for (i = 0; i < stmt->param_count; i++) { in MYSQLND_METHOD()
1430 if (stmt->param_bind[i].zv) { in MYSQLND_METHOD()
1431 zval_ptr_dtor(&stmt->param_bind[i].zv); in MYSQLND_METHOD()
1434 if (stmt->param_bind != param_bind) { in MYSQLND_METHOD()
1435 s->m->free_parameter_bind(s, stmt->param_bind TSRMLS_CC); in MYSQLND_METHOD()
1439 stmt->param_bind = param_bind; in MYSQLND_METHOD()
1440 for (i = 0; i < stmt->param_count; i++) { in MYSQLND_METHOD()
1442 DBG_INF_FMT("%u is of type %u", i, stmt->param_bind[i].type); in MYSQLND_METHOD()
1445 Z_ADDREF_P(stmt->param_bind[i].zv); in MYSQLND_METHOD()
1446 stmt->param_bind[i].flags = 0; in MYSQLND_METHOD()
1447 if (stmt->param_bind[i].type == MYSQL_TYPE_LONG_BLOB) { in MYSQLND_METHOD()
1448 stmt->param_bind[i].flags &= ~MYSQLND_PARAM_BIND_BLOB_USED; in MYSQLND_METHOD()
1451 stmt->send_types_to_server = 1; in MYSQLND_METHOD()
1464 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1466 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1470 stmt->stmt_id, param_no, stmt->param_count, type); in MYSQLND_METHOD()
1472 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1473 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1478 if (param_no >= stmt->param_count) { in MYSQLND_METHOD()
1479 SET_STMT_ERROR(stmt, CR_INVALID_PARAMETER_NO, UNKNOWN_SQLSTATE, "Invalid parameter number"); in MYSQLND_METHOD()
1483 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1484 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1486 if (stmt->param_count) { in MYSQLND_METHOD()
1487 if (!stmt->param_bind) { in MYSQLND_METHOD()
1488 stmt->param_bind = mnd_pecalloc(stmt->param_count, sizeof(MYSQLND_PARAM_BIND), stmt->persistent); in MYSQLND_METHOD()
1489 if (!stmt->param_bind) { in MYSQLND_METHOD()
1499 if (stmt->param_bind[param_no].zv) { in MYSQLND_METHOD()
1500 zval_ptr_dtor(&stmt->param_bind[param_no].zv); in MYSQLND_METHOD()
1504 stmt->param_bind[param_no].flags &= ~MYSQLND_PARAM_BIND_BLOB_USED; in MYSQLND_METHOD()
1506 stmt->param_bind[param_no].zv = zv; in MYSQLND_METHOD()
1507 stmt->param_bind[param_no].type = type; in MYSQLND_METHOD()
1509 stmt->send_types_to_server = 1; in MYSQLND_METHOD()
1521 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1523 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1526 DBG_INF_FMT("stmt=%lu param_count=%u", stmt->stmt_id, stmt->param_count); in MYSQLND_METHOD()
1528 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1529 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1534 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1535 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1537 if (stmt->param_count) { in MYSQLND_METHOD()
1538 stmt->send_types_to_server = 1; in MYSQLND_METHOD()
1551 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1553 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1556 DBG_INF_FMT("stmt=%lu field_count=%u", stmt->stmt_id, stmt->field_count); in MYSQLND_METHOD()
1558 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1559 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1567 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1568 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1570 if (stmt->field_count) { in MYSQLND_METHOD()
1579 stmt->result_zvals_separated_once = FALSE; in MYSQLND_METHOD()
1580 stmt->result_bind = result_bind; in MYSQLND_METHOD()
1581 for (i = 0; i < stmt->field_count; i++) { in MYSQLND_METHOD()
1583 Z_ADDREF_P(stmt->result_bind[i].zv); in MYSQLND_METHOD()
1584 DBG_INF_FMT("ref of %p = %u", stmt->result_bind[i].zv, Z_REFCOUNT_P(stmt->result_bind[i].zv)); in MYSQLND_METHOD()
1590 stmt->result_bind[i].bound = TRUE; in MYSQLND_METHOD()
1605 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1607 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1610 DBG_INF_FMT("stmt=%lu field_count=%u", stmt->stmt_id, stmt->field_count); in MYSQLND_METHOD()
1612 if (stmt->state < MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1613 SET_STMT_ERROR(stmt, CR_NO_PREPARE_STMT, UNKNOWN_SQLSTATE, mysqlnd_stmt_not_prepared); in MYSQLND_METHOD()
1618 if (param_no >= stmt->field_count) { in MYSQLND_METHOD()
1619 SET_STMT_ERROR(stmt, CR_INVALID_PARAMETER_NO, UNKNOWN_SQLSTATE, "Invalid parameter number"); in MYSQLND_METHOD()
1624 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD()
1625 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1627 if (stmt->field_count) { in MYSQLND_METHOD()
1630 if (!stmt->result_bind) { in MYSQLND_METHOD()
1631stmt->result_bind = mnd_pecalloc(stmt->field_count, sizeof(MYSQLND_RESULT_BIND), stmt->persistent); in MYSQLND_METHOD()
1633stmt->result_bind = mnd_perealloc(stmt->result_bind, stmt->field_count * sizeof(MYSQLND_RESULT_BIN… in MYSQLND_METHOD()
1635 if (!stmt->result_bind) { in MYSQLND_METHOD()
1638 ALLOC_INIT_ZVAL(stmt->result_bind[param_no].zv); in MYSQLND_METHOD()
1644 stmt->result_bind[param_no].bound = TRUE; in MYSQLND_METHOD()
1656 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1657 return stmt? stmt->upsert_status.last_insert_id : 0; in MYSQLND_METHOD()
1666 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1667 return stmt? stmt->upsert_status.affected_rows : 0; in MYSQLND_METHOD()
1676 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1677 return stmt && stmt->result? mysqlnd_num_rows(stmt->result):0; in MYSQLND_METHOD()
1686 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1687 return stmt? stmt->upsert_status.warning_count : 0; in MYSQLND_METHOD()
1696 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1697 return stmt? stmt->upsert_status.server_status : 0; in MYSQLND_METHOD()
1706 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1707 return stmt? stmt->field_count : 0; in MYSQLND_METHOD()
1716 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1717 return stmt? stmt->param_count : 0; in MYSQLND_METHOD()
1726 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1727 return stmt? stmt->error_info.error_no : 0; in MYSQLND_METHOD()
1736 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1737 return stmt? stmt->error_info.error : 0; in MYSQLND_METHOD()
1746 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1747 return stmt && stmt->error_info.sqlstate[0] ? stmt->error_info.sqlstate:MYSQLND_SQLSTATE_NULL; in MYSQLND_METHOD()
1756 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1757 return stmt && stmt->result? stmt->result->m.seek_data(stmt->result, row TSRMLS_CC) : FAIL; in MYSQLND_METHOD()
1766 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1767 if (!stmt || !stmt->param_count) { in MYSQLND_METHOD()
1779 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1783 if (!stmt) { in MYSQLND_METHOD()
1786 DBG_INF_FMT("stmt=%u field_count=%u", stmt->stmt_id, stmt->field_count); in MYSQLND_METHOD()
1788 if (!stmt->field_count || !stmt->conn || !stmt->result || !stmt->result->meta) { in MYSQLND_METHOD()
1793 if (stmt->update_max_length && stmt->result->stored_data) { in MYSQLND_METHOD()
1795 stmt->result->m.initialize_result_set_rest(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
1807 result = stmt->conn->m->result_init(stmt->field_count, stmt->persistent TSRMLS_CC); in MYSQLND_METHOD()
1818 result->meta = stmt->result->meta->m->clone_metadata(stmt->result->meta, FALSE TSRMLS_CC); in MYSQLND_METHOD()
1827 SET_OOM_ERROR(stmt->conn->error_info); in MYSQLND_METHOD()
1842 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1844 if (!stmt) { in MYSQLND_METHOD()
1847 DBG_INF_FMT("stmt=%lu attr_type=%u", stmt->stmt_id, attr_type); in MYSQLND_METHOD()
1856 stmt->update_max_length = bval? TRUE:FALSE; in MYSQLND_METHOD()
1862 SET_STMT_ERROR(stmt, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "Not implemented"); in MYSQLND_METHOD()
1866 stmt->flags = ival; in MYSQLND_METHOD()
1874 SET_STMT_ERROR(stmt, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "Not implemented"); in MYSQLND_METHOD()
1878 stmt->prefetch_rows = ival; in MYSQLND_METHOD()
1882 SET_STMT_ERROR(stmt, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "Not implemented"); in MYSQLND_METHOD()
1897 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1899 if (!stmt) { in MYSQLND_METHOD()
1902 DBG_INF_FMT("stmt=%lu attr_type=%u", stmt->stmt_id, attr_type); in MYSQLND_METHOD()
1906 *(zend_bool *) value= stmt->update_max_length; in MYSQLND_METHOD()
1909 *(unsigned long *) value= stmt->flags; in MYSQLND_METHOD()
1912 *(unsigned long *) value= stmt->prefetch_rows; in MYSQLND_METHOD()
1927 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
1929 if (!stmt || !stmt->conn) { in MYSQLND_METHOD()
1932 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD()
1934 if (!stmt->result) { in MYSQLND_METHOD()
1943 if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
1946 stmt->default_rset_handler = s->m->use_result; in MYSQLND_METHOD()
1947 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD()
1950 if (stmt->state > MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD()
1953 stmt->result->m.skip_result(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
1961 stmt->result->m.free_result_buffers(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
1964 if (stmt->state > MYSQLND_STMT_PREPARED) { in MYSQLND_METHOD()
1966 stmt->state = MYSQLND_STMT_PREPARED; in MYSQLND_METHOD()
1970 CONN_SET_STATE(stmt->conn, CONN_READY); in MYSQLND_METHOD()
1981 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_separate_result_bind() local
1985 if (!stmt) { in mysqlnd_stmt_separate_result_bind()
1989 stmt->stmt_id, stmt->result_bind, stmt->field_count); in mysqlnd_stmt_separate_result_bind()
1991 if (!stmt->result_bind) { in mysqlnd_stmt_separate_result_bind()
2000 for (i = 0; i < stmt->field_count; i++) { in mysqlnd_stmt_separate_result_bind()
2002 if (stmt->result_bind[i].bound == TRUE) { in mysqlnd_stmt_separate_result_bind()
2003 DBG_INF_FMT("%u has refcount=%u", i, Z_REFCOUNT_P(stmt->result_bind[i].zv)); in mysqlnd_stmt_separate_result_bind()
2008 if (Z_REFCOUNT_P(stmt->result_bind[i].zv) > 1) { in mysqlnd_stmt_separate_result_bind()
2010 zval_copy_ctor(stmt->result_bind[i].zv); in mysqlnd_stmt_separate_result_bind()
2012 zval_ptr_dtor(&stmt->result_bind[i].zv); in mysqlnd_stmt_separate_result_bind()
2020 ZVAL_NULL(stmt->result_bind[i].zv); in mysqlnd_stmt_separate_result_bind()
2022 zval_ptr_dtor(&stmt->result_bind[i].zv); in mysqlnd_stmt_separate_result_bind()
2026 s->m->free_result_bind(s, stmt->result_bind TSRMLS_CC); in mysqlnd_stmt_separate_result_bind()
2027 stmt->result_bind = NULL; in mysqlnd_stmt_separate_result_bind()
2038 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in mysqlnd_stmt_separate_one_result_bind() local
2040 if (!stmt) { in mysqlnd_stmt_separate_one_result_bind()
2044 stmt->stmt_id, stmt->result_bind, stmt->field_count, param_no); in mysqlnd_stmt_separate_one_result_bind()
2046 if (!stmt->result_bind) { in mysqlnd_stmt_separate_one_result_bind()
2056 if (stmt->result_bind[param_no].bound == TRUE) { in mysqlnd_stmt_separate_one_result_bind()
2057 DBG_INF_FMT("%u has refcount=%u", param_no, Z_REFCOUNT_P(stmt->result_bind[param_no].zv)); in mysqlnd_stmt_separate_one_result_bind()
2062 if (Z_REFCOUNT_P(stmt->result_bind[param_no].zv) > 1) { in mysqlnd_stmt_separate_one_result_bind()
2064 zval_copy_ctor(stmt->result_bind[param_no].zv); in mysqlnd_stmt_separate_one_result_bind()
2066 zval_ptr_dtor(&stmt->result_bind[param_no].zv); in mysqlnd_stmt_separate_one_result_bind()
2074 ZVAL_NULL(stmt->result_bind[param_no].zv); in mysqlnd_stmt_separate_one_result_bind()
2076 zval_ptr_dtor(&stmt->result_bind[param_no].zv); in mysqlnd_stmt_separate_one_result_bind()
2089 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
2091 if (!stmt) { in MYSQLND_METHOD()
2095 stmt->stmt_id, stmt->param_bind, stmt->param_count); in MYSQLND_METHOD()
2098 if (stmt->param_bind) { in MYSQLND_METHOD()
2105 for (i = 0; i < stmt->param_count; i++) { in MYSQLND_METHOD()
2110 if (stmt->param_bind[i].zv) { in MYSQLND_METHOD()
2111 zval_ptr_dtor(&stmt->param_bind[i].zv); in MYSQLND_METHOD()
2114 s->m->free_parameter_bind(s, stmt->param_bind TSRMLS_CC); in MYSQLND_METHOD()
2115 stmt->param_bind = NULL; in MYSQLND_METHOD()
2124 if (stmt->result) { in MYSQLND_METHOD()
2125 stmt->result->m.free_result_internal(stmt->result TSRMLS_CC); in MYSQLND_METHOD()
2126 stmt->result = NULL; in MYSQLND_METHOD()
2138 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD_PRIVATE() local
2144 if (!stmt || !stmt->conn) { in MYSQLND_METHOD_PRIVATE()
2147 DBG_INF_FMT("stmt=%lu", stmt->stmt_id); in MYSQLND_METHOD_PRIVATE()
2149 conn = stmt->conn; in MYSQLND_METHOD_PRIVATE()
2151 SET_EMPTY_ERROR(stmt->error_info); in MYSQLND_METHOD_PRIVATE()
2152 SET_EMPTY_ERROR(stmt->conn->error_info); in MYSQLND_METHOD_PRIVATE()
2160 DBG_INF_FMT("stmt->state=%u", stmt->state); in MYSQLND_METHOD_PRIVATE()
2161 if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) { in MYSQLND_METHOD_PRIVATE()
2163 stmt->default_rset_handler(s TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
2164 stmt->state = MYSQLND_STMT_USER_FETCHING; in MYSQLND_METHOD_PRIVATE()
2168 if (stmt->result) { in MYSQLND_METHOD_PRIVATE()
2170 stmt->result->m.skip_result(stmt->result TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
2177 if (stmt->stmt_id) { in MYSQLND_METHOD_PRIVATE()
2181 int4store(cmd_buf, stmt->stmt_id); in MYSQLND_METHOD_PRIVATE()
2186 stmt->error_info = conn->error_info; in MYSQLND_METHOD_PRIVATE()
2190 switch (stmt->execute_count) { in MYSQLND_METHOD_PRIVATE()
2204 if (stmt->execute_cmd_buffer.buffer) { in MYSQLND_METHOD_PRIVATE()
2205 mnd_pefree(stmt->execute_cmd_buffer.buffer, stmt->persistent); in MYSQLND_METHOD_PRIVATE()
2206 stmt->execute_cmd_buffer.buffer = NULL; in MYSQLND_METHOD_PRIVATE()
2211 if (stmt->conn) { in MYSQLND_METHOD_PRIVATE()
2212 stmt->conn->m->free_reference(stmt->conn TSRMLS_CC); in MYSQLND_METHOD_PRIVATE()
2213 stmt->conn = NULL; in MYSQLND_METHOD_PRIVATE()
2224 MYSQLND_STMT_DATA * stmt = (s != NULL) ? s->data:NULL; in MYSQLND_METHOD() local
2229 if (stmt) { in MYSQLND_METHOD()
2231 DBG_INF_FMT("stmt=%p", stmt); in MYSQLND_METHOD()
2237 mnd_pefree(stmt, persistent); in MYSQLND_METHOD()
2251 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
2253 if (!stmt) { in MYSQLND_METHOD()
2256 DBG_RETURN(mnd_pecalloc(stmt->param_count, sizeof(MYSQLND_PARAM_BIND), stmt->persistent)); in MYSQLND_METHOD()
2265 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
2267 if (!stmt) { in MYSQLND_METHOD()
2270 DBG_RETURN(mnd_pecalloc(stmt->field_count, sizeof(MYSQLND_RESULT_BIND), stmt->persistent)); in MYSQLND_METHOD()
2279 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
2280 if (stmt) { in MYSQLND_METHOD()
2281 mnd_pefree(param_bind, stmt->persistent); in MYSQLND_METHOD()
2291 MYSQLND_STMT_DATA * stmt = s? s->data:NULL; in MYSQLND_METHOD() local
2292 if (stmt) { in MYSQLND_METHOD()
2293 mnd_pefree(result_bind, stmt->persistent); in MYSQLND_METHOD()
2357 MYSQLND_STMT_DATA * stmt = NULL; in _mysqlnd_stmt_init() local
2367 stmt = ret->data = mnd_pecalloc(1, sizeof(MYSQLND_STMT_DATA), conn->persistent); in _mysqlnd_stmt_init()
2368 DBG_INF_FMT("stmt=%p", stmt); in _mysqlnd_stmt_init()
2369 if (!stmt) { in _mysqlnd_stmt_init()
2372 stmt->persistent = conn->persistent; in _mysqlnd_stmt_init()
2373 stmt->state = MYSQLND_STMT_INITTED; in _mysqlnd_stmt_init()
2374 stmt->execute_cmd_buffer.length = 4096; in _mysqlnd_stmt_init()
2375 stmt->execute_cmd_buffer.buffer = mnd_pemalloc(stmt->execute_cmd_buffer.length, stmt->persistent); in _mysqlnd_stmt_init()
2376 if (!stmt->execute_cmd_buffer.buffer) { in _mysqlnd_stmt_init()
2380 stmt->prefetch_rows = MYSQLND_DEFAULT_PREFETCH_ROWS; in _mysqlnd_stmt_init()
2386 stmt->conn = conn->m->get_reference(conn TSRMLS_CC); in _mysqlnd_stmt_init()
2402 PHPAPI void ** _mysqlnd_plugin_get_plugin_stmt_data(const MYSQLND_STMT * stmt, unsigned int plugin_… in _mysqlnd_plugin_get_plugin_stmt_data() argument
2406 if (!stmt || plugin_id >= mysqlnd_plugin_count()) { in _mysqlnd_plugin_get_plugin_stmt_data()
2409 DBG_RETURN((void *)((char *)stmt + sizeof(MYSQLND_STMT) + plugin_id * sizeof(void *))); in _mysqlnd_plugin_get_plugin_stmt_data()