Commit Graph

59 Commits

Author SHA1 Message Date
Marek Vavruša
ff73394124 PKCondition: infer index use with pk subexpression
By default only constraints explicitly matching
primary key expression (or expression wrapped in
a monotonic function) are eligible for part and
range selection. So for example, if index is:

(toStartOfHour(dt), UserID)

Then a query such as this resorts to full scan:

SELECT count() FROM t WHERE dt = now()

Intuitively, only parts with toStartOfHour(now())
could be selected, but it is less trivial to prove.
The primary key currently can be wrapped in a chain
of monotonic functions, so following would work:

toStartOfHour(dt) = toStartOfHour(now()) AND dt = now()

It must be however explicitly stated, if we wanted
to infer that we’d have to know the inverse function,
and prove that the inverse function is monotonic
on given interval. This is not practical as
there is no inverse function that for example undos
rounding, it isn’t strictly monotonic.

There are however functions that don’t transform
output range and preserve monotonicity on the
complete input range, such as rounding or casts
to a same or wider numeric type. This eliminates
the need to find inverse function, as no check for monotonicity over arbitrary interval is needed,
and thus makes this optimisation possible.
2017-07-09 17:13:51 +03:00
Alexey Zatelepin
e9f8f99e06 Correct index comparisons in case constants cannot be precisely casted [#CLICKHOUSE-3002] 2017-05-25 05:34:26 +04:00
Alexey Milovidov
a77369d082 Preparation: Storages do not modify query [#CLICKHOUSE-31]. 2017-05-25 04:12:41 +03:00
Alexey Milovidov
310736cd7e Moved headers and sources to same place [#CLICKHOUSE-3]. 2017-04-01 12:22:42 +03:00
Alexey Milovidov
137ad95929 Changed tabs to spaces in code [#CLICKHOUSE-3]. 2017-04-01 11:35:09 +03:00
Alexey Milovidov
26788e3938 Formatting [#CLICKHOUSE-2]. 2017-03-13 21:01:46 +03:00
Alexey Milovidov
a6a18db6da Merge branch 'translate/comments' of https://github.com/f1yegor/ClickHouse into f1yegor-translate/comments 2017-03-13 20:51:22 +03:00
f1yegor
401425bb89 translate comments 2017-03-12 20:18:07 +01:00
alexey-milovidov
6d5bfc8c6f Refactoring of numeric DataTypes (#581)
* Better code [#CLICKHOUSE-2].

* Addition to prev. revision [#CLICKHOUSE-2].

* Addition to prev. revision [#CLICKHOUSE-2].

* Addition to prev. revision [#CLICKHOUSE-2].
2017-03-12 14:13:45 +04:00
Vitaliy Lyudvichenko
8bcb1fe970 Add support of AggregateFunction constants in VALUES and Set. [#CLICKHOUSE-2845] 2017-02-18 00:36:31 +04:00
Alexey Milovidov
58e5dad1a1 Squashed commit of the following:
commit e712f469a5
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:59:13 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 2a00282308
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:58:30 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 9e06f407c8
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:55:14 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 9581620f1e
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:54:22 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 2a8564c68c
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:47:34 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit cf60632d78
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:40:09 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit ee3d1dc6e0
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:22:49 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 65592ef711
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:18:17 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 37972c2573
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:17:06 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit dd909d1499
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:16:28 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 3cf43266ca
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:15:42 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 6731a3df96
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:13:35 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 1b5727e0d5
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:11:18 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit bbcf726a55
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:09:04 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit c03b477d5e
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:06:30 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 2986e2fb04
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:05:44 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit 5d6cdef13d
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:04:53 2017 +0300

    Less dependencies [#CLICKHOUSE-2]

commit f2b819b25c
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Sat Jan 14 11:01:47 2017 +0300

    Less dependencies [#CLICKHOUSE-2]
2017-01-14 12:00:19 +03:00
artpaul
402f974fb7 fix where <const> in (<const>) expression; [#METR-24043] 2017-01-10 19:16:37 +05:00
Alexey Milovidov
d89ee33ce2 Squashed commit of the following:
commit c567d4e1fe
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 20:35:01 2017 +0300

    Style [#METR-2944].

commit 26bf3e1228
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 20:33:11 2017 +0300

    Miscellaneous [#METR-2944].

commit eb946f4c6f
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 20:30:19 2017 +0300

    Miscellaneous [#METR-2944].

commit 78c867a147
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 20:11:41 2017 +0300

    Miscellaneous [#METR-2944].

commit 6604c5c83c
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:56:15 2017 +0300

    Miscellaneous [#METR-2944].

commit 23fbf05c1d
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:47:52 2017 +0300

    Miscellaneous [#METR-2944].

commit 98772faf11
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:46:05 2017 +0300

    Miscellaneous [#METR-2944].

commit 3dc636ab9f
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:39:46 2017 +0300

    Miscellaneous [#METR-2944].

commit 3e16aee954
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:38:03 2017 +0300

    Miscellaneous [#METR-2944].

commit ae7e7e90eb
Author: Alexey Milovidov <milovidov@yandex-team.ru>
Date:   Fri Jan 6 19:34:15 2017 +0300

    Miscellaneous [#METR-2944].
2017-01-06 20:41:19 +03:00
Alexey Milovidov
2b4f3b5d34 Renamed method (less confusion) [#METR-2944]. 2017-01-02 23:12:12 +03:00
Vitaliy Lyudvichenko
544ef67c28 Fixed IN <Set> usage inside PK expressions.
Refactoring of type conversion functions convertFieldToType().
2016-11-24 15:32:04 +03:00
Vitaliy Lyudvichenko
4f9064ca19 Fixed case when pk column is wrapped by functions. 2016-11-23 22:58:33 +03:00
Vitaliy Lyudvichenko
d27951b4a7 Added requested changes. [#METR-23473] 2016-11-23 16:33:05 +03:00
Vitaliy Lyudvichenko
e07fc7cea5 Fixed Enum usage in PK expressions. [#METR-23473]
Added check for duplicates of column names in CREATE query.
2016-11-23 16:19:15 +03:00
Alexey Milovidov
be394f2c84 Using std::shared_ptr for data types [#METR-21503]. 2016-05-28 10:48:40 +03:00
Alexey Milovidov
4b7f461e46 Using std::shared_ptr for columns [#METR-21503]. 2016-05-28 08:31:36 +03:00
Alexey Milovidov
e37ffe7c3d Tiny modification [#METR-2944]. 2016-05-13 06:23:23 +03:00
Alexey Milovidov
c43b34d3f0 Added function 'indexHint' [#METR-20940]. 2016-04-16 02:10:29 +03:00
Alexey Milovidov
eb5d905600 Added support for using index for LIKE expressions with fixed prefix [#METR-20706]. 2016-04-03 00:19:58 +03:00
Alexey Milovidov
4f597ed7c3 Fixed error [#METR-20679]. 2016-03-31 20:42:57 +03:00
Alexey Milovidov
605e9c4afb Addition to prev. revision [#METR-20607]. 2016-03-27 17:36:59 +03:00
Alexey Milovidov
702876f9f0 Fixed suboptimal index usage in point queries [#METR-20607]. 2016-03-27 14:37:25 +03:00
Alexey Milovidov
f5247021b1 Fixed error [#METR-20296]. 2016-03-05 06:17:11 +03:00
Alexey Milovidov
409954428b dbms: using numeric constants while evaluating PKCondition [#METR-19758]. 2016-01-23 00:28:58 +03:00
Alexey Milovidov
ab1b725779 dbms: less dependencies [#METR-2944]. 2016-01-13 03:32:59 +03:00
Alexey Milovidov
78b560c846 dbms: fixed error [#METR-19283]. 2015-12-07 22:30:50 +03:00
Alexey Milovidov
39004c76f5 dbms: addition [#METR-19052]. 2015-11-29 15:54:58 +03:00
Alexey Milovidov
b6aaf1fe32 dbms: development; provided monotonicity properties for date-time functions [#METR-19052]. 2015-11-29 14:58:44 +03:00
Alexey Milovidov
d9bc972a59 dbms: allowed to use index if column is wrapped by piecewise-monotonic functions: initial implementation [#METR-19052]. 2015-11-29 11:06:29 +03:00
Alexey Milovidov
400588148c dbms: fixed error in PKCondition [#METR-18585]. 2015-10-29 00:00:44 +03:00
Alexey Milovidov
bb283e6602 dbms: added support for different numeric types in function has [#METR-18382]. 2015-10-12 10:05:54 +03:00
Andrey Mironov
244eabb54b dbms: allow moving primary key columns to PREWHERE if the can't be used by PKCondition [#METR-18063] 2015-09-21 15:13:11 +03:00
Alexey Milovidov
c0e029bb1b dbms: renamed ColumnWithNameAndType to ColumnWithTypeAndName for clarification [#METR-2944]. 2015-07-17 04:27:35 +03:00
Alexey Milovidov
226731128b dbms: get rid of columns inside Context [#METR-15553]. 2015-07-15 04:26:35 +03:00
Alexey Milovidov
4ecc523ea5 dbms: fixed error with using comparison of Date or DateTime with constant string in index [#METR-2944]. 2015-06-25 00:24:06 +03:00
Alexey Milovidov
06c35e0faa dbms: improvement [#METR-15484]. 2015-03-27 06:37:46 +03:00
Alexey Milovidov
cfc5b313cc dbms: fixed 'force_index_by_date' setting [#METR-15484]. 2015-03-27 06:06:06 +03:00
Alexey Milovidov
ee52328600 dbms: fixed error with index and NOT [#METR-13066]. 2014-10-06 09:49:31 +04:00
Alexey Milovidov
108a7850a5 dbms: improved performance on short queries [#METR-11571]. 2014-06-26 04:58:14 +04:00
Alexey Milovidov
5a300300d2 dbms: fixed error in primary key usage [#METR-11540]. 2014-06-11 22:38:10 +04:00
Alexey Milovidov
63cff6a5a4 Improvement [#METR-2807]. 2014-04-08 11:58:53 +04:00
Pavel Kartavyy
6ad275725e dbms: add desciption of in [#METR-10498] 2014-04-07 20:29:25 +04:00
Pavel Kartavyy
049db94426 dbms: development [#METR-10498] 2014-04-07 20:29:25 +04:00
Pavel Kartavyy
bdeee5386b dbms: development [#METR-10498]
Signed-off-by: Pavel Kartavyy <kartavyy@yandex-team.ru>
2014-04-07 20:29:25 +04:00
Pavel Kartavyy
a737895eb4 build fix [#METR-10498] 2014-04-07 20:29:25 +04:00
Pavel Kartavyy
14168120f1 development [#METR-10498] 2014-04-07 20:29:25 +04:00