50 DBG_ENTER(
"mysqlnd_res_meta::read_metadata");
52 conn->payload_decoder_factory->m.init_result_field_packet(&field_packet);
54 for (;i < meta->field_count; i++) {
59 meta->fields[i].root =
NULL;
61 field_packet.
metadata = &(meta->fields[i]);
74 DBG_ERR_FMT(
"Unknown type %u sent by the server. Please send a report to the developers", meta->fields[i].type);
82 meta->fields[i].num_key = idx;
98 DBG_ENTER(
"mysqlnd_res_meta::free");
100 if ((fields = meta->fields)) {
101 DBG_INF(
"Freeing fields metadata");
102 i = meta->field_count;
104 php_mysqlnd_free_field_metadata(fields++);
109 DBG_INF(
"Freeing metadata structure");
126 DBG_ENTER(
"mysqlnd_res_meta::clone_metadata");
133 new_meta->m = meta->m;
146 for (i = 0; i < meta->field_count; i++) {
148 new_fields[i].
root =
result->memory_pool->get_chunk(
result->memory_pool, orig_fields[i].root_len);
150 if (!new_fields[i].root) {
154 memcpy(new_fields[i].root, orig_fields[i].root, new_fields[i].root_len);
156 if (orig_fields[i].sname) {
157 new_fields[i].
sname = zend_string_copy(orig_fields[i].sname);
170 new_fields[i].
table = new_fields[i].
root +
171 (orig_fields[i].
table - orig_fields[i].
root);
178 new_fields[i].
db = new_fields[i].
root + (orig_fields[i].
db - orig_fields[i].
root);
184 if (orig_fields[i].def) {
185 new_fields[i].
def =
result->memory_pool->get_chunk(
result->memory_pool, orig_fields[i].def_length + 1);
186 if (!new_fields[i].def) {
190 memcpy(new_fields[i].def, orig_fields[i].def, orig_fields[i].def_length + 1);
196 new_meta->
fields = new_fields;
201 new_meta->m->free_metadata(new_meta);
213 DBG_ENTER(
"mysqlnd_res_meta::fetch_field");
214 if (meta->current_field >= meta->field_count) {
215 DBG_INF(
"no more fields");
218 DBG_INF_FMT(
"name=%s",
219 meta->fields[meta->current_field].name? meta->fields[meta->current_field].name:
"");
220 DBG_RETURN(&meta->fields[meta->current_field++]);
229 DBG_ENTER(
"mysqlnd_res_meta::fetch_field_direct");
230 DBG_INF_FMT(
"fieldnr=%u", fieldnr);
231 DBG_INF_FMT(
"name=%s",
232 meta->fields[meta->current_field].name? meta->fields[meta->current_field].name:
"");
242 DBG_ENTER(
"mysqlnd_res_meta::fetch_fields");
252 return meta->current_field;
262 DBG_ENTER(
"mysqlnd_res_meta::field_seek");
264 meta->current_field = field_offset;
288 DBG_ENTER(
"mysqlnd_result_meta_init");
292 ret->m = & mysqlnd_mysqlnd_res_meta_methods;
294 ret->field_count = field_count;
297 ret->fields =
result->memory_pool->get_chunk(
result->memory_pool, alloc_size);
299 DBG_INF_FMT(
"meta=%p",
ret);
306PHPAPI struct st_mysqlnd_res_meta_methods *
309 return &mysqlnd_mysqlnd_res_meta_methods;
318 DBG_ENTER(
"_mysqlnd_plugin_get_plugin_result_metadata_data");
319 DBG_INF_FMT(
"plugin_id=%u", plugin_id);
memset(ptr, 0, type->size)
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
PHPAPI unsigned int mysqlnd_plugin_count(void)
#define MYSQLND_METHOD(class, method)
#define DBG_RETURN(value)
enum func_status enum_func_status
struct st_mysqlnd_perm_bind mysqlnd_ps_fetch_functions[MYSQL_TYPE_LAST+1]
struct st_mysqlnd_result_metadata MYSQLND_RES_METADATA
struct st_mysqlnd_field MYSQLND_FIELD
#define MYSQLND_CLASS_METHODS_END
struct st_mysqlnd_connection_data MYSQLND_CONN_DATA
unsigned int MYSQLND_FIELD_OFFSET
#define COPY_CLIENT_ERROR(dest, source)
#define MYSQLND_CLASS_METHODS_START(class)
struct st_mysqlnd_res MYSQLND_RES
const char *const mysqlnd_empty_string
#define PACKET_FREE(packet)
struct st_mysqlnd_packet_res_field MYSQLND_PACKET_RES_FIELD
#define PACKET_READ(conn, packet)
MYSQLND_MEMORY_POOL * memory_pool
MYSQLND_ERROR_INFO error_info
zend_string_release_ex(func->internal_function.function_name, 0)
#define ZEND_HANDLE_NUMERIC(key, idx)