1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
<?xml version="1.0" encoding="utf-8"?>
<test>
<name>ALTER in RT indexes</name>
<config>
indexer
{
mem_limit = 16M
}
searchd
{
<searchd_settings/>
workers = threads
}
source src
{
type = mysql
<sql_settings/>
sql_query = SELECT id, gid, title FROM test_table
sql_attr_uint = gid
}
index test
{
source = src
path = <data_path/>/test
}
index rt
{
type = rt
path = <data_path/>/rt
rt_field = title
rt_attr_uint = data1
rt_attr_uint = data2
rt_attr_uint = data3
rt_attr_float = data4
rt_mem_limit = 128
<dynamic>
<variant>index_field_lengths = 0</variant>
<variant>index_field_lengths = 1</variant>
</dynamic>
}
</config>
<db_create>
CREATE TABLE `test_table` (
`id` int(11) NOT NULL,
`gid` int(11) NOT NULL,
`title` varchar(255) NOT NULL
);
</db_create>
<db_drop>DROP TABLE IF EXISTS `test_table`;</db_drop>
<db_insert>
INSERT INTO `test_table` VALUES
(1,1,'test')
</db_insert>
<custom_test><![CDATA[
$query = create_function('$query,$sock,&$results',
'
$results[] = "running query [$query]";
$res = @mysql_query ( $query, $sock );
if ($res===true)
{
$results[] = "total_affected=" . @mysql_affected_rows($sock);
}
else if ($res===false)
{
$results[] = "res=$res";
$results[] = "error: query: " . @mysql_errno ( $sock ) . " : " . @mysql_error ( $sock );
}
else
{
$results[] = "total_rows=" . @mysql_num_rows($res);
while ($row = @mysql_fetch_array($res, MYSQL_ASSOC))
{
foreach ($row as $key => $value)
$foo[$key] = $value;
$results[] = $foo;
}
}
');
global $g_locals, $sd_address, $sd_sphinxql_port;
$results = array();
$sockStr = "$sd_address:$sd_sphinxql_port";
if ($sd_address == "localhost")
$sockStr = "127.0.0.1:$sd_sphinxql_port";
$sock = @mysql_connect (
$sockStr,
$g_locals['db-user'],
$g_locals['db-password'] ,
true );
if ( $sock === false )
{
$results[] = "error: can't connect to searchd: " . @mysql_errno ( $sock ) . " : " . @mysql_error ( $sock );
return;
}
$inserted = 0;
for ( $i=1; $i<=8000; $i++ )
{
$data1 = $i*10;
$data2 = $i*10+1;
$data3 = $i*10+2;
$data4 = $i/5;
$title = "title_$i";
$str = "INSERT INTO rt ( id, title, data1, data2, data3, data4 ) VALUES ( $i, '$title', $data1, $data2, $data3, $data4 )";
$res = @mysql_query ( $str, $sock );
if ($res===true)
{
$inserted += mysql_affected_rows($sock);
}
else
{
$results[] = "error: insert: " . @mysql_errno ( $sock ) . " : " . @mysql_error ( $sock );
return;
}
}
$results[] = "total inserted=$inserted";
$query ( "select * from rt where id between 10 and 12", $sock, $results ); // that should be disk chunk 0
$query ( "select * from rt where id between 3500 and 3502", $sock, $results ); // that should be disk chunk 1
$query ( "select * from rt where id between 6500 and 6502", $sock, $results ); // that should be ram chunk
$query ( "alter table rt add column add1 integer", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "update rt set add1=11 where id=11", $sock, $results );
$query ( "update rt set add1=3501 where id=3501", $sock, $results );
$query ( "update rt set add1=6501 where id=6501", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "flush rtindex rt", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt add column add2 float", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "update rt set add2=0.111 where id=10", $sock, $results );
$query ( "update rt set add2=0.222 where id=3500", $sock, $results );
$query ( "update rt set add2=0.333 where id=6500", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column data1", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column data1", $sock, $results );
$query ( "alter table rt drop column data2", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column data3", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column data4", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column add1", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column add2", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column add2", $sock, $results );
$query ( "alter table rt add column add3 float", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "update rt set add3=0.111 where id=10", $sock, $results );
$query ( "update rt set add3=0.222 where id=3500", $sock, $results );
$query ( "update rt set add3=0.333 where id=6500", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
$query ( "alter table rt drop column add3", $sock, $results );
$query ( "select * from rt where id between 10 and 12", $sock, $results );
$query ( "select * from rt where id between 3500 and 3502", $sock, $results );
$query ( "select * from rt where id between 6500 and 6502", $sock, $results );
// testing quoted columns vs expressions
$query ( "alter table rt add column select integer", $sock, $results );
$query ( "alter table rt add column `select` integer", $sock, $results );
$query ( "select `select` from rt where id=10", $sock, $results );
$query ( "select min(`select`,`select`+1) from rt where id=10", $sock, $results );
$query ( "select `select`=1 from rt where id=10", $sock, $results );
@mysql_close($sock);
]]></custom_test>
</test>
|