Optimize MySQL statement execute without parameters
authortwosee <twose@qq.com>
Mon, 1 Oct 2018 11:22:25 +0000 (19:22 +0800)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 5 Oct 2018 19:33:38 +0000 (21:33 +0200)
ext/mysqlnd/mysqlnd_ps_codec.c

index e5e1e624120e491165aa31a2ffc484039be74598..f45cbaae3e43b9b38f56271f7c63702881455a37 100644 (file)
@@ -938,7 +938,7 @@ mysqlnd_stmt_execute_generate_request(MYSQLND_STMT * const s, zend_uchar ** requ
        zend_uchar      *p = stmt->execute_cmd_buffer.buffer,
                                *cmd_buffer = stmt->execute_cmd_buffer.buffer;
        size_t cmd_buffer_length = stmt->execute_cmd_buffer.length;
-       enum_func_status ret;
+       enum_func_status ret = PASS;
 
        DBG_ENTER("mysqlnd_stmt_execute_generate_request");
 
@@ -955,7 +955,9 @@ mysqlnd_stmt_execute_generate_request(MYSQLND_STMT * const s, zend_uchar ** requ
        int1store(p, 1); /* and send 1 for iteration count */
        p+= 4;
 
-       ret = mysqlnd_stmt_execute_store_params(s, &cmd_buffer, &p, &cmd_buffer_length);
+       if (stmt->param_count != 0) {
+           ret = mysqlnd_stmt_execute_store_params(s, &cmd_buffer, &p, &cmd_buffer_length);
+       }
 
        *free_buffer = (cmd_buffer != stmt->execute_cmd_buffer.buffer);
        *request_len = (p - cmd_buffer);