pyos
1ffc2a0775
Make LLVMFunction monotonicity computation shorter (and fix a typo-bug)
2018-04-28 17:41:24 +03:00
pyos
a1eb938ed2
Inline nullable number constants into compiled code.
...
Also, protect against some segfaults during compilation by checking
correctness of the type returned by compile().
2018-04-28 17:12:00 +03:00
pyos
ccc895d162
Represent nullable types as pairs instead of pointers.
...
Turns out LLVM has insertvalue & extractvalue for struct in registers. This is
faster than pointers because null checks are now subject to more optimizations.
2018-04-28 14:12:23 +03:00
pyos
5c75342d54
Check nativity of all types *before* calling isCompilable
2018-04-28 01:03:52 +03:00
pyos
979c4d959f
Let jit-compilable functions deal with NULLs themselves.
...
And provide a default implementation of compile() for nullable columns
that actually works and is consistent with execute().
2018-04-28 00:34:27 +03:00
pyos
49b61cd27d
Refactor LLVMFunction to make extending to DataTypeNullable easier
2018-04-27 18:44:38 +03:00
pyos
a9e0b6de9f
Use system LLVMConfig.cmake with minor tweaks.
...
Should fix Travis build, finally.
2018-04-26 22:45:39 +03:00
pyos
b4d527ee85
Inline compile-time constants into jitted functions.
2018-04-26 14:30:16 +03:00
pyos
c95f8a669f
Throw in untyped versions of IFunction::{isCompilable,compile}
...
IFunction inherits IFunctionBase for some reason despite not actually knowing
the types, so these two methods make no sense. The versions with DataTypes&
as an argument should be used instead.
2018-04-25 20:07:19 +03:00
pyos
9ae5fe1b6d
Minor style fixes
2018-04-25 18:33:58 +03:00
pyos
854f85dd9b
Put #if USE_EMBEDDED_COMPILER in ExpressionJIT.{cpp,h}
2018-04-25 18:19:22 +03:00
pyos
d59b0d7ec0
Add IColumn::getRawData to fixed-contiguous columns
2018-04-25 18:16:48 +03:00
pyos
6c275c27d0
Remove an unnoticed debug return
2018-04-25 16:44:24 +03:00
pyos
c419d5a1a5
Poison only columns actually used by ARRAY_JOIN and JOIN
2018-04-25 16:01:06 +03:00
pyos
5482282943
Implement informational methods for LLVMFunction
2018-04-25 16:01:06 +03:00
pyos
af7ecd4c4a
Move function compilation before insertion of REMOVE_COLUMNs
2018-04-25 16:01:06 +03:00
pyos
162a0c8b33
Fix some comments' style
2018-04-25 16:01:06 +03:00
pyos
0da110234c
Do not compile the jit if USE_EMBEDDED_COMPILER is disabled
2018-04-25 16:01:00 +03:00
pyos
1bece1de46
Support nullable columns (with default behavior) in jitted functions
2018-04-25 13:37:26 +03:00
pyos
4bd0906613
Fix some comments
2018-04-25 13:37:26 +03:00
pyos
3789eba5c4
Fix CMakeFiles syntax
2018-04-25 13:37:26 +03:00
pyos
2b1be27b1b
Add missing option to CMakeFiles.txt
2018-04-25 13:37:26 +03:00
pyos
df2d2e0b25
Tweak the jit compilation API to be more amenable to lazy computation
2018-04-25 13:37:26 +03:00
pyos
b2077a466a
Inline jit-compilable functions into other jit-compilable functions
2018-04-25 13:37:26 +03:00
pyos
3810173103
Remove IFunction::createResultColumn.
...
Given that the list of supported types is hardcoded in
LLVMContext::Data::toNativeType, this method is redundant because
LLVMPreparedFunction can create a ColumnVector itself.
2018-04-25 13:37:26 +03:00
pyos
6b526f784c
Enable the default set of LLVM optimization passes
...
I honestly can't tell if they work. LLVM has surprisingly bad API documentation.
2018-04-25 13:37:26 +03:00
pyos
8c8a8f9c0f
Extend the test jit-compilable function to arbitrary numbers
2018-04-25 13:37:25 +03:00
pyos
5f1bf11ede
Implement a loop over the columns in jit-compiled code
2018-04-25 13:37:25 +03:00
pyos
407008a4d9
Separate jit-compilability checks from actual compilation
2018-04-25 13:37:25 +03:00
pyos
e96a5e8344
Implement JIT compilation, without a loop for now.
...
It actually seems to work, so long as you only have one row that is. E.g.
> select something(cast(number + 6 as Float64), cast(number + 2 as Float64)) from system.numbers limit 1';
8
with this IR:
define void @"something(CAST(plus(number, 6), 'Float64'), CAST(plus(number, 2), 'Float64'))"(void**, i8*, double*) {
entry:
%3 = load void*, void** %0
%4 = bitcast void* %3 to double*
%5 = load double, double* %4
%6 = getelementptr void*, void** %0, i32 1
%7 = load void*, void** %6
%8 = bitcast void* %7 to double*
%9 = load double, double* %8
%10 = fadd double %5, %9
store double %10, double* %2
ret void
}
2018-04-25 13:37:25 +03:00
pyos
b398ffbaba
Map all number types to LLVM types.
...
The example from the previous commit doesn't need a cast to Float64 anymore.
2018-04-25 13:37:25 +03:00
pyos
851684de51
Add a JIT interface for row-wise default-nullable functions.
...
Not actually implemented, though. It does print out some jit-compiled stuff,
but that's about it. For example, this query:
select number from system.numbers where something(cast(number as Float64)) == 4
results in this on server's stderr:
define double @"something(CAST(number, 'Float64'))"(void**, i8*, void*) {
"something(CAST(number, 'Float64'))":
ret double 1.234500e+04
}
(and an exception, because that's what the non-jitted method does.)
As one may notice, this function neither reads the input (first argument;
tuple of arrays) nor writes the output (third argument; array), instead
returning some general nonsense.
In addition, `#if USE_EMBEDDED_COMPILER` doesn't work for some reason,
including LLVM headers requires -Wno-unused-parameter, this probably only
works on LLVM 5.0 due to rampant API instability, and I'm definitely
no expert on CMake. In short, there's still a long way to go.
2018-04-25 13:37:25 +03:00
pyos
27d90fb941
Add an example function that uses LLVM to compile its own body
2018-04-25 13:37:25 +03:00
proller
899c65af63
Build fixes ( #2275 )
...
* Change obsolete comment
* Simpler disable logging to file in conf.d (<log/> <errorlog/>)
* Arm64 packag fixes
* Build fixes
2018-04-24 22:59:48 -07:00
alexey-milovidov
6c73fb86e3
Update FunctionsMath.h
2018-04-24 10:11:03 -07:00
Babacar Diassé
22b2099b0b
use exp10 and cbrt from vectorclass when enabled
2018-04-24 10:11:03 -07:00
Tobias Adamson
ea1e167acf
Upgrade librdkafka to v0.11.4
2018-04-24 10:08:47 -07:00
sundy-li
e882acef31
fix:ODBC sqlType mapping
2018-04-23 22:55:06 -07:00
Alexey Milovidov
2627a4da2e
Better test #2066
2018-04-22 22:09:35 -07:00
Alexey Milovidov
afb7127c67
Better test #2066
2018-04-22 20:32:53 -07:00
Alexey Milovidov
289722e69c
Merge branch 'master' of github.com:yandex/ClickHouse
2018-04-22 20:30:39 -07:00
Alexey Milovidov
958a3d7ee7
Fixed error with Arrays inside Nested data type; added a test #2066
2018-04-22 20:30:28 -07:00
Vladislav Rassokhin
44f3584b28
Fix fragments formatting in access_rights.md
2018-04-23 03:40:04 +03:00
Alexey Milovidov
499b67642f
Allow to startup with replicated tables in readonly mode when there is no ZooKeeper configured [#CLICKHOUSE-2]
2018-04-21 21:41:06 +03:00
proller
bd23b8790c
Debian packages: better deprecated message, docker: do not use old package
2018-04-20 22:48:31 +03:00
robot-metrika-test
c6e29f0cbb
Auto version update to [54380]
2018-04-20 22:47:21 +03:00
Alexey Milovidov
fb4a44a913
Added test #2257
2018-04-20 22:46:01 +03:00
Alexey Milovidov
5ba5e80846
Added correct code #2257
2018-04-20 22:45:23 +03:00
Alexey Milovidov
970fda46fd
Merge branch 'master' of github.com:yandex/ClickHouse
2018-04-20 22:22:24 +03:00
Alexey Milovidov
9c750c4786
Added test #2257
2018-04-20 22:22:03 +03:00