Annotation of embedaddon/php/ext/mysqli/tests/bug_mysql_49406.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: MySQL Bug #49406 (Binding params doesn't work when selecting a date inside a CASE-WHEN, http://bugs.mysql.com/bug.php?id=49406)
! 3: --SKIPIF--
! 4: <?php
! 5: require_once('skipif.inc');
! 6: require_once('skipifconnectfailure.inc');
! 7: ?>
! 8: --FILE--
! 9: <?php
! 10: require_once("connect.inc");
! 11:
! 12: if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)))
! 13: printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
! 14: $host, $user, $db, $port, $socket);
! 15:
! 16: $query = "SELECT CASE WHEN 0 THEN CAST('2009-12-03' AS DATE) ELSE CAST('2009-12-03' AS DATE) END";
! 17:
! 18: if (!$res = $link->query($query))
! 19: printf("[002] [%d] %s\n", $link->errno, $link->error);
! 20:
! 21: if (!$row = $res->fetch_row())
! 22: printf("[003] No result, [%d] %s\n", $link->errno, $link->error);
! 23:
! 24: $res->free();
! 25:
! 26: if ($row[0] != '2009-12-03') {
! 27: printf("[004] Expecting '2009-12-03' got '%s'\n", $row[0]);
! 28: }
! 29:
! 30: if (!$stmt = $link->prepare($query))
! 31: printf("[005] [%d] %s\n", $link->errno, $link->error);
! 32:
! 33: if (!$stmt->execute() || !$stmt->store_result())
! 34: printf("[006] [%d] %s\n", $stmt->errno, $stmt->error);
! 35:
! 36:
! 37: $datatypes = array(
! 38: MYSQLI_TYPE_TINY => "TINY",
! 39: MYSQLI_TYPE_SHORT => "SHORT",
! 40: MYSQLI_TYPE_LONG => "LONG",
! 41: MYSQLI_TYPE_FLOAT => "FLOAT",
! 42: MYSQLI_TYPE_DOUBLE => "DOUBLE",
! 43: MYSQLI_TYPE_TIMESTAMP => "TIMESTAMP",
! 44: MYSQLI_TYPE_LONGLONG => "LONGLONG",
! 45: MYSQLI_TYPE_INT24 => "INT24",
! 46: MYSQLI_TYPE_DATE => "DATE",
! 47: MYSQLI_TYPE_TIME => "TIME",
! 48: MYSQLI_TYPE_DATETIME => "DATETIME",
! 49: MYSQLI_TYPE_YEAR => "YEAR",
! 50: MYSQLI_TYPE_ENUM => "ENUM",
! 51: MYSQLI_TYPE_SET => "SET",
! 52: MYSQLI_TYPE_TINY_BLOB => "TINYBLOB",
! 53: MYSQLI_TYPE_MEDIUM_BLOB => "MEDIUMBLOB",
! 54: MYSQLI_TYPE_LONG_BLOB => "LONGBLOB",
! 55: MYSQLI_TYPE_BLOB => "BLOB",
! 56: MYSQLI_TYPE_VAR_STRING => "VAR_STRING",
! 57: MYSQLI_TYPE_STRING => "STRING",
! 58: MYSQLI_TYPE_NULL => "NULL",
! 59: MYSQLI_TYPE_NEWDATE => "NEWDATE",
! 60: MYSQLI_TYPE_INTERVAL => "INTERVAL",
! 61: MYSQLI_TYPE_GEOMETRY => "GEOMETRY",
! 62: );
! 63:
! 64: $meta_res = $stmt->result_metadata();
! 65: for ($field_idx = 0; $field_idx < $meta_res->field_count; $field_idx++) {
! 66: $field = $meta_res->fetch_field();
! 67: printf("Field : %d\n", $field_idx);
! 68: printf("Name : %s\n", $field->name);
! 69: printf("Orgname : %s\n", $field->orgname);
! 70: printf("Table : %s\n", $field->table);
! 71: printf("Orgtable : %s\n", $field->orgtable);
! 72: printf("Maxlength : %d\n", $field->max_length);
! 73: printf("Length : %d\n", $field->length);
! 74: printf("Charsetnr : %d\n", $field->charsetnr);
! 75: printf("Flags : %d\n", $field->flags);
! 76: printf("Type : %d (%s)\n", $field->type, (isset($datatypes[$field->type])) ? $datatypes[$field->type] : 'unknown');
! 77: printf("Decimals : %d\n", $field->decimals);
! 78: }
! 79:
! 80: $row_stmt = null;
! 81: if (!$stmt->bind_result($row_stmt) || !$stmt->fetch())
! 82: printf("[007] [%d] %s\n", $stmt->errno, $stmt->error);
! 83:
! 84: if ($row[0] != $row_stmt) {
! 85: printf("[008] PS and non-PS results differ, dumping data\n");
! 86: var_dump($row[0]);
! 87: var_dump($row_stmt);
! 88: }
! 89:
! 90: $stmt->close();
! 91: $link->close();
! 92:
! 93: echo "done";
! 94: ?>
! 95: --EXPECTF--
! 96: Field : %s
! 97: Name : %s
! 98: Orgname :%s
! 99: Table :%s
! 100: Orgtable :%s
! 101: Maxlength : %d
! 102: Length : %d
! 103: Charsetnr : %d
! 104: Flags : %d
! 105: Type : %d (%s)
! 106: Decimals : %d
! 107: done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>