1--TEST--
2mysqli_options() - MYSQLI_OPT_INT_AND_FLOAT_NATIVE
3--SKIPIF--
4<?php
5require_once('skipif.inc');
6require_once('skipifemb.inc');
7require_once('skipifconnectfailure.inc');
8
9require_once('connect.inc');
10if (!$IS_MYSQLND)
11    die("skip mysqlnd only test");
12?>
13--FILE--
14<?php
15    require_once("connect.inc");
16
17
18    $types = array(
19        'BIT' 			=> array('BIT(8)', 0),
20        'TINYINT'		=> array('TINYINT', 120),
21        'BOOL'			=> array('BOOL', 0),
22        'BOOLEAN'		=> array('BOOLEAN', 1),
23        'SMALLINT'		=> array('SMALLINT', 32000),
24        'MEDIUMINT'		=> array('MEDIUMINT', 999),
25        'INT'			=> array('INT', 999),
26        'BIGINT'		=> array('BIGINT', 999),
27        'FLOAT'			=> array('FLOAT', 1.3),
28        'DOUBLE'		=> array('DOUBLE', -1.3),
29    );
30
31    foreach ($types as $name => $data) {
32        $link = mysqli_init();
33        if (!mysqli_options($link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1)) {
34            printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
35            continue;
36        }
37
38        if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) {
39            printf("[002] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
40            continue;
41        }
42
43
44        if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) {
45            printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
46            continue;
47        }
48
49        if (!mysqli_query($link, sprintf("CREATE TABLE test (id %s)", $data[0]))) {
50            printf("[004] TODO [%d] %s\n", mysqli_errno($link), mysqli_error($link));
51            continue;
52        }
53
54        if (!mysqli_query($link, sprintf("INSERT INTO test(id) VALUES (%f)", $data[1]))) {
55            printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
56            continue;
57        }
58
59        if (!$res = mysqli_query($link, "SELECT id FROM test")) {
60            printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
61            continue;
62        }
63
64        $row = mysqli_fetch_assoc($res);
65        mysqli_free_result($res);
66
67        if ($row['id'] !== $data[1]) {
68            printf("[007] Expecting %s - %s/%s got %s/%s\n",
69                $name,
70                $data[1], gettype($data[1]), $row['id'], gettype($row['id']));
71        }
72        mysqli_close($link);
73
74        $link = mysqli_init();
75        if (!mysqli_options($link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 0)) {
76            printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
77            continue;
78        }
79
80        if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) {
81            printf("[009] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
82            continue;
83        }
84
85        if (!$res = mysqli_query($link, "SELECT id FROM test")) {
86            printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
87            continue;
88        }
89
90        $row = mysqli_fetch_assoc($res);
91        mysqli_free_result($res);
92
93        if (!is_string($row['id']) || ($row['id'] != $data[1])) {
94            printf("[011] Expecting %s - %s/string got %s/%s\n",
95                $name,
96                $data[1], $row['id'], gettype($row['id']));
97        }
98        mysqli_close($link);
99
100    }
101
102    print "done!";
103?>
104--CLEAN--
105<?php
106    require_once("clean_table.inc");
107?>
108--EXPECT--
109done!
110