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
|
<?xml version="1.0" encoding="utf-8"?>
<test>
<name>select expressions vs eval stages</name>
<requires> <variant_match /> </requires>
<config>
indexer
{
mem_limit = 16M
}
searchd
{
<searchd_settings/>
workers = threads
binlog_path =
}
source srctest
{
type = mysql
<sql_settings/>
sql_query = SELECT * FROM test_table WHERE id IN (1,2, 3, 4 )
sql_attr_uint = ival
sql_attr_float = fval
}
index test
{
source = srctest
path = <data_path/>/test
}
index test_lengths
{
source = srctest
path = <data_path/>/test_lengths
index_field_lengths = 1
}
source src_mva
{
type = mysql
<sql_settings/>
sql_query = SELECT id, 1 as idd, title as mva, 'test' FROM test_table WHERE id=10
sql_attr_uint = idd
<Dynamic>
<Variant>sql_attr_multi = uint mva from field</Variant>
<Variant>sql_attr_multi = bigint mva from field</Variant>
</Dynamic>
}
index mva
{
source = src_mva
path = <data_path/>/mva
}
source src_final
{
type = mysql
<sql_settings/>
sql_query = SELECT id, ival as idd1, id*1000 as idd2, 'test' FROM test_table
sql_attr_uint = idd1
sql_attr_uint = idd2
}
index final
{
source = src_final
path = <data_path/>/final
docinfo = extern
}
</config>
<db_create>
CREATE TABLE test_table
(
id INTEGER NOT NULL,
ival INTEGER NOT NULL,
fval INTEGER 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, 11, 10, 'test one' ),
( 2, 11, 20, 'test two' ),
( 3, 11, -30, 'test three' ),
( 4, 22, -40, 'test four' ),
( 10, 1, 1, '10,11,12,13' ),
( 20, 200, 1, '1' ), ( 21, 201, 1, '1' ), ( 22, 202, 1, '1' ), ( 23, 203, 1, '1' ), ( 24, 204, 1, '1' ), ( 25, 205, 1, '1' ),
( 30, 300, 1, '1' ), ( 31, 301, 1, '1' ), ( 32, 302, 1, '1' ), ( 33, 303, 1, '1' ), ( 34, 304, 1, '1' ), ( 35, 305, 1, '1' )
</db_insert>
<sphqueries>
<sphinxql>select * from test where match('test') order by fval asc</sphinxql>
<sphinxql>select *, fval+1 as f1 from test where match('test') order by f1 desc</sphinxql>
<sphinxql>select * from test group by fval</sphinxql>
<sphinxql>select *, ival-1 as i1 from test group by i1</sphinxql>
<sphinxql>select *, weight()+ival as i1 from test where match('test')</sphinxql>
<sphinxql>select *, weight()+ival as i1 from test where match('test') and i1>1315</sphinxql>
<sphinxql>select *, weight() as w, w+ival as i1, i1+10 as i2 from test where match('test') and i2>1325</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2 from test where match('test')</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2 from test</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*10 as i3 from test</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*10-i1 as i3 from test</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*fval as i3 from test</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*fval as i3 from test order by i3 asc</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*fval as i3 from test order by i1 asc, i3 desc</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*fval as i3 from test group by i2</sphinxql>
<sphinxql>select *, 10+ival as i1, 50+i1 as i2, i2*id as i3 from test group by i3</sphinxql>
<!-- here is going another regression from bug #800-->
<sphinxql>select *, IN ( mva, 11 ) as cnd1 from mva where cnd1=1</sphinxql>
<!-- regression sorter gives first matches instead bests -->
<sphinxql>select id, idd1, idd2, idd1 + idd2 as i2 from final group by idd1 order by id desc limit 0,2 option max_matches=4</sphinxql>
<sphinxql>select id, idd1, idd2, idd1 + idd2 as i2 from final group by idd1 order by id desc limit 2,2 option max_matches=4</sphinxql>
<!-- regression float unhandled filters -->
<sphinxql>select * from test where fval<=10.0</sphinxql>
<sphinxql>select * from test where fval>=10.0</sphinxql>
<sphinxql>select * from test where fval<10.0</sphinxql>
<sphinxql>select * from test where fval>10.0</sphinxql>
<sphinxql>select * from test where fval=10.0</sphinxql>
<sphinxql>select * from test where fval<>10.0</sphinxql>
<!-- regression: filters vs field lengths -->
<sphinxql>select * from test_lengths where title_len=0</sphinxql>
<sphinxql>select * from test_lengths where title_len=2</sphinxql>
<!-- regression bad complex expression -->
<sphinxql>select 50+ival*10 as ii1, 50+bad*10 from test</sphinxql>
<!-- regression: aggregate dependencies -->
<sphinxql>select ival*ival as p, sum(p), avg(p), min(p), max(p) from test</sphinxql>
</sphqueries>
</test>
|