Annotation of embedaddon/php/ext/mysqli/tests/bug_mysql_49406.phpt, revision 1.1.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>