A user has reported at CUBRID QA site http://www.cubrid.org/?document_srl=663251#replies_663431 that he can't execute non-prepared statements via the PDO driver.
The following is successful execution of *prepared queries* in PDO.
{code}
?php
$db = cubrid_connect('localhost', 45011, 'test', 'shard', 'shard123');
if (!$db) { die(Connection error); }
if (!($stmt = cubrid_prepare($db,'SELECT * FROM t WHERE id = /*+ shard_id(1) */ ?'))) {
die(Prepare failed: .cubrid_error_msg());
}
if (!cubrid_bind($stmt, 1, 1))
{
die(Binding parameters failed: .cubrid_error_msg());
}
if (!cubrid_execute($stmt)) {
die(Execute failed: .cubrid_error_msg());
}
while($data = cubrid_fetch_assoc($stmt))
{ }
echo 'No issue';
cubrid_close();
?
shell php cubrid-mysql-bind-test.php
No issue
== CUBRID/log/broker/proxy_logshard_1.log ==
05/24 13:20:12.290 [DBG] ../../src/broker/shard_proxy_function.c(1002): Process requested prepare sql statement. (sql_stmt:[SELECT * FROM t WHERE id = /*+ shard_id(1) */ ?]). context(cid:3, uid:4, is_busy:Y, is_in_tran:N, is_prepare_for_execute:N, free_on_end_tran:N, free_on_client_io_write:N, free_context:N, is_client_in_tran:Y, is_cas_in_tran:N, is_bypass_msg:N, waiting_event:((nil), -), func_code:-1, stmt_h_id:-1, stmt_hint_type:-1, wait_timeout:30, client_id:3, shard_id:-1, cas_id:-1, error_ind:0, error_code:0, error_msg:[-] ).
05/24 13:20:12.290 [DBG] ../../src/broker/shard_proxy_function.c(1030): Rewrite sql statement. (organized_sql_stmt:[SELECT * FROM t WHERE id = /*+ shard_id(1) */ ?]). context(cid:3, uid:4, is_busy:Y, is_in_tran:N, is_prepare_for_execute:N, free_on_end_tran:N, free_on_client_io_write:N, free_context:N, is_client_in_tran:Y, is_cas_in_tran:N, is_bypass_msg:N, waiting_event:((nil), -), func_code:-1, stmt_h_id:-1, stmt_hint_type:-1, wait_timeout:30, client_id:3, shard_id:-1, cas_id:-1, error_ind:0, error_code:0, error_msg:[-] ).
05/24 13:20:12.290 [DBG] ../../src/broker/shard_statement.c(309): Pin statement. statement(index:0, num_alloc:1, stmt_h_id:0, status:2, context id:-1, context uid:0, num pinned:1, lru_next:(nil), lru_prev:(nil), sql_stmt:[SELECT * FROM t WHERE id = /*+ shard_id(1) */ ?]).
05/24 13:20:12.290 [SRD] ../../src/broker/shard_proxy_function.c(1479): Select shard. (prev_shard_id:-1, curr_shard_id:1). context(cid:3, uid:4, is_busy:Y, is_in_tran:N, is_prepare_for_execute:N, free_on_end_tran:N, free_on_client_io_write:N, free_context:N, is_client_in_tran:Y, is_cas_in_tran:N, is_bypass_msg:N, waiting_event:((nil), -), func_code:-1, stmt_h_id:-1, stmt_hint_type:-1, wait_timeout:30, client_id:3, shard_id:-1, cas_id:-1, error_ind:0, error_code:0, error_msg:[-] ).
05/24 13:20:12.290 [DBG] ../../src/broker/shard_proxy_io.c(3534): Shard status. (num_cas_in_tran=1, shard_id=1).
05/24 13:20:12.294 [DBG] ../../src/broker/shard_proxy_io.c(3657): Shard status. (num_cas_in_tran=0, shard_id=1).
05/24 13:20:12.295 [DBG] ../../src/broker/shard_proxy_io.c(1193): Close socket. (fd:11).
{code}
The following is failed execution of *non-prepared statements* in PDO.
{code}
?php
$db = cubrid_connect('localhost', 45011, 'test', 'shard', 'shard123');
if (!$db) { die(Connection error); }
$sql = 'SELECT * FROM t WHERE id = /*+ shard_id(1) */ 1';
if (!($req = cubrid_query($sql))) {
die(query failed: .cubrid_error_msg());
}
while($data = cubrid_fetch_assoc($stmt))
{ }
echo 'no issue';
cubrid_close();
?
shellphp cubrid-mysql-test.php
query failed:
5/24 13:28:59.019 [SRD] ../../src/broker/shard_proxy_io.c(1160): New socket io created. (fd:11).
05/24 13:28:59.019 [SRD] ../../src/broker/shard_proxy_handler.c(1239): New context created. context(cid:4, uid:5, is_busy:Y, is_in_tran:N, is_prepare_for_execute:N, free_on_end_tran:N, free_on_client_io_write:N, free_context:N, is_client_in_tran:N, is_cas_in_tran:N, is_bypass_msg:N, waiting_event:((nil), -), func_code:-1, stmt_h_id:-1, stmt_hint_type:-1, wait_timeout:30, client_id:-1, shard_id:-1, cas_id:-1, error_ind:0, error_code:0, error_msg:[-] ).
05/24 13:28:59.019 [SRD] ../../src/broker/shard_proxy_io.c(2733): New client connected. client(client_id:4, is_busy:Y, fd:11, ctx_cid:4, ctx_uid:5).
== CUBRID/log/broker/shard_0.access ==
127.0.0.1 - - 1369402139.019 1369402139.019 2013/05/24 13:28:59 ~ 2013/05/24 13:28:59 1325 - -1 test shard
== CUBRID/log/broker/proxy_logshard_1.log ==
05/24 13:28:59.020 [DBG] ../../src/broker/shard_proxy_handler.c(336): send error(msg) to the client. (error_ind:-1, error_code:-10100, errro_msg:-)
05/24 13:28:59.020 [DBG] ../../src/broker/shard_proxy_io.c(1193): Close socket. (fd:11).
{code}