Commit Graph

18088 Commits

Author SHA1 Message Date
robot-clickhouse
1ecc430335 Auto version update to [19.9.1.1] [54421] 2019-05-28 13:52:55 +03:00
Azat Khuzhin
0275d62523
Fix element_count for hashed dictionary (do not include duplicates) 2019-05-28 11:25:31 +03:00
tai
1ab21e5774 ISSUES-5432 fix bad alloc when truncate join storage 2019-05-28 14:23:07 +08:00
alexey-milovidov
0c2aa46065
Merge pull request #5416 from vitlibar/fix-clickhouse-as-mysql-server
Fix clickhouse as mysql server
2019-05-28 06:13:31 +03:00
Vitaly Baranov
a35d1e0b3d Allow using MariaDB as a client without exception. 2019-05-28 03:15:05 +03:00
Vitaly Baranov
c07bd87716 Print "ClickHouse" when writing server's info at the start of the client session. 2019-05-28 03:09:19 +03:00
Vitaly Baranov
7af34954f9 Clearer message if the client doesn't have plugin sha256_password. 2019-05-28 03:08:12 +03:00
Vitaly Baranov
1364cdd057 Fix ErrorCodes. 2019-05-28 03:08:12 +03:00
Vitaly Baranov
483a3e505f Fix performance tests for the functions JSONExtract* 2019-05-28 02:47:40 +03:00
Vitaly Baranov
63b319404b Fix handling mixed const/non-const cases. 2019-05-28 02:47:33 +03:00
Ivan Lezhankin
1eccbc39c5 Don't add virtual column to empty block 2019-05-28 00:01:24 +03:00
Azat Khuzhin
e527def18a
Fix INSERT into Distributed() table with MATERIALIZED column
By just skipping MATERIALIZED columns during processing.

P.S. you cannot use insert_allow_materialized_columns since it works
only for Buffer() engine.

Fixes: #4015
Fixes: #3673
Fixes: 01501fa8db ("correct column list
for rewritten INSERT query into Distributed [#CLICKHOUSE-4161]")
2019-05-27 23:32:05 +03:00
Alexander Kozhikhov
b9c68cbf3a changes on return type of linearRegression 2019-05-27 23:18:14 +03:00
Alexander Kozhikhov
5cd85baec6 changes on return type of linearRegression 2019-05-27 23:14:23 +03:00
proller
324317ff6f clickhouse-client: allow to run with unaccessable history file (read only, no disk space, file is directory, ...) 2019-05-27 21:56:50 +03:00
Ivan Lezhankin
13212c9b01 Fix the hang on dropping Kafka table when there is no mat. views 2019-05-27 20:25:34 +03:00
chertus
42768af0e0 test for dictGet with Decimals 2019-05-27 19:41:48 +03:00
Danila Kutenin
b579c98651
Merge pull request #5422 from yandex/ngram_non_symmetric
ngramEntry renamed to ngramSearch
2019-05-27 12:50:08 +03:00
Danila Kutenin
b65a9499c8 ngramEntry renamed to ngramSearch 2019-05-27 12:05:02 +03:00
alexey-milovidov
ead911efc2
Merge pull request #5419 from yurriy/mysql
Improvements of MySQL Wire Protocol
2019-05-27 04:59:23 +03:00
Ivan Lezhankin
d2fd7a449f Fix build 2019-05-26 23:10:43 +03:00
Yuriy
96c2bb383f using logging level from config.xml 2019-05-26 22:30:23 +03:00
alexey-milovidov
aabee36dac
Merge pull request #5279 from svladykin/bitmap1
New bitmap functions: `bitmapHasAny` and `bitmapHasAll`
2019-05-26 21:44:02 +03:00
Alexey Milovidov
fc12bbe6d4 Revert "Print error messages to stderr."
This reverts commit 00380ad6d8.
2019-05-26 21:38:43 +03:00
Vitaly Baranov
71177b6f1f Performance test for the functions JSONExtract* 2019-05-26 17:11:26 +03:00
Sergi Vladykin
8c7b6137bc Code style fixed. 2019-05-26 13:02:48 +03:00
Sergi Vladykin
4bd60b9fbd Fixed types in tests. 2019-05-26 12:58:39 +03:00
Sergi Vladykin
2be4721771 Merge branch 'master' of https://github.com/yandex/ClickHouse into bitmap1 2019-05-26 12:27:54 +03:00
Danila Kutenin
61a1d91d71
Merge pull request #5418 from yandex/ngram_non_symmetric
ngramEntry function was added
2019-05-26 11:02:48 +03:00
Yuriy
96e3574a06 Improvements of MySQL Wire Protocol 2019-05-26 09:52:29 +03:00
Danila Kutenin
6090f5eca8 ngramEntry function was added 2019-05-25 21:47:26 +03:00
Alexander Kozhikhov
dd259c408d Merge branch 'master' of https://github.com/yandex/ClickHouse 2019-05-25 21:42:16 +03:00
Alexander Kozhikhov
0be0529b59 changes on lin reg 2019-05-25 21:41:58 +03:00
alexey-milovidov
461c4919d3
Merge pull request #5116 from PerformanceVision/send_header
Send a X-ClickHouse summary on the header for HTTP client with number of rows inserted
2019-05-25 20:20:35 +03:00
Alexey Milovidov
f225a7a08a Clarified time zone in test 2019-05-25 18:38:05 +03:00
Alexey Milovidov
207d2048c6 Added forward declarations 2019-05-25 17:15:22 +03:00
Alexey Milovidov
b94f2be154 Merge branch 'mysql' of https://github.com/yurriy/ClickHouse into yurriy-mysql 2019-05-25 17:14:57 +03:00
alexey-milovidov
6bb468b8c9
Merge pull request #5200 from hczhcz/patch-5
Add statistics functions: skewSamp, skewPop, kurtSamp, and kurtPop
2019-05-25 17:06:13 +03:00
alexey-milovidov
65957974b4
Update AggregateFunctionStatisticsSimple.h 2019-05-25 17:04:26 +03:00
Alexander Kozhikhov
7b235a312b Merge branch 'master' of https://github.com/yandex/ClickHouse 2019-05-25 16:33:36 +03:00
alexey-milovidov
4825ec4928
Merge pull request #5216 from proller/fix15
CLICKHOUSE-4509 Fix error codes in DataPartsExchange
2019-05-25 16:13:26 +03:00
alexey-milovidov
e0e35f3258
Merge pull request #5246 from nikvas0/nikvas0/fix_minmax_null
[wip] fix null minmax
2019-05-25 16:11:23 +03:00
alexey-milovidov
81ed764d6a
Merge pull request #5285 from abyss7/issue-5085
Don't crash the server when Kafka consumers have failed to start
2019-05-25 16:09:26 +03:00
alexey-milovidov
cb89e506a4
Merge pull request #5353 from yandex/aku/detached-parts-5164
Add system.detached_parts table.
2019-05-25 16:08:33 +03:00
alexey-milovidov
980c564db6
Merge pull request #5339 from sundy-li/feature/sequence64
Make sequenceMatch aggregate functions support other unsigned Integer types
2019-05-25 15:59:36 +03:00
alexey-milovidov
0c38226a25
Merge pull request #5366 from abyss7/storage-merge-sample
Check that underlying tables support sampling for StorageMerge
2019-05-25 15:44:02 +03:00
alexey-milovidov
fbbe3c1246
Merge pull request #5359 from andyyzh/fix_bitmap_issue_5244
Fixed bitmap functions produce wrong result
2019-05-25 15:43:38 +03:00
alexey-milovidov
bffe621d94
Merge pull request #5407 from kvap/all-columns-required-in-limit-by
Mark all input columns in LIMIT BY as required output
2019-05-25 15:13:01 +03:00
alexey-milovidov
b79582e15a
Merge pull request #5395 from clemrodriguez/master
Close MySQL connections opened by external MySQL dictionaries
2019-05-25 14:13:51 +03:00
alexey-milovidov
9e24c8d19a
Merge pull request #5396 from 4ertus2/ast
Support IN in CrossToInnerJoin push down predicates
2019-05-25 14:07:45 +03:00
alexey-milovidov
661d661d57
Update CrossToInnerJoinVisitor.cpp 2019-05-25 14:05:12 +03:00
proller
6c1cb02172 CLICKHOUSE-4523 Fix "Column '0' already exists" in SELECT .. PREWHERE on column with DEFAULT (#5397)
* CLICKHOUSE-4523 Fix "Column '0' already exists" in SELECT .. PREWHERE on column with DEFAULT

* fix style

* Fix build

* Update iostream_debug_helpers.cpp

* Update evaluateMissingDefaults.cpp
2019-05-25 14:03:12 +03:00
alexey-milovidov
e88afa0d85
Merge pull request #5404 from 4ertus2/some
Actualize isNumber() for Decimal
2019-05-25 13:53:13 +03:00
alexey-milovidov
1d98441c34
Update ExpressionAnalyzer.cpp 2019-05-25 13:51:48 +03:00
alesapin
7822db5884 Small performance test documentation. (#5408)
* Docs for performance tests

* docfix

* Better formating

* More English

* Run example

* Update README.md
2019-05-25 13:46:08 +03:00
Alexander Kozhikhov
464083803b redundant include 2019-05-25 12:44:11 +03:00
Alexander Kozhikhov
a63ad11ee7 LinearRegression without -State modifier now simply returns its weights 2019-05-25 02:18:44 +03:00
Alexander Kozhikhov
ef3e47c037 small perf test for linear regression 2019-05-25 01:41:33 +03:00
alesapin
b6b1049850 Merge branch 'master' of github.com:yandex/ClickHouse 2019-05-24 18:09:32 +03:00
alesapin
0b450597be Fix meaningless (untested) performance tests 2019-05-24 18:09:21 +03:00
Clément Rodriguez
8e8a563e30 Code style fixes 2019-05-24 14:30:12 +02:00
chertus
9eca696e82 actualize isNumber for Decimal 2019-05-24 15:11:03 +03:00
akuzm
7b927c4648
clickhouse-test improvements (#5352)
* Print error messages to stderr.

It makes it possible to redirect output to /dev/null and see only the
failed tests.

* Show an error message if we failed to find the queries dir.

* Treat 'distributed' and 'global' the same way as 'shard' in test names.

Some tests that need to run distributed queries do not use the
'shard' marker. It seems easier to support another two markers than
to rename the tests.
2019-05-24 15:07:26 +03:00
alexey-milovidov
9d7754e332
Merge pull request #5391 from yandex/rename-regression-methods
Rename regression methods.
2019-05-24 13:01:50 +03:00
alesapin
f4198ce262 Add order by to avoid flaps 2019-05-24 12:12:55 +03:00
alesapin
37313d64ee
Merge pull request #5367 from yandex/apply-substitutions-for-create-prepare-drop-query
[WIP] Add ability to make substitutions in create, fill and drop query in performance tests.
2019-05-24 11:59:01 +03:00
Constantin S. Pan
cbc0f56af1 Mark all input columns in LIMIT BY as required output
The query analyzer only marks the actual arguments of LIMIT BY as required
output for the LimitBy step in the pipeline. This is fine, unless the query is
distributed, in which case the first stage might remove a column that is used
at the second stage (e.g. for ORDER BY) but is not part of the final select.

Prevent removal of any columns in LimitBy by marking all input columns as
required output.
2019-05-24 09:53:09 +01:00
stavrolia
14ac3de76b Add limit to loop test 2019-05-24 11:38:49 +03:00
alexey-milovidov
f54b01fad8
Merge pull request #5393 from abyss7/fix-blockio
Fix order of destruction inside BlockIO
2019-05-23 21:49:40 +03:00
proller
3bb18d1dc2 Merge remote-tracking branch 'upstream/master' into fix15 2019-05-23 21:38:38 +03:00
stavrolia
17a6e9cffa Loop type of tests 2019-05-23 19:06:21 +03:00
chertus
333c9aeecc support IN in CrossToInnerJoin push down 2019-05-23 19:01:17 +03:00
stavrolia
3a1d3b0025 Try type of test - once 2019-05-23 18:31:23 +03:00
alesapin
15e31d5a8c
Merge pull request #5392 from yandex/insert_data_to_null_columns
Add ability to insert data in column nullable
2019-05-23 17:38:01 +03:00
Ivan Lezhankin
1985caed8d Add test on virtual columns 2019-05-23 17:32:06 +03:00
chertus
f82ea1c1d5 dictGet() dictGetOrDefault for Decimals 2019-05-23 17:04:33 +03:00
Clément Rodriguez
c4c99c80a1 Make the connection closure parameterized in dictionary.xml 2019-05-23 15:55:00 +02:00
Ivan Lezhankin
646d6f3fb5 Fix order of destruction 2019-05-23 16:54:11 +03:00
alesapin
d860b3912b Insert data in column nullable 2019-05-23 16:35:26 +03:00
Ivan Lezhankin
19a850ad75 Use read callback to populate virtual columns in Kafka Engine 2019-05-23 16:20:25 +03:00
Clément Rodriguez
7b40d37212 Close MySQL connections after usage in MySQLDictionarySource 2019-05-23 15:09:07 +02:00
Nikolai Kochetov
54a52853e8 Remane regression methods. 2019-05-23 14:51:25 +03:00
Ivan Lezhankin
800854119e Add buffer callback to fill in virtual columns 2019-05-23 14:15:18 +03:00
stavrolia
e9425fdfeb Merge branch 'apply-substitutions-for-create-prepare-drop-query' of https://github.com/yandex/ClickHouse into apply-substitutions-for-create-prepare-drop-query 2019-05-23 13:38:48 +03:00
stavrolia
eb3340dba2 add test with selecting of different formats 2019-05-23 13:37:19 +03:00
alesapin
3425610f79
Update parse_engine_file.xml 2019-05-23 11:45:47 +03:00
Ivan Lezhankin
dd906eabdc [WIP] refactoring 2019-05-22 22:38:43 +03:00
stavrolia
a1719b101e Fix name of test 2019-05-22 18:34:16 +03:00
stavrolia
dcd5a80843 Remove not used methods 2019-05-22 17:00:32 +03:00
stavrolia
c398db29d4 Fix style 2019-05-22 14:36:31 +03:00
stavrolia
3469f80172 add config file for test of parsing files in different formats 2019-05-22 14:09:44 +03:00
proller
d6a90b6079
Build fixes (#5368) 2019-05-22 13:16:16 +03:00
alesapin
36cf6fa8f9
Merge pull request #5360 from filimonov/integration_tests_runner_improvements
more fixes for integration tests dockerfiles
2019-05-22 11:58:02 +03:00
sundy-li
ad539464b0 add empty judge 2019-05-22 14:11:27 +08:00
proller
6cb4485473
Rename aggregate functions TSgroup* to timeSeriesGroup* (#5307) 2019-05-21 18:33:54 +03:00
Alexander Kuzmenkov
6472040c6c Initialize StoragesInfo fields. 2019-05-21 16:58:55 +03:00
Ivan Lezhankin
28bddf9a4a [StorageMerge] check that underlying tables support sampling 2019-05-21 16:04:34 +03:00
stavrolia
281a01f5f7 Add ability to make substitutions in create, fill and drop query. 2019-05-21 15:57:19 +03:00
Alexander Kuzmenkov
43655a8db7 Add system.detached_parts table.
https://github.com/yandex/ClickHouse/issues/5164
2019-05-21 15:06:36 +03:00
Ivan Lezhankin
cf39c4cc47 Embed virtual columns into IStorage 2019-05-21 14:24:32 +03:00
alesapin
a08fee57b7
Merge pull request #5356 from comunodi/fix_test_without_zk
Fix replication_without_zookeeper test
2019-05-21 13:40:24 +03:00
alesapin
3340ae66ba More stable perf tests 2019-05-21 13:03:36 +03:00
alesapin
91907d2450 Add more information about stages in 00926 test 2019-05-21 13:00:02 +03:00
Oleg Favstov
fe74521710 Use pytest's raises instead of try/except clause 2019-05-21 11:30:39 +03:00
hcz
ba527dac20
Update AggregateFunctionStatisticsSimple.h 2019-05-21 16:17:12 +08:00
alesapin
09ad1732b3
Update test.py 2019-05-21 11:15:47 +03:00
hcz
f7bad8c87b
Fix NaN 2019-05-21 16:10:49 +08:00
Mikhail Filimonov
8a1d773ced more dockerfile fixes 2019-05-21 08:17:46 +02:00
Danila Kutenin
3536184ba8
Merge pull request #5357 from yandex/concat_optimization
Optimize concat function with recent format function.
2019-05-21 08:11:35 +03:00
Guillaume Tassery
938d6d7f24 coding style 2019-05-21 11:06:36 +07:00
Guillaume Tassery
d94ce121e2 update test 2019-05-21 10:53:53 +07:00
Andy Yang
a62f7e2fea Fixed bitmap functions produce wrong result 2019-05-21 10:58:38 +08:00
sundy-li
afcd60a0a4 add NO_SANITIZE_UNDEFINED 2019-05-21 10:16:46 +08:00
sundy-li
b55bf7cf83 whitespaces 2019-05-21 09:56:48 +08:00
alexey-milovidov
418a86f338
Merge pull request #5355 from yandex/checksum-mismatch-more-verbose-error-message
Better error message on checksum mismatch #5347
2019-05-21 01:46:52 +03:00
Danila Kutenin
cf014b704a Check for number of arguments 2019-05-21 00:12:25 +03:00
Danila Kutenin
daaebf5ab0 optimized concat function with format, make format a bit more generic 2019-05-21 00:06:43 +03:00
Oleg Favstov
896e995fe8 Fix test that doesn't assert anything 2019-05-20 23:59:07 +03:00
Alexey Milovidov
4b604e4656 Better error message on checksum mismatch #5347 2019-05-20 23:46:52 +03:00
Alexey Milovidov
da142a5d5d Better error message on checksum mismatch #5347 2019-05-20 23:35:43 +03:00
alexey-milovidov
1b86f28f08
Merge pull request #5350 from 4ertus2/bugs
Fix decimal conversion in IN
2019-05-20 22:01:56 +03:00
proller
50b74deeb4 CLICKHOUSE-4509 Fix error codes in DataPartsExchange 2019-05-20 20:04:36 +03:00
chertus
187311add0 add decimal to decimal convertion in IN 2019-05-20 18:51:54 +03:00
Guillaume Tassery
6fada68fe5 forget client.cpp 2019-05-20 20:24:53 +07:00
Ivan Lezhankin
11a5a6db70 Remove unused functions 2019-05-20 15:16:51 +03:00
Guillaume Tassery
77b7158cd8 Progress rename for total_rows and write_[rows|bytes] 2019-05-20 18:37:41 +07:00
Mikhail Filimonov
8fe7633b62 Fixing "the input device is not a TTY" for test runner 2019-05-20 11:48:36 +02:00
Mikhail Filimonov
464cff4665 Sereval improvements in integration tests runner 2019-05-20 10:11:53 +02:00
sundy-li
66c60c2985 better tests 2019-05-20 12:31:52 +08:00
sundy-li
6843254ce4 Make sequenceMatch support other unsigned integer types 2019-05-20 12:02:54 +08:00
alexey-milovidov
02937294ce
Merge pull request #5311 from azat-archive/SimpleAggregateFunction-Arena-fix
Fix SimpleAggregateFunction for String longer MAX_SMALL_STRING_SIZE
2019-05-19 13:12:38 +03:00
Danila Kutenin
295a4a8684
Merge pull request #5330 from yandex/format_function
Format function added
2019-05-19 12:07:57 +03:00
Danila Kutenin
ed588bf727 style 2019-05-19 03:39:44 +03:00
Azat Khuzhin
db274bf516
Allocates arena for SimpleAggregateFunction only if IAggregateFunction requires 2019-05-19 03:33:04 +03:00
Azat Khuzhin
2f471d6ea3
Set allocatesMemoryInArena for SingleValueDataString to true
This includes next aggregate functions for String() type:
- *min*
- *max*
- *any*
2019-05-19 03:33:04 +03:00
Azat Khuzhin
4e8370b0b0
Fix SimpleAggregateFunction for String longer MAX_SMALL_STRING_SIZE
SimpleAggregateFunction do not pass arena to the
add_function -> getAddressOfAddFunction(), hence next crash happens:
  (gdb) bt
  #0  DB::Arena::alloc (size=64, this=0x0) at ../dbms/src/Common/Arena.h:124
  #1  DB::SingleValueDataString::changeImpl (this=0x7f97424a27d8, value=..., arena=0x0) at ../dbms/src/AggregateFunctions/AggregateFunctionMinMaxAny.h:274
  #2  0x0000000005ea5319 in DB::AggregateFunctionNullUnary<true>::add (arena=<optimized out>, row_num=<optimized out>, columns=<optimized out>, place=<optimized out>, this=<optimized out>) at ../dbms/src/AggregateFunctions/AggregateFunctionNull.h:43
  #3  DB::IAggregateFunctionHelper<DB::AggregateFunctionNullUnary<true> >::addFree (that=<optimized out>, place=<optimized out>, columns=<optimized out>, row_num=<optimized out>, arena=<optimized out>) at ../dbms/src/AggregateFunctions/IAggregateFunction.h:131
  #4  0x000000000679772f in DB::AggregatingSortedBlockInputStream::addRow (this=this@entry=0x7f982de19c00, cursor=...) at ../dbms/src/Common/AlignedBuffer.h:31
  #5  0x0000000006797faa in DB::AggregatingSortedBlockInputStream::merge (this=this@entry=0x7f982de19c00, merged_columns=..., queue=...) at ../dbms/src/DataStreams/AggregatingSortedBlockInputStream.cpp:140
  #6  0x0000000006798979 in DB::AggregatingSortedBlockInputStream::readImpl (this=0x7f982de19c00) at ../dbms/src/DataStreams/AggregatingSortedBlockInputStream.cpp:78
  #7  0x000000000622db55 in DB::IBlockInputStream::read (this=0x7f982de19c00) at ../dbms/src/DataStreams/IBlockInputStream.cpp:56
  #8  0x0000000006613bee in DB::MergeTreeDataMergerMutator::mergePartsToTemporaryPart (this=this@entry=0x7f97ec65e1a0, future_part=..., merge_entry=..., time_of_merge=<optimized out>, disk_reservation=<optimized out>, deduplicate=<optimized out>) at /usr/include/c++/8/bits/shared_ptr_base.h:1018
  #9  0x000000000658f7a4 in DB::StorageReplicatedMergeTree::tryExecuteMerge (this=0x7f97ec65b810, entry=...) at /usr/include/c++/8/bits/unique_ptr.h:342
  #10 0x00000000065940ab in DB::StorageReplicatedMergeTree::executeLogEntry (this=0x7f97ec65b810, entry=...) at ../dbms/src/Storages/StorageReplicatedMergeTree.cpp:910
  <snip>

  (gdb) f 1
  (gdb) p MAX_SMALL_STRING_SIZE
  $1 = 48
  (gdb) p capacity
  $2 = 64
  (gdb) p value
  $3 = {data = 0x7f97242fcbd0 "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", size = 61}

v2: avoid leaking of allocated by Arena memory on the intermediate step

Fixes: 8f8d2c048e ("Merge pull request #4629 from bgranvea/simple_aggregate_function")
2019-05-19 03:32:55 +03:00
alexey-milovidov
2254b171a7
Merge pull request #5313 from yandex/fix-external-query-in-with-single-element
Fix external queries with IN operator.
2019-05-19 03:12:57 +03:00
Danila Kutenin
876b5c3bbb style 2019-05-19 02:21:29 +03:00
Alexey Milovidov
648d2bdb25 Fixed test 2019-05-19 01:19:24 +03:00
alexey-milovidov
e73fc1bd0f
Merge pull request #5320 from sundy-li/feature/funnel64
Make windowFunnel support other Unsigned Integer Types
2019-05-18 23:47:12 +03:00
Danila Kutenin
fca6e4fd38 constant string handling 2019-05-18 18:09:52 +03:00
Danila Kutenin
95cd3e5bb8 style 2019-05-18 16:38:03 +03:00
Danila Kutenin
1c6707526a style 2019-05-18 16:21:48 +03:00
Danila Kutenin
59f26b7569 some optimizations 2019-05-18 15:56:26 +03:00
Danila Kutenin
a49ee5efd6 some optimizations 2019-05-18 15:52:33 +03:00
Danila Kutenin
84b04dc8ea format function added 2019-05-18 15:29:10 +03:00
Danila Kutenin
a48cf9abe5 format function added 2019-05-18 14:30:50 +03:00
Danila Kutenin
4e3a607267 format function added 2019-05-18 14:30:36 +03:00
alexey-milovidov
dc5232d40d
Update Server.cpp 2019-05-18 13:17:26 +03:00
alexey-milovidov
24b16da9fd
Merge pull request #5235 from vitlibar/improve-new-json-functions
Improve new json functions
2019-05-18 12:51:41 +03:00