إصدار ClickHouse 20.12
إصدار ClickHouse v20.12.5.14 stable، 2020-12-28
إصلاح الأخطاء
- تعطيل الكتابة باستخدام AIO أثناء عمليات
mergeلأن ذلك قد يؤدي، في حالات نادرة للغاية، إلى تلف البيانات في أعمدة المفتاح الأساسي أثناء الدمج. #18481 (alesapin). - تم إصلاح الخطأ
value is too shortعند تنفيذ الدوالtoType(...)(toDateوtoUInt32وما إلى ذلك) باستخدام وسيطة من النوعNullable(String). تُرجع هذه الدوال الآن القيمةNULLعند حدوث أخطاء في التحليل بدلًا من إطلاق استثناء. يُصلح هذا #7673. #18445 (tavplubix). - تقييد عمليات الدمج من الأجزاء
wideإلى الأجزاءcompact. وفي حالةvertical mergeكان ذلك يؤدي إلى تلف الجزء الناتج. #18381 (Anton Popov). - إصلاح تعبئة الجدول
system.settings_profile_elements. يُصلح طلب السحب هذا #18231. #18379 (Vitaly Baranov). - إصلاح الأعطال المحتملة في الدوال التجميعية مع المُركِّب
Distinctعند استخدام التجميع ثنائي المستوى. يُصلح هذا #17682. #18365 (Anton Popov). - إصلاح الخطأ الذي يحدث عندما لا يؤدي الاستعلام
MODIFY COLUMN ... REMOVE TTLفعليًا إلى إزالةTTLمن العمود. #18130 (alesapin).
تحسينات البناء/الاختبار/التحزيم
إصدار ClickHouse v20.12.4.5-stable، 2020-12-24
إصلاح الأخطاء
- تم إصلاح مشكلة تحدث عندما يتعذر على الخادم الوصول إلى عملية
clickhouse-odbc-bridgeعلى الأجهزة ذات مكدس IPv4/IPv6 المزدوج؛ - وتم إصلاح مشكلة تحدث عند تنفيذ تحديثات قواميس ODBC باستخدام استعلامات غير سليمة و/أو تتسبب في أعطال؛ وقد يغلق هذا #14489. #18278 (Denis Glazachev). - تم إصلاح مقارنة المفاتيح بين النوعين Enum و Int. يُصلح هذا #17989. #18214 (Amos Bird).
- تم إصلاح عطل يحدث عند تحويل المفتاح الفريد في محرك قاعدة البيانات
MaterializeMySQL. يُصلح هذا #18186 و#16372 #18211 (Winter Zhang). - تم إصلاح الخطأ
std::out_of_range: basic_stringأثناء تحليل عنوان URL لـ S3. #18059 (Vladimir Chebotarev). - تم إصلاح المشكلة التي كانت تؤدي إلى عدم مزامنة بعض الجداول من MySQL إلى ClickHouse بسبب عدم دعم تحويل فهرس prefix في MySQL ضمن MaterializeMySQL. يُصلح هذا #15187 و#17912 #17944 (Winter Zhang).
- تم إصلاح المشكلة التي كانت تجعل تحسين الاستعلامات ينتج نتائج غير صحيحة إذا كان الاستعلام يحتوي على
ARRAY JOIN. #17887 (sundyli). - تم إصلاح احتمال حدوث segfault في الدالة التجميعية
topK. يُغلق هذا #17404. #17845 (Maksim Kita). - تم إصلاح مشكلة ظهور جدول
system.stack_traceفارغًا عندما يكون الخادم قيد التشغيل في وضع daemon. #17630 (Amos Bird).
إصدار ClickHouse v20.12.3.3-stable، 2020-12-13
تغيير غير متوافق مع الإصدارات السابقة
- تفعيل
use_compact_format_in_distributed_parts_namesافتراضيًا (راجع التوثيق لمزيد من التفاصيل). #16728 (Azat Khuzhin). - قبول إعدادات المستخدم المرتبطة بتنسيقات الملفات (مثل
format_csv_delimiter) في عبارةSETTINGSعند إنشاء جدول يستخدم محركFile، واستخدام هذه الإعدادات في جميع عملياتINSERTوSELECT. ولم تعد إعدادات تنسيق الملفات التي جرى تغييرها في جلسة المستخدم الحالية، أو في عبارةSETTINGSضمن استعلام DML نفسه، تؤثر في الاستعلام. #16591 (Alexander Kuzmenkov).
ميزة جديدة
- إضافة دعم الضغط/فك الضغط لـ
*.xz. يتيح ذلك استخدام*.xzفي الدالةfile(). يُغلق هذا #8828. #16578 (Abi Palagashvili). - تقديم الاستعلام
ALTER TABLE ... DROP|DETACH PART 'part_name'. #15511 (nvartolomei). - إضافة صياغة جديدة لـ ALTER UPDATE/DELETE IN PARTITION. #13403 (Vladimir Chebotarev).
- السماح بتنسيق named tuples كـ JSON objects عند استخدام output formats وformats إدخال/إخراج JSON، مع التحكم في ذلك عبر الإعداد
output_format_json_named_tuples_as_objects، وهو معطّل افتراضيًا. #17175 (Alexander Kuzmenkov). - إضافة إمكانية إدخال قيمة enum على شكل معرّفها في formats TSV وCSV افتراضيًا. #16834 (Kruglov Pavel).
- إضافة دعم COLLATE لأنواع Nullable وLowCardinality وArray وTuple عندما يكون النوع المتداخل String. كما أُعيدت هيكلة الكود المرتبط بـ collations في ColumnString.cpp. #16273 (Kruglov Pavel).
- تُرجع الدالة الجديدة
tcpPortمنفذ TCP الذي يستمع عليه هذا server. #17134 (Ivan). - إضافة دوال رياضية جديدة:
acosh,asinh,atan2,atanh,cosh,hypot,log1p,sinh. #16636 (Konstantin Malanchev). - إمكانية توزيع عمليات الدمج بين replicas مختلفة. ويقدّم ذلك إعداد MergeTree
execute_merges_on_single_replica_time_threshold. #16424 (filimonov). - إضافة الإعداد
aggregate_functions_null_for_emptyللتوافق مع معيار SQL. يعيد هذا الخيار كتابة جميع aggregate functions في query، مع إضافة اللاحقة -OrNullإليها. ويطبّق 10273. #16123 (flynn). - تحديث parsing لكل من DateTime وDateTime64 ليقبل تنسيق Date literal النصي. #16040 (Maksim Kita).
- إتاحة تغيير path إلى ملف history في
clickhouse-clientباستخدام parameter --history_file. #15960 (Maksim Kita).
إصلاح الأخطاء
- إصلاح المشكلة التي قد تؤدي، في حالات نادرة جدًا، إلى توقف الخادم عن قبول الاتصالات. #17542 (Amos Bird).
- تم إصلاح الخطأ
Function not implementedعند تنفيذ الاستعلامRENAMEفي قاعدة البياناتAtomicأثناء تشغيل ClickHouse على Windows Subsystem for Linux. يعالج هذا #17661. #17664 (tavplubix). - عدم استعادة الأجزاء من WAL إذا كان
in_memory_parts_enable_walمعطّلًا. #17802 (detailyang). - إصلاح التهيئة غير الصحيحة لـ
max_compress_block_sizeفي MergeTreeWriterSettings باستخدامmin_compress_block_size. #17833 (flynn). - كانت رسالة الاستثناء المتعلقة بالحد الأقصى لحجم الجدول المراد حذفه تُعرض بشكل غير صحيح. #17764 (alexey-milovidov).
- تم إصلاح احتمال حدوث segfault عند عدم توفر مساحة كافية أثناء الإدراج في جدول
Distributed. #17737 (tavplubix). - تم إصلاح المشكلة التي كان ClickHouse يفشل فيها في استئناف الاتصال بخوادم MySQL. #17681 (Alexander Kazakov).
- كان من الممكن تحديد ما إذا كانت المجموعة ذات نسخ متماثلة دائرية (أو متقاطعة) أم لا بشكل غير صحيح عند تنفيذ الاستعلام
ON CLUSTERبسبب race condition عندما تكون قيمةpool_size> 1. تم إصلاح ذلك. #17640 (tavplubix). - كان من الممكن تسجيل الاستثناء
fmt::v7::format_errorفي الخلفية لجدوال MergeTree. يعالج هذا #17613. #17615 (alexey-milovidov). - عند استخدام clickhouse-client في interactive mode مع استعلامات متعددة الأسطر، كان التعليق أحادي السطر يمتد بالخطأ حتى نهاية الاستعلام. يعالج هذا #13654. #17565 (alexey-milovidov).
- إصلاح تعليق استعلام ALTER عندما تكون الـ mutation المقابلة قد أُوقفت على replica أخرى. يعالج هذا #16953. #17499 (alesapin).
- إصلاح المشكلة التي كان فيها ClickHouse يقدّر حجم mark cache بأقل من قيمته الفعلية. وقد يحدث ذلك عند وجود عدد كبير من الملفات الصغيرة جدًا التي تحتوي على marks. #17496 (alesapin).
- إصلاح
ORDER BYعند تفعيل الإعدادoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - إصلاح التكرارات بعد
DISTINCTالتي كان يمكن أن تحدث بسبب تحسين غير صحيح. يعالج هذا #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - إصلاح تعطل يحدث عند القراءة من جدول
JOINمع أنواعLowCardinality. يُصلح #17228. #17397 (Nikolai Kochetov). - إصلاح تجاوز المكدس في
toInt256(inf). تُعد Int256 ميزة تجريبية. أُغلقت #17235. #17257 (flynn). - إصلاح احتمال تسجيل الخطأ
Unexpected packet Data received from clientفي distributed queries التي تستخدمLIMIT. #17254 (Azat Khuzhin). - إصلاح إبطال فهرس Set عند وجود أعمدة ثابتة في الاستعلام الفرعي. يُصلح هذا #17246. #17249 (Amos Bird).
- إصلاح احتمال حدوث index analysis غير صحيح عندما تختلف types في مقارنة الفهرس. يُصلح هذا #17122. #17145 (Amos Bird).
- إصلاح مقارنة ColumnConst التي قد تؤدي إلى تعطل. أصلح هذا #17088. #17135 (Amos Bird).
- إصلاحات متعددة في MaterializeMySQL (ميزة تجريبية). يُصلح #16923 ويُصلح #15883، كما يُصلح فشل مزامنة MaterializeMySQL SYNC عند تعديل MySQL
binlog_checksum. #17091 (Winter Zhang). - إصلاح مشكلة قد تتسبب في تعليق استعلامات
ON CLUSTERإلى الأبد في ReplicatedMergeTreeTables غير القائدة. #17089 (alesapin). - إصلاح تعطل في query
CREATE TABLE ... AS some_tableعندما يكونsome_tableقد أُنشئ باستخدامAS table_function(). يُصلح #16944. #17072 (tavplubix). - إصلاح تنفيذ غير مكتمل للدالة fuzzBits، والمشكلة ذات الصلة: #16980. #17051 (hexiaoting).
- إصلاح
libunwindالخاص بـ LLVM في الحالة التي يكون فيها سجل CFA هو RAX. هذا هو الخلل في LLVM’s libunwind. لدينا بالفعل حلول بديلة لهذا الخلل. #17046 (alexey-milovidov). - تجنب أخطاء الشبكة غير الضرورية في remote queries التي قد تُلغى أثناء التنفيذ، مثل الاستعلامات التي تستخدم
LIMIT. #17006 (Azat Khuzhin). - إصلاح الإعداد
optimize_distributed_group_by_sharding_key(المعطّل افتراضيًا) للاستعلامات التي تحتوي على OFFSET فقط. #16996 (Azat Khuzhin). - إصلاح لجداول Merge فوق جداول Distributed مع JOIN. #16993 (Azat Khuzhin).
- إصلاح نتيجة غير صحيحة في الأعداد الصحيحة الكبيرة (128 و256 بت) عند التحويل من double. دعم الأعداد الصحيحة الكبيرة لا يزال تجريبيًا. #16986 (Mike).
- إصلاح احتمال تعطل الخادم بعد
ALTER TABLE ... MODIFY COLUMN ... NewTypeعندما يحتويSELECTعلى تعبيرWHEREعلى العمود الجاري تعديله ولم يكتمل التعديل بعد. #16968 (Amos Bird). - لم تُحتسب معلومات اللوم بشكل صحيح في
clickhouse-git-import. #16959 (alexey-milovidov). - إصلاح تحسين ORDER BY مع الدوال الرتيبة. يُصلح #16107. #16956 (Anton Popov).
- إصلاح تحسين GROUP BY عند تفعيل الإعداد
optimize_aggregators_of_group_by_keysومع joins. يُصلح #12604. #16951 (Anton Popov). - إصلاح خطأ محتمل
Illegal type of argumentفي الاستعلامات التي تحتوي علىORDER BY. يُصلح #16580. #16928 (Nikolai Kochetov). - إصلاح شيفرة غير معتادة في InterpreterShowAccessQuery. #16866 (tavplubix).
- منع تعطل خادم ClickHouse عند استخدام الدالة
timeSeriesGroupSum. أُزيلت هذه الدالة من إصدارات ClickHouse الأحدث. #16865 (filimonov). - إصلاح حالات تعطل صامتة نادرة عندما تكون أداة تحليل الاستعلامات مفعّلة ويكون ClickHouse مثبتًا على نظام تشغيل بإصدار glibc يحتوي، على ما يبدو، على asynchronous unwind tables معطوبة لبعض الدوال. يُصلح هذا #15301. ويُصلح أيضًا #13098. #16846 (alexey-milovidov).
- إصلاح تعطل عند استخدام
anyبدون أي argument. هذا يخص #16803. cc @azat. #16826 (Amos Bird). - إذا تعذر تخصيص ذاكرة أثناء كتابة بيانات table الوصفية إلى disk، فقد يُكتب ملف بيانات وصفية تالف. #16772 (alexey-milovidov).
- إصلاح تحسين الاستعلامات البسيطة مع predicate التقسيم. #16767 (Azat Khuzhin).
- إصلاح عامل التشغيل
INعبر عدة أعمدة وTuples مع تفعيل الإعدادtransform_null_in. يُصلح #15310. #16722 (Anton Popov). - إرجاع عدد الصفوف المتأثرة لاستعلامات INSERT عبر بروتوكول MySQL. كان ClickHouse يعيد دائمًا القيمة 0 سابقًا، وقد أُصلح ذلك. يعالج #16605. #16715 (Winter Zhang).
- إصلاح فشل الاستعلام البعيد عند استخدام دالة التجميع ذات اللاحقة ‘if’. يعالج #16574 يعالج #16231 #16610 (Winter Zhang).
- إصلاح السلوك غير المتسق الناتج عن
select_sequential_consistencyفي استعلام العدّ البسيط المُحسَّن و system.tables. #16309 (Hao Chen).
تحسين
- إزالة الأجزاء الفارغة بعد تقليمها بواسطة TTL أو mutation أو خوارزمية الدمج collapsing. #16895 (Anton Popov).
- تمكين التنسيق compact للأدلة لعمليات الإرسال غير المتزامنة في Distributed tables: تُضبط
use_compact_format_in_distributed_parts_namesعلى 1 افتراضيًا. #16788 (Azat Khuzhin). - إلغاء multipart upload إذا لم تُكتب أي بيانات إلى S3. #16840 (Pavel Kovalenko).
- إعادة حل عنوان IP الخاص بـ
format_avro_schema_registry_urlعند حدوث أخطاء. #16985 (filimonov). - إخفاء password في data_path ضمن system.distribution_queue. #16727 (Azat Khuzhin).
- إطلاق error عند استخدام محوّل الأعمدة لاستبدال عمود غير موجود. #16183 (hexiaoting).
- تعطيل parsing المتوازي عندما لا تتوفر ذاكرة كافية لتعمل جميع threads بالتزامن. وقد تظهر أيضًا استثناءات مثل “Memory limit exceeded” عندما يحاول أحدهم insert صفوف كبيرة جدًا (> min_chunk_bytes_for_parallel_parsing)، لأن كل جزء يُحلَّل يجب أن يكون مجموعة مستقلة من Strings (واحدة أو أكثر). #16721 (Nikita Mikhaylov).
- يجب أن ينشئ برنامج التثبيت النصي دائمًا الأدلة الفرعية داخل مجلدات config. وهذا يهم فقط بنية Docker مع config مخصص. #16936 (filimonov).
- تصحيح الصياغة النحوية في رسالة error في تنسيقات الإدخال JSONEachRow وJSONCompactEachRow وRegexpRow. #17205 (nico piderman).
- تعيين parameterي
hostوportالافتراضيين لـSOURCE(CLICKHOUSE(...))إلى instance الحالية، وتعيين القيمة الافتراضية لـuserإلى'default'. #16997 (vdimir). - إطلاق رسالة error توضيحية عند تنفيذ
ATTACH/DETACH TABLE <DICTIONARY>. قبل هذا PR، كانdetach table <dict>يعمل، لكنه يؤدي إلى metadata غير سليمة في الذاكرة. #16885 (Amos Bird). - إضافة cutToFirstSignificantSubdomainWithWWW(). #16845 (Azat Khuzhin).
- كان server يرفض بدء التشغيل مع رسالة exception إذا تم تقديم config غير صحيح (
metric_log.collect_interval_millisecondsمفقود). #16815 (Ivan). - رسالة exception أوضح عندما يكون configuration الخاص بـ distributed DDL غير موجود. يُصلح هذا #5075. #16769 (Nikita Mikhaylov).
- تحسين في سهولة الاستخدام: اقتراحات أفضل في رسالة خطأ Syntax عندما يكون تعبير
CODECفي غير موضعه في queryCREATE TABLE. يُصلح هذا #12493. #16768 (alexey-milovidov). - إزالة الدلائل الفارغة الخاصة بـ async INSERT عند بدء تشغيل Distributed engine. #16729 (Azat Khuzhin).
- حل بديل لاستخدام S3 مع خادم nginx بوصفه proxy. لا يقبل Nginx حاليًا عناوين URL ذات المسار الفارغ مثل
http://domain.com?delete، لكن aws-sdk-cpp الأصلي يُنتج هذا النوع من عناوين URL. يستخدم هذا الالتزام إصدارًا مُرقّعًا من aws-sdk-cpp، ما يجعل عناوين URL تتضمّن ”/” كمسار في هذه الحالات، مثلhttp://domain.com/?delete. #16709 (ianton-ru). - السماح لدوال
reinterpretAs*بالعمل مع الأعداد الصحيحة وأعداد الفاصلة العائمة ذات الحجم نفسه. ينفّذ 16640. #16657 (flynn). - أصبح بالإمكان الآن تغيير إعداد
<auxiliary_zookeepers>فيconfig.xmlوإعادة تحميله دون بدء تشغيل الخادم. #16627 (Amos Bird). - دعم SNI في اتصالات https بالموارد البعيدة. يتيح ذلك الاتصال بخوادم Cloudflare التي تتطلب SNI. يُصلح هذا #10055. #16252 (alexey-milovidov).
- أصبح من الممكن الاتصال بـ endpoint الآمنة لـ
clickhouse-serverالتي تتطلب SNI. ويكون ذلك ممكنًا عندما يُستضافclickhouse-serverخلف proxy لـ TLS. #16938 (filimonov). - إصلاح احتمال حدوث تجاوز سعة المكدس إذا أُنشئت حلقة من materialized views. يُغلق هذا #15732. #16048 (alexey-milovidov).
- تبسيط تنفيذ معالجة tasks في الخلفية لعائلة table engines من MergeTree. لا ينبغي أن تكون هناك أي تغييرات ملحوظة للمستخدم. #15983 (alesapin).
- تحسين لـ MaterializeMySQL (ميزة تجريبية). طرح Exception بشأن امتيازات المزامنة الصحيحة عندما تكون امتيازات مستخدم مزامنة MySQL غير صحيحة. #15977 (TCeason).
- تم جعل
indexOf()يستخدم BloomFilter. #14977 (achimbab).
تحسين الأداء
- استخدام خوارزمية Floyd-Rivest، فهي الأفضل لحالة الاستخدام في ClickHouse الخاصة بالفرز الجزئي. تتوفر نتائج القياس في https://github.com/danlark1/miniselect وهنا. #16825 (Danila Kutenin).
- تستخدم عائلة محركات
ReplicatedMergeTreeالآن مجموعة خيوط منفصلة لعمليات الجلب المكررة. ويُحدَّد حجم المجموعة بالإعدادbackground_fetches_pool_size، الذي يمكن ضبطه عند إعادة تشغيل الخادم. القيمة الافتراضية لهذا الإعداد هي 3، ما يعني أن الحد الأقصى لعمليات الجلب المتوازية هو 3 (مما يتيح الاستفادة من شبكة 10G). يعالج المشكلة #520. #16390 (alesapin). - إصلاح النمو غير المنضبط لحالة
quantileTDigest. #16680 (hrissan). - إضافة وصف الاستعلام الفرعي
VIEWإلىEXPLAIN. وتقييد تحسين دفع LIMIT إلى المصدر لـVIEW. وإضافة النسخ المتماثلة المحلية لـDistributedإلى خطة الاستعلام. #14936 (Nikolai Kochetov). - إصلاح
optimize_read_in_order/optimize_aggregation_in_orderمعmax_threads > 0ووجود expression فيORDER BY. #16637 (Azat Khuzhin). - إصلاح أداء القراءة من جداول
Mergeعند التعامل مع عدد كبير جدًا من جداولMergeTree. يعالج #7748. #16988 (Anton Popov). - أصبح بالإمكان الآن استبعاد partition بأمان عند وجود تطابق تام. مثال مفيد: افترض أن الجدول مُقسَّم حسب
intHash64(x) % 100وأن query تتضمن condition علىintHash64(x) % 100حرفيًا، وليس على x. #16253 (Amos Bird).
ميزة تجريبية
تحسينات البناء/الاختبار/التحزيم
- تحسينات في تغطية اختبارات بناء الصور. #17233 (alesapin).
- تحديث بيانات المنطقة الزمنية المضمنة إلى الإصدار 2020d (مع تحديث cctz أيضًا إلى أحدث نسخة من الفرع master). #17204 (filimonov).
- إصلاح تقرير UBSan في Poco. يُغلق هذا #12719. #16765 (alexey-milovidov).
- عدم تطبيق UBSan على مكتبات 3rd-party. #16764 (alexey-milovidov).
- إصلاح تقرير UBSan في قواميس من نوع cache. يُغلق هذا #12641. #16763 (alexey-milovidov).
- إصلاح تقرير UBSan عند محاولة تحويل عدد عشري عائم لا نهائي إلى عدد صحيح. يُغلق هذا #14190. #16677 (alexey-milovidov).
إصدار ClickHouse 20.11
إصدار ClickHouse v20.11.7.16-stable، 2021-03-02
تحسين
- ضبط uid / gid لمستخدم ومجموعة clickhouse صراحةً على القيم الثابتة (101) في صور clickhouse-server. #19096 (filimonov).
إصلاح الأخطاء
- إصلاح تعطل فهرس BloomFilter. يُصلح #19757. #19884 (Maksim Kita).
- كان من الممكن حدوث حالة توقف متبادل إذا كان system.text_log مُمكّنًا. يُصلح هذا #19874. #19875 (alexey-milovidov).
- في الإصدارات السابقة، كان من الممكن أن تتسبب الوسيطات غير المعتادة للدالة arrayEnumerateUniq في حدوث تعطل أو حلقة لا نهائية. يُغلق هذا #19787. #19788 (alexey-milovidov).
- إصلاح تجاوز سعة المكدس عند استخدام مقارنة دقيقة بين نوع حسابي ونوع String. #19773 (tavplubix).
- إصلاح fault segmentation في الدالة
bitmapAndnot. يُصلح #19668. #19713 (Maksim Kita). - قد تتسبب بعض الدوال التي تتعامل مع الأعداد الصحيحة الكبيرة في حدوث segfault. والأعداد الصحيحة الكبيرة ميزة تجريبية. يُغلق هذا #19667. #19672 (alexey-milovidov).
- إصلاح النتيجة غير الصحيحة للدالة
neighborمع الوسيطLowCardinality. يُصلح #10333. #19617 (Nikolai Kochetov). - إصلاح مشكلة use-after-free في CompressedWriteBuffer داخل Connection بعد قطع الاتصال. #19599 (Azat Khuzhin).
- قد يتوقف استعلام
DROP/DETACH TABLE table ON CLUSTER cluster SYNCعن الاستجابة، وقد تم إصلاح ذلك. يُصلح #19568. #19572 (tavplubix). - إصلاح تعبير المعرّف في استعلام CREATE DICTIONARY. #19571 (Maksim Kita).
- إصلاح SIGSEGV مع merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read=0/UINT64_MAX. #19528 (Azat Khuzhin).
- كان من الممكن حدوث تجاوز لسعة المخزن المؤقت (عند القراءة من الذاكرة) إذا استُدعيت الدالة
addMonthبوسيطات مُعدّة خصيصًا. يُصلح هذا #19441. يُصلح هذا #19413. #19472 (alexey-milovidov). - وضع علامة على الدفعة الموزعة على أنها تالفة في حال وجود كتلة بيانات فارغة في أحد الملفات. #19449 (Azat Khuzhin).
- إصلاح احتمال حدوث تجاوز سعة المخزن المؤقت في مكتبة Uber H3. راجع https://github.com/uber/h3/issues/392. هذا يُغلق #19219. #19383 (alexey-milovidov).
- إصلاح العمود
system.parts _state(LOGICAL_ERRORعند الاستعلام عن هذا العمود بسبب ترتيب غير صحيح). #19346 (Azat Khuzhin). - إصلاح الخطأ
Cannot convert column now64() because it is constant but values of constants are different in source and result. استكمالٌ لـ #7156. #19316 (Nikolai Kochetov). - إصلاح خلل قد يؤدي إلى تعليق استعلامَي
ALTERوDROPالمتزامنين أثناء معالجة جدول ReplicatedMergeTree. #19237 (alesapin). - إصلاح القراءة اللانهائية من ملف بتنسيق
ORC(أُدخل هذا الخلل في #10580). يُصلح #19095. #19134 (Nikolai Kochetov). - إصلاح خلل عند بدء التشغيل حيث لم يكن ClickHouse قادرًا على قراءة codec الضغط من
LowCardinality(Nullable(...))وكان يطرح الاستثناءAttempt to read after EOF. يُصلح #18340. #19101 (alesapin). - إصلاح الخطأ
There is no checkpointعند إدراج البيانات عبر واجهة HTTP باستخدام التنسيقTemplateأوCustomSeparated. يُصلح #19021. #19072 (tavplubix). - تقييد استعلامات
MODIFY TTLلجداولMergeTreeالمُنشأة بالصياغة القديمة. سابقًا كان الاستعلام ينجح، لكنه في الواقع لم يكن له أي تأثير. #19064 (Anton Popov). - التأكد من أن
groupUniqArrayيُرجع النوع الصحيح لوسيط من نوع Enum. هذا يُغلق #17875. #19019 (alexey-milovidov). - إصلاح الخطأ المحتمل
Expected single dictionary argument for functionعند استخدام الدالةignoreمع وسيطLowCardinality. يُصلح #14275. #19016 (Nikolai Kochetov). - إصلاح إدراج عمود
LowCardinalityفي جدول يستخدم المحركTinyLog. يُصلح #18629. #19010 (Nikolai Kochetov). - تعطيل
optimize_move_functions_out_of_anyلأن هذا التحسين ليس صحيحًا دائمًا. هذا يُغلق #18051. هذا يُغلق #18973. #18981 (alexey-milovidov). - تم إصلاح حالة جمود نادرة جدًا عند الإيقاف. #18977 (tavplubix).
- إصلاح خطأ يحدث عند إجراء serialize لعملية mutation تحتوي على نص مُهرَّب بشكل غير صحيح (مثل
ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')). يعالج #18878. #18944 (alesapin). - يجب أن تؤدي عملية Attach للـ partition إلى إعادة تعيين الـ mutation. #18804. #18935 (fastio).
- إصلاح احتمال حدوث تعليق عند الإيقاف في clickhouse-local. هذا يعالج #18891. #18893 (alexey-milovidov).
- إصلاح combinator *If مع دالة أحادية الوسيط وأنواع Nullable. #18806 (Azat Khuzhin).
- قد يرفض server عمليات
INSERTالموزعة غير المتزامنة إذا كان الإعدادnetwork_compression_methodمضبوطًا عالميًا على قيمة غيرdefault. هذا يعالج #18741. #18776 (alexey-milovidov). - تم إصلاح الخطأ
Attempt to read after eofعند محاولةCASTللقيمةNULLمنNullable(String)إلىNullable(Decimal(P, S)). الآن تُرجع الدالةCASTالقيمةNULLعندما يتعذر عليها تحليل قيمة decimal من nullable string. يعالج #7690. #18718 (Winter Zhang). - إصلاح Logger عند عدم تطابق عدد الوسيطات. #18717 (sundyli).
- إضافة دعم نوع البيانات FixedString. كنت أتلقى هذا الاستثناء “Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)” عند نسخ البيانات من MySQL إلى ClickHouse. يعالج هذا التصحيح الخطأ #18450، ويعالج أيضًا #6556. #18553 (awesomeleo).
- إصلاح احتمال ظهور الخطأ
Pipeline stuckأثناء استخدامORDER BYبعد subquery تحتوي على join من النوعRIGHTأوFULL. #18550 (Nikolai Kochetov). - إصلاح خطأ قد يؤدي إلى تعليق استعلامات
ALTERبعد تنفيذ kill للـ mutation المقابلة. اكتشفه thread fuzzer. #18518 (alesapin). - تعطيل الكتابة باستخدام AIO أثناء merges لأن ذلك قد يؤدي، في حالات نادرة جدًا، إلى تلف البيانات في أعمدة primary key أثناء merge. #18481 (alesapin).
- تعطيل constant folding للاستعلامات الفرعية في مرحلة التحليل عندما يتعذر حساب النتيجة. #18446 (Azat Khuzhin).
- تم إصلاح الخطأ
value is too shortعند تنفيذ الدوالtoType(...)(toDateوtoUInt32وغيرها) مع وسيطة من النوعNullable(String). تُرجع هذه الدوال الآنNULLعند حدوث أخطاء parsing بدلًا من throwing exception. يُصلح هذا #7673. #18445 (tavplubix). - تقييد عمليات merges من wide إلى compact parts. وفي حالة vertical merge كان ذلك يؤدي إلى part ناتج تالف. #18381 (Anton Popov).
- إصلاح تعبئة الجدول
system.settings_profile_elements. يُصلح طلب السحب هذا #18231. #18379 (Vitaly Baranov). - إصلاح index analysis للدوال الثنائية ذات الوسيطة الثابتة، والتي كانت تؤدي إلى نتائج query غير صحيحة. يُصلح هذا #18364. #18373 (Amos Bird).
- إصلاح الأعطال المحتملة في aggregate functions مع combinator
Distinctعند استخدام two-level aggregation. يُصلح هذا #17682. #18365 (Anton Popov). - يمكن الآن تنفيذ
SELECT count() FROM tableإذا كان بالإمكان تحديد أي عمود واحد فقط منtable. يُصلح طلب السحب هذا #10639. #18233 (Vitaly Baranov). - يتطلب
SELECT JOINالآن امتيازSELECTعلى كل جدول من الجداول المضمومة. يُصلح طلب السحب هذا #17654. #18232 (Vitaly Baranov). - إصلاح احتمال عدم اكتمال نتيجة query أثناء القراءة من
MergeTree*في حالة read backoff (الرسالة<Debug> MergeTreeReadPool: Will lower number of threadsفي logs). أُدخل هذا في #16423. يُصلح هذا #18137. #18216 (Nikolai Kochetov). - إصلاح الخطأ الذي يحدث عندما لا يؤدي الاستعلام
MODIFY COLUMN ... REMOVE TTLفعليًا إلى إزالة TTL من العمود. #18130 (alesapin). - إصلاح الدوال غير الحتمية مع مُحسِّن predicate. يُصلح هذا #17244. #17273 (Winter Zhang).
- قد تبقى Mutation معلّقة في انتظار part غير موجود بعد
MOVEأوREPLACE PARTITIONأو، في حالات نادرة، بعدDETACHأوDROP PARTITION. تم إصلاح ذلك. #15537 (tavplubix).
تحسينات البناء/الاختبار/التحزيم
إصدار ClickHouse v20.11.6.6-stable، 2020-12-24
إصلاح الأخطاء
- أُصلحت مشكلة تعذّر وصول الخادم إلى عملية
clickhouse-odbc-bridgeعلى الأجهزة التي تستخدم مكدسIPv4/IPv6مزدوجًا، كما أُصلحت مشكلة كانت تحدث عند تنفيذ تحديثات Dictionary الخاصة بـ ODBC باستخدام استعلامات غير سليمة و/أو كانت تتسبب في انهيارات. وقد يؤدي هذا على الأرجح إلى إغلاق #14489. #18278 (Denis Glazachev). - أُصلحت مقارنة المفاتيح بين النوعين Enum وInt. هذا يُصلح #17989. #18214 (Amos Bird).
- أُصلح انهيار ناتج عن تحويل المفتاح الفريد في محرك database
MaterializeMySQL. هذا يُصلح #18186 ويُصلح #16372 #18211 (Winter Zhang). - أُصلح الخطأ
std::out_of_range: basic_stringأثناء parsing عنوان URL الخاص بـ S3. #18059 (Vladimir Chebotarev). - أُصلحت المشكلة التي كانت تؤدي إلى عدم مزامنة بعض الجداول إلى ClickHouse من MySQL بسبب عدم دعم تحويل prefix index في MySQL ضمن
MaterializeMySQL. هذا يُصلح #15187 ويُصلح #17912 #17944 (Winter Zhang). - أُصلحت المشكلة التي كان فيها query optimization يُنتج نتيجة غير صحيحة إذا كان الاستعلام يحتوي على
ARRAY JOIN. #17887 (sundyli). - أُصلح احتمال حدوث segfault في aggregate function
topK. هذا يغلق #17404. #17845 (Maksim Kita). - لا تُستعاد parts من WAL إذا كان
in_memory_parts_enable_walمعطّلًا. #17802 (detailyang). - أُصلحت مشكلة فشل ClickHouse في استئناف connection إلى خوادم MySQL. #17681 (Alexander Kazakov).
- أُصلح السلوك غير المتسق للخيـار
optimize_trivial_count_queryمع predicate على partition. #17644 (Azat Khuzhin). - أُصلحت مشكلة ظهور جدول
system.stack_traceفارغًا عندما يكون server قيد التشغيل في وضع daemon. #17630 (Amos Bird). - أُصلح السلوك الذي كان قد يؤدي إلى تسجيل الاستثناء
fmt::v7::format_errorفي الخلفية لدى MergeTree tables. هذا يُصلح #17613. #17615 (alexey-milovidov). - أُصلح السلوك عند استخدام clickhouse-client في interactive mode مع استعلامات multiline، إذ كان comment أحادي السطر يمتدّ بالخطأ حتى نهاية الاستعلام. هذا يُصلح #13654. #17565 (alexey-milovidov).
- أُصلحت المشكلة التي قد تؤدي، في حالات نادرة جدًا، إلى توقف server عن قبول connections. #17542 (alexey-milovidov).
- تم إصلاح تعليق استعلام alter عندما تكون الـ mutation المقابلة قد أُوقفت على replica أخرى. يعالج هذا #16953. #17499 (alesapin).
- تم إصلاح خطأ كان يحدث عندما يُقدَّر حجم mark cache بأقل من قيمته الفعلية في ClickHouse. وقد يحدث ذلك عند وجود عدد كبير من الملفات الصغيرة جدًا التي تحتوي على marks. #17496 (alesapin).
- تم إصلاح
ORDER BYعند تفعيل الإعدادoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - تم إصلاح التكرارات بعد
DISTINCTالتي كان يمكن أن تحدث بسبب تحسين غير صحيح. يعالج هذا #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - تم إصلاح crash أثناء القراءة من جدول
JOINمع types منLowCardinality. يعالج هذا #17228. #17397 (Nikolai Kochetov). - تم إصلاح إبطال index الخاص بـ set عند وجود أعمدة const في الـ subquery. يعالج هذا #17246 . #17249 (Amos Bird).
- تم إصلاح احتمال حدوث index analysis غير صحيح عندما تختلف types المقارنة في index. يعالج هذا #17122. #17145 (Amos Bird).
- تم إصلاح مقارنة
ColumnConstالتي قد تؤدي إلى crash. يعالج هذا #17088 . #17135 (Amos Bird). - تم إصلاح خطأ كان قد يؤدي إلى تعليق queries الخاصة بـ
ON CLUSTERإلى الأبد علىReplicatedMergeTreeTablesغير القائدة. #17089 (alesapin). - تم إصلاح خطأ اكتشفه fuzzer في الدالة
fuzzBits. يعالج هذا #16980. #17051 (hexiaoting). - تجنُّب أخطاء الشبكة غير الضرورية في queries البعيدة التي قد تُلغى أثناء التنفيذ، مثل queries التي تحتوي على
LIMIT. #17006 (Azat Khuzhin). - تم إصلاح نتائج غير صحيحة في الأعداد الصحيحة الكبيرة (128 و256 بت) عند التحويل من double. #16986 (Mike).
- أُعيد حلّ عنوان IP الخاص بـ
format_avro_schema_registry_urlعند حدوث أخطاء. #16985 (filimonov). - تم إصلاح احتمال حدوث crash في server بعد
ALTER TABLE ... MODIFY COLUMN ... NewTypeعندما يحتويSELECTعلى تعبيرWHEREعلى العمود الجاري تعديله، ولم يكن alter قد اكتمل بعد. #16968 (Amos Bird). - لم تكن معلومات blame تُحتسب بشكل صحيح في
clickhouse-git-import. #16959 (alexey-milovidov). - تم إصلاح تحسين
ORDER BYمع الدوال الرتيبة. يُصلح هذا #16107. #16956 (Anton Popov). - تم إصلاح تحسين
GROUP BYعند تفعيل الإعدادoptimize_aggregators_of_group_by_keysومع عملياتJOIN. يُصلح هذا #12604. #16951 (Anton Popov). - يجب أن ينشئ سكربت التثبيت دائمًا المجلدات الفرعية داخل مجلدات config. وهذا ينطبق فقط على Docker build مع config مخصص. #16936 (filimonov).
- تم إصلاح الخطأ المحتمل
Illegal type of argumentفي الاستعلامات التي تستخدمORDER BY. يُصلح هذا #16580. #16928 (Nikolai Kochetov). - ألغِ multipart upload إذا لم تُكتب أي بيانات إلى WriteBufferFromS3. #16840 (Pavel Kovalenko).
- تم إصلاح التعطل عند استخدام
anyبدون أي argument. يُصلح هذا #16803. #16826 (Amos Bird). - تم إصلاح السلوك الذي كان يجعل ClickHouse يعيد دائمًا القيمة 0 بدلًا من عدد الصفوف المتأثرة في استعلامات
INSERTعبر protocol MySQL. يُصلح هذا #16605. #16715 (Winter Zhang). - تم إصلاح النمو غير المنضبط لـ TDigest. #16680 (hrissan).
- تم إصلاح فشل الاستعلام البعيد عند استخدام اللاحقة
ifفي aggregate function. يُصلح هذا #16574 ويُصلح #16231. #16610 (Winter Zhang). - تم إصلاح السلوك غير المتسق الناتج عن
select_sequential_consistencyفي استعلام count البسيط المُحسَّن وفيsystem.tables. #16309 (Hao Chen). - إصدار error عند استخدام ColumnTransformer لاستبدال column غير موجود. #16183 (hexiaoting).
إصدار ClickHouse v20.11.3.3-stable، 2020-11-13
إصلاح الأخطاء
- إصلاح حالات انهيار صامتة نادرة عند تفعيل أداة توصيف الاستعلامات، إذا كان ClickHouse مثبّتًا على نظام تشغيل يتضمن إصدارًا من glibc يحتوي، على ما يبدو، على جداول فك التكديس غير المتزامنة معطوبة لبعض الدوال. يُصلح هذا #15301. ويُصلح هذا #13098. #16846 (alexey-milovidov).
إصدار ClickHouse v20.11.2.1، 2020-11-11
تغيير غير متوافق مع الإصدارات السابقة
- إذا تم تحديد
profileمعيّن في قسم الإعدادdistributed_ddl، فقد كان هذا الملف التعريفي يستبدل إعدادات الملف التعريفيdefaultعند بدء تشغيل الخادم. وقد أُصلح ذلك، وأصبحت إعدادات استعلامات DDL الموزعة الآن لا تؤثر في إعدادات الخادم العامة. #16635 (tavplubix). - تقييد استخدام أنواع البيانات غير القابلة للمقارنة (مثل
AggregateFunction) في المفاتيح (مفتاح الفرز، والمفتاح الأساسي، ومفتاح التقسيم، وما إلى ذلك). #16601 (alesapin). - إزالة استعلامات
ANALYZEوAST، وجعل الإعدادenable_debug_queriesمتروكاً لأنه أصبح الآن جزءاً من الاستعلامEXPLAINكامل الميزات. #16536 (Ivan). - جُعلت الدوال التجميعية
boundingRatioوrankCorrوretentionوtimeSeriesGroupSumوtimeSeriesGroupRateSumوwindowFunnel، عن طريق الخطأ، غير حساسة لحالة الأحرف. والآن أصبحت أسماؤها حساسة لحالة الأحرف كما هو مقصود. ويجب أن تقتصر الدوال غير الحساسة لحالة الأحرف على الدوال المحددة في معيار SQL أو المصممة للتوافق مع أنظمة DBMS الأخرى أو الدوال المشابهة لها. #16407 (alexey-milovidov). - أصبحت الدالة
rankCorrتُرجع nan عند عدم كفاية البيانات #16124. #16135 (hexiaoting). - عند الترقية من إصدارات أقدم من 20.5، إذا تم إجراء تحديث متدرج وكان العنقود يضم في الوقت نفسه إصدارات 20.5 أو أحدث وإصدارات أقدم من 20.5، ثم أُعيد تشغيل عقد ClickHouse ذات الإصدارات القديمة وعمل الإصدار القديم في وجود إصدارات أحدث، فقد يؤدي ذلك إلى أخطاء
Part ... intersects previous part. ولتجنب هذا الخطأ، ثبّت أولاً حزمclickhouse-serverالأحدث على جميع عقد العنقود ثم أجرِ عمليات إعادة التشغيل (بحيث يبدأclickhouse-serverبالإصدار الجديد عند إعادة تشغيله).
ميزة جديدة
- أُضيف دعم LDAP كدليل للمستخدمين غير الموجودين محليًا. #12736 (Denis Glazachev).
- أُضيف الجدول
system.replicated_fetchesالذي يعرض عمليات الجلب الخلفية الجارية حاليًا. #16428 (alesapin). - أُضيف الإعداد
date_time_output_format. #15845 (Maksim Kita). - أُضيفت واجهة ويب بسيطة إلى ClickHouse. #16158 (alexey-milovidov).
- يتيح قراءة/كتابة رسالة Protobuf واحدة دفعة واحدة (من دون محددات طول). #15199 (filimonov).
- أُضيف دعم أولي لـ OpenTelemetry. يقبل ClickHouse الآن ترويسات traceparent الخاصة بـ OpenTelemetry عبر بروتوكولي Native وHTTP، ويمررها لاحقًا في بعض الحالات. وتُحفَظ spans التتبّع للاستعلامات المنفذة في الجدول
system.opentelemetry_span_log. #14195 (Alexander Kuzmenkov). - أصبح بالإمكان تحديد primary key ضمن قائمة الأعمدة في استعلام
CREATE TABLE. وهذا مطلوب للتوافق مع لهجات SQL الأخرى. #15823 (Maksim Kita). - تنفيذ
OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}في استعلام SELECT مع ORDER BY. وهذه هي الطريقة القياسية في SQL لتحديدLIMIT. #15855 (hexiaoting). - الدالة
errorCodeToName— تُرجع اسم المتغير الخاص بالخطأ (وهو مفيد لتحليل query_log وما شابهه). والجدولsystem.errors— يعرض عدد مرات حدوث الأخطاء (مع مراعاةsystem_events_show_zero_values). #16438 (Azat Khuzhin). - أُضيفت الدالة
untuple، وهي دالة خاصة يمكنها إضافة أعمدة جديدة إلى قائمة SELECT عبر توسيع named tuple. #16242 (Nikolai Kochetov, Amos Bird). - أصبح بالإمكان الآن تمرير المعرّفات عبر query parameters. ويمكن استخدام هذه المعلمات كعناصر جدول أو أعمدة. #16594 (Amos Bird).
- أُضيف دعم الأعداد الصحيحة الكبيرة (UInt256 وInt128 وInt256) ونوع البيانات UUID إلى فهرس BloomFilter في MergeTree. وتُعد الأعداد الصحيحة الكبيرة ميزة تجريبية. #16642 (Maksim Kita).
- أُضيفت الدالة
farmFingerprint64(تجزئة غير مشفرة للسلاسل النصية). #16570 (Jacob Hayes). - أُضيف
log_queries_min_query_duration_ms، ولن تُسجَّل فيquery_log/query_thread_logإلا الاستعلامات الأبطأ من القيمة المحددة في هذا الإعداد (أي ما يشبهslow_query_logفي mysql). #16529 (Azat Khuzhin). - إمكانية إنشاء Docker image بالاعتماد على
Alpine. ويستخدم binary مترجمًا مسبقًا ومكونات glibc من ubuntu 20.04. #16479 (filimonov). - أُضيفت دالتا CAST
toUUIDOrNullوtoUUIDOrZero. #16337 (Maksim Kita). - أُضيف الإعداد
max_concurrent_queries_for_all_users، راجع #6636 للاطلاع على Use case. #16154 (nvartolomei). - أُضيف خيار جديد
print_query_idإلى clickhouse-client. ويساعد هذا الخيار على إنشاء سلاسل نصية عشوائية باستخدام Query id الحالي الذي ينشئه Client. كما يُطبع Query id أيضًا في clickhouse-client افتراضيًا. #15809 (Amos Bird). - أُضيفت الدالتان
tidوlogTrace. وبذلك يُغلَق #9434. #15803 (flynn). - أُضيفت الدالة
formatReadableTimeDeltaالتي تُنسّق الفارق الزمني إلى سلسلة نصية سهلة القراءة … #15497 (Filipe Caixeta). - أُضيف الخيار
disable_mergesللأحجام في disk configuration متعددة الأقراص. #13956 (Vladimir Chebotarev).
ميزة تجريبية
- الدوال الجديدة
encryptوaes_encrypt_mysqlوdecryptوaes_decrypt_mysql. تعمل هذه الدوال ببطء، لذا نعتبرها ميزة تجريبية. #11844 (Vasily Nemkov).
إصلاح الأخطاء
- إخفاء
passwordفيdata_pathضمنsystem.distribution_queue. #16727 (Azat Khuzhin). - إصلاح العامل
INعبر عدة أعمدة وtuples مع تمكين الإعدادtransform_null_in. يعالج هذا #15310. #16722 (Anton Popov). - كان الإعداد
max_parallel_replicasيعمل بشكل غير صحيح إذا كان الجدول الجاري الاستعلام عنه لا يستخدم sampling. يعالج هذا #5733. #16675 (alexey-milovidov). - إصلاح optimize_read_in_order/optimize_aggregation_in_order عند استخدام max_threads > 0 ووجود expression في ORDER BY. #16637 (Azat Khuzhin).
- كان احتساب تعبيرات
DEFAULTينطوي على احتمال حدوث تعارض في الأسماء (مع أن احتمال حدوث ذلك كان ضئيلًا جدًا). يعالج هذا #9359. #16612 (alexey-milovidov). - إصلاح وحدة
query_thread_log.query_duration_ms. #16563 (Azat Khuzhin). - إصلاح خطأ عند استخدام MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine. وتُعد
MaterializeMySQLميزة تجريبية. #16504 (TCeason). - كان argument مُعدّ خصيصًا للدالة
roundمعDecimalيؤدي إلى قسمة صحيحة على الصفر. يعالج هذا #13338. #16451 (alexey-milovidov). - إصلاح DROP TABLE لـ Distributed (حالة تسابق مع INSERT). #16409 (Azat Khuzhin).
- إصلاح معالجة العناصر الكبيرة جدًا في replication queue. قد تظهر عناصر كبيرة جدًا في استعلامات ALTER إذا كانت بنية الجدول كبيرة للغاية (تقارب 1 ميغابايت). يعالج هذا #16307. #16332 (alexey-milovidov).
- إصلاح السلوك غير المتسق حيث كان يمكن إسقاط جزء من البيانات المُعادة لأن المجموعة المستخدمة لتصفيتها لم تُنشأ. #16308 (Nikita Mikhaylov).
- إصلاح dictGet في sharding_key (وفي مواضع مشابهة، أي عندما يتم تخزين Context الخاص بالدالة بشكل دائم). #16205 (Azat Khuzhin).
- إصلاح الاستثناء الذي يتم طرحه في
clickhouse-localعند محاولة تنفيذ الأمرOPTIMIZE. يعالج هذا #16076. #16192 (filimonov). - يعالج هذا التراجع في #15780، فمثلًا أصبح
indexOf([1, 2, 3], toLowCardinality(1))محظورًا الآن، مع أنه لا ينبغي أن يكون كذلك. #16038 (Mike). - إصلاح خلل في قاعدة بيانات MySQL. عند تعطل خادم MySQL المستخدم كمحرك قاعدة بيانات، كانت بعض الاستعلامات تُطلق استثناءً لأنها تحاول جلب الجداول من الخادم المعطَّل، رغم أن ذلك غير ضروري. على سبيل المثال، يجب أن يعمل الاستعلام
SELECT ... FROM system.partsمع جداول MergeTree فقط، من دون الوصول إلى قاعدة بيانات MySQL إطلاقًا. #16032 (Kruglov Pavel). - الآن سيُطرَح استثناء إذا كانت القيمة الافتراضية في
ALTER MODIFY COLUMN ... DEFAULT ...غير متوافقة مع نوع العمود. يُصلح #15854. #15858 (alesapin). - أُصلحت الدالتان IPv4CIDRToRange/IPv6CIDRToRange لتقبلا قيم أعمدة IP الثابتة. #15856 (vladimir-golovchenko).
تحسين
- اعتبر
INTERVAL '1 hour'مكافئًا لـINTERVAL 1 HOUR، للتوافق مع Postgres وما شابهه. يُصلح هذا #15637. #15978 (flynn). - تمكين تحليل قيم enum وفقًا لمعرّفاتها الرقمية في تنسيقات الإدخال CSV وTSV وJSON. #15685 (vivarum).
- تحسين جدولة مهام القراءة لمعمارية JBOD وتخزين
MergeTree. إعداد جديد هوread_backoff_min_concurrency، ويُستخدم كحد أدنى لعدد خيوط القراءة. #16423 (Amos Bird). - إضافة الدعم المفقود لـ
LowCardinalityفي تنسيقAvro. #16521 (Mike). - حل بديل لاستخدام
S3مع خادم nginx كـ proxy. لا يقبل Nginx حاليًا عناوين URL ذات المسار الفارغ مثلhttp://domain.com?delete، لكن aws-sdk-cpp القياسي يُنتج هذا النوع من العناوين. يستخدم هذا الالتزام إصدارًا مُرقّعًا من aws-sdk-cpp، بحيث يجعل المسار في هذه الحالات ”/”، مثلhttp://domain.com/?delete. #16814 (ianton-ru). - تحسين التشخيص عند أخطاء التحليل في بيانات الإدخال. توفير رقم الصف في أخطاء
Cannot read all data. #16644 (alexey-milovidov). - جعل سلوك
minMapوmaxMapأكثر ملاءمة. لن يتم تخطي القيم الصفرية في النتيجة. يُصلح هذا #16087. #16631 (Ildus Kurbangaliev). - تحسين تحديث إعدادات ZooKeeper أثناء وقت التشغيل. #16630 (sundyli).
- تطبيق عبارة SETTINGS في أقرب وقت ممكن. يتيح ذلك تعديل المزيد من الإعدادات داخل الاستعلام. هذا يُغلق #3178. #16619 (alexey-milovidov).
- يُخزَّن الحقل
event_time_microsecondsالآن بصيغة Decimal64، وليس UInt64. #16617 (Nikita Mikhaylov). - يمكن الآن استخدام الدوال ذات المعاملات في محوّل الأعمدة
APPLY. #16589 (Amos Bird). - تحسين جدولة المهمة الخلفية التي تزيل بيانات الجداول المحذوفة في قواعد البيانات
Atomic. لا تنشئ قواعد البياناتAtomicرابطًا رمزيًا معطوبًا إلى دليل بيانات الجدول إذا لم يكن للجدول دليل بيانات فعليًا. #16584 (tavplubix). - يمكن للاستعلامات الفرعية في قسم
WITH(CTE) الإشارة إلى الاستعلامات الفرعية السابقة في قسمWITHبأسمائها. #16575 (Amos Bird). - إضافة current_database إلى
system.query_thread_log. #16558 (Azat Khuzhin). - السماح بجلب الأجزاء التي أصبحت committed بالفعل أو outdated في الـ instance الحالية إلى الدليل
detached. يفيد ذلك عند ترحيل الجداول من cluster أخرى مع وجود تعيين من N إلى 1 بين shards. كما أنه متسق مع تنفيذfetchPartitionالحالي. #16538 (Amos Bird). - عدة تحسينات على
RabbitMQ: أُصلح الخطأ الخاص بـ #16263. كما جرى تقليل lifetime الخاصة بحلقة الأحداث. وأُضيف إعداد أكثر كفاءة لـ queues. #16426 (Kseniia Sumarokova). - إصلاح تحقق debug في الدالة
quantileDeterministic. في الإصدار السابق، كان قد يجري أيضًا نقل بيانات عبر الشبكة بكمية تصل إلى الضعف، رغم عدم وجود أي خطأ فعلي. هذا يُصلح #15683. #16410 (alexey-milovidov). - إضافة المقياس
TablesToDropQueueSize. وهو يساوي عدد الجداول التي نُفِّذت عليها عملية drop وتنتظر إزالة البيانات في الخلفية. #16364 (tavplubix). - تشخيصات أفضل عند قطع client للـ connection. في الإصدارات السابقة، كانت الاستثناءات
Attempt to read after EOFوBroken pipeتُسجَّل في server. في الإصدار الجديد، أصبحت الرسالة المعلوماتية:Client has dropped the connection, cancel the query.. #16329 (alexey-milovidov). - إضافة دعم total_rows/total_bytes (من system.tables) لمحركات الجداول Set/Join. #16306 (Azat Khuzhin).
- أصبح من الممكن الآن تحديد
PRIMARY KEYبدونORDER BYلعائلة محركات الجداول MergeTree. يغلق #15591. #16284 (alesapin). - إذا لم يكن في النظام مجلد tmp (مثل chroot أو misconfigutation وما إلى ذلك)، فسيُنشئ
clickhouse-localمجلدًا فرعيًا مؤقتًا في current directory. #16280 (filimonov). - إضافة دعم للـ data types المتداخلة (مثل named tuple) كأنواع فرعية. يُصلح #15587. #16262 (Ivan).
- دعم
database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNCفيDROP DATABASE. #16127 (Azat Khuzhin). - إضافة
allow_nondeterministic_optimize_skip_unused_shards(للسماح بالحالات non deterministic مثلrand()أوdictGet()في sharding key). #16105 (Azat Khuzhin). - إصلاح
memory_profiler_step/max_untracked_memoryللاستعلامات عبر HTTP (مع تضمين اختبار). وكذلك إصلاح المشكلة المتمثلة في أن تعديل هذه القيمة عمومًا في config xml لا يفيد أيضًا، لأن تلك Settings لا تُطبَّق أصلًا، وإنما تُستخدم فقط القيمة default (4MB) used. وإصلاحquery_idلأعلى ThreadStatus جذري في استعلام http (من خلال تهيئة QueryScope بعد قراءة query_id). #16101 (Azat Khuzhin). - أصبح الآن مسموحًا بتنفيذ استعلامات
ALTER ... ON CLUSTERبغضّ النظر عن إعداد<internal_replication>في تهيئة العنقود. #16075 (alesapin). - إصلاح مشكلة نادرة قد تتسبب في إنهاء
clickhouse-clientبشكل مفاجئ عند الخروج بسبب تحميل الاقتراحات. يُصلح هذا #16035. #16047 (alexey-milovidov). - إضافة دعم لمخطط
cacheفي قواميسRedisذات المفتاح المركب. #15985 (Anton Popov). - إصلاح تعليق الاستعلام (حلقة لا نهائية) في حالة سوء التهيئة (عند ضبط
connections_with_failover_max_triesعلى 0). #15876 (Azat Khuzhin). - تغيير مستوى بعض رسائل السجل من المعلومات إلى التصحيح، بحيث لا تظهر رسائل المعلومات مع كل استعلام. يُغلق هذا #5293. #15816 (alexey-milovidov).
- إزالة مقاييس
MemoryTrackingInBackground*لتجنّب نتائج قد تكون مضللة. يُصلح هذا #15684. #15813 (alexey-milovidov). - إضافة إعادة الاتصال إلى أداة
zookeeper-dump-tree. #15711 (alexey-milovidov). - السماح بتحديد قائمة الأعمدة صراحةً في استعلام
CREATE TABLE table AS table_function(...). يُصلح هذا #9249 ويُصلح #14214. #14295 (tavplubix).
تحسين الأداء
- عدم دمج الأجزاء عبر التقسيمات في SELECT FINAL. #15938 (Kruglov Pavel).
- تحسين أداء الدوال التجميعية
-OrNullو-OrDefault. #16661 (alexey-milovidov). - تحسين أداء
quantileMerge. في الإصدارات السابقة، كان بطيئًا بشكل مزعج. ويغلق هذا #1463. #16643 (alexey-milovidov). - تحسين أداء الدوال المنطقية قليلًا. #16347 (alexey-milovidov).
- تحسين أداء إسناد عمليات الدمج في محركات جداول MergeTree. ومن المفترض ألا يكون ذلك ملحوظًا للمستخدم. #16191 (alesapin).
- تسريع تحميل Dictionary من النوع hashed/sparse_hashed عبر التخصيص المسبق لجدول hash. #15454 (Azat Khuzhin).
- لم يعد تحسين count البسيط بسيطًا تمامًا الآن. ويمكن أيضًا تحسين الشروط التي تحتوي على تعبير partition مطابق تمامًا. ويصلح هذا أيضًا #11092 الذي يعيد قيمة count غير صحيحة عندما يكون
max_parallel_replicas > 1. #15074 (Amos Bird).
تحسينات في البناء/الاختبار/الحزم
- إضافة فحص لاكتشاف عدم الاستقرار في الاختبارات عديمة الحالة. سيكتشف هذا مسبقًا الاختبارات الوظيفية التي يُحتمل أن تكون غير مستقرة، قبل دمجها. #16238 (alesapin).
- استخدام الإصدار الصحيح من
croaringبدلًا من النسخة المجمّعة. #16285 (sundyli). - تحسين توليد ملفات البناء لنظام البناء
ya.make(Arcadia). #16700 (alexey-milovidov). - إضافة أداة للتحقق من ملف MySQL BinLog لمحرك قاعدة البيانات
MaterializeMySQL. وتُعدMaterializeMySQLميزة تجريبية. #16223 (Winter Zhang). - التحقق من وجود بت التنفيذ في الملفات غير التنفيذية. كثيرًا ما يُضيف المستخدمون، عن طريق الخطأ، ملفات تنفيذية ضمن commit قادمة من Windows. #15843 (alexey-milovidov).
- التحقق من وجود
#pragma onceفي ملفات الترويسة. #15818 (alexey-milovidov). - إصلاح صيغة الشيفرة غير الصحيحة
&vector[idx]في libhdfs3. وهذا يصلح بناء التصحيح لـ libcxx. انظر أيضًا https://github.com/ClickHouse-Extras/libhdfs3/pull/8 . #15815 (Amos Bird). - إصلاح بناء إحدى أدوات الأمثلة المتنوعة على Mac OS. لاحظ أننا لا نبني الأمثلة على Mac OS في التكامل المستمر لدينا (نحن نبني فقط الملف التنفيذي لـ ClickHouse)، لذا فمن شبه المؤكد أن يتعطل هذا مجددًا. ويعالج هذا #15804. #15808 (alexey-milovidov).
- تبسيط سكربت التهيئة Sys/V. #14135 (alexey-milovidov).
- تمت إضافة
boost::program_optionsإلىdb_generatorلزيادة سهولة استخدامه. ويغلق هذا #15940. #15973 (Nikita Mikhaylov).
إصدار ClickHouse 20.10
إصدار ClickHouse v20.10.7.4-stable، 2020-12-24
إصلاح الأخطاء
- تم إصلاح المشكلة التي تحدث عندما يتعذر على الخادم الوصول إلى عملية
clickhouse-odbc-bridgeعلى الأجهزة ذات مكدسIPv4/IPv6المزدوج، كما تم إصلاح المشكلة التي تحدث عند تنفيذ تحديثات قاموس ODBC باستخدام استعلامات غير سليمة و/أو تتسبب في حدوث crash. قد يؤدي هذا إلى إغلاق #14489. #18278 (Denis Glazachev). - تم إصلاح مقارنة المفتاح بين النوعين Enum و Int. يصلح هذا #17989. #18214 (Amos Bird).
- تم إصلاح crash في تحويل المفتاح الفريد في محرك قاعدة البيانات
MaterializeMySQL. يصلح هذا #18186 ويصلح #16372 #18211 (Winter Zhang). - تم إصلاح الخطأ
std::out_of_range: basic_stringأثناء parsing عنوان URL في S3. #18059 (Vladimir Chebotarev). - تم إصلاح المشكلة التي كانت تؤدي إلى عدم مزامنة بعض الجداول من MySQL إلى ClickHouse بسبب عدم دعم تحويل فهرس البادئة في MySQL ضمن MaterializeMySQL. يصلح هذا #15187 ويصلح #17912 #17944 (Winter Zhang).
- تم إصلاح segfault محتمل في
topKaggregate function. يُغلق هذا #17404. #17845 (Maksim Kita). - لا تتم استعادة الأجزاء من
WALإذا كانin_memory_parts_enable_walمعطلاً. #17802 (detailyang). - تم إصلاح المشكلة التي كان فيها ClickHouse يفشل في استئناف الاتصال بخوادم MySQL. #17681 (Alexander Kazakov).
- تم إصلاح مشكلة فراغ جدول
system.stack_traceعندما يكون الخادم قيد التشغيل في وضع daemon. #17630 (Amos Bird). - تم إصلاح السلوك عند استخدام
clickhouse-clientفي interactive mode مع استعلامات multiline، حيث كان التعليق أحادي السطر يمتد بالخطأ حتى نهاية الاستعلام. يصلح هذا #13654. #17565 (alexey-milovidov). - تم إصلاح المشكلة التي قد يتوقف فيها الخادم عن قبول الاتصالات في حالات نادرة جدًا. #17542 (alexey-milovidov).
- تم إصلاح تعليق استعلام
ALTERعندما كانت الـ mutation المقابلة قد قُتلت على replica أخرى. يصلح هذا #16953. #17499 (alesapin). - تم إصلاح الخلل الذي كان يؤدي إلى تقليل تقدير حجم mark cache في ClickHouse. وقد يحدث هذا عند وجود عدد كبير من الملفات الصغيرة جدًا التي تحتوي على marks. #17496 (alesapin).
- تم إصلاح
ORDER BYمع الإعداد المفعّلoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - تم إصلاح التكرارات بعد
DISTINCTالتي كان يمكن أن تحدث بسبب تحسين غير صحيح. يُصلح هذا #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - تم إصلاح تعطل أثناء القراءة من جدول
JOINمع أنواعLowCardinality. يُصلح هذا #17228. #17397 (Nikolai Kochetov). - تم إصلاح إبطال set index عند وجود أعمدة const في الاستعلام الفرعي. يُصلح هذا #17246. #17249 (Amos Bird).
- تم إصلاح مقارنة
ColumnConstالتي كانت تؤدي إلى تعطل. يُصلح هذا #17088. #17135 (Amos Bird). - تم إصلاح خلل قد يتسبب في تعليق استعلامات
ON CLUSTERإلى الأبد علىReplicatedMergeTreeTablesغير القائدة. #17089 (alesapin). - تم إصلاح خلل اكتشفه fuzzer في الدالة
fuzzBits. يُصلح هذا #16980. #17051 (hexiaoting). - تجنُّب أخطاء الشبكة غير الضرورية في الاستعلامات البعيدة التي قد تُلغى أثناء التنفيذ، مثل الاستعلامات التي تحتوي على
LIMIT. #17006 (Azat Khuzhin). - تم إصلاح ظهور نتائج خاطئة في الأعداد الصحيحة الكبيرة (128 و256 بت) عند التحويل من double. #16986 (Mike).
- إعادة حل عنوان IP الخاص بـ
format_avro_schema_registry_urlعند حدوث أخطاء. #16985 (filimonov). - تم إصلاح احتمال تعطل server بعد
ALTER TABLE ... MODIFY COLUMN ... NewTypeعندما يحتويSELECTعلى تعبيرWHEREعلى العمود الجاري تعديله، ولم يكن التعديل قد اكتمل بعد. #16968 (Amos Bird). - لم تكن معلومات blame تُحتسب بشكل صحيح في
clickhouse-git-import. #16959 (alexey-milovidov). - تم إصلاح تحسين ORDER BY مع الدوال الرتيبة. يُصلح هذا #16107. #16956 (Anton Popov).
- تم إصلاح تحسين GROUP BY عند تمكين الإعداد
optimize_aggregators_of_group_by_keysومع joins. يُصلح هذا #12604. #16951 (Anton Popov). - يجب أن ينشئ برنامج التثبيت النصي دائمًا الأدلة الفرعية داخل مجلدات config. وهذا ذو صلة فقط ببنية Docker مع config مخصص. #16936 (filimonov).
- إصلاح الخطأ المحتمل
Illegal type of argumentفي الاستعلامات التي تتضمنORDER BY. يعالج هذا #16580. #16928 (Nikolai Kochetov). - إلغاء الرفع متعدد الأجزاء إذا لم تُكتب أي بيانات إلى
WriteBufferFromS3. #16840 (Pavel Kovalenko). - إصلاح تعطل عند استخدام
anyبدون أي وسيطات. يعالج هذا #16803. #16826 (Amos Bird). - إصلاح السلوك الذي كان يجعل ClickHouse يعيد دائمًا القيمة 0 بدلًا من عدد الصفوف المتأثرة في استعلامات
INSERTعبر بروتوكول MySQL. يعالج هذا #16605. #16715 (Winter Zhang). - إصلاح النمو غير المتحكم فيه لـ
TDigest. #16680 (hrissan). - إصلاح فشل الاستعلام البعيد عند استخدام اللاحقة
ifفي دالة تجميعية. يعالج هذا #16574 ويعالج #16231 #16610 (Winter Zhang).
إصدار ClickHouse v20.10.4.1-stable، 2020-11-13
إصلاح الأخطاء
- إصلاح حالات التعطل الصامتة النادرة عند تفعيل أداة تحليل الاستعلامات وتثبيت ClickHouse على نظام تشغيل يستخدم إصدار glibc يحتوي، على ما يبدو، على asynchronous unwind tables معطوبة لبعض الدوال. يُصلح هذا #15301. ويُصلح أيضًا #13098. #16846 (alexey-milovidov).
- إصلاح المعامل
INعبر عدة أعمدة وTuples عند تفعيل الإعدادtransform_null_in. يُصلح #15310. #16722 (Anton Popov). - يُصلح هذا optimize_read_in_order/optimize_aggregation_in_order عند استخدام max_threads>0 ووجود expression في ORDER BY. #16637 (Azat Khuzhin).
- عند parsing AVRO من الإدخال الآن، تُزال LowCardinality من النوع. يُصلح #16188. #16521 (Mike).
- إصلاح النمو السريع للبيانات الوصفية عند استخدام MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine مع تفعيل
slave_parallel_workerعلى MySQL Slave، وذلك من خلال تقليص مجموعات GTID بشكل صحيح. يُصلح هذا #15951. #16504 (TCeason). - إصلاح DROP TABLE لـ Distributed (توجد حالة سباق مع INSERT). #16409 (Azat Khuzhin).
- إصلاح معالجة الإدخالات الكبيرة جدًا في طابور النسخ المتماثل. وقد تظهر إدخالات كبيرة جدًا في استعلامات ALTER إذا كانت بنية table كبيرة للغاية (قريبة من 1 MB). يُصلح هذا #16307. #16332 (alexey-milovidov).
- إصلاح خطأ متعلق بـ MySQL database. فعندما يتوقف MySQL server المستخدم بصفته database engine، تُطلق بعض الاستعلامات Exception لأنها تحاول جلب tables من server معطّل، رغم أن ذلك غير ضروري. على سبيل المثال، يجب أن يعمل الاستعلام
SELECT ... FROM system.partsمع MergeTree tables فقط، وألا يتعامل مع MySQL database إطلاقًا. #16032 (Kruglov Pavel).
تحسين
- حل بديل لاستخدام S3 مع خادم nginx بوصفه وسيطًا. لا يقبل Nginx حاليًا عناوين URL ذات المسار الفارغ مثل http://domain.com?delete، لكن aws-sdk-cpp القياسي يُنتج هذا النوع من عناوين URL. يستخدم هذا التغيير إصدارًا مُصحَّحًا من aws-sdk-cpp، ما يجعل عناوين URL تتضمن ”/” كمسار في هذه الحالات، مثل http://domain.com/?delete. #16813 (ianton-ru).
إصدار ClickHouse v20.10.3.30، 2020-10-28
تغيير غير متوافق مع الإصدارات السابقة
- اجعل
multiple_joins_rewriter_versionمهملًا. أزِل الإصدار الأول من مُعيد كتابة joins. #15472 (Artem Zuikov). - غيّر القيمة الافتراضية للإعداد
format_regexp_escaping_rule(وهو مرتبط بتنسيقRegexp) إلىRaw(أي قراءة النمط الفرعي بالكامل كقيمة) لجعل السلوك أقرب إلى ما يتوقعه المستخدمون. #15426 (alexey-milovidov). - أُضيف دعم للتعليقات المتداخلة متعددة الأسطر
/* comment /* comment */ */في SQL. وهذا متوافق مع معيار SQL. #14655 (alexey-milovidov). - أُضيفت إعدادات MergeTree (
max_replicated_merges_with_ttl_in_queueوmax_number_of_merges_with_ttl_in_pool) للتحكم في عدد عمليات الدمج مع TTL في background pool وطابور النسخ المتماثل. لا يؤثر هذا التغيير على التوافق مع الإصدارات الأقدم إلا إذا كنت تستخدم delete TTL. بخلاف ذلك، سيظل النسخ المتماثل متوافقًا. ويمكنك تجنب مشكلات عدم التوافق إذا حدّثت جميع replicas في جميع الشظايا دفعة واحدة، أو نفّذتSYSTEM STOP TTL MERGESإلى أن تنتهي من تحديث جميع replicas. وإذا ظهرت لك مُدخلة غير متوافقة في طابور النسخ المتماثل، فنفّذ أولًاSYSTEM STOP TTL MERGESثمALTER TABLE ... DETACH PARTITION ...على الـ partition التي أُسنِدت إليها عملية دمج TTL غير المتوافقة. ثم أعد إرفاقها على replica واحدة. #14490 (alesapin). - عند الترقية من إصدارات أقدم من 20.5، إذا نُفِّذ rolling update وكانت الـ cluster تضم الإصدار 20.5 أو أحدث إلى جانب إصدارات أقدم من 20.5، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة وبدأ الإصدار القديم العمل في وجود إصدارات أحدث، فقد يؤدي ذلك إلى ظهور أخطاء
Part ... intersects previous part. ولتجنّب هذا الخطأ، ثبّت أولًا حزم clickhouse-server الأحدث على جميع عُقد الـ cluster، ثم أجرِ عمليات إعادة التشغيل (حتى يبدأ clickhouse-server بالإصدار الجديد عند إعادة تشغيله).
ميزة جديدة
- إعادة ضغط البيانات في الخلفية. أُضيفت إمكانية تحديد
TTL ... RECOMPRESS codec_nameلعائلة محركات جداول MergeTree. #14494 (alesapin). - إضافة عمليات quorum inserts المتوازية. يُغلق هذا #15601. #15601 (Latysheva Alexandra).
- إعدادات لتعزيز فرض متانة البيانات. وهي مفيدة في البيئات غير المكررة. #11948 (Anton Popov).
- عند كتابة block مكرر إلى replica لا يوجد فيها محليًا (ولم يتم fetch له من replicas)، فلا يتم تجاهله، بل يُكتب محليًا لتحقيق الأثر نفسه كما لو تمت replication له بنجاح. #11684 (alexey-milovidov).
- ندعم الآن
WITH <identifier> AS (subquery) ...لتقديم subqueries مسماة ضمن سياق query. يُغلق هذا #2416. ويُغلق أيضًا #4967. #14771 (Amos Bird). - تقديم الإعداد
enable_global_with_statementالذي يمرّر عباراتWITHالخاصة بأول select إلى queryات select الأخرى على المستوى نفسه، ويجعل aliases في عباراتWITHمرئية لـ subqueries. #15451 (Amos Bird). - تأمين تنفيذ queryات بين clusterات (مع initial_user باعتباره مستخدم query الحالي). #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
- إضافة إمكانية إزالة خصائص column وقواعد table TTL. تم تقديم queryي
ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_removeوALTER TABLE REMOVE TTL. كلتا العمليتين lightweight وتُنفذان على مستوى metadata. #14742 (alesapin). - تمت إضافة format
RawBLOB. وهو مخصص لإدخال أو إخراج قيمة واحدة من دون أي escaping أو delimiters. يُغلق هذا #15349. #15364 (alexey-milovidov). - إضافة الدالة
reinterpretAsUUIDالتي تتيح تحويل سلسلة بايتات big-endian إلى UUID. #15480 (Alexander Kuzmenkov). - تنفيذ الإعداد
force_data_skipping_indices. #15642 (Azat Khuzhin). - إضافة الإعداد
output_format_pretty_row_numbersلترقيم النتائج في Pretty formats. يُغلق هذا #15350. #15443 (flynn). - تمت إضافة أداة لتمويه queryات. وتتيح هذه الأداة مشاركة عدد أكبر من queryات لتحسين الاختبار. يُغلق هذا #15268. #15321 (alexey-milovidov).
- إضافة table function
null('structure'). #14797 (vxider). - تمت إضافة الدالة
formatReadableQuantity. وهي مفيدة لقراءة الأعداد الكبيرة بصيغة يسهل على البشر فهمها. #14725 (Artem Hnilov). - تمت إضافة التنسيق
LineAsStringالذي يقبل تسلسلاً من الأسطر المفصولة بمحارف السطر الجديد، ويُحلَّل كل سطر بالكامل على أنه حقلStringواحد. #14703 (Nikita Mikhaylov), #13846 (hexiaoting). - تمت إضافة التنسيق
JSONStringsالذي يُخرج البيانات في مصفوفات من السلاسل النصية. #14333 (hcz). - تمت إضافة دعم لتنسيق العمود “Raw” في تنسيق
Regexp. ويتيح ذلك استخراج الأنماط الفرعية كاملةً كما هي من دون أي قواعد هروب. #15363 (alexey-milovidov). - أصبح من الممكن استخدام تمثيل قابل للتهيئة للقيمة
NULLفي تنسيق الإخراجTSV. ويُتحكَّم فيه عبر الإعدادoutput_format_tsv_null_representation، الذي تكون قيمته الافتراضية\N. هذا يُغلق #9375. لاحظ أن هذا الإعداد يتحكم فقط في تنسيق الإخراج، وأن\Nهو تمثيلNULLالوحيد المدعوم لتنسيق الإدخالTSV. #14586 (Kruglov Pavel). - تمت إضافة دعم نوع البيانات Decimal إلى
MaterializeMySQL. وتُعدMaterializeMySQLميزة تجريبية. #14535 (Winter Zhang). - تمت إضافة ميزة جديدة:
SHOW DATABASES LIKE 'xxx'. #14521 (hexiaoting). - تمت إضافة نص برمجي لاستيراد أي مستودع git إلى ClickHouse كمجموعة بيانات نموذجية. #14471 (alexey-milovidov).
- يمكن الآن لعبارات insert أن تتضمن asterisk (أو صيغها البديلة) مع محوّلات الأعمدة في قائمة الأعمدة. #14453 (Amos Bird).
- تمت إضافة إعدادات جديدة لحدود query complexity، وهي
max_rows_to_read_leafوmax_bytes_to_read_leaf، من أجل distributed queries لتقييد الحد الأقصى للصفوف/البايتات المقروءة على leaf nodes. ويُطبَّق هذا الحد على reads المحلية فقط، باستثناء مرحلة merge النهائية على العقدة الجذرية. #14221 (Roman Khavronenko). - أصبح بإمكان المستخدم تحديد Settings لتخزين
ReplicatedMergeTree*في قسم<replicated_merge_tree>من config file. ويعمل هذا بصورة مماثلة لقسم<merge_tree>. وبالنسبة إلى storagesReplicatedMergeTree*، تُطبَّق الإعدادات من<merge_tree>و<replicated_merge_tree>معاً، لكن إعدادات<replicated_merge_tree>لها أولوية أعلى. كما تمت إضافة الجدولsystem.replicated_merge_tree_settings. #13573 (Amos Bird). - تمت إضافة الدالة
mapPopulateSeries. #13166 (Ildus Kurbangaliev). - تمت إضافة دعم لأنواع MySQL التالية:
decimal(بوصفهDecimalفي ClickHouse) وdatetimeبدقة أجزاء من الثانية (بوصفهDateTime64). #11512 (Vasily Nemkov). - إضافة الحقل
event_time_microsecondsإلى الجداولsystem.text_logوsystem.trace_logوsystem.query_logوsystem.query_thread_log. #14760 (Bharat Nallan). - إضافة الحقل
event_time_microsecondsإلى الجدولينsystem.asynchronous_metric_logوsystem.metric_log. #14514 (Bharat Nallan). - إضافة الحقل
query_start_time_microsecondsإلى الجدولينsystem.query_logوsystem.query_thread_log. #14252 (Bharat Nallan).
إصلاح الأخطاء
- إصلاح الحالة التي قد يحدث فيها تخصيص مفرط للذاكرة بغضّ النظر عن الحد المحدد. هذا يُغلق #14560. #16206 (alexey-milovidov).
- إصلاح توقّف dictionary source من النوع
executable. في الإصدارات السابقة، عند استخدام بعض التنسيقات (مثلJSONEachRow)، لم تكن البيانات تُمرَّر إلى العملية الفرعية قبل أن تُخرج شيئًا واحدًا على الأقل. هذا يُغلق #1697. هذا يُغلق #2455. #14525 (alexey-milovidov). - إصلاح التحرير المزدوج للذاكرة عند حدوث Exception في الدالة
dictGet. وقد كان هذا قد يحدث إذا تم تحميل Dictionary مع وجود خطأ. #16429 (Nikolai Kochetov). - إصلاح
group byمع المعدِّلات totals/rollup/cube ودوال min/max على مفاتيحgroup by. يُصلح #16393. #16397 (Anton Popov). - إصلاح INSERT غير المتزامن لـ Distributed مع prefer_localhost_replica=0 و internal_replication. #16358 (Azat Khuzhin).
- إصلاح شيفرة شديدة الخطأ في تنفيذ TwoLevelStringHashTable، كانت قد تؤدي إلى تسرّب للذاكرة. #16264 (Amos Bird).
- إصلاح segfault في بعض حالات aggregation غير الصحيحة داخل lambdas. #16082 (Anton Popov).
- إصلاح توقّف الاستعلام
ALTER MODIFY ... ORDER BYعند استخدامReplicatedVersionedCollapsingMergeTree. هذا يُصلح #15980. #16011 (alesapin). MaterializeMySQL(ميزة تجريبية): إصلاح parser الخاص باسم collate واسم charset، ودعمlength = 0للنوع String. #16008 (Winter Zhang).- السماح باستخدام layout من النوع
directللقواميس ذات المفاتيح المعقدة. #16007 (Anton Popov). - منع توقّف replica لمدة 5 إلى 10 دقائق عند حدوث خطأ في replication بعد فترة من عدم النشاط. #15987 (filimonov).
- إصلاح حالات segfault النادرة عند الإدراج في MaterializedView أو القراءة منها، بالتزامن مع dropping للـ target table (في محرّك قاعدة البيانات atomic). #15984 (tavplubix).
- إصلاح الالتباس في parsing الخاصة بـ settings profiles: يُعتبَر
CREATE USER ... SETTINGS profile readonlyالآن استخدامًا لملف إعدادات باسمreadonly، وليس إعدادًا باسمprofileمع القيد readonly. هذا يُصلح #15628. #15982 (Vitaly Baranov). MaterializeMySQL(ميزة تجريبية): إصلاح crash عند فشل create database. #15954 (Winter Zhang).- تم إصلاح فشل
DROP TABLE IF EXISTSمع الخطأTable ... does not existعند إعادة تسمية الجدول بالتزامن (لمحرّك قاعدة البيانات Atomic). كما تم إصلاح حالة جمود متبادل نادرة عند تنفيذ بعض DDL queries بالتزامن على عدة جداول (مثلDROP DATABASEوRENAME TABLE) - وتم أيضًا إصلاح فشلDROP/DETACH DATABASEمعTable ... does not existعند تنفيذDROP/DETACH TABLEبالتزامن. #15934 (tavplubix). - إصلاح ظهور نتيجة فارغة غير صحيحة للاستعلام من جدول
Distributedإذا كان الاستعلام يحتوي علىWHEREوPREWHEREوGLOBAL IN. يُصلح #15792. #15933 (Nikolai Kochetov). - يُصلح #12513: تعبيرات difference التي لها alias نفسه عند إعادة تحليل query. #15886 (Winter Zhang).
- إصلاح حالات جمود متبادل نادرة جدًا محتملة في تطبيق RBAC. #15875 (Vitaly Baranov).
- إصلاح الاستثناء
Block structure mismatchفي queries من نوعSELECT ... ORDER BY DESCالتي نُفذت بعد query ALTER MODIFY COLUMN. يُصلح #15800. #15852 (alesapin). MaterializeMySQL(ميزة تجريبية): إصلاح عدم دقةselect count(). #15767 (tavplubix).- إصلاح بعض حالات queries التي يُحدَّد فيها اختيار الأعمدة الافتراضية فقط. سابقًا كان من الممكن طرح الاستثناء
Not found column _nothing in block. يُصلح #12298. #15756 (Anton Popov). - إصلاح حذف materialized view مع الجدول الداخلي في قاعدة بيانات Atomic (كان ذلك يؤدي إلى تعليق جميع عمليات DROP TABLE اللاحقة بسبب تعليق worker thread، نتيجة تنفيذ DROP TABLE بشكل تكراري للجدول الداخلي الخاص بـ MV). #15743 (Azat Khuzhin).
- إتاحة نقل part إلى disk/volume آخر إذا فشلت المحاولة الأولى. #15723 (Pavel Kovalenko).
- إصلاح الخطأ
Cannot find columnالذي قد يحدث عند insertion إلىMATERIALIZED VIEWإذا كان query الخاص بـMVيحتوي علىARRAY JOIN. #15717 (Nikolai Kochetov). - تم إصلاح القيمة الافتراضية المنخفضة جدًا للإعداد
max_replicated_logs_to_keep، والتي قد تتسبب في فقدان replicas بوتيرة متكررة. كما تم تحسين عملية recovery للـ replica المفقودة عبر اختيار أحدث replica للاستنساخ منها. كذلك لم تعد parts القديمة تُزال من replica المفقودة، بل يتم detach لها بدلًا من ذلك. #15701 (tavplubix). - إصلاح حالة تسابق نادرة في Dictionaries وtables من MySQL. #15686 (alesapin).
- إصلاح حالة تسابق (غير ضارة) في AMQP-CPP. #15667 (alesapin).
- إصلاح الخطأ
Cannot add simple transform to empty Pipeالذي كان يحدث أثناء القراءة من جدولBufferذي البنية المختلفة عن جدول الوجهة. وكان ذلك ممكنًا إذا أعاد جدول الوجهة نتيجة فارغة للاستعلام. يعالج #15529. #15662 (Nikolai Kochetov). - تحسين معالجة الأخطاء أثناء الإدراج في MergeTree مع S3. وتُعد MergeTree فوق S3 ميزة تجريبية. #15657 (Pavel Kovalenko).
- إصلاح خلل في S3 table function: لم تُطبَّق المنطقة المستخرجة من عنوان URL على إعدادات عميل S3. #15646 (Vladimir Chebotarev).
- إصلاح ترتيب تحرير الموارد في خطوة
ReadFromStorageضمن خطة تنفيذ الاستعلام. وقد يتسبب ذلك في حالات نادرة في حدوث أعطال. ومن المحتمل أن يكون مرتبطًا بـ #15610. #15645 (Nikolai Kochetov). - طرح المقياس
ReadonlyReplicaعند فصل الجداول للقراءة فقط. #15592 (sundyli). - إصلاح الخطأ
Element ... is not a constant expressionعند استخدام ناتج الدالةJSON*فيVALUESأوLIMITأو في الطرف الأيمن من العاملIN. #15589 (tavplubix). - سينتهي الاستعلام بسرعة أكبر عند حدوث Exception. وسيُلغى التنفيذ على النسخ المتماثلة البعيدة إذا حدث Exception. #15578 (Azat Khuzhin).
- منع احتمال ظهور رسالة الخطأ
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. يعالج هذا #15541. #15557 (alexey-milovidov). - إصلاح الخطأ
Database <db> does not exist.في الاستعلامات التي تتضمن IN ومع distributed table عندما لا توجد database على initiator. #15538 (Artem Zuikov). - قد تبقى mutation معلّقة في انتظار part غير موجود بعد
MOVEأوREPLACE PARTITIONأو، في حالات نادرة، بعدDETACHأوDROP PARTITION. وقد أُصلح ذلك. #15537 (tavplubix). - إصلاح خلل يتسبب في توقف العامل
ILIKEعن كونه غير حساس لحالة الأحرف إذا نُفِّذLIKEبالنمط نفسه. #15536 (alesapin). - إصلاح أخطاء
Missing columnsعند تحديد أعمدة غير موجودة في البيانات، لكنها تعتمد على أعمدة أخرى غير موجودة أيضًا في البيانات. يعالج #15530. #15532 (alesapin). - إصدار خطأ عند تمرير parameter واحد إلى ReplicatedMergeTree بدلًا من تجاهله. #15516 (nvartolomei).
- إصلاح خلل في الاشتراك بالأحداث في DDLWorker قد يؤدي نادرًا إلى تعليق الاستعلام في
ON CLUSTER. Introduced in #13450. #15477 (alesapin). - الإبلاغ عن الخطأ الصحيح عندما تكون الوسيطة الثانية في الدالة التجميعية
boundingRatioمن نوع غير صحيح. #15407 (detailyang). - إصلاح #15365: يؤدي إرفاق قاعدة بيانات بمحرك MySQL إلى استثناء (من دون سياق استعلام). #15384 (Winter Zhang).
- إصلاح حالة تعدد ظهور محوّلات الأعمدة في استعلام SELECT. #15378 (Amos Bird).
- إصلاح الضغط في تخزين
S3. #15376 (Vladimir Chebotarev). - إصلاح خلل كانت فيه استعلامات مثل
SELECT toStartOfDay(today())تفشل مع ظهور شكوى بشأن وسيطة time_zone فارغة. #15319 (Bharat Nallan). - إصلاح حالة تسابق أثناء إعادة تسمية جدول MergeTree والتنظيف في الخلفية. #15304 (alesapin).
- إصلاح حالة تسابق نادرة عند بدء تشغيل الخادم عندما تكون سجلات النظام مُمكّنة. #15300 (alesapin).
- إصلاح تعليق الاستعلامات التي تحتوي على عدد كبير من الاستعلامات الفرعية الموجّهة إلى الجدول نفسه ذي المحرك
MySQL. سابقًا، إذا كان الاستعلام يحتوي على أكثر من 16 استعلامًا فرعيًا يشير إلى جدولMySQLنفسه، فإنه كان يظل معلّقًا إلى الأبد. #15299 (Anton Popov). - إصلاح تقرير MSan في QueryLog. قد تُستخدم ذاكرة غير مهيأة في الحقل
memory_usage. #15258 (alexey-milovidov). - إصلاح الخطأ ‘Unknown identifier’ في GROUP BY عندما يحتوي الاستعلام على JOIN على جدول Merge. #15242 (Artem Zuikov).
- إصلاح تعطل المثيل عند استخدام
joinGetمع أنواعLowCardinality. ويعالج هذا #15214. #15220 (Amos Bird). - إصلاح خلل في محرك الجدول
Bufferكان يمنع إدراج بيانات ببنية جديدة فيBufferبعد استعلامALTER. ويعالج #15117. #15192 (alesapin). - ضبط حجم الحقل Decimal في حزمة تعريف عمود MySQL. #15152 (maqroll).
- إصلاح الخطأ
Data compressed with different methodsفيjoin_algorithm='auto'. والإبقاء على LowCardinality كنوع لمفتاح الربط في الجدول الأيسر ضمنjoin_algorithm='partial_merge'. #15088 (Artem Zuikov). - تحديث
jemallocلإصلاحpercpu_arenaمع قناع affinity. #15035 (Azat Khuzhin). #14957 (Azat Khuzhin). - نستخدم بالفعل مقارنةً مع الحشو بين String و FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). يطبّق هذا PR المنطق نفسه على مقارنة الحقول، ما يصحّح استخدام FixedString كمفاتيح أساسية. يُصلح هذا #14908. #15033 (Amos Bird).
- إذا جرى استدعاء الدالة
barباستخدام وسائط مُعدّة خصيصًا، فقد يحدث تجاوز لسعة المخزن المؤقت. ويغلق هذا #13926. #15028 (alexey-milovidov). - تم إصلاح الخطأ
Cannot rename ... errno: 22, strerror: Invalid argumentعند تنفيذ استعلام DDL في قاعدة بيانات Atomic عند تشغيل clickhouse-server داخل Docker على Mac OS. #15024 (tavplubix). - إصلاح تعطّل في RIGHT أو FULL JOIN مع join_algorith=‘auto’ عند تجاوز حد الذاكرة والحاجة إلى التبديل من HashJoin إلى MergeJoin. #15002 (Artem Zuikov).
- يمكن الآن أن تكون الإعدادات
number_of_free_entries_in_pool_to_execute_mutationوnumber_of_free_entries_in_pool_to_lower_max_size_of_mergeمساوية لـbackground_pool_size. #14975 (alesapin). - إصلاح لجعل دفع الشرط لأسفل يعمل عندما يحتوي الاستعلام الفرعي على الدالة
finalizeAggregation. يُصلح هذا #14847. #14937 (filimonov). - إتاحة ترددات CPU لكل نواة منطقية في
system.asynchronous_metrics. يُصلح هذا #14923. #14924 (Alexander Kuzmenkov). MaterializeMySQL(ميزة تجريبية): تم إصلاح الخطأ.metadata.tmp File exists. #14898 (Winter Zhang).- إصلاح المشكلة التي قد تؤدي فيها بعض استدعاءات الدالة
extractAllGroupsإلى ظهور الخطأ “Memory limit exceeded”. يُصلح هذا #13383. #14889 (alexey-milovidov). - إصلاح SIGSEGV عند محاولة INSERT إلى StorageFile باستخدام file descriptor. #14887 (Azat Khuzhin).
- تم إصلاح segfault في قاموس
cache#14837. #14879 (Nikita Mikhaylov). MaterializeMySQL(ميزة تجريبية): تم إصلاح خلل في تحليل أحداث MySQL binlog، كان يتسبب فيAttempt to read after eofوPacket payload is not fully readفي محرك قاعدة البياناتMaterializeMySQL. #14852 (Winter Zhang).- إصلاح خطأ نادر في استعلامات
SELECTعندما يكون للعمود المطلوب تعبيرDEFAULTيعتمد على عمود آخر لديه أيضًاDEFAULT، ولا يظهر في استعلام التحديد ولا يوجد على القرص. يُصلح هذا جزئيًا #14531. #14845 (alesapin). - إصلاح مشكلة قد تؤدي إلى تعلّق الخادم عند بدء التشغيل أثناء الاتصال بـ ZooKeeper إذا كان يجب جلب ملفات التكوين من ZK (باستخدام خيار التضمين
from_zk). يعالج هذا #14814. #14843 (Alexander Kuzmenkov). - إصلاح الاكتشاف الخاطئ للرتابة في تحويل CAST المتضيق
Int -> Intللأنواع الموقعة. وقد يؤدي ذلك إلى نتيجة query غير صحيحة. كُشف هذا الخلل في #14513. #14783 (Amos Bird). - يجب أن يستبدل محوّل الأعمدة
Replaceالمعرّفات بنسخ مستنسخة من AST. يعالج هذا #14695. #14734 (Amos Bird). - إصلاح غياب اسم قاعدة البيانات الافتراضية في البيانات الوصفية للـ materialized view عند تنفيذ
ALTER ... MODIFY QUERY. #14664 (tavplubix). - إصلاح خلل يحدث عندما تؤدي mutation من النوع
ALTER UPDATEمع عمودNullableفي expression الإسناد وقيمة ثابتة (مثلUPDATE x = 42) إلى قيمة غير صحيحة في العمود أو إلى segfault. يعالج #13634، #14045. #14646 (alesapin). - إصلاح نتيجة ضرب Decimal الخاطئة الناتجة عن scale عشرية غير صحيحة في عمود النتيجة. #14603 (Artem Zuikov).
- إصلاح الدالة
hasمعLowCardinalityمن النوعNullable. #14591 (Mike). - تنظيف دليل البيانات بعد استثناءات Zookeeper أثناء CreateQuery لمحرك StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- إصلاح حالات segfault نادرة في الدوال التي تستخدم combinator
-Resample، والتي قد تظهر نتيجة overflow مع parameters كبيرة جدًا. #14562 (Anton Popov). - إصلاح خلل عند تحويل
Nullable(String)إلى Enum. أُدخل هذا الخلل في #12745. يعالج هذا #14435. #14530 (Amos Bird). - إصلاح ترتيب الفرز غير الصحيح لعمود
Nullable. يعالج هذا #14344. #14495 (Nikita Mikhaylov). - إصلاح تعذر استخدام الدالة
currentDatabase()في DDL query معON CLUSTER. #14211 (Winter Zhang). MaterializeMySQL(ميزة تجريبية): إصلاح الخطأPacket payload is not fully readفي database engineMaterializeMySQL. #14696 (BohuTANG).
تحسين
- تمكين محرك قاعدة البيانات
Atomicافتراضيًا لقواعد البيانات المُنشأة حديثًا. #15003 (tavplubix). - إضافة إمكانية تحديد codecs متخصصة مثل
DeltaوT64وغيرها للأعمدة ذات الأنواع الفرعية. ينفّذ #12551، ويُصلح #11397، ويُصلح #4609. #15089 (alesapin). - إعادة تحميل ديناميكية لإعدادات ZooKeeper. #14678 (sundyli).
- أصبح مسموحًا الآن بتنفيذ استعلامات
ALTER ... ON CLUSTERبغض النظر عن إعداد<internal_replication>في إعدادات المجموعة. #16075 (alesapin). - يدعم
joinGetالآن البحث متعدد المفاتيح. استكمالًا لـ #12418. #13015 (Amos Bird). - انتظار اكتمال
DROP/DETACH TABLEفعليًا إذا تم تحديدNO DELAYأوSYNCلقاعدة البياناتAtomic. #15448 (tavplubix). - أصبح من الممكن الآن تغيير نوع عمود version لـ
VersionedCollapsingMergeTreeباستخدام استعلامALTER. #15442 (alesapin). - توسيع الماكروهات
{database}و{table}و{uuid}فيzookeeper_pathعند إنشاء جدول replicated. وعدم السماح بـRENAME TABLEإذا كان ذلك قد يؤدي إلى كسرzookeeper_pathبعد إعادة تشغيل الخادم. يُصلح #6917. #15348 (tavplubix). - تسمح الدالة
nowبوسيط يتضمن timezone. يُغلق هذا 15264. #15285 (flynn). - عدم السماح بالاتصالات مع ClickHouse server حتى يتم تنفيذ جميع السكربتات في
/docker-entrypoint-initdb.d/. #15244 (Aleksei Kozharin). - تمت إضافة الإعداد
optimizeإلى استعلامEXPLAIN PLAN. وإذا كان مُمكّنًا، فستُطبَّق تحسينات على مستوى query plan. وهو مُمكّن افتراضيًا. #15201 (Nikolai Kochetov). - رسالة استثناء مناسبة عند وجود عدد غير صحيح من الوسائط لـ CAST. يُغلق هذا #13992. #15029 (alexey-milovidov).
- إضافة خيار لتعطيل TTL move عند إدراج data part. #15000 (Pavel Kovalenko).
- تجاهل قيود المفتاح عند تنفيذ mutations. من دون طلب السحب هذا، لا يمكن تنفيذ mutations عندما يكون
force_index_by_date = 1أوforce_primary_key = 1. #14973 (Amos Bird). - السماح بحذف جدول Replicated إذا فشلت محاولة الحذف السابقة بسبب انتهاء جلسة ZooKeeper. يُصلح هذا #11891. #14926 (alexey-milovidov).
- إصلاح التحقق المفرط من قيود الإعدادات عند تشغيل SELECT مع SETTINGS على جدول موزّع. #14876 (Amos Bird).
- توفير إعداد query باسم
load_balancing_first_offsetلتحديد النسخة المتماثلة الأولى صراحةً. ويُستخدم مع استراتيجية load balancingFIRST_OR_RANDOM، مما يتيح التحكم في أحمال عمل النسخ المتماثلة. #14867 (Amos Bird). - عرض الاستعلامات الفرعية لـ
SETوJOINفي نتيجةEXPLAIN. #14856 (Nikolai Kochetov). - السماح باستخدام إعداد تخزين متعدد الوحدات في التخزين
Distributed. #14839 (Pavel Kovalenko). - إنشاء
query_start_timeوquery_start_time_microsecondsمن نفس قيمة timespec. #14831 (Bharat Nallan). - دعم تعطيل الاستمرارية لـ
StorageJoinوStorageSet، وتخضع هذه الميزة للإعدادdisable_set_and_join_persistency. كما عالج طلب السحب هذا المشكلة #6318. #14776 (vxider). - يمكن الآن استخدام
COLUMNSلاحتواء قائمة من الأعمدة ثم تطبيق محوّلات الأعمدة بعدها. #14775 (Amos Bird). - إضافة
merge_algorithmإلى جدولsystem.mergesلتحسين فحص عمليات الدمج. #14705 (Amos Bird). - إصلاح تسرّب محتمل للذاكرة تسببه آلية watch الخاصة بعملية exists في ZooKeeper. #14693 (hustnn).
- السماح بالتنفيذ المتوازي لأوامر DDL الموزعة. #14684 (Azat Khuzhin).
- إضافة عدّاد الأحداث
QueryMemoryLimitExceeded. يُغلق هذا #14589. #14647 (fastio). - إصلاح بعض المسافات البيضاء الزائدة في تنسيق الاستعلامات. #14595 (Azat Khuzhin).
- يتعامل ClickHouse مع تعبير partition وتعبير المفتاح الأساسي بشكل مختلف. يُستخدم تعبير partition لإنشاء فهرس minmax يحتوي على الأعمدة ذات الصلة، بينما يُخزَّن تعبير المفتاح الأساسي كتعبير. أحيانًا قد يقسم المستخدم الجدول على مستويات أقل دقة، مثل
partition by i / 1000. لكن المعاملات الثنائية ليست رتيبة، ويحاول طلب السحب هذا إصلاح ذلك. وقد يفيد أيضًا حالات استخدام أخرى. #14513 (Amos Bird). - إضافة خيار لتخطي فحوصات الوصول لـ
DiskS3. القرصs3ميزة Experimental. #14497 (Pavel Kovalenko). - تسريع عملية إيقاف تشغيل server إذا كانت هناك طلبات S3 جارية. #14496 (Pavel Kovalenko).
- أصبح
SYSTEM RELOAD CONFIGالآن يطلق استثناءً إذا فشلت إعادة التحميل، مع الاستمرار في استخدام ملفusers.xmlالسابق. كما تستمر إعادة التحميل الدورية في الخلفية في استخدام ملفusers.xmlالسابق إذا فشلت إعادة التحميل. #14492 (Vitaly Baranov). - بالنسبة إلى عمليات INSERT التي تتضمن بيانات مضمنة بتنسيق VALUES في وضع السكربت لـ
clickhouse-client، أصبحت الفاصلة المنقوطة مدعومة كفاصل لإنهاء البيانات، بالإضافة إلى السطر الجديد. يُغلق #12288. #13192 (Alexander Kuzmenkov). - دعم codecs مخصصة في الأجزاء ذات التنسيق compact. #12183 (Anton Popov).
تحسين الأداء
- تمكين الأجزاء المدمجة افتراضيًا للأجزاء الصغيرة. سيتيح ذلك معالجة عمليات الإدراج المتكررة بكفاءة أعلى قليلًا (4..100 مرة). #11913 (alexey-milovidov).
- تحسين أداء
quantileTDigest. يُصلح هذا #2668. #15542 (Kruglov Pavel). - تقليل استهلاك الذاكرة بشكل كبير في AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- تسريع عمليات الضرب بعرض 256 بت. #15418 (Artem Zuikov).
- تحسين أداء الأنواع بعرض 256 بت باستخدام (u)int64_t كنوع أساسي للأعداد الصحيحة العريضة. تستخدم الأعداد الصحيحة العريضة الأصلية أنواع 8 بت كنوع أساسي. #14859 (Artem Zuikov).
- استخدام قرص مؤقت صراحةً لتخزين البيانات المؤقتة الخاصة بالدمج العمودي. #15639 (Grigory Pervakov).
- استخدام طلب S3 DeleteObjects واحد بدلًا من عدة طلبات DeleteObject داخل حلقة. لا توجد أي تغييرات وظيفية، لذا فذلك مغطى بالاختبارات الحالية مثل integration/test_log_family_s3. #15238 (ianton-ru).
- إصلاح الاختيار الخاطئ في
DateTime <op> DateTimeللتنفيذ العام البطيء. يُصلح هذا #15153. #15178 (Amos Bird). - تحسين أداء مفتاح GROUP BY من النوع
FixedString. #15034 (Amos Bird). - قصر استخدام
mlockعلى مقطع الشيفرة عند بدء clickhouse-server. في الإصدارات السابقة، كانت جميع المناطق المُعيّنة تُقفل في الذاكرة، بما في ذلك معلومات التصحيح. وعادةً ما تُفصل معلومات التصحيح في ملف مستقل، لكن إن لم يحدث ذلك، فقد كان يؤدي إلى زيادة في استهلاك الذاكرة بمقدار +2..3 GiB. #14929 (alexey-milovidov). - أصبح الملف التنفيذي لـ ClickHouse أصغر بفضل التحسين وقت الربط.
تحسينات البناء/الاختبار/الحزم
- نستخدم الآن clang-11 لبناء ClickHouse لبيئة الإنتاج. #15239 (alesapin).
- نستخدم الآن clang-11 لبناء ClickHouse في CI. #14846 (alesapin).
- التحويل إلى clang-11 في البنيات الثنائية (Linux وDarwin وAArch64 وFreeDSD). #15622 (Ilya Yatsishin).
- تستخدم الآن جميع صور الاختبار
llvm-symbolizer-11. #15069 (alesapin). - السماح بالبناء باستخدام llvm-11. #15366 (alexey-milovidov).
- التحويل من
clang-tidy-10إلىclang-tidy-11. #14922 (alexey-milovidov). - استخدام مدير التمريرات التجريبي في LLVM افتراضيًا. #15608 (Danila Kutenin).
- عدم السماح لأي وحدة ترجمة في C++ بأن يستغرق بناؤها أكثر من 10 دقائق أو أن تستخدم أكثر من 10 غيغابايت من الذاكرة. هذا يُصلح #14925. #15060 (alexey-milovidov).
- جعل اختبار الأداء أكثر استقرارًا وتمثيلًا عبر فصل تشغيلات الاختبار عن تشغيلات profiling. #15027 (alexey-milovidov).
- محاولة جعل اختبار الأداء أكثر موثوقية. ويتم ذلك عبر إعادة تخطيط الذاكرة التنفيذية للعملية أثناء التشغيل باستخدام
madviseللاستفادة من transparent huge pages، ما قد يقلل عدد مرات فقدان iTLB، وهو المصدر الرئيسي لعدم الاستقرار في اختبارات الأداء. #14685 (alexey-milovidov). - التحويل إلى بايثون 3. هذا يغلق #14886. #15007 (Azat Khuzhin).
- الإخفاق مبكرًا في الاختبارات الوظيفية إذا لم يستجب الخادم. هذا يغلق #15262. #15267 (alexey-milovidov).
- السماح بتشغيل إصدار AArch64 من clickhouse-server من دون ملفات إعداد. هذا يسهّل #15174. #15266 (alexey-milovidov).
- تحسينات في صور Docker الخاصة بـ CI: الاستغناء عن ZooKeeper والاعتماد على نص برمجي واحد لتثبيت إعدادات الاختبار. #15215 (alesapin).
- إصلاح تمرير خيارات CMake في نص
fast testالبرمجي. يُصلح الخطأ في #14711. #15155 (alesapin). - إضافة نص برمجي لإجراء قياس أداء الأجهزة بأمر واحد. #15115 (alexey-milovidov).
- قُسِّم الاختبار الضخم
test_dictionaries_all_layouts_and_sourcesإلى اختبارات أصغر. #15110 (Nikita Mikhaylov). - إصلاح محتمل لتقرير MSan في base64 (على الخوادم التي تدعم AVX-512). وهذا يُصلح #14006. #15030 (alexey-milovidov).
- أُعيد تنسيق الشيفرة البرمجية وتنظيفها في جميع ملفات *.py الخاصة باختبارات التكامل. #14864 (Bharat Nallan).
- إصلاح حالة الاختبار غير المستقرة الخاصة بالمعاملة الفارغة في MaterializeMySQL، والتي اكتُشفت في CI. #14854 (Winter Zhang).
- محاولة تسريع عملية البناء قليلًا. #14808 (alexey-milovidov).
- تسريع عملية البناء قليلًا عبر إزالة ملفات الترويسة غير المستخدمة. #14714 (alexey-milovidov).
- إصلاح فشل البناء على OSX. #14761 (Winter Zhang).
- تفعيل ccache افتراضيًا في cmake إذا كان موجودًا في نظام التشغيل. #14575 (alesapin).
- التحكّم في إعدادات build الخاصة بـ CI من مستودع ClickHouse. #14547 (alesapin).
- في ملفات CMake: - نُقلت أجزاء من أوصاف بعض الخيارات إلى تعليقات أعلى السطر. - استُبدل 0 بـ
OFFو1 بـONفي القيم الافتراضية لـoptions. - أُضيفت بعض الأوصاف وروابط الوثائق إلى الخيارات. - استُبدل الخيارFUZZER(إذ يوجد خيار آخر هوENABLE_FUZZINGيفعّل الوظيفة نفسها أيضًا). - أُزيل الخيارENABLE_GTEST_LIBRARYنظرًا لوجودENABLE_TESTS. راجع الوصف الكامل في طلب السحب: #14711 (Mike). - جعل الملف التنفيذي أصغر قليلًا (~50 Mb لإصدار debug). #14555 (Artem Zuikov).
- استخدام std::filesystem::path في ConfigProcessor لضمّ مسارات الملفات. #14558 (Bharat Nallan).
- إصلاح تأكيد debug في
bitShiftLeft()عند استدعائه بعدد صحيح كبير سالب. #14697 (Artem Zuikov).
إصدار ClickHouse 20.9
إصدار ClickHouse v20.9.7.11-stable، 2020-12-07
تحسين الأداء
- إصلاح أداء القراءة من جداول
Mergeعند التعامل مع عدد كبير جدًا من جداولMergeTree. يعالج #7748. #16988 (Anton Popov).
إصلاح الأخطاء
- لا تستعد الأجزاء من WAL إذا كان
in_memory_parts_enable_walمعطّلًا. #17802 (detailyang). - تم إصلاح
segfaultعند عدم توفّر مساحة كافية أثناء الإدراج في جدولDistributed. #17737 (tavplubix). - تم إصلاح المشكلة التي كان فيها ClickHouse يفشل في استئناف الاتصال بخوادم MySQL. #17681 (Alexander Kazakov).
- تم إصلاح الخطأ
Function not implementedعند تنفيذ الاستعلامRENAMEفي قاعدة البياناتAtomicأثناء تشغيل ClickHouse على Windows Subsystem for Linux. يُصلح هذا #17661. #17664 (tavplubix). - عند استخدام clickhouse-client في الوضع التفاعلي مع استعلامات متعددة الأسطر، كان تعليق السطر الواحد يمتدّ بالخطأ حتى نهاية الاستعلام. يُصلح هذا #13654. #17565 (alexey-milovidov).
- تم إصلاح المشكلة التي قد يتوقف فيها الخادم عن قبول الاتصالات في حالات نادرة جدًا. #17542 (alexey-milovidov).
- تم إصلاح تعليق استعلام alter عندما كانت الـ mutation المقابلة قد أُوقفت على نسخة متماثلة أخرى. يُصلح هذا #16953. #17499 (alesapin).
- تم إصلاح خلل كان فيه ClickHouse يقدّر حجم mark cache بأقل من قيمته الفعلية. وقد يحدث ذلك عند وجود عدد كبير من الملفات الصغيرة جدًا التي تحتوي على marks. #17496 (alesapin).
- تم إصلاح
ORDER BYعند تفعيل الإعدادoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - تم إصلاح التكرارات بعد
DISTINCTالتي كان يمكن أن تظهر بسبب تحسين غير صحيح. يُصلح هذا #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - تم إصلاح التعطل أثناء القراءة من جدول
JOINمع أنواعLowCardinality. يُصلح هذا #17228. #17397 (Nikolai Kochetov). - تم إصلاح إبطال فهرس set عندما تكون هناك أعمدة const في الاستعلام الفرعي. يُصلح هذا #17246 . #17249 (Amos Bird).
- تم إصلاح مقارنة ColumnConst التي كانت تؤدي إلى تعطل. ويُصلح هذا #17088 . #17135 (Amos Bird).
- تم إصلاح التعطل في استعلام
CREATE TABLE ... AS some_tableعندما كانsome_tableقد أُنشئ باستخدامAS table_function(). يُصلح هذا #16944. #17072 (tavplubix). - إصلاح خلل في الدالة fuzzBits، والمسألة ذات الصلة: #16980. #17051 (hexiaoting).
- تجنّب أخطاء الشبكة غير الضرورية في الاستعلامات البعيدة التي قد تُلغى أثناء التنفيذ، مثل الاستعلامات التي تحتوي على
LIMIT. #17006 (Azat Khuzhin). - تحسين بسيط. #16866 (tavplubix).
- إرجاع عدد الصفوف المتأثرة لاستعلامات INSERT عبر بروتوكول MySQL. كان ClickHouse يُرجع دائمًا القيمة 0 سابقًا، وقد أُصلح ذلك. يُصلح #16605. #16715 (Winter Zhang).
تحسينات البناء/الاختبار/الحزم
- تحديث بيانات timezone المضمّنة إلى الإصدار 2020d (مع تحديث cctz أيضًا إلى أحدث نسخة من master). #17204 (filimonov).
إصدار ClickHouse v20.9.6.14-stable، 2020-11-20
تحسين
- إتاحة الاتصال بـ
clickhouse-serverعبر نقطة نهاية آمنة تتطلب SNI. يصبح ذلك ممكنًا عندما يكونclickhouse-serverمستضافًا خلف وكيل TLS. #16938 (filimonov). - يجب أن تُرجع الدوال التجميعية الشرطية (على سبيل المثال:
avgIfوsumIfوmaxIf) القيمةNULLعند غياب الصفوف ومع استخدام وسيطات Nullable. #13964 (Winter Zhang).
إصلاح الأخطاء
- إصلاح خلل قد يتسبب في تعليق استعلامات
ON CLUSTERإلى أجل غير مسمى على جداول ReplicatedMergeTree غير القائدة. #17089 (alesapin). - إعادة تحديد عنوان IP الخاص بـ
format_avro_schema_registry_urlعند حدوث أخطاء. #16985 (filimonov). - إصلاح احتمال تعطل الخادم بعد
ALTER TABLE ... MODIFY COLUMN ... NewTypeعندما يحتويSELECTعلى تعبيرWHEREيعتمد على العمود الجاري تعديله، بينما لم يكتمل التعديل بعد. #16968 (Amos Bird). - يجب أن ينشئ نص التثبيت دائمًا المجلدات الفرعية داخل مجلدات config. وهذا ينطبق فقط على بناء Docker مع config مخصص. #16936 (filimonov).
- إصلاح الخطأ المحتمل
Illegal type of argumentفي الاستعلامات التي تتضمنORDER BY. يعالج #16580. #16928 (Nikolai Kochetov). - إلغاء الرفع متعدد الأجزاء إذا لم تُكتب أي بيانات إلى WriteBufferFromS3. #16840 (Pavel Kovalenko).
- إصلاح التعطل عند استخدام
anyدون أي وسائط. هذا يخص #16803. مع الإشارة إلى @azat. #16826 (Amos Bird). - إصلاح عامل التشغيل
INعبر عدة أعمدة وtuples عند تفعيل الإعدادtransform_null_in. يعالج #15310. #16722 (Anton Popov). - يُصلح هذا optimize_read_in_order/optimize_aggregation_in_order عند استخدام max_threads>0 ووجود تعبير في
ORDER BY. #16637 (Azat Khuzhin). - يعالج #16574 و#16231، ويُصلح فشل الاستعلام البعيد عند استخدام دالة التجميع ذات اللاحقة
if. #16610 (Winter Zhang). - ينتهي الاستعلام أسرع عند حدوث استثناء. كما يُلغى التنفيذ على النسخ المتماثلة البعيدة إذا وقع استثناء. #15578 (Azat Khuzhin).
إصدار ClickHouse v20.9.5.5-stable، 2020-11-13
إصلاح الأخطاء
- إصلاح حالات التعطل الصامت النادرة عندما تكون أداة تحليل الاستعلامات مفعّلة ويكون ClickHouse مثبّتًا على نظام تشغيل يستخدم إصدارًا من glibc يحتوي (على ما يبدو) على asynchronous unwind tables معطوبة لبعض الدوال. يُصلح هذا #15301. ويُصلح هذا #13098. #16846 (alexey-milovidov).
- الآن، عند تحليل AVRO من الإدخال، تُزال LowCardinality من النوع. يُصلح هذا #16188. #16521 (Mike).
- إصلاح النمو السريع في البيانات الوصفية عند استخدام MySQL Master -> MySQL Slave -> محرك ClickHouse MaterializeMySQL، مع تفعيل
slave_parallel_workerعلى MySQL Slave، وذلك عبر تقليص مجموعات GTID بشكل صحيح. يُصلح هذا #15951. #16504 (TCeason). - إصلاح DROP TABLE لمحرك Distributed (حالة تسابق مع INSERT). #16409 (Azat Khuzhin).
- إصلاح معالجة الإدخالات الكبيرة جدًا في replication queue. قد تظهر إدخالات كبيرة جدًا في استعلامات ALTER إذا كانت بنية الجدول كبيرة للغاية (تقترب من 1 MB). يُصلح هذا #16307. #16332 (alexey-milovidov).
- تم إصلاح السلوك غير المتسق الذي كان قد يؤدي إلى إسقاط جزء من البيانات المُعادة لأن المجموعة المستخدمة لتصفيتها لم تكن قد أُنشئت. #16308 (Nikita Mikhaylov).
- إصلاح خطأ متعلق بقاعدة بيانات MySQL. عندما يكون خادم MySQL المستخدم كمحرك قاعدة بيانات متوقفًا، تُطلق بعض الاستعلامات Exception لأنها تحاول جلب الجداول من خادم معطّل، رغم أن ذلك غير ضروري. على سبيل المثال، يجب أن يعمل الاستعلام
SELECT ... FROM system.partsفقط مع جداول MergeTree وألا يتعامل مع قاعدة بيانات MySQL إطلاقًا. #16032 (Kruglov Pavel).
إصدار ClickHouse v20.9.4.76-stable (2020-10-29)
إصلاح الأخطاء
- إصلاح التحرير المزدوج للذاكرة عند حدوث استثناء في الدالة
dictGet. كان ذلك قد يحدث إذا جرى تحميل القاموس مع وجود خطأ. #16429 (Nikolai Kochetov). - إصلاح
group byمع مُعدِّلات totals/rollup/cube ودوال min/max على مفاتيحgroup by. يعالج #16393. #16397 (Anton Popov). - إصلاح INSERT غير المتزامن في Distributed مع prefer_localhost_replica=0 و internal_replication. #16358 (Azat Khuzhin).
- إصلاح شيفرة خاطئة للغاية في تنفيذ TwoLevelStringHashTable، وقد تؤدي إلى تسرّب في الذاكرة. ومن المدهش كيف ظل هذا الخلل كامنًا كل هذا الوقت… #16264 (Amos Bird).
- إصلاح الحالة التي يمكن فيها تخصيص ذاكرة زائدة بغضّ النظر عن الحد. هذا يغلق #14560. #16206 (alexey-milovidov).
- إصلاح تعليق الاستعلام
ALTER MODIFY ... ORDER BYفيReplicatedVersionedCollapsingMergeTree. هذا يعالج #15980. #16011 (alesapin). - إصلاح محلّل أسماء collate وcharset، ودعم
length = 0للنوع string. #16008 (Winter Zhang). - السماح باستخدام direct layout للقواميس ذات المفاتيح المعقّدة. #16007 (Anton Popov).
- منع تعليق النسخة المتماثلة لمدة 5-10 دقائق عند حدوث خطأ في replication بعد فترة من عدم النشاط. #15987 (filimonov).
- إصلاح حالات segfault نادرة عند الإدراج في MaterializedView أو الاستعلام منها، مع إسقاط الجدول الهدف بالتزامن (لمحرّك قاعدة البيانات Atomic). #15984 (tavplubix).
- إصلاح الالتباس في parsing الخاص بـ settings profiles: أصبحت
CREATE USER ... SETTINGS profile readonlyتُعتبر الآن استخدامًا لملف تعريف باسمreadonly، لا إعدادًا باسمprofileمع القيد readonly. هذا يعالج #15628. #15982 (Vitaly Baranov). - إصلاح تعطل يحدث عند فشل إنشاء قاعدة البيانات. #15954 (Winter Zhang).
- إصلاح فشل
DROP TABLE IF EXISTSمع الخطأTable ... does not existعندما يُعاد تسمية الجدول بالتزامن (لمحرّك قاعدة البيانات Atomic). وإصلاح حالة deadlock نادرة عند تنفيذ بعض DDL queries بالتزامن على عدة جداول (مثلDROP DATABASEوRENAME TABLE) وإصلاح فشلDROP/DETACH DATABASEمعTable ... does not existعند تنفيذDROP/DETACH TABLEبالتزامن. #15934 (tavplubix). - إصلاح النتيجة الفارغة غير الصحيحة للاستعلام من جدول
Distributedإذا كان الاستعلام يحتوي علىWHEREوPREWHEREوGLOBAL IN. يعالج #15792. #15933 (Nikolai Kochetov). - إصلاح حالات التعطل المتبادل المحتملة في RBAC. #15875 (Vitaly Baranov).
- إصلاح الاستثناء
Block structure mismatchفي استعلاماتSELECT ... ORDER BY DESCالتي نُفِّذت بعد استعلامALTER MODIFY COLUMN. يعالج #15800. #15852 (alesapin). - إصلاح عدم دقة
select count()في MaterializeMySQL. #15767 (tavplubix). - إصلاح بعض حالات الاستعلامات التي لا تُحدَّد فيها إلا الأعمدة الافتراضية. سابقًا، كان يمكن ظهور الاستثناء
Not found column _nothing in block. يعالج #12298. #15756 (Anton Popov). - إصلاح الانخفاض الشديد في القيمة الافتراضية للإعداد
max_replicated_logs_to_keep، والذي قد يؤدي إلى فقدان النسخ المتماثلة بوتيرة متكررة. وتحسين عملية استعادة النسخة المتماثلة المفقودة باختيار أحدث نسخة متماثلة للاستنساخ. كذلك، لا تُزال الأجزاء القديمة من النسخة المتماثلة المفقودة، بل تُفصل بدلًا من ذلك. #15701 (tavplubix). - إصلاح الخطأ
Cannot add simple transform to empty Pipeالذي كان يحدث أثناء القراءة من جدولBufferذي البنية المختلفة عن بنية جدول الوجهة. وكان ذلك ممكنًا إذا أعاد جدول الوجهة نتيجة فارغة للاستعلام. يعالج #15529. #15662 (Nikolai Kochetov). - إصلاح خلل متعلق بأنماط globs في S3 table function، إذ لم تكن المنطقة المستخرجة من عنوان URL تُطبَّق على إعدادات عميل S3. #15646 (Vladimir Chebotarev).
- تقليل قيمة المقياس
ReadonlyReplicaعند فصل الجداول للقراءة فقط. وهذا يعالج #15598. #15592 (sundyli). - إظهار خطأ عند تمرير معلَمة واحدة إلى ReplicatedMergeTree بدلًا من تجاهلها. #15516 (nvartolomei).
تحسين
- أصبح الآن مسموحًا بتنفيذ استعلامات
ALTER ... ON CLUSTERبغضّ النظر عن إعداد<internal_replication>في إعدادات العنقود. #16075 (alesapin). - توسيع وحدات الماكرو
{database}و{table}و{uuid}في وسائطReplicatedMergeTreeعند إنشاء الجدول. #16160 (tavplubix).
إصدار ClickHouse v20.9.3.45 stable (2020-10-09)
إصلاح الأخطاء
- إصلاح الخطأ
Cannot find columnالذي قد يحدث عند الإدراج فيMATERIALIZED VIEWإذا كان الاستعلام الخاص بـMVيحتوي علىARRAY JOIN. #15717 (Nikolai Kochetov). - إصلاح حالة تسابق في AMQP-CPP. #15667 (alesapin).
- إصلاح ترتيب تحرير الموارد في خطوة
ReadFromStorageضمن خطة الاستعلام. وقد يتسبب ذلك في حدوث أعطال في حالات نادرة. وربما يكون مرتبطًا بـ #15610. #15645 (Nikolai Kochetov). - إصلاح الخطأ
Element ... is not a constant expressionعند استخدام ناتج الدالةJSON*فيVALUESأوLIMITأو في الجانب الأيمن من العاملIN. #15589 (tavplubix). - منع احتمال ظهور رسالة الخطأ
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. ويُصلح ذلك #15541. #15557 (alexey-milovidov). - تقليل استخدام الذاكرة بشكل كبير في AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- قد تتوقف mutation عن التقدم أثناء انتظار part غير موجود بعد
MOVEأوREPLACE PARTITIONأو، في حالات نادرة، بعدDETACHأوDROP PARTITION. وقد أُصلحت هذه المشكلة. #15537 (tavplubix). - إصلاح خلل يتسبب في توقف العامل
ILIKEعن كونه غير حساس لحالة الأحرف إذا نُفِّذLIKEبالنمط نفسه. #15536 (alesapin). - إصلاح أخطاء
Missing columnsعند تحديد أعمدة غير موجودة في البيانات، لكنها تعتمد على أعمدة أخرى غير موجودة أيضًا في البيانات. يُصلح #15530. #15532 (alesapin). - إصلاح خلل في اشتراك الأحداث في DDLWorker قد يؤدي، في حالات نادرة، إلى تعليق الاستعلامات في
ON CLUSTER. أُدخل في #13450. #15477 (alesapin). - الإبلاغ عن الخطأ الصحيح عندما تكون الوسيطة الثانية للدالة التجميعية
boundingRatioمن نوع غير صحيح. #15407 (detailyang). - إصلاح خلل يؤدي إلى فشل استعلامات مثل
SELECT toStartOfDay(today())مع الإشارة إلى أن وسيطة time_zone فارغة. #15319 (Bharat Nallan). - إصلاح حالة تسابق نادرة أثناء إعادة تسمية جدول MergeTree والتنظيف في الخلفية. #15304 (alesapin).
- إصلاح حالة تسابق نادرة عند بدء تشغيل الخادم عندما تكون system.logs مفعّلة. #15300 (alesapin).
- إصلاح تقرير MSan في QueryLog. قد تُستخدم ذاكرة غير مهيأة للحقل
memory_usage. #15258 (alexey-milovidov). - إصلاح تعطل الـ instance عند استخدام joinGet مع الأنواع
LowCardinality. يُصلح هذا #15214. #15220 (Amos Bird). - إصلاح خلل في table engine
Bufferكان يمنع insert بيانات ببنية جديدة إلىBufferبعد queryALTER. يُصلح هذا #15117. #15192 (alesapin). - ضبط حجم حقل decimals في حزمة تعريف عمود mysql. #15152 (maqroll).
- إصلاح الخطأ
Cannot rename ... errno: 22, strerror: Invalid argumentعند تنفيذ DDL query في atomic database عند تشغيل clickhouse-server داخل docker على Mac OS. #15024 (tavplubix). - إصلاح يتيح عمل push down الخاصة بـ predicate عندما يحتوي subquery على الدالة finalizeAggregation. يُصلح هذا #14847. #14937 (filimonov).
- إصلاح مشكلة قد تتسبب في تعلّق server عند بدء التشغيل أثناء التواصل مع ZooKeeper، إذا كان يلزم fetch configuration files من ZK (باستخدام خيار include
from_zk). يُصلح هذا #14814. #14843 (Alexander Kuzmenkov).
تحسين
- أصبح من الممكن الآن تغيير نوع عمود الإصدار في
VersionedCollapsingMergeTreeباستخدام استعلامALTER. #15442 (alesapin).
إصدار ClickHouse v20.9.2.20، 2020-09-22
تغيير غير متوافق مع الإصدارات السابقة
- عند الترقية من إصدارات أقدم من 20.5، إذا أُجري تحديث متدرّج وكانت الكتلة تضم إصدارات 20.5 أو أحدث إلى جانب إصدارات أقدم من 20.5، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة وبدأ الإصدار القديم العمل في وجود إصدارات أحدث، فقد يؤدي ذلك إلى ظهور أخطاء
Part ... intersects previous part. ولتجنّب هذا الخطأ، ثبّت أولًا حزم clickhouse-server الأحدث على جميع عُقد الكتلة، ثم أجرِ عمليات إعادة التشغيل (حتى يبدأ clickhouse-server عند إعادة تشغيله بالإصدار الجديد).
ميزة جديدة
- تمت إضافة محوّلات الأعمدة
EXCEPTوREPLACEوAPPLY، ويمكن تطبيقها على قائمة الأعمدة المحددة (بعد*أوCOLUMNS(...)). على سبيل المثال، يمكنك كتابةSELECT * EXCEPT(URL) REPLACE(number + 1 AS number). ومثال آخر:select * apply(length) apply(max) from wide_string_tableلمعرفة الحد الأقصى لطول جميع الأعمدة النصية. #14233 (Amos Bird). - تمت إضافة دالة تجميع
rankCorrالتي تحسب معامل ارتباط الرتب. #11769 (antikvist) #14411 (Nikita Mikhaylov). - تمت إضافة دالة الجدول
viewالتي تحوّل استعلامًا فرعيًا إلى كائن جدول. ويساعد ذلك على تمرير الاستعلامات. على سبيل المثال، يمكن استخدامها في دوال الجدول remote/cluster. #12567 (Amos Bird).
إصلاح الأخطاء
- إصلاح خطأ يحدث عندما تؤدي عملية
ALTER UPDATEمع عمودNullableفي تعبير الإسناد وقيمة ثابتة (مثلUPDATE x = 42) إلى قيمة غير صحيحة في العمود أو إلى segfault. يُصلح هذا #13634، #14045. #14646 (alesapin). - إصلاح نتيجة ضرب
Decimalالخاطئة الناتجة عن مقياس عشري غير صحيح لعمود النتيجة. #14603 (Artem Zuikov). - إصلاح ترتيب الفرز غير الصحيح للعمود
Nullable. يُصلح هذا #14344. #14495 (Nikita Mikhaylov). - إصلاح عدم اتساق المقارنة مع المفتاح الأساسي من النوع
FixedStringعند تحليل الفهرس إذا جرت المقارنة بسلسلة أقصر. يُصلح هذا #14908. #15033 (Amos Bird). - إصلاح خطأ يؤدي إلى تعيين merges بشكل غير صحيح إذا كان الجدول يحتوي على partition فيها part واحدة فقط. #14444 (alesapin).
- إذا جرى استدعاء الدالة
barبوسائط مُعدّة خصيصًا، فقد كان من الممكن حدوث تجاوز سعة المخزن المؤقت. يُغلق هذا #13926. #15028 (alexey-milovidov). - نشر ترددات CPU لكل نواة منطقية في
system.asynchronous_metrics. يُصلح هذا #14923. #14924 (Alexander Kuzmenkov). - إصلاح الخطأ
.metadata.tmp File existsعند استخدام محرك قاعدة البياناتMaterializeMySQL. #14898 (Winter Zhang). - إصلاح مشكلة قد تؤدي فيها بعض استدعاءات الدالة
extractAllGroupsإلى ظهور الخطأ “Memory limit exceeded”. يُصلح هذا #13383. #14889 (alexey-milovidov). - إصلاح SIGSEGV عند محاولة INSERT إلى
StorageFile(fd). #14887 (Azat Khuzhin). - إصلاح خطأ نادر في استعلامات
SELECTعندما يكون للعمود المطلوب تعبيرDEFAULTيعتمد على عمود آخر له أيضًاDEFAULT، ولا يكون موجودًا في استعلام التحديد ولا على القرص. يُصلح هذا جزئيًا #14531. #14845 (alesapin). - إصلاح اكتشاف الرتابة الخاطئ لتحويل
Int -> Intالمُضيَّق للأنواع الموقعة. قد يؤدي ذلك إلى نتيجة query غير صحيحة. كُشف هذا الخطأ في #14513. #14783 (Amos Bird). - إصلاح غياب اسم قاعدة البيانات الافتراضي في البيانات الوصفية للعرض المادي عند تنفيذ
ALTER ... MODIFY QUERY. #14664 (tavplubix). - إصلاح احتمال إعطاء الدالة
hasنتيجة غير صحيحة عند استخدام النوعينLowCardinalityوNullable. #14591 (Mike). - تنظيف directory البيانات بعد استثناءات ZooKeeper أثناء استعلام CREATE للجداول التي تستخدم محرك ReplicatedMergeTree. #14563 (Bharat Nallan).
- إصلاح حالات segfault نادرة في الدوال التي تستخدم المُعدِّل
-Resample، والتي قد تظهر نتيجة overflow مع parameters كبيرة جدًا. #14562 (Anton Popov). - التحقق من overflow في حجم Array في aggregate function
topK. وبدون هذا التحقق، قد يرسل المستخدم query ذات parameters مُعدّة بعناية تؤدي إلى crash في server. هذا يُغلق #14452. #14467 (alexey-milovidov). - تمرير أوامر restart/start/stop/reload الخاصة بـ SysVinit إلى systemd (إذا كان مستخدمًا). #14460 (Azat Khuzhin).
- إيقاف تنفيذ query إذا حدث Exception داخل
PipelineExecutorنفسه. قد يمنع هذا حالات نادرة محتملة لتعليق query. #14334 #14402 (Nikolai Kochetov). - إصلاح crash أثناء استعلام
ALTERلجدول تم إنشاؤه باستخدامAS table_function. يُصلح #14212. #14326 (alesapin). - إصلاح Exception أثناء استعلام ALTER LIVE VIEW مع الأمر REFRESH. LIVE VIEW هي feature تجريبية. #14320 (Bharat Nallan).
- إصلاح lifetime الخاصة بـ QueryPlan (في EXPLAIN PIPELINE graph=1) للاستعلامات التي تحتوي على interpreter متداخل. #14315 (Azat Khuzhin).
- تحسين التحقق من حجم Tuple في external dictionaries ذات المفتاح المركب ضمن SSD cache. هذا يُصلح #13981. #14313 (alexey-milovidov).
- منع استخدام
CODECمع column type ALIAS. يُصلح #13911. #14263 (Bharat Nallan). - إصلاح statement الخاصة بـ GRANT ALL عند تنفيذها على Level غير عام. #13987 (Vitaly Baranov).
- إصلاح التقاط arrayJoin() داخل lambda (إذ كان يتم throw لـ Exception برسالة logical error). #13792 (Azat Khuzhin).
ميزة تجريبية
- تمت إضافة الأداة
db-generatorلإنشاء قاعدة بيانات عشوائية انطلاقًا من استعلامات SELECT المعطاة. وقد يسهّل ذلك إعادة إنتاج المشكلات عندما لا يتوفر من المستخدم سوى بلاغ خطأ غير مكتمل. #14442 (Nikita Mikhaylov) #10973 (ZeDRoman).
تحسين
- السماح باستخدام إعداد تخزين متعدد الوحدات في تخزين Distributed. #14839 (Pavel Kovalenko).
- منع استخدام وسيطة
time_zoneفارغة في الدوال من النوعtoStartOf*. #14509 (Bharat Nallan). - يعيد معالج MySQL القيمة
OKللاستعلامات مثلSET @@var = value. وتُتجاهل هذه التعليمة. وهذا مطلوب لأن بعض برامج تشغيل MySQL ترسل استعلامSET @@للإعداد بعد إتمام المصافحة https://github.com/ClickHouse/ClickHouse/issues/9336#issuecomment-686222422 . #14469 (BohuTANG). - ستُطبَّق الآن قيم TTL أثناء الدمج إذا لم تكن قد طُبِّقت فعليًا من قبل. #14438 (alesapin).
- يدعم
clickhouse-obfuscatorالآن النوع UUID كما هو مقترح في #13163. #14409 (dimarub2000). - أُضيف الإعداد الجديد
system_events_show_zero_valuesكما هو مقترح في #11384. #14404 (dimarub2000). - تحويل المفتاح الأساسي ضمنيًا إلى غير NULL في
MaterializeMySQL(كما فيMySQL). يُصلح #14114. #14397 (Winter Zhang). - استبدال الأعداد الصحيحة العريضة (256 بت) من boost multiprecision بتنفيذ من https://github.com/cerevra/int. الأعداد الصحيحة 256 بت تجريبية. #14229 (Artem Zuikov).
- إضافة compression codec افتراضي للأجزاء في
system.part_logباسمdefault_compression_codec. #14116 (alesapin). - إضافة وسيطة الدقة للنوع
DateTime. يتيح ذلك استخدام الاسمDateTimeبدلًا منDateTime64. #13761 (Winter Zhang). - أُضيفت مصادقة requirepass للقاموس الخارجي
Redis. #13688 (Ivan Torgashov). - تحسينات في المحرك
RabbitMQ: أُضيفت معالجة أعطال الاتصال والقنوات، وعمليات commit سليمة، ومعالجة إخفاقات insert، وتحسين exchanges، وديمومة queue وإمكانية استئنافها، وإعدادات queue جديدة. كما أُصلحت الاختبارات. #12761 (Kseniia Sumarokova). - دعم codecs مخصصة في compact parts. #12183 (Anton Popov).
تحسين الأداء
- تحسين الاستعلامات التي تستخدم LIMIT/LIMIT BY/ORDER BY لـ Distributed مع GROUP BY sharding_key (ضمن
optimize_skip_unused_shardsوoptimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin). - إنشاء مجموعات Set لعدة عمليات
JOINوINبالتوازي. قد يؤدي ذلك إلى تحسين طفيف في أداء الاستعلامات التي تحتوي على عدة تعبيرات مختلفة من نوعIN subquery. #14412 (Nikolai Kochetov). - تحسين أداء محرك Kafka من خلال تخصيص مؤشر ترابط مستقل لكل مستهلك. واستخدام مجمع مؤشرات ترابط منفصل لمحركات التدفق (مثل Kafka). #13939 (fastio).
تحسينات البناء/الاختبار/الحزم
- تقليل حجم الملف التنفيذي في نسخة Debug عبر إزالة معلومات Debug من
Functions. هذا مطلوب فقط لمشروع داخلي واحد في Yandex يستخدم أداة ربط قديمة جدًا. #14549 (alexey-milovidov). - التحضير للبناء باستخدام clang 11. #14455 (alexey-milovidov).
- إصلاح المنطق في سكربت backport. في الإصدارات السابقة، كان يعمل مع أي وسوم بلون أحمر بنسبة 100%. كان ذلك غريبًا. #14433 (alexey-milovidov).
- تستخدم اختبارات التكامل تهيئة أساسية افتراضية. وتكون جميع تغييرات config صريحة باستخدام المعاملات main_configs وuser_configs وdictionaries لكل مثيل. #13647 (Ilya Yatsishin).
إصدار ClickHouse 20.8
إصدار ClickHouse v20.8.12.2-lts، 2021-01-16
إصلاح الأخطاء
- إصلاح *If combinator مع الدالة الأحادية وأنواع Nullable. #18806 (Azat Khuzhin).
- تقييد عمليات الدمج من wide إلى compact parts. في حالة vertical merge، كان ذلك يؤدي إلى تلف الجزء الناتج. #18381 (Anton Popov).
إصدار ClickHouse v20.8.11.17-lts، 2020-12-25
إصلاح الأخطاء
- تعطيل الكتابة باستخدام AIO أثناء عمليات الدمج، لأنه قد يؤدي في حالات نادرة للغاية إلى تلف البيانات في أعمدة المفتاح الأساسي أثناء الدمج. #18481 (alesapin).
- تم إصلاح الخطأ
value is too shortعند تنفيذ الدوالtoType(...)(toDateوtoUInt32وما إلى ذلك) باستخدام وسيطة من النوعNullable(String). تُرجع هذه الدوال الآنNULLعند حدوث أخطاء في التحليل بدلًا من إثارة استثناء. يعالج هذا #7673. #18445 (tavplubix). - إصلاح الأعطال المحتملة في الدوال التجميعية مع المُركِّب
Distinctعند استخدام التجميع على مستويين. يعالج هذا #17682. #18365 (Anton Popov).
إصدار ClickHouse v20.8.10.13-lts، 2020-12-24
إصلاح الأخطاء
- عندما جرى إعداد تدوير سجل الخادم باستخدام المعلَمة
logger.sizeبقيمة رقمية أكبر من 2^32، لم يكن تدوير السجلات يتم بشكل صحيح. #17905 (Alexander Kuzmenkov). - تم إصلاح التهيئة غير الصحيحة لـ
max_compress_block_sizeفي MergeTreeWriterSettings باستخدامmin_compress_block_size. #17833 (flynn). - تم إصلاح مشكلة فشل ClickHouse في استئناف الاتصال بخوادم MySQL. #17681 (Alexander Kazakov).
- تم إصلاح تعليق استعلام
ALTERعندما تكون الـ mutation المقابلة قد أُوقفت على replica أخرى. ويؤدي هذا إلى إصلاح #16953. #17499 (alesapin). - تم إصلاح خلل كان يحدث عندما كان ClickHouse يقدّر حجم mark cache بأقل من قيمته الفعلية. وقد يحدث ذلك عند وجود عدد كبير من الملفات الصغيرة جدًا التي تحتوي على marks. #17496 (alesapin).
- تم إصلاح
ORDER BYعند تفعيل الإعدادoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - تم إصلاح مقارنة
ColumnConstالتي كانت تؤدي إلى crash. ويُصلح هذا #17088. #17135 (Amos Bird). - تم إصلاح خلل كان قد يؤدي إلى تعليق استعلامات
ON CLUSTERإلى الأبد في ReplicatedMergeTreeTables غير القائدة. #17089 (alesapin). - تجنّب أخطاء الشبكة غير الضرورية في الاستعلامات البعيدة التي قد تُلغى أثناء التنفيذ، مثل الاستعلامات التي تحتوي على
LIMIT. #17006 (Azat Khuzhin). - أعد حل عنوان IP الخاص بـ
format_avro_schema_registry_urlعند حدوث أخطاء. #16985 (filimonov). - تم إصلاح crash محتمل في الخادم بعد
ALTER TABLE ... MODIFY COLUMN ... NewTypeعندما يكون فيSELECTتعبيرWHEREعلى العمود الجاري تعديله، ولم يكن التعديل قد اكتمل بعد. #16968 (Amos Bird). - ينبغي لسكريبت التثبيت أن ينشئ دائمًا الأدلة الفرعية داخل مجلدات config. وهذا ذو صلة فقط ببناء Docker مع config مخصص. #16936 (filimonov).
- تم إصلاح الخطأ المحتمل
Illegal type of argumentفي الاستعلامات التي تحتوي علىORDER BY. ويُصلح هذا #16580. #16928 (Nikolai Kochetov). - أوقِف multipart upload إذا لم تُكتب أي بيانات إلى WriteBufferFromS3. #16840 (Pavel Kovalenko).
- تم إصلاح crash عند استخدام
anyمن دون أي arguments. ويُصلح هذا #16803. #16826 (Amos Bird). - تم إصلاح العامل
INعبر عدة أعمدة وTuples عند تفعيل الإعدادtransform_null_in. ويُصلح هذا #15310. #16722 (Anton Popov). - تم إصلاح السلوك غير المتسق لـ
optimize_read_in_order/optimize_aggregation_in_orderعندmax_threads > 0ومع وجود تعبير فيORDER BY. #16637 (Azat Khuzhin). - تم إصلاح المشكلة التي كانت تؤدي فيها تحسينات الاستعلامات إلى نتائج غير صحيحة إذا كان الاستعلام يحتوي على
ARRAY JOIN. #17887 (sundyli). - يكتمل الاستعلام بسرعة أكبر في حال حدوث استثناء. ويُلغى التنفيذ على النُسخ المتماثلة البعيدة إذا وقع استثناء. #15578 (Azat Khuzhin).
إصدار ClickHouse v20.8.6.6-lts، 2020-11-13
إصلاح الأخطاء
- إصلاح حالات التعطل الصامتة النادرة عند تفعيل مُحلّل الاستعلامات وتثبيت ClickHouse على نظام تشغيل يحتوي على إصدار من glibc به (على ما يبدو) جداول فكّ تتبّع غير متزامن معطّلة لبعض الدوال. يُصلح هذا #15301. ويُصلح هذا #13098. #16846 (alexey-milovidov).
- الآن، عند تحليل AVRO من الإدخال، تُزال LowCardinality من النوع. يُصلح هذا #16188. #16521 (Mike).
- إصلاح النمو السريع للبيانات الوصفية عند استخدام MySQL Master -> MySQL Slave -> محرك ClickHouse MaterializeMySQL، مع تفعيل
slave_parallel_workerعلى MySQL Slave، وذلك عبر تقليص مجموعات GTID على نحو صحيح. يُصلح هذا #15951. #16504 (TCeason). - إصلاح DROP TABLE في Distributed (حالة تسابق مع INSERT). #16409 (Azat Khuzhin).
- إصلاح معالجة الإدخالات الكبيرة جدًا في قائمة انتظار النسخ المتماثل. قد تظهر إدخالات كبيرة جدًا في استعلامات ALTER إذا كانت بنية الجدول كبيرة للغاية (تقارب 1 MB). يُصلح هذا #16307. #16332 (alexey-milovidov).
- إصلاح السلوك غير المتسق عندما قد يُسقَط جزء من البيانات المُعادة لأن المجموعة المستخدمة في ترشيحها لم يتم إنشاؤها. #16308 (Nikita Mikhaylov).
- إصلاح خلل في قاعدة بيانات MySQL. عندما يكون خادم MySQL المستخدم كمحرك قاعدة بيانات متوقفًا، فإن بعض الاستعلامات تُطلق استثناءً لأنها تحاول جلب الجداول من خادم معطّل، رغم أن ذلك غير ضروري. على سبيل المثال، يجب أن يعمل الاستعلام
SELECT ... FROM system.partsمع جداول MergeTree فقط، وألا يتعامل مع قاعدة بيانات MySQL على الإطلاق. #16032 (Kruglov Pavel).
إصدار ClickHouse v20.8.5.45-lts، 2020-10-29
إصلاح الأخطاء
- إصلاح التحرير المزدوج للذاكرة عند حدوث استثناء في الدالة
dictGet. كان ذلك قد يحدث إذا جرى تحميل القاموس مع وجود خطأ. #16429 (Nikolai Kochetov). - إصلاح
group byمع معدِّلات totals/rollup/cube ودوال min/max على مفاتيحgroup by. يعالج هذا #16393. #16397 (Anton Popov). - إصلاح
INSERTغير المتزامن في Distributed معprefer_localhost_replica=0وinternal_replication. #16358 (Azat Khuzhin). - إصلاح تسرّب محتمل للذاكرة أثناء
GROUP BYباستخدام مفاتيح string، بسبب خطأ في تنفيذTwoLevelStringHashTable. #16264 (Amos Bird). - إصلاح الحالة التي يمكن فيها تخصيص ذاكرة زائدة بغضّ النظر عن الحدّ المعين. يغلق هذا #14560. #16206 (alexey-milovidov).
- إصلاح تعليق query
ALTER MODIFY ... ORDER BYفيReplicatedVersionedCollapsingMergeTree. يعالج هذا #15980. #16011 (alesapin). - إصلاح محلّل اسم collate واسم charset، ودعم
length = 0لنوع string. #16008 (Winter Zhang). - السماح باستخدام direct layout في Dictionaries ذات المفاتيح المعقدة. #16007 (Anton Popov).
- منع تعليق replica لمدة 5-10 دقائق عند حدوث خطأ في replication بعد فترة من عدم النشاط. #15987 (filimonov).
- إصلاح حالات segfault نادرة عند الإدراج في MaterializedView أو القراءة منها، بالتزامن مع حذف target table (لمحرّك قاعدة البيانات Atomic). #15984 (tavplubix).
- إصلاح الالتباس في parsing لـ settings profiles: أصبح
CREATE USER ... SETTINGS profile readonlyيُعد الآن استخدامًا لـ profile اسمهreadonly، وليس setting باسمprofileمع القيد readonly. يعالج هذا #15628. #15982 (Vitaly Baranov). - إصلاح تعطل عند فشل إنشاء database. #15954 (Winter Zhang).
- إصلاح فشل
DROP TABLE IF EXISTSمع الخطأTable ... does not existعندما تجري إعادة تسمية table بالتزامن (لمحرّك قاعدة البيانات Atomic). وإصلاح حالة deadlock نادرة عند تنفيذ بعض DDL queries على عدة جداول بالتزامن (مثلDROP DATABASEوRENAME TABLE). وإصلاح فشلDROP/DETACH DATABASEمعTable ... does not existعند تنفيذDROP/DETACH TABLEبالتزامن. #15934 (tavplubix). - إصلاح النتيجة الفارغة غير الصحيحة لاستعلام من جدول
Distributedإذا كان الاستعلام يحتوي علىWHEREوPREWHEREوGLOBAL IN. يعالج هذا #15792. #15933 (Nikolai Kochetov). - إصلاح حالات التوقف المتبادل المحتملة في RBAC. #15875 (Vitaly Baranov).
- إصلاح الاستثناء
Block structure mismatchفي استعلاماتSELECT ... ORDER BY DESCالتي كانت تُنفَّذ بعد استعلامALTER MODIFY COLUMN. يُصلح هذا #15800. #15852 (alesapin). - إصلاح بعض حالات الاستعلامات التي لا تُحدَّد فيها سوى الأعمدة الظاهرية. في السابق، كان من الممكن طرح الاستثناء
Not found column _nothing in block. يُصلح هذا #12298. #15756 (Anton Popov). - إصلاح الخطأ
Cannot find columnالذي قد يحدث عند الإدراج فيMATERIALIZED VIEWإذا كان الاستعلام الخاص بـMVيحتوي علىARRAY JOIN. #15717 (Nikolai Kochetov). - تصحيح القيمة الافتراضية المنخفضة جدًا للإعداد
max_replicated_logs_to_keep، والتي قد تتسبب في فقدان النسخ المتماثلة بوتيرة متكررة. وتحسين عملية استعادة النسخة المتماثلة المفقودة باختيار أحدث نسخة متماثلة للاستنساخ منها. كذلك، لا تُزل الأجزاء القديمة من النسخة المتماثلة المفقودة، بل افصلها بدلًا من ذلك. #15701 (tavplubix). - إصلاح الخطأ
Cannot add simple transform to empty Pipeالذي كان يحدث أثناء القراءة من جدولBufferذي البنية المختلفة عن جدول الوجهة. وكان ذلك ممكنًا إذا أعاد جدول الوجهة نتيجة فارغة للاستعلام. يُصلح هذا #15529. #15662 (Nikolai Kochetov). - إصلاح خلل في globs ضمن دالة الجدول S3، إذ لم تكن المنطقة المستخرجة من عنوان URL تُطبَّق على إعدادات عميل S3. #15646 (Vladimir Chebotarev).
- إنقاص المقياس
ReadonlyReplicaعند فصل الجداول للقراءة فقط. يُصلح هذا #15598. #15592 (sundyli). - طرح خطأ عند تمرير مَعلمة واحدة إلى ReplicatedMergeTree بدلًا من تجاهلها. #15516 (nvartolomei).
تحسين
- أصبح من المسموح الآن تنفيذ استعلامات
ALTER ... ON CLUSTERبغض النظر عن إعداد<internal_replication>في إعدادات الكتلة. #16075 (alesapin). - توسيع وحدات الماكرو
{database}و{table}و{uuid}في وسائطReplicatedMergeTreeعند إنشاء الجدول. #16159 (tavplubix).
إصدار ClickHouse v20.8.4.11-lts، 2020-10-09
إصلاح الأخطاء
- إصلاح ترتيب تدمير الموارد في خطوة
ReadFromStorageمن مخطط الاستعلام. قد يؤدي ذلك إلى حدوث أعطال في حالات نادرة. ومن المحتمل أن يكون مرتبطًا بـ #15610. #15645 (Nikolai Kochetov). - إصلاح الخطأ
Element ... is not a constant expressionعند استخدام ناتج الدالةJSON*فيVALUESأوLIMITأو في الطرف الأيمن من المعاملIN. #15589 (tavplubix). - منع احتمال ظهور رسالة الخطأ
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. يؤدي هذا إلى إصلاح #15541. #15557 (alexey-milovidov). - تقليل استخدام الذاكرة بشكل كبير في AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- قد تتعطل mutation أثناء انتظار part غير موجود بعد
MOVEأوREPLACE PARTITIONأو، في حالات نادرة، بعدDETACHأوDROP PARTITION. تم إصلاح ذلك. #15537 (tavplubix). - إصلاح خلل يتسبب في توقف المعامل
ILIKEعن كونه غير حساس لحالة الأحرف إذا جرى تنفيذLIKEبالنمط نفسه. #15536 (alesapin). - إصلاح أخطاء
Missing columnsعند تحديد أعمدة غير موجودة في البيانات، لكنها تعتمد على أعمدة أخرى غير موجودة أيضًا في البيانات. يؤدي هذا إلى إصلاح #15530. #15532 (alesapin). - إصلاح خلل في event subscription داخل DDLWorker قد يؤدي نادرًا إلى تعليق الاستعلامات في
ON CLUSTER. Introduced in #13450. #15477 (alesapin). - الإبلاغ عن الخطأ الصحيح عندما تكون argument الثانية للدالة التجميعية
boundingRatioمن نوع غير صحيح. #15407 (detailyang). - إصلاح race condition أثناء إعادة تسمية جدول MergeTree وعمليات التنظيف في الخلفية. #15304 (alesapin).
- إصلاح race condition نادرة عند بدء تشغيل server عندما تكون system.logs مفعّلة. #15300 (alesapin).
- إصلاح تقرير MSan في QueryLog. قد تُستخدم ذاكرة غير مهيأة للحقل
memory_usage. #15258 (alexey-milovidov). - إصلاح تعطل instance عند استخدام joinGet مع types من نوع LowCardinality. يؤدي هذا إلى إصلاح #15214. #15220 (Amos Bird).
- إصلاح خلل في table engine
Bufferلا يسمح بإدراج data ذات structure جديدة فيBufferبعد استعلامALTER. يؤدي هذا إلى إصلاح #15117. #15192 (alesapin). - ضبط حجم الحقل decimals في الحزمة الخاصة بتعريف عمود mysql. #15152 (maqroll).
- نستخدم بالفعل مقارنةً مع الحشو بين String و FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). يطبّق طلب السحب هذا المنطق نفسه على مقارنة الحقول، ما يصحّح استخدام FixedString كمفاتيح أساسية. يُصلح هذا #14908. #15033 (Amos Bird).
- إذا جرى استدعاء الدالة
barبوسيطات مُعدّة خصيصًا، فقد كان من الممكن حدوث تجاوز سعة للمخزن المؤقت. يُغلق هذا #13926. #15028 (alexey-milovidov). - إصلاح الخطأ
Cannot rename ... errno: 22, strerror: Invalid argumentعند تنفيذ استعلام DDL في قاعدة البيانات Atomic عند تشغيل clickhouse-server في Docker على Mac OS. #15024 (tavplubix). - يمكن الآن أن تكون الإعدادات
number_of_free_entries_in_pool_to_execute_mutationوnumber_of_free_entries_in_pool_to_lower_max_size_of_mergeمساويةً لـbackground_pool_size. #14975 (alesapin). - إصلاح لجعل push down للشرط يعمل عندما يحتوي الاستعلام الفرعي على الدالة finalizeAggregation. يُصلح هذا #14847. #14937 (filimonov).
- نشر ترددات CPU لكل نواة منطقية في
system.asynchronous_metrics. يُصلح هذا #14923. #14924 (Alexander Kuzmenkov). - إصلاح الخطأ
.metadata.tmp File existsعند استخدام محرك قاعدة البياناتMaterializeMySQL. #14898 (Winter Zhang). - إصلاح مشكلة قد تؤدي إلى تعلّق الخادم عند بدء التشغيل أثناء الاتصال بـ ZooKeeper، إذا كان لا بد من جلب ملفات الإعدادات من ZK (باستخدام خيار التضمين
from_zk). يُصلح هذا #14814. #14843 (Alexander Kuzmenkov). - إصلاح الاكتشاف الخاطئ للرتابة عند تحويل
Int -> Intالمُقلَّص للأنواع الموقَّعة. قد يؤدي ذلك إلى نتيجة استعلام غير صحيحة. كُشف هذا الخلل في #14513. #14783 (Amos Bird). - إصلاح ترتيب الفرز غير الصحيح للعمود
Nullable. يُصلح هذا #14344. #14495 (Nikita Mikhaylov).
تحسين
- بات من الممكن الآن تغيير نوع عمود الإصدار في
VersionedCollapsingMergeTreeباستخدام استعلامALTER. #15442 (alesapin).
إصدار ClickHouse v20.8.3.18-stable، 2020-09-18
إصلاح الأخطاء
- إصلاح المشكلة التي قد تتسبب فيها بعض استدعاءات الدالة
extractAllGroupsفي ظهور الخطأ “تم تجاوز حد الذاكرة”. يعالج هذا #13383. #14889 (alexey-milovidov). - إصلاح SIGSEGV عند محاولة تنفيذ INSERT في StorageFile(fd). #14887 (Azat Khuzhin).
- إصلاح خطأ نادر في استعلامات
SELECTعندما يكون للعمود المطلوب تعبيرDEFAULTيعتمد على عمود آخر له أيضًاDEFAULT، ولا يكون موجودًا في استعلام التحديد ولا على القرص. يعالج هذا جزئيًا #14531. #14845 (alesapin). - إصلاح غياب اسم قاعدة البيانات الافتراضي في البيانات الوصفية لـ materialized view عند تنفيذ
ALTER ... MODIFY QUERY. #14664 (tavplubix). - إصلاح خلل حيث تؤدي mutation من نوع
ALTER UPDATEمع عمود Nullable في تعبير الإسناد وقيمة ثابتة (مثلUPDATE x = 42) إلى قيمة غير صحيحة في العمود أو إلى segfault. يعالج #13634، #14045. #14646 (alesapin). - إصلاح نتيجة ضرب Decimal غير الصحيحة الناتجة عن scale عشري غير صحيح لعمود النتيجة. #14603 (Artem Zuikov).
- أُضيف الفاحص لأن استدعاء
lc->isNullable()أو استدعاءls->getDictionaryPtr()->isNullable()لم يكن يعيد النتيجة الصحيحة. #14591 (myrrc). - تنظيف دليل البيانات بعد استثناءات Zookeeper أثناء CreateQuery لمحرك StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- إصلاح حالات segfault نادرة في الدوال ذات المُركِّب -Resample، والتي قد تظهر نتيجة تجاوز السعة مع معلمات كبيرة جدًا. #14562 (Anton Popov).
تحسين
- تسريع عملية إيقاف تشغيل الخادم إذا كانت هناك طلبات S3 قيد التنفيذ. #14858 (Pavel Kovalenko).
- السماح باستخدام إعداد تخزين متعدد الوحدات في تخزين Distributed. #14839 (Pavel Kovalenko).
- تسريع عملية إيقاف تشغيل الخادم إذا كانت هناك طلبات S3 قيد التنفيذ. #14496 (Pavel Kovalenko).
- دعم codecs مخصّصة في compact parts. #12183 (Anton Popov).
إصدار ClickHouse v20.8.2.3-stable، 2020-09-08
تغيير غير متوافق مع الإصدارات السابقة
- لم تعد
OPTIMIZE FINALالآن تعيد احتساب TTL للأجزاء التي أُضيفت قبل إنشاء TTL. استخدمALTER TABLE ... MATERIALIZE TTLمرةً واحدة لاحتسابها، وبعد ذلك ستتعاملOPTIMIZE FINALمع TTL على نحو صحيح. هذا السلوك لم يعمل أصلًا مع الجداول المكرّرة. #14220 (alesapin). - جرى توسيع الإعداد
parallel_distributed_insert_selectبإضافة خيار لتشغيلINSERTعلى الجدول المحلي. يتغير نوع الإعداد منBoolإلىUInt64، لذا لم تعد القيمتانfalseوtrueمدعومتين. إذا كانت هذه القيم موجودة في تهيئة الخادم، فلن يبدأ الخادم. يُرجى استبدالهما بـ0و1، على الترتيب. #14060 (Azat Khuzhin). - أُزيل دعم format الإدخال/الإخراج
ODBCDriver. كان هذا format متقادمًا استُخدم سابقًا للتواصل مع ClickHouse ODBC driver، لكن format ODBCDriver2حلّ محلّه منذ وقت طويل. يحل المشكلة #13629. #13847 (hexiaoting). - عند الترقية من إصدارات أقدم من 20.5، إذا أُجري تحديث متدرج وكان الـ cluster يضم إصدارات 20.5 أو أحدث إلى جانب إصدارات أقدم من 20.5، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة وبدأ الإصدار القديم العمل بوجود الإصدارات الأحدث، فقد يؤدي ذلك إلى ظهور أخطاء
Part ... intersects previous part. ولتجنّب هذا الخطأ، ثبّت أولًا حزمclickhouse-serverالأحدث على جميع عُقد الـ cluster، ثم أجرِ إعادة التشغيل (حتى يبدأclickhouse-serverعند إعادة تشغيله بالإصدار الجديد).
ميزة جديدة
- إضافة إمكانية تحديد compression codec
Defaultللأعمدة التي تقابل الإعدادات المحددة فيconfig.xml. التنفيذ: #9074. #14049 (alesapin). - دعم مصادقة Kerberos في Kafka باستخدام مكتبتي
krb5وcyrus-sasl. #12771 (Ilya Golshtein). - إضافة الدالة
normalizeQueryالتي تستبدل القيم الحرفية، وتسلسلات القيم الحرفية، والأسماء المستعارة المعقدة بعناصر نائبة. وإضافة الدالةnormalizedQueryHashالتي تُرجع قيم hash متطابقة بطول 64bit للاستعلامات المتشابهة. يساعد ذلك في تحليل query log. هذا يُغلق #11271. #13816 (alexey-milovidov). - إضافة الجدول
time_zones. #13880 (Bharat Nallan). - إضافة الدالة
defaultValueOfTypeNameالتي تُرجع القيمة الافتراضية لنوع معيّن. #13877 (hcz). - إضافة الدالة
countDigits(x)التي تحسب عدد الأرقام في عمود صحيح أو Decimal. وإضافة الدالةisDecimalOverflow(d, [p])التي تتحقق مما إذا كانت القيمة في عمود Decimal خارج حدود الدقة الخاصة بها (أو المحددة). #14151 (Artem Zuikov). - إضافة التنفيذين
quantileExactLowوquantileExactHighمع الأسماء المستعارة المقابلةmedianExactLowوmedianExactHigh. #13818 (Bharat Nallan). - إضافة الدالة
date_truncالتي تقتطع قيمة تاريخ/وقت إلى جزء تاريخ/وقت محدد. #13888 (Vladimir Golovchenko). - إضافة قسم اختياري جديد
<user_directories>إلى config الرئيسي. #13425 (Vitaly Baranov). - إضافة العبارة
ALTER SAMPLE BYالتي تتيح تغيير SAMPLE clause للجدول. #13280 (Amos Bird). - تدعم الدالة
positionالآن الوسيط الاختياريstart_pos. #13237 (vdimir).
إصلاح الأخطاء
- إصلاح حجب البيانات الظاهرة بواسطة شريط التقدّم في العميل في
interactive mode. يُصلح هذا #12562 و#13369 و#13584، كما يُصلح #12964. #13691 (alexey-milovidov). - إصلاح ترتيب الفرز غير الصحيح لعمود
LowCardinalityعند الفرز حسب أعمدة متعددة. يُصلح هذا #13958. #14223 (Nikita Mikhaylov). - التحقّق من تجاوز حجم المصفوفة في الدالة التجميعية
topK. من دون هذا التحقّق، قد يرسل المستخدم استعلامًا بمعلمات مُعدّة بعناية تؤدي إلى تعطّل الخادم. يُغلق هذا #14452. #14467 (alexey-milovidov). - إصلاح خلل قد يؤدي إلى إسناد عمليات الدمج بشكل غير صحيح إذا كان الجدول يحتوي على partition تتكوّن من part واحد فقط. #14444 (alesapin).
- إيقاف تنفيذ الاستعلام إذا حدث استثناء داخل
PipelineExecutorنفسه. قد يمنع هذا حالات نادرة من تعليق الاستعلام. استكمالًا لـ #14334. #14402 #14334 (Nikolai Kochetov). - إصلاح تعطّل أثناء استعلام
ALTERلجدول أُنشئ باستخدامAS table_function. يُصلح #14212. #14326 (alesapin). - إصلاح استثناء أثناء استعلام ALTER LIVE VIEW مع الأمر REFRESH. إن live view ميزة تجريبية. #14320 (Bharat Nallan).
- إصلاح lifetime الخاصة بـ QueryPlan (لـ EXPLAIN PIPELINE graph=1) في الاستعلامات التي تحتوي على مفسّر متداخل. #14315 (Azat Khuzhin).
- إصلاح segfault في
clickhouse-odbc-bridgeأثناء schema fetch من بعض المصادر الخارجية. يُصلح طلب السحب هذا #13861. #14267 (Vitaly Baranov). - إصلاح تعطّل في بحث تضمين mark، أُدخل في #12277. #14225 (Amos Bird).
- إصلاح إنشاء الجداول باستخدام named tuples. يُصلح هذا #13027. #14143 (alexey-milovidov).
- إصلاح formatting لأصغر الأعداد العشرية السالبة. يُصلح هذا #14111. #14119 (Alexander Kuzmenkov).
- إصلاح المقياس
DistributedFilesToInsert(كان يُصفَّر عندما لا ينبغي أن يحدث ذلك). #14095 (Azat Khuzhin). - إصلاح
pointInPolygonعند استخدام مصفوفة ثنائية الأبعاد ثابتة كمضلع. #14079 (Alexey Ilyukhov). - إصلاح نقطة الربط الخاطئة في المعلومات الإضافية لـ
Poco::Exception: no space left on device. #14050 (tavplubix). - إصلاح عبارة GRANT ALL عند تنفيذها على مستوى غير عام. #13987 (Vitaly Baranov).
- إصلاح المحلل لرفض create table باعتبارها table function مع engine. #13940 (hcz).
- إصلاح النتائج غير الصحيحة في استعلامات select مع الكلمة المفتاحية
DISTINCTوالاستعلامات الفرعية التي تحتوي على UNION ALL عندما يكون الإعدادoptimize_duplicate_order_by_and_distinctمفعّلًا. #13925 (Artem Zuikov). - إصلاح احتمال حدوث تعطل متبادل عند إعادة تسمية جدول
Distributed. #13922 (tavplubix). - إصلاح الترتيب غير الصحيح لأعمدة
FixedStringعند الفرز حسب أعمدة متعددة. يُصلح هذا #13182. #13887 (Nikolai Kochetov). - إصلاح النتيجة المحتملة غير الدقيقة لعملية دمج
topK/topKWeighted(مع معلمات غير default). #13817 (Azat Khuzhin). - إصلاح فشل القراءة من جدول MergeTree مع INDEX من النوع SET عند المقارنة مع NULL. يُصلح هذا #13686. #13793 (Amos Bird).
- إصلاح التقاط
arrayJoinداخل lambda (LOGICAL_ERROR). #13792 (Azat Khuzhin). - إضافة فحص تجاوز step في الدالة
range. #13790 (Azat Khuzhin). - إصلاح الخطأ
Directory not emptyعند تنفيذDROP DATABASEوCREATE TABLEبالتزامن. #13756 (alexey-milovidov). - إضافة فحص النطاق للدالة
h3KRing. يُصلح هذا #13633. #13752 (alexey-milovidov). - إصلاح حالة التسابق بين DETACH وعمليات الدمج في الخلفية. قد تعود الأجزاء بعد detach. وهذا استكمال لـ #8602 الذي لم يُصلح المشكلة، لكنه أضاف اختبارًا بدأ يفشل في حالات نادرة جدًا، مما كشف المشكلة. #13746 (alexey-milovidov).
- إصلاح تسجيل Settings.Names/Values عندما يكون log_queries_min_type > QUERY_START. #13737 (Azat Khuzhin).
- إصلاح رمز حالة استجابة نقطة النهاية
/replicas_statusعندما verbose=1. #13722 (javi santana). - إصلاح الرسالة الخاطئة في
clickhouse-server.initأثناء التحقق من المستخدم والمجموعة. #13711 (ylchou). - عدم تطبيق التحسين any(arrayJoin()) -> arrayJoin() ضمن الإعداد
optimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - إصلاح تعطل في JOIN مع StorageMerge و
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - إصلاح خطأ مطبعي في رسالة الخطأ المتعلقة بالإعداد
The value of 'number_of_free_entries_in_pool_to_lower_max_size_of_merge' setting. #13678 (alexey-milovidov). - قد تتسبب استعلامات
ALTER ... REPLACE/MOVE PARTITION ...المتزامنة في حدوث توقف تام. تم إصلاح ذلك. #13626 (tavplubix). - تم إصلاح حالة كان فيها قاموس
cacheيعيد أحيانًا القيمة الافتراضية بدلًا من القيمة الموجودة في المصدر. #13624 (Nikita Mikhaylov). - إصلاح تلف الفهارس الثانوية في الأجزاء المضغوطة. وتُعد الأجزاء المضغوطة ميزة تجريبية. #13538 (Anton Popov).
- إصلاح حالات timeout المبكرة في
ON CLUSTERللاستعلامات التي يجب تنفيذها على نسخة متماثلة واحدة. ويعالج هذا #6704، #7228، #13361، #11884. #13450 (alesapin). - إصلاح الشيفرة غير الصحيحة في الدالة
netloc. ويعالج هذا #13335. #13446 (alexey-milovidov). - إصلاح احتمال حدوث حالة تسابق في
StorageMemory. #13416 (Nikolai Kochetov). - إصلاح الترويسات الناقصة أو الزائدة في تنسيقات
TSV/CSVWithNamesفي HTTP protocol. ويعالج هذا #12504. #13343 (Azat Khuzhin). - إصلاح تحليل سياسات الصفوف من users.xml عندما تحتوي أسماء قواعد البيانات أو الجداول على نقاط. ويعالج هذا #5779، #12527. #13199 (Vitaly Baranov).
- إصلاح الوصول إلى قاموس
Redisبعد انقطاع الاتصال مرة واحدة. وقد يحدث هذا مع تخطيطات القواميسcacheوdirect. #13082 (Anton Popov). - إزالة تحقق مصادقة خاطئ من صلاحيات الوصول عند استخدام ClickHouseDictionarySource للاستعلام من الجداول البعيدة. #12756 (sundyli).
- التمييز على نحو صحيح بين الاستعلامات الفرعية في بعض الحالات عند إزالة التعبيرات الفرعية المشتركة. #8333. #8367 (Amos Bird).
تحسين
- يمنع استخدام
CODECمع نوع العمودALIAS. يُصلح #13911. #14263 (Bharat Nallan). - عند انتظار اكتمال تحديث القاموس، تُستخدم المهلة المحددة في الإعداد
query_wait_timeout_millisecondsبدلًا من قيمة ثابتة مضمّنة في الشيفرة. #14105 (Nikita Mikhaylov). - إضافة الإعداد
min_index_granularity_bytesللحماية من إنشاء جدول عن طريق الخطأ بإعدادindex_granularity_bytesمنخفض جدًا. #14139 (Bharat Nallan). - أصبح من الممكن الآن جلب الأقسام من عناقيد تستخدم ZooKeeper مختلفًا:
ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'. وهذا مفيد لنقل البيانات إلى عناقيد جديدة. #14155 (Amos Bird). - تحسين طفيف في أداء جدول Memory إذا كان قد أُنشئ من عدد هائل من الكتل الصغيرة جدًا (وهو أمر غير مرجح). صاحب الفكرة: Mark Papadakis. يُغلق #14043. #14056 (alexey-milovidov).
- ينبغي أن تُرجع الدوال التجميعية الشرطية (على سبيل المثال:
avgIfوsumIfوmaxIf) القيمةNULLعند عدم وجود صفوف وعند استخدام وسائط Nullable. #13964 (Winter Zhang). - زيادة الحد في المركّب -Resample إلى 1M. #13947 (Mikhail f. Shiryaev).
- تصحيح خطأ في تنسيق AvroConfluent format كان يتسبب في توقف Kafka table engine عن معالجة الرسائل عند استلام رسالة تالفة وصغيرة جدًا بشكل غير طبيعي. #13941 (Gervasio Varela).
- إصلاح رسالة خطأ غير صحيحة للاستعلامات الطويلة. كان من الممكن ظهور خطأ في الصياغة بدلًا من
Max query size exceededرغم أن الاستعلام صحيح. #13928 (Nikolai Kochetov). - تحسين رسالة الخطأ الخاصة بقيمة null في تنسيق
TabSeparated. #13906 (jiang tao). - ستقارن الدالة
arrayCompactقيم NaN على مستوى البتات إذا كان نوع عناصر المصفوفة هو Float32/Float64. في الإصدارات السابقة، كانت قيم NaN دائمًا غير متساوية إذا كان نوع عناصر المصفوفة هو Float32/Float64، وكانت دائمًا متساوية إذا كان النوع أكثر تعقيدًا، مثل Nullable(Float64). هذا يُغلق #13857. #13868 (alexey-milovidov). - إصلاح حالة data race في الدالة
lgamma. لم يُرصد هذا التسابق إلا فيtsan، ولم تحدث فعليًا أي آثار جانبية. #13842 (Nikolai Kochetov). - تجنّب الاستعلامات البطيئة جدًا عند التعامل مع المصفوفات كحقول. ويُرمى استثناء بدلًا من ذلك. #13753 (alexey-milovidov).
- تمت إضافة مصادقة Redis requirepass (لمصدر قاموس Redis). #13688 (Ivan Torgashov).
- إضافة أداة لتفريغ سجل الكتابة المسبقة (WAL) في MergeTree. ويُعد WAL ميزة تجريبية. #13640 (BohuTANG).
- في الإصدارات السابقة، قد تتسبب الدالة
lcmفي فشل تحقق (assertion) في بنية التصحيح إذا استُدعيت بوسائط مُعدّة خصيصًا. يُصلح هذا #13368. #13510 (alexey-milovidov). - توفير خاصية الرتابة للدالتين
toDate/toDateTimeفي مزيد من الحالات. تُستخدم معلومات الرتابة في تحليل الفهارس (ما يتيح للاستعلامات الأكثر تعقيدًا استخدام الفهرس). والآن تُشبَع وسائط الإدخال بصورة أكثر طبيعية، مما يوفر رتابة أفضل. #13497 (Amos Bird). - دعم المعرّفات المركبة للإعدادات المخصصة. تُعد الإعدادات المخصصة نقطة تكامل بين قاعدة شيفرة ClickHouse وقواعد شيفرات أخرى (من دون فائدة لـ ClickHouse نفسه). #13496 (Vitaly Baranov).
- نقل الأجزاء من DiskLocal إلى DiskS3 بالتوازي. تُعد
DiskS3ميزة تجريبية. #13459 (Pavel Kovalenko). - تفعيل الأجزاء ذات درجة التحبّب المختلطة افتراضيًا. #13449 (alesapin).
- التحقق الصحيح من المضيف البعيد في عمليات إعادة التوجيه الخاصة بـ S3 (أمر متعلق بالأمان). #13404 (Vladimir Chebotarev).
- إضافة
QueryTimeMicrosecondsوSelectQueryTimeMicrosecondsوInsertQueryTimeMicrosecondsإلى system.events. #13336 (ianton-ru). - إصلاح فشل تحقق في وضع التصحيح عندما يكون لـ Decimal أس سالب كبير جدًا. يُصلح هذا #13188. #13228 (alexey-milovidov).
- إضافة طبقة تخزين مؤقت لـ DiskS3 (تخزين مؤقت على القرص المحلي لملفات العلامات والفهارس). تُعد
DiskS3ميزة تجريبية. #13076 (Pavel Kovalenko). - إصلاح readline بحيث يفرّغ السجل إلى ملف الآن. #13600 (Amos Bird).
- إنشاء قاعدة البيانات
systemباستخدام المحركAtomicافتراضيًا (تمهيدًا لتفعيل محرك قاعدة البياناتAtomicافتراضيًا في كل مكان). #13680 (tavplubix).
تحسين الأداء
- تحسين طفيف جدًا للاستعلامات القصيرة جدًا مع
LowCardinality. #14129 (Anton Popov). - تمكين عمليات INSERT المتوازية لمحركات الجداول
NullوMemoryوDistributedوBufferعند تعيين الإعدادmax_insert_threads. #14120 (alexey-milovidov). - الإخفاق بسرعة إذا تم تجاوز حد
max_rows_to_readأثناء فحص الأجزاء. الدافع وراء هذا التغيير هو تخطي فحص النطاقات لجميع الأجزاء المحددة إذا كان من الواضح أنmax_rows_to_readقد تم تجاوزه بالفعل. يكون هذا التغيير ملحوظًا بشكل خاص للاستعلامات التي تعمل على عدد كبير من الأجزاء. #13677 (Roman Khavronenko). - تحسين طفيف في أداء التجميع باستخدام مفاتيح UInt8/UInt16. #13099 (alexey-milovidov).
- تحسين الدوال
has()وindexOf()وcountEqual()من أجلArray(LowCardinality(T))ومعاملات الطرف الأيمن الثابتة. #12550 (myrrc). - عند تنفيذ استعلامات
INSERT SELECTالبسيطة، يُضبطmax_threadsتلقائيًا على 1 أوmax_insert_threads، ويُضبطmax_block_sizeعلىmin_insert_block_size_rows. ذو صلة بـ #5907. #12195 (flynn).
الميزة التجريبية
- يمكن لـ ClickHouse أن يعمل كنسخة متماثلة لـ MySQL — وقد أُنجز ذلك عبر محرك قاعدة البيانات
MaterializeMySQL. تنفيذًا لـ #4006. #10851 (Winter Zhang). - إضافة الأنواع
Int128وInt256وUInt256، والدوال المرتبطة بها. كما تم توسيع Decimals بإضافة Decimal256 (بدقة تصل إلى 76 رقمًا). الأنواع الجديدة متاحة ضمن الإعدادallow_experimental_bigint_types. وهي بطيئة جدًا وتعمل بشكل سيئ. التنفيذ غير مكتمل. يُرجى عدم استخدام هذه الميزة. #13097 (Artem Zuikov).
تحسينات في البناء/الاختبار/إعداد الحزم
- تمت إضافة سكربت
clickhouse install، وهو مفيد إذا لم يكن لديك سوى ملف تنفيذي واحد. #13528 (alexey-milovidov). - إتاحة تشغيل الملف التنفيذي
clickhouseدون إعداد. #13515 (alexey-milovidov). - تمكين التحقق من الأخطاء الإملائية في الشيفرة باستخدام
codespell. #13513 #13511 (alexey-milovidov). - تمكين Shellcheck في CI كأداة lint لاختبارات .sh. هذا يُغلق #13168. #13530 #13529 (alexey-milovidov).
- إضافة خيار في CMake يجعل الإعداد يفشل بدلًا من إعادة التهيئة التلقائية، وهو مُمكَّن افتراضيًا. #13687 (Konstantin).
- إظهار إصدار tzdata المضمّن عبر TZDATA_VERSION في system.build_options. #13648 (filimonov).
- تحسين إنشاء جدول system.time_zones أثناء البناء. يُغلق #14209. #14215 (filimonov).
- بناء ClickHouse باستخدام أحدث tzdata من مستودع الحزم. #13623 (alexey-milovidov).
- إضافة إمكانية كتابة تعليقات بنمط js في skip_list.json. #14159 (alesapin).
- التأكد من عدم وجود شيفرة GPL منسوخة. #13514 (alexey-milovidov).
- تبديل صور Docker الخاصة بالاختبارات لاستخدام الأصل test-base. #14167 (Ilya Yatsishin).
- إضافة منطق retry عند تشغيل cluster docker-compose، مع زيادة COMPOSE_HTTP_TIMEOUT. #14112 (vzakaznikov).
- تم تمكين
system.text_logفي اختبار stress لاكتشاف مزيد من الأخطاء. #13855 (Nikita Mikhaylov). - وحدة LDAP في Testflows: إضافة الشهادات المفقودة و dhparam.pem لـ openldap4. #13780 (vzakaznikov).
- لا يمكن لـ ZooKeeper العمل بموثوقية في unit tests ضمن البنية التحتية لـ CI. واستخدام unit tests للتحقق من تفاعل ZooKeeper مع ZooKeeper حقيقي فكرة سيئة من الأساس (إذ لا يُفترض بـ unit tests التحقق من الأنظمة الموزعة المعقدة). نحن نستخدم بالفعل integration tests لهذا الغرض، وهي أنسب لذلك. #13745 (alexey-milovidov).
- تمت إضافة image لـ Docker من أجل Style Check. كما أُضيف فحص أسلوب للتأكد من أن جميع ملفات Docker وdocker compose موجودة في directory docker. #13724 (Ilya Yatsishin).
- إصلاح بناء Cassandra على Mac OS. #13708 (Ilya Yatsishin).
- إصلاح خطأ ربط في البناء المشترك. #13700 (Amos Bird).
- تحديث مجموعة مصادقة مستخدمي LDAP للتحقق من أنها تعمل مع RBAC. #13656 (vzakaznikov).
- إزالة
-DENABLE_CURL_CLIENTمنcontrib/aws. #13628 (Vladimir Chebotarev). - زيادة مهلات الفحص الصحي لعُقد ClickHouse، وإضافة دعم لتفريغ سجلات docker-compose إذا تم العثور على حاويات غير سليمة. #13612 (vzakaznikov).
- التأكد من أن #10977 غير صالح. #13539 (Amos Bird).
- تخطي طلبات السحب PR’s القادمة من robot-clickhouse. #13489 (Nikita Mikhaylov).
- نقل ملفات Dockerfile من اختبارات التكامل إلى دليل
docker/test. ملفات docker_compose متاحة في حاوية Docker runner. يتم بناء صور Docker في CI وليس ضمن اختبارات التكامل. #13448 (Ilya Yatsishin).
إصدار ClickHouse 20.7
إصدار ClickHouse v20.7.2.30-stable، 2020-08-31
تغيير غير متوافق مع الإصدارات السابقة
- ستقوم الدالة
modulo(المعامل%) عند تمرير رقم واحد على الأقل من نوع الفاصلة العائمة كوسيط بحساب باقي القسمة مباشرةً على الأعداد ذات الفاصلة العائمة، دون تحويل كلا الوسيطين إلى أعداد صحيحة. وهذا يجعل السلوك متوافقًا مع معظم أنظمة إدارة قواعد البيانات. وينطبق ذلك أيضًا على نوعَي البيانات Date وDateTime. تمت إضافة الاسم المستعارmod. هذا يُغلق #7323. #12585 (alexey-milovidov). - إهمال الطباعة الخاصة لقيم Date/DateTime الصفرية بصيغة
0000-00-00و0000-00-00 00:00:00. #12442 (alexey-milovidov). - لم تكن الدالة
groupArrayMoving*تعمل مع الاستعلامات الموزعة. وكانت نتيجتها تُحسب باستخدام نوع بيانات غير صحيح (من دون الترقية إلى أكبر نوع). كما كانت الدالةgroupArrayMovingAvgتُرجع عددًا صحيحًا لا يتسق مع الدالةavg. يُصلح هذا #12568. #12622 (alexey-milovidov). - تمت إضافة فحص تحقق لإعدادات MergeTree. إذا كانت الإعدادات غير صحيحة، فسيرفض الخادم بدء التشغيل أو إنشاء جدول، مع عرض شرح مفصل للمستخدم. #13153 (alexey-milovidov).
- حماية من الحالات التي قد يضبط فيها المستخدم
background_pool_sizeعلى قيمة أقل منnumber_of_free_entries_in_pool_to_execute_mutationأوnumber_of_free_entries_in_pool_to_lower_max_size_of_merge. في هذه الحالات، لن تعمل أوامر ALTER أو سيصبح الحد الأقصى لعملية merge مقيدًا جدًا. وسيتم إطلاق Exception يوضح ما يجب فعله. هذا يُغلق #10897. #12728 (alexey-milovidov). - عند الترقية من إصدارات أقدم من 20.5، إذا تم إجراء تحديث متدرّج وكان الـ عنقود يحتوي على كلٍّ من الإصدار 20.5 أو أحدث وإصدارات أقدم من 20.5، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة بينما توجد إصدارات أحدث قيد التشغيل، فقد يؤدي ذلك إلى ظهور أخطاء
Part ... intersects previous part. ولمنع هذا الخطأ، ثبّت أولًا حزم clickhouse-server الأحدث على جميع عُقد الـ عنقود، ثم أجرِ عمليات إعادة التشغيل (بحيث يبدأ clickhouse-server عند إعادة تشغيله بالإصدار الجديد).
ميزة جديدة
- نوع القاموس Polygon يوفّر عمليات بحث فعّالة لـ “الترميز الجغرافي العكسي” — أي العثور على المنطقة استنادًا إلى الإحداثيات في قاموس يحتوي على عدد كبير من المضلعات (خريطة العالم). ويستخدم خوارزمية محسّنة بعناية مع شبكات متداخلة للحفاظ على انخفاض استهلاك CPU والذاكرة. #9278 (achulkov2).
- أُضيف دعم authentication عبر LDAP للمستخدمين المهيئين مسبقًا (طريقة “Simple Bind”). #11234 (Denis Glazachev).
- إضافة الإعداد
alter_partition_verbose_resultالذي يُخرج معلومات عن الأجزاء المتأثرة لبعض أنواع استعلاماتALTER TABLE ... PARTITION ...(حاليًاATTACHوFREEZE). يُغلق #8076. #13017 (alesapin). - إضافة الدالة
bayesABلاختبار A/B البايزي. #12327 (achimbab). - أُضيف جدول
system.crash_logالذي تُجمع فيه stack traces الخاصة بالأخطاء الفادحة. ومن المفترض أن يبقى هذا الجدول فارغًا. #12316 (alexey-milovidov). - أُضيفت ترويسات HTTP
X-ClickHouse-DatabaseوX-ClickHouse-Formatالتي يمكن استخدامها لتعيين قاعدة البيانات الافتراضية وتنسيق الإخراج. #12981 (hcz). - إضافة دعم الدالتين
minMapوmaxMapإلىSimpleAggregateFunction. #12662 (Ildus Kurbangaliev). - إضافة الإعداد
allow_non_metadata_altersالذي يقيّد تنفيذ استعلاماتALTERالتي تعدّل البيانات على القرص. وهو معطّل افتراضيًا. يُغلق #11547. #12635 (alesapin). - أُضيفت الدالة
formatRowلدعم تحويل أي تعبيرات إلى سلسلة نصية وفق تنسيق محدد. وهي مفيدة لمعالجة مخرجات SQL ومتعددة الاستخدامات جدًا عند دمجها مع الدالةcolumns. #12574 (Amos Bird). - إضافة الدالة
FROM_UNIXTIMEللتوافق مع MySQL، وهي مرتبطة بـ 12149. #12484 (flynn). - السماح باستخدام أنواع Nullable كمفاتيح في جداول MergeTree إذا كان إعداد الجدول
allow_nullable_keyمفعّلًا. يُغلق #5319. #12433 (Amos Bird). - التكامل مع COS. #12386 (fastio).
- إضافة الدالتين
mapAddوmapSubtractلجمع/طرح القيم المرتبطة بالمفاتيح. #11735 (Ildus Kurbangaliev).
إصلاح الأخطاء
- إصلاح حالات timeout المبكرة في
ON CLUSTERللاستعلامات التي يجب تنفيذها على نسخة متماثلة واحدة. يعالج #6704، #7228، #13361، #11884. #13450 (alesapin). - إصلاح تعطل في بحث تضمين mark أُدخل في #12277. #14225 (Amos Bird).
- إصلاح race condition في external dictionaries ذات layout من نوع cache، قد تؤدي إلى تعطل الخادم. #12566 (alesapin).
- إصلاح تشويه البيانات الظاهرة بسبب شريط التقدم في العميل في interactive mode. يعالج هذا #12562 و#13369 و#13584 و#12964. #13691 (alexey-milovidov).
- إصلاح ترتيب الفرز غير الصحيح لأعمدة
LowCardinalityعند استخدام ORDER BY على عدة أعمدة. يعالج هذا #13958. #14223 (Nikita Mikhaylov). - إزالة timeout المضمّن برمجيًا، والذي كان يتجاوز بشكل غير صحيح الإعداد
query_wait_timeout_millisecondsالخاص بـ cache-dictionary. #14105 (Nikita Mikhaylov). - إصلاح نقطة ربط غير صحيحة في المعلومات الإضافية لـ
Poco::Exception: no space left on device. #14050 (tavplubix). - إصلاح query optimization غير الصحيح لاستعلامات select التي تحتوي على الكلمة المفتاحية
DISTINCTعندما تتضمن subqueries أيضًاDISTINCT، وذلك عند تفعيل الإعدادoptimize_duplicate_order_by_and_distinct. #13925 (Artem Zuikov). - إصلاح حالة deadlock محتملة عند إعادة تسمية جدول
Distributed. #13922 (tavplubix). - إصلاح الفرز غير الصحيح لأعمدة
FixedStringعند استخدام ORDER BY على عدة أعمدة. يعالج #13182. #13887 (Nikolai Kochetov). - إصلاح الانخفاض المحتمل في دقة aggregations
topK/topKWeighted(عند استخدام parameters غير افتراضية). #13817 (Azat Khuzhin). - إصلاح فشل القراءة من جدول MergeTree مع INDEX من النوع SET عند المقارنة مع NULL. يعالج هذا #13686. #13793 (Amos Bird).
- إصلاح overflow في step في الدالة
range(). #13790 (Azat Khuzhin). - تم إصلاح الخطأ
Directory not emptyعند تنفيذDROP DATABASEوCREATE TABLEبالتزامن. #13756 (alexey-milovidov). - أُضيف فحص للنطاق للدالة
h3KRing. يُصلح هذا #13633. #13752 (alexey-milovidov). - إصلاح حالة تسابق بين DETACH وعمليات الدمج في الخلفية. قد تظهر الأجزاء مجددًا بعد detach. وهذا استكمال لـ #8602 التي لم تُصلح المشكلة، لكنها أضافت اختبارًا بدأ يفشل في حالات نادرة جدًا، مما كشف عن المشكلة. #13746 (alexey-milovidov).
- إصلاح تسجيل Settings.Names/Values عندما تكون
log_queries_min_typeأكبر منQUERY_START. #13737 (Azat Khuzhin). - إصلاح الرسالة غير الصحيحة في
clickhouse-server.initأثناء التحقق من المستخدم والمجموعة. #13711 (ylchou). - عدم تحسين
any(arrayJoin())إلىarrayJoin()ضمنoptimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - تم إصلاح احتمال حدوث توقف تام في استعلامات
ALTER ... REPLACE/MOVE PARTITION ...المتزامنة. #13626 (tavplubix). - تم إصلاح الحالة التي كان فيها cache-dictionary يعيد أحيانًا القيمة الافتراضية بدلًا من القيمة الموجودة في المصدر. #13624 (Nikita Mikhaylov).
- إصلاح تلف الفهارس الثانوية في compact parts (إذ إن compact parts ميزة تجريبية). #13538 (Anton Popov).
- إصلاح الشيفرة الخاطئة في الدالة
netloc. يُصلح هذا #13335. #13446 (alexey-milovidov). - إصلاح الخطأ في الدالة
parseDateTimeBestEffortعند تمرير Unix timestamp كوسيط. يُصلح هذا #13362. #13441 (alexey-milovidov). - إصلاح نوع الإرجاع غير الصحيح عند مقارنة tuples تحتوي على عناصر
NULL. يُصلح هذا #12461. #13420 (Nikolai Kochetov). - إصلاح التحسين الخاطئ الذي تسبب في ظهور الخطأ
aggregate function any(x) is found inside another aggregate function in queryمعSET optimize_move_functions_out_of_any = 1وaliases داخلany(). #13419 (Artem Zuikov). - إصلاح احتمال حدوث حالة تسابق في
StorageMemory. #13416 (Nikolai Kochetov). - إصلاح المخرجات الفارغة لتنسيقات
ArrowوParquetفي حال لم يُرجع الاستعلام أي صفوف. وقد تم ذلك لأن المخرجات الفارغة ليست صالحة لهذه التنسيقات. #13399 (hcz). - إصلاح استعلامات
selectالتي تتضمن أعمدة ثابتة وبادئة المفتاح الأساسي في بندORDER BY. #13396 (Anton Popov). - إصلاح
PrettyCompactMonoBlockفي clickhouse-local. وإصلاح extremes/totals معPrettyCompactMonoBlock. يُصلح هذا #7746. #13394 (Azat Khuzhin). - إصلاح حالة توقف متبادل في system.text_log. #12452 (alexey-milovidov). وهذا جزء من #12339. كما يُصلح #12325. #13386 (Nikita Mikhaylov).
- تم إصلاح
File(TSVWithNames*)(إذ كانت الترويسة تُكتب عدة مرات)، كما تم إصلاحclickhouse-local --format CSVWithNames*(كان يفتقد إلى الترويسة، وقد تعطّل بعد #12197)، وكذلك تم إصلاحclickhouse-local --format CSVWithNames*عند وجود صفر صفوف (إذ كان يفتقد إلى الترويسة). #13343 (Azat Khuzhin). - إصلاح segfault عند قيام الدالة
groupArrayMovingSumبإلغاء تسلسل حالة فارغة. يُصلح هذا #13339. #13341 (alesapin). - إطلاق خطأ عند استخدام الدالة
arrayJoin()في قسمJOIN ON. #13330 (Artem Zuikov). - إصلاح تعطل في
LEFT ASOF JOINمعjoin_use_nulls=1. #13291 (Artem Zuikov). - إصلاح الخطأ المحتمل
Totals having transform was already added to pipelineفي حالة وجود query من replica متأخرة. #13290 (Nikolai Kochetov). - قد يتعطل الخادم إذا مرّر المستخدم وسيطات مُعدّة خصيصًا إلى الدالة
h3ToChildren. يُصلح هذا #13275. #13277 (alexey-milovidov). - إصلاح احتمال تدني الأداء وظهور نتائج غير دقيقة قليلًا في
uniqExactوtopKوsumDistinctوما شابهها من aggregate functions عند استدعائها على أنواع Float التي تحتوي على قيمNaN. كما كان هذا يؤدي إلى assert في build تصحيح. يُصلح هذا #12491. #13254 (alexey-milovidov). - إصلاح assertion في KeyCondition عندما يحتوي المفتاح الأساسي على expression تتضمن دالة monotonic، ويحتوي query على مقارنة مع ثابت من نوع مختلف. يُصلح هذا #12465. #13251 (alexey-milovidov).
- إعادة الرقم المُمرَّر للأرقام التي تكون فيها MSB مضبوطة في الدالة roundUpToPowerOfTwoOrZero(). يمنع هذا أخطاء محتملة في حالة overflow في أحجام المصفوفات. #13234 (Azat Khuzhin).
- إصلاح الدالة if عند استخدام nullable constexpr كشرط cond لا يكون NULL حرفيًا. يُصلح #12463. #13226 (alexey-milovidov).
- إصلاح assert في الدالة
arrayElementعندما تكون عناصر المصفوفة من النوع Nullable ويكون الفهرس الفرعي للمصفوفة أيضًا من النوع Nullable. هذا يُصلح #12172. #13224 (alexey-milovidov). - إصلاح conversion functions لـ DateTime64 عند استخدام argument ثابت. #13205 (Azat Khuzhin).
- إصلاح parsing لسياسات الصفوف من users.xml عندما تحتوي أسماء قواعد البيانات أو الجداول على نقاط. هذا يُصلح #5779، #12527. #13199 (Vitaly Baranov).
- إصلاح الوصول إلى قاموس
redisبعد انقطاع connection مرة واحدة. قد يحدث ذلك مع dictionary layouts من نوعcacheوdirect. #13082 (Anton Popov). - إصلاح index analysis غير الصحيح عند استخدام الدوال. وقد يؤدي ذلك إلى تخطي بعض data parts عند القراءة من جداول
MergeTree. يُصلح #13060. يُصلح #12406. #13081 (Anton Popov). - إصلاح الخطأ
Cannot convert column because it is constant but values of constants are different in source and resultفي queries البعيدة التي تستخدم دوالًا حتمية ضمن نطاق query، لكنها ليست حتمية بين الاستعلامات، مثلnow()وnow64()وrandConstant(). يُصلح #11327. #13075 (Nikolai Kochetov). - إصلاح crash كان من الممكن حدوثه في queries التي تحتوي على tuple في
ORDER BYوLIMITصغير. يُصلح #12623. #13009 (Nikolai Kochetov). - إصلاح الخطأ
Block structure mismatchفي queries التي تحتوي علىUNIONوJOIN. يُصلح #12602. #12989 (Nikolai Kochetov). - تصحيح منطق
merge_with_ttl_timeoutالذي لم يكن يعمل جيدًا عندما كان انتهاء الصلاحية يؤثر في أكثر من partition واحدة خلال فترة زمنية واحدة. (من تأليف @excitoon). #12982 (Alexander Kazakov). - إصلاح تكرار columns في القاموس ذي range hashed المُنشأ من استعلام DDL. هذا يُصلح #10605. #12857 (alesapin).
- إصلاح التقييد غير الضروري لعدد threads لعمليات SELECT من replica محلية. #12840 (Nikolai Kochetov).
- إصلاح خطأ نادر عند تنفيذ الاستعلامين
ALTER DELETEوALTER MODIFY COLUMNبالتزامن كـ mutation واحدة. يؤدي هذا الخطأ إلى عدد غير صحيح من الصفوف فيcount.txt، وبالتالي إلى بيانات غير صحيحة في part. كما أُصلح خطأ صغير عند تنفيذALTER RENAME COLUMNوALTER ADD COLUMNبالتزامن. #12760 (alesapin). - استخدام بيانات اعتماد غير صحيحة عند استخدام مصدر dictionary
clickhouseللاستعلام عن الجداول البعيدة. #12756 (sundyli). - إصلاح
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - تحسين الأداء مع Tuples الكبيرة التي تُفسَّر على أنها دوال في قسم
IN. ويحدث ذلك عندما يكتب المستخدمWHERE x IN tuple(1, 2, ...)بدلًا منWHERE x IN (1, 2, ...)لسبب غير واضح. #12700 (Anton Popov). - إصلاح تتبّع الذاكرة لـ input_format_parallel_parsing (من خلال ربط thread بالمجموعة). #12672 (Azat Khuzhin).
- إصلاح التحسين الخاطئ
optimize_move_functions_out_of_any=1في حالةany(func(<lambda>)). #12664 (Artem Zuikov). - إصلاح معالجة #10572: إصلاح bloom filter index مع const expression. #12659 (Winter Zhang).
- إصلاح SIGSEGV في StorageKafka عندما يكون broker غير متاح (وليس في هذه الحالة فقط). #12658 (Azat Khuzhin).
- إضافة دعم للدالة
ifمع arguments من النوعArray(UUID). ويؤدي هذا إلى إصلاح #11066. #12648 (alexey-milovidov). - لم يعد
CREATE USER IF NOT EXISTSيطلق استثناءً إذا كان المستخدم موجودًا بالفعل. ويؤدي هذا إلى إصلاح #12507. #12646 (Vitaly Baranov). - قد يُطرَح الاستثناء
There is no supertype...أثناءALTER ... UPDATEفي حالات غير متوقعة (مثلًا عند الطرح من عمود UInt64). ويؤدي هذا إلى إصلاح #7306. كما يؤدي إلى إصلاح #4165. #12633 (alexey-milovidov). - إصلاح خطأ
Pipeline stuckالمحتمل في الاستعلامات التي تستخدم الفرز الخارجي. إصلاح #12617. #12618 (Nikolai Kochetov). - إصلاح الخطأ
Output of TreeExecutor is not sortedفيOPTIMIZE DEDUPLICATE. إصلاح #11572. #12613 (Nikolai Kochetov). - إصلاح المشكلة التي قد تؤدي إلى فقدان alias لنتيجة الدالة
anyأثناء query optimization. #12593 (Anton Popov). - إزالة بيانات جداول Distributed (الكتل الناتجة عن عمليات INSERT غير المتزامنة) عند تنفيذ DROP TABLE. #12556 (Azat Khuzhin).
- سيُعيد ClickHouse الآن حساب checksums للأجزاء عند غياب الملف
checksums.txt. هذا الخلل موجود منذ #9827. #12545 (alesapin). - إصلاح خلل كان يؤدي إلى تلف الأجزاء القديمة بعد استعلام
ALTER DELETEعند ضبطenable_mixed_granularity_parts=1. يُصلح هذا #12536. #12543 (alesapin). - إصلاح حالة تسابق في جداول live view كانت قد تتسبب في تكرار البيانات. LIVE VIEW ميزة تجريبية. #12519 (vzakaznikov).
- إصلاح التوافق مع الإصدارات السابقة في binary format لقيم
AggregateFunction(avg, ...). يُصلح هذا #12342. #12486 (alexey-milovidov). - إصلاح تعطل في JOIN مع dictionary عند إجراء الربط على expression لمفتاح القاموس:
t JOIN dict ON expr(dict.id) = t.id. تم تعطيل تحسين الربط بالقاموس لهذه الحالة. #12458 (Artem Zuikov). - إصلاح overflow عند تحديد LIMIT أو OFFSET بقيمة كبيرة جدًا. يُصلح هذا #10470. ويُصلح هذا #11372. #12427 (alexey-milovidov).
- kafka: إصلاح SIGSEGV إذا وُجدت رسالة تحتوي على خطأ في منتصف الدفعة. #12302 (Azat Khuzhin).
تحسين
- الاحتفاظ بكمية أقل من السجلات في ZooKeeper. تجنّب الزيادة المفرطة في عُقد ZooKeeper في حال وجود replicas غير متصلة مع كثرة الخوادم/الجداول/عمليات الإدراج. #13100 (alexey-milovidov).
- أصبحت الاستثناءات الآن تُمرَّر إلى العميل إذا حدث خطأ أثناء ALTER أو mutation. يُغلق #11329. #12666 (alesapin).
- أُضيفت
QueryTimeMicrosecondsوSelectQueryTimeMicrosecondsوInsertQueryTimeMicrosecondsإلىsystem.events، وكذلك إلى system.metrics وprocesses وquery_log وغيرها. #13028 (ianton-ru). - أُضيفت
SelectedRowsوSelectedBytesإلىsystem.events، وكذلك إلى system.metrics وprocesses وquery_log وغيرها. #12638 (ianton-ru). - أُضيفت معلومات
current_databaseإلىsystem.query_log. #12652 (Amos Bird). - السماح باستخدام
TabSeparatedRawكتنسيق إدخال. #12009 (hcz). - أصبح
joinGetيدعم البحث متعدد المفاتيح. #12418 (Amos Bird). - السماح لدوال التجميع
*Mapبالعمل علىArraysالتي تحتوي علىNULL. يُصلح #13157. #13225 (alexey-milovidov). - تجنّب overflow أثناء parsing قيم DateTime، الذي قد يؤدي إلى Unix timestamp سالب في timezone الخاصة بها (على سبيل المثال،
1970-01-01 00:00:00في Moscow). ويُستعاض عن ذلك بالتشبيع إلى الصفر. هذا يُصلح #3470. وهذا يُصلح #4172. #12443 (alexey-milovidov). - AvroConfluent: تخطّي سجلات Kafka من نوع tombstone - دعم تخطّي السجلات التالفة #13203 (Andrew Onyshchuk).
- إصلاح رسالة خطأ غير صحيحة للاستعلامات الطويلة. كان من الممكن الحصول على خطأ في البنية غير
Max query size exceededرغم أن الاستعلام صحيح. #13928 (Nikolai Kochetov). - إصلاح data race في الدالة
lgamma. لم يُكتشف هذا التسابق إلا فيtsan، ولم تترتب عليه أي آثار جانبية فعليًا. #13842 (Nikolai Kochetov). - إصلاح formatting للفاصل الزمني ‘Week’ في عبارات ATTACH/ALTER/CREATE QUOTA. #13417 (vladimir-golovchenko).
- أصبحت الأجزاء التالفة تُبلَّغ أيضًا عند مصادفتها أثناء processing للأجزاء المدمجة. الأجزاء المدمجة ميزة تجريبية. #13282 (Amos Bird).
- إصلاح assert في
geohashesInBox. هذا يُصلح #12554. #13229 (alexey-milovidov). - إصلاح assert في
parseDateTimeBestEffort. يُصلح هذا #12649. #13227 (alexey-milovidov). - تحسين طفيف في Processors/PipelineExecutor: الخروج من حلقة عندما يكون ذلك منطقيًا. #13058 (Mark Papadakis).
- دعم TRUNCATE table بدون الكلمة المفتاحية TABLE. #12653 (Winter Zhang).
- إصلاح الكتابة فوق تنسيق استعلام explain افتراضيًا. يُصلح هذا #12541. #12541 (BohuTANG).
- السماح بتحديد kind وtype في JOIN بطريقة أكثر معيارية:
LEFT SEMI JOINبدلًا منSEMI LEFT JOIN. حاليًا كلتا الصيغتين صحيحتان. #12520 (Artem Zuikov). - تغيير القيمة الافتراضية لـ
multiple_joins_rewriter_versionإلى 2. يفعّل ذلك معيد كتابة joins المتعددة الجديد، الذي يتعامل مع أسماء الأعمدة. #12469 (Artem Zuikov). - إضافة عدة metrics لطلبات وحدات تخزين S3. #12464 (ianton-ru).
- استخدام المنفذ الآمن الافتراضي الصحيح لـ clickhouse-benchmark مع الوسيط
--secure. يُصلح هذا #11044. #12440 (alexey-milovidov). - التراجع عن أخطاء الإدراج في المحركات
LogوTinyLogوStripeLog. في الإصدارات السابقة، كان خطأ الإدراج يؤدي إلى حالة غير متسقة للجدول (وهذا يتوافق مع التوثيق، وهو سلوك طبيعي لهذه المحركات). يُصلح هذا #12402. #12426 (alexey-milovidov). - تنفيذ
RENAME DATABASEوRENAME DICTIONARYلمحرك قاعدة البياناتAtomic- إضافة macro ضمنية{uuid}يمكن استخدامها في ZooKeeper path لـReplicatedMergeTree. تعمل هذه مع استعلاماتCREATE ... ON CLUSTER .... اضبطshow_table_uuid_in_table_create_query_if_not_nilعلىtrueلاستخدامها. - جعل وسائط المحركReplicatedMergeTreeاختيارية، بحيث يُستخدم/clickhouse/tables/{uuid}/{shard}/و{replica}افتراضيًا. يغلق #12135. - إصلاحات طفيفة. - هذه التغييرات تكسر backward compatibility لمحرك قاعدة البياناتAtomic. يجب تحويل قواعد بياناتAtomicالتي أُنشئت سابقًا يدويًا إلى التنسيق الجديد. قاعدة بيانات Atomic هي ميزة تجريبية. #12343 (tavplubix). - فصل
AWSAuthV4Signerفي logger منفصل، وإزالةAWSClient: AWSClientالزائدة من رسائل السجل. #12320 (Vladimir Chebotarev). - تحسين رسالة الاستثناء في وحدات تخزين الوصول إلى الأقراص. #12625 (alesapin).
- تحسين رسالة الاستثناء للدالة
inعند تمرير عدد غير صالح من الوسائط. #12529 (Anton Popov). - إصلاح رسالة الخطأ المتعلقة بـ adaptive granularity. #12624 (alesapin).
- إصلاح تحليل SETTINGS عند وروده بعد FORMAT. #12480 (Azat Khuzhin).
- إذا كان جدول MergeTree لا يحتوي على ORDER BY أو PARTITION BY، فقد كان من الممكن إرسال طلب ALTER لتنفيذ CLEAR لجميع الأعمدة، ما يؤدي إلى تعطّل ALTER. أُصلح هذا في #7941. #12382 (alexey-milovidov).
- تجنّب إعادة تحميل الإكمال التلقائي من ملف المحفوظات بعد كل query (لتجنّب تداخل المحفوظات مع جلسات العميل الأخرى). #13086 (Azat Khuzhin).
تحسين الأداء
- خفض استهلاك الذاكرة لبعض العمليات بما يصل إلى الضعف. #12424 (alexey-milovidov).
- تحسين عملية lookup للمفتاح الأساسي (PK) للاستعلامات التي تطابق نطاق PK مطابقًا تمامًا. #12277 (Ivan Babrou).
- تحسين طفيف جدًا للاستعلامات القصيرة جدًا مع
LowCardinality. #14129 (Anton Popov). - تحسين طفيف في أداء aggregation باستخدام مفاتيح UInt8/UInt16. #13091 و#13055 (alexey-milovidov).
- تنفيذ push down لخطوة
LIMITفي query plan (داخل subqueries). #13016 (Nikolai Kochetov). - تنفيذ lookup للمفتاح الأساسي ومراحل skipping index على parts بالتوازي، كما هو موضح في #11564. #12589 (Ivan Babrou).
- تحويل arguments من النوع String في الدالتين “if” و”transform” إلى enum إذا كان
set optimize_if_transform_strings_to_enum = 1. #12515 (Artem Zuikov). - استبدال الدوال الرتيبة بـ argument الخاص بها في
ORDER BYإذا كانset optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov). - إضافة تحسين لـ ORDER BY يعيد كتابة
ORDER BY x, f(x)إلىORDER by xإذا كانset optimize_redundant_functions_in_order_by = 1. #12404 (Artem Zuikov). - السماح بتنفيذ pushdown للـ predicate عندما يحتوي subquery على clause
WITH. ويعالج هذا #12293 #12663 (Winter Zhang). - تحسين أداء القراءة من compact parts. compact parts ميزة تجريبية. #12492 (Anton Popov).
- محاولة تنفيذ تحسين streaming في
DiskS3. DiskS3 ميزة تجريبية. #12434 (Vladimir Chebotarev).
تحسينات في البناء/الاختبار/إعداد الحزم
- استُخدم
shellcheckلفحص اختبارات sh. #13200 #13207 (alexey-milovidov). - أُضيف برنامج نصي يعيّن وسومًا لطلبات السحب في خطاف GitHub. #13183 (alesapin).
- أُزيلت بعض الوحدات الفرعية المتداخلة. انظر #13378. #13379 (alexey-milovidov).
- جرى التأكد من أن جميع الوحدات الفرعية تستخدم عناوين URL صحيحة. استكمالًا لـ #13379. هذا يُصلح #13378. #13397 (alexey-milovidov).
- أُضيف دعم للإعدادات التي يعرّفها المستخدم، والتي يمكن الوصول إليها من داخل الاستعلامات. وهذا مطلوب عندما يُستخدم محرك ClickHouse كمكوّن ضمن نظام آخر. #13013 (Vitaly Baranov).
- أُضيفت اختبارات لوظائف RBAC الخاصة بامتياز INSERT في TestFlows. كما وُسِّعت الجداول التي يُختبر عليها SELECT. وأُضيفت المتطلبات لتتوافق مع اختبارات محرك الجداول الجديدة. #13340 (MyroTk).
- أُصلح خطأ انتهاء المهلة أثناء إعادة تشغيل الخادم في اختبار الضغط. #13321 (alesapin).
- أصبح Fast test الآن ينتظر الخادم مع إعادة المحاولة. #13284 (alesapin).
- ستعمل الدالة
materialize()(الدالة المخصّصة لاختبار ClickHouse) مع NULL كما هو متوقع، وذلك بتحويله إلى عمود غير ثابت. #13212 (alexey-milovidov). - أُصلح بناء libunwind على AArch64. هذا يُصلح #13204. #13208 (alexey-milovidov).
- أُضيفت المزيد من محاولات إعادة المحاولة في zkutil gtest لمنع تذبذب الاختبارات. #13165 (alexey-milovidov).
- أُجريت إصلاحات صغيرة على RBAC في TestFlows. #13152 (vzakaznikov).
- أُصلح الاختبار
00960_live_view_watch_events_live.py. #13108 (vzakaznikov). - حُسِّن تنظيف cache في البرنامج النصي لنشر التوثيق. #13107 (alesapin).
- أُعيدت كتابة بعض الاختبارات اليتيمة باستخدام gtest. وأُزيلت تضمينات غير مفيدة من الاختبارات. #13073 (Nikita Mikhaylov).
- أُضيفت اختبارات لوظائف RBAC الخاصة بامتياز
SELECTفي TestFlows. #13061 (Ritaank Tiwari). - أُعيد تشغيل بعض الاختبارات ضمن فحص Fast test. #12992 (alesapin).
- إصلاح خطأ MSan في مكتبة “rdkafka”. هذا يُغلق #12990. تم تحديث
rdkafkaإلى الإصدار 1.5 (master). #12991 (alexey-milovidov). - إصلاح تقرير UBSan في base64 عند تشغيل الاختبارات على خادم مزود بـ AVX-512. هذا يُصلح #12318. المؤلف: @qoega. #12441 (alexey-milovidov).
- إصلاح تقرير UBSan في مكتبة HDFS. هذا يُغلق #12330. #12453 (alexey-milovidov).
- التحقق من إمكانية استعادة النسخة الاحتياطية من إصدار قديم إلى إصدار جديد. هذا يُغلق #8979. #12959 (alesapin).
- عدم بناء صورة helper_container داخل اختبارات التكامل. تُبنى حاوية Docker في CI ويُستخدم helper_container الجاهز مسبقًا في اختبارات التكامل. #12953 (Ilya Yatsishin).
- إضافة اختبار للاستعلام
ALTER TABLE CLEAR COLUMNلأعمدة المفتاح الأساسي. #12951 (alesapin). - زيادة قيم المهلة في اختبارات testflows. #12949 (vzakaznikov).
- إصلاح بناء الاختبار على Mac OS X. هذا يُغلق #12767. #12772 (alexey-milovidov).
- تحديث Connector-ODBC إلى mysql-connector-odbc-8.0.21. #12739 (Ilya Yatsishin).
- إضافة اختبارات صياغة RBAC في TestFlows. #12642 (vzakaznikov).
- تحسين أداء TestKeeper. سيؤدي ذلك إلى تسريع الاختبارات التي تستخدم الجداول Replicated بكثافة. #12505 (alexey-milovidov).
- نتحقق الآن من قدرة الخادم على البدء بعد تشغيل اختبارات الإجهاد. هذا يُصلح #12473. #12496 (alesapin).
- تحديث fmtlib إلى master (7.0.1). #12446 (alexey-milovidov).
- إضافة صورة Docker للاختبارات السريعة. #12294 (alesapin).
- إعادة تنظيم مسارات التهيئة لاختبارات التكامل. #12285 (Ilya Yatsishin).
- إضافة خيار للمُصرّف للتحكم في عدم كِبر إطارات المكدس أكثر من اللازم. سيساعد ذلك على تشغيل الشيفرة داخل fibers ذات حجم مكدس صغير. #11524 (alexey-milovidov).
- تحديث ملفات gitignore. #13447 (vladimir-golovchenko).
إصدار ClickHouse 20.6
إصدار ClickHouse v20.6.3.28-stable
تغيير غير متوافق مع الإصدارات السابقة
- عند الترقية من إصدارات أقدم من 20.5، إذا أُجري تحديث متدرّج وكان العنقود يضم إصدارات 20.5 أو أحدث إلى جانب إصدارات أقدم من 20.5، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة بينما كانت الإصدارات الأحدث موجودة، فقد يؤدي ذلك إلى ظهور الأخطاء
Part ... intersects previous part. ولتجنّب هذا الخطأ، ثبّت أولًا حِزم clickhouse-server الأحدث على جميع عُقد العنقود، ثم أجرِ إعادة التشغيل (بحيث يبدأ clickhouse-server بعد إعادة تشغيله بالإصدار الجديد).
ميزة جديدة
- أُضيف تنفيذ أولي للاستعلام
EXPLAIN. الصيغة:EXPLAIN SELECT .... يُصلح هذا #1118. #11873 (Nikolai Kochetov). - أُضيف دعم التخزين
RabbitMQ. #11069 (Kseniia Sumarokova). - جرى تنفيذ المعامل
ILIKEعلى غرار PostgreSQL لحل #11710. #12125 (Mike). - أُضيف دعم RIGHT و FULL JOIN مع
SET join_algorithm = 'partial_merge'. يُسمح فقط بوضع الصرامة ALL (ولا يُسمح بـ ANY أو SEMI أو ANTI أو ASOF). #12118 (Artem Zuikov). - أُضيفت الدالة
initializeAggregationلتهيئة عملية تجميع استنادًا إلى قيمة واحدة. #12109 (Guillaume Tassery). - أُضيف دعم
ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST#4006. #12073 (Winter Zhang). - أُضيفت الدالة
parseDateTimeBestEffortUS. #12028 (flynn). - أُضيف دعم التنسيق
ORCللإخراج (وكان مدعومًا سابقًا للإدخال فقط). #11662 (Kruglov Pavel).
إصلاح الأخطاء
- تم إصلاح الخطأ
aggregate function any(x) is found inside another aggregate function in queryعند استخدامSET optimize_move_functions_out_of_any = 1والأسماء المستعارة داخلany(). #13419 (Artem Zuikov). - تم إصلاح
PrettyCompactMonoBlockفي clickhouse-local. كما تم إصلاح extremes/totals معPrettyCompactMonoBlock. يعالج هذا #7746. #13394 (Azat Khuzhin). - تم إصلاح الخطأ المحتمل
Totals having transform was already added to pipelineفي حالة تنفيذ query من replica متأخرة. #13290 (Nikolai Kochetov). - قد يتعطل الخادم إذا مرّر المستخدم معاملات مُعدّة خصيصًا إلى الدالة
h3ToChildren. يعالج هذا #13275. #13277 (alexey-milovidov). - تم إصلاح احتمال انخفاض الأداء وظهور نتائج غير دقيقة قليلًا في
uniqExactوtopKوsumDistinctوالدوال التجميعية المشابهة عند استدعائها على أنواع Float التي تحتوي على قيم NaN. كما كان ذلك يؤدي أيضًا إلى تفعيل assert في build التصحيح. يعالج هذا #12491. #13254 (alexey-milovidov). - تم إصلاح الدالة if عند استخدام nullable constexpr كشرط cond عندما لا تكون القيمة NULL حرفيًا. يعالج هذا #12463. #13226 (alexey-milovidov).
- تم إصلاح assert في الدالة
arrayElementعندما تكون عناصر Array من النوع Nullable ويكون فهرس المصفوفة أيضًا Nullable. يعالج هذا #12172. #13224 (alexey-milovidov). - تم إصلاح دوال التحويل
DateTime64عند استخدام argument ثابت. #13205 (Azat Khuzhin). - تم إصلاح index analysis الخاطئ مع الدوال. وكان يمكن أن يؤدي ذلك إلى pruning لأجزاء خاطئة أثناء القراءة من جداول
MergeTree. يعالج هذا #13060. ويعالج أيضًا #12406. #13081 (Anton Popov). - تم إصلاح الخطأ
Cannot convert column because it is constant but values of constants are different in source and resultفي queries البعيدة التي تستخدم دوال deterministic ضمن نطاق query، لكنها ليست deterministic بين queries، مثلnow(),now64(),randConstant(). يعالج هذا #11327. #13075 (Nikolai Kochetov). - تم إصلاح التقييد غير الضروري لعدد threads في عمليات SELECT من replica محلية. #12840 (Nikolai Kochetov).
- تم إصلاح خطأ نادر عند تنفيذ queryَي
ALTER DELETEوALTER MODIFY COLUMNبالتزامن كـ mutation واحدة. كان هذا الخطأ يؤدي إلى عدد غير صحيح من rows فيcount.txt، وبالتالي إلى بيانات غير صحيحة في الـ part. كما تم إصلاح خطأ صغير متعلق بالتنفيذ المتزامن لـALTER RENAME COLUMNوALTER ADD COLUMN. #12760 (alesapin). - تم إصلاح
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - تم إصلاح مشكلة أداء مع الـ Tuples الكبيرة، التي تُفسَّر على أنها دوال في قسم
IN. وذلك في الحالة التي يكتب فيها المستخدمWHERE x IN tuple(1, 2, ...)بدلًا منWHERE x IN (1, 2, ...)لسبب غامض ما. #12700 (Anton Popov). - تم إصلاح تتبّع الذاكرة لـ
input_format_parallel_parsing(من خلال إلحاق الخيط بالمجموعة). #12672 (Azat Khuzhin). - تم إصلاح فهرس bloom filter مع تعبير ثابت. ويُصلح هذا #10572. #12659 (Winter Zhang).
- تم إصلاح
SIGSEGVفيStorageKafkaعندما لا يكون الـ broker متاحًا (وليس في هذه الحالة فقط). #12658 (Azat Khuzhin). - أُضيف دعم للدالة
ifمع وسيطاتArray(UUID). ويُصلح هذا #11066. #12648 (alexey-milovidov). - لم يعد
CREATE USER IF NOT EXISTSيطرح استثناءً إذا كان المستخدم موجودًا بالفعل. ويُصلح هذا #12507. #12646 (Vitaly Baranov). - تحسين رسالة الاستثناء في طبقة الوصول إلى القرص. #12625 (alesapin).
- لم تكن الدالة
groupArrayMoving*تعمل مع الاستعلامات الموزعة. وكانت نتيجتها تُحتسب باستخدام نوع بيانات غير صحيح (من دون الترقية إلى أكبر نوع). وكانت الدالةgroupArrayMovingAvgتُرجع عددًا صحيحًا، بما لا يتسق مع الدالةavg. ويُصلح هذا #12568. #12622 (alexey-milovidov). - تم إصلاح غياب الأسماء المستعارة للدالة
any. #12593 (Anton Popov). - تم إصلاح حالة تسابق في external dictionaries ذات تخطيط cache قد تؤدي إلى تعطل الخادم. #12566 (alesapin).
- إزالة بيانات الجداول الموزعة (الكتل الناتجة عن عمليات INSERT غير المتزامنة) عند تنفيذ DROP TABLE. #12556 (Azat Khuzhin).
- تم إصلاح خلل كان يؤدي إلى تلف الأجزاء القديمة بعد استعلام
ALTER DELETEعندما يكونenable_mixed_granularity_parts=1. ويُصلح هذا #12536. #12543 (alesapin). - تحسين رسالة الاستثناء للدالة
inعند وجود عدد غير صالح من الوسيطات. #12529 (Anton Popov). - تم إصلاح حالة تسابق في جداول live view كان من الممكن أن تتسبب في تكرار البيانات. #12519 (vzakaznikov).
- تم إصلاح مشكلة أداء أثناء القراءة من compact parts. #12492 (Anton Popov).
- تم إصلاح التوافق مع الإصدارات السابقة في التنسيق الثنائي لقيم
AggregateFunction(avg, ...). يحل هذا المشكلة #12342. #12486 (alexey-milovidov). - تم إصلاح تحليل SETTINGS بعد FORMAT. #12480 (Azat Khuzhin).
- تم إصلاح حالة deadlock عند تفعيل
text_log. #12452 (alexey-milovidov). - تم إصلاح تجاوز السعة عند تحديد قيمة كبيرة جدًا لـ
LIMITأوOFFSET. يحل هذا المشكلة #10470. كما يحل المشكلة #11372. #12427 (alexey-milovidov). - تم إصلاح احتمال حدوث
segfaultفيStorageMerge. يحل هذا المشكلة #12054. #12401 (tavplubix). - تم التراجع عن التغيير الذي أُدخل في #11079 لحل #12098. #12397 (Mike).
- تمت إضافة فحص إضافي لوسيطات فهرس bloom filter. يحل هذا المشكلة #11408. #12388 (alexey-milovidov).
- تم تجنب حدوث استثناء عند استخدام ثابت سالب أو ثابت بفاصلة عائمة في شرط WHERE للجداول المفهرسة. يحل هذا المشكلة #11905. #12384 (alexey-milovidov).
- أصبح مسموحًا تنفيذ
CLEARعلى عمود حتى إذا كانت هناك تعبيراتDEFAULTتعتمد عليه. يحل هذا المشكلة #12333. #12378 (alexey-milovidov). - تم إصلاح
TOTALS/ROLLUP/CUBEللدوال التجميعية ذات الوسيطات-StateوNullable. يحل هذا المشكلة #12163. #12376 (alexey-milovidov). - تم إصلاح رسالة الخطأ ورموز الخروج لاستعلامات
ALTER RENAME COLUMNعندما لا يكونRENAMEمسموحًا. يحل هذا المشكلتين #12301 و#12303. #12335 (alesapin). - تم إصلاح حالة race condition نادرة جدًا في
ReplicatedMergeTreeQueue. #12315 (alexey-milovidov). - عند استخدام codec
DeltaأوDoubleDeltaمع الأنواع غير ثابتة العرض، كان يُرجع استثناء بالرمزLOGICAL_ERRORبدلًا من استثناء بالرمزBAD_ARGUMENTS(ونحن نضمن ألا تحدث استثناءات برمز logical error مطلقًا). يحل هذا المشكلة #12110. #12308 (alexey-milovidov). - تم إصلاح ترتيب الأعمدة في المعدِّل
WITH FILL. سابقًا، لم يكن ترتيب الأعمدة في عبارةORDER BYمُراعًى. #12306 (Anton Popov). - تجنّب استثناء “bad cast” عندما يوجد تعبير يرشّح البيانات حسب الأعمدة الافتراضية (مثل
_tableفي جداولMerge) أو حسب أعمدة “index” في جداول النظام، مثل الترشح باسم قاعدة البيانات عند الاستعلام منsystem.tables، ويُرجع هذا التعبير النوعNullable. يُصلح هذا #12166. #12305 (alexey-milovidov). - تم إصلاح
TTLبعد إعادة تسمية العمود الذي يعتمد عليه تعبيرTTL. #12304 (Anton Popov). - تم إصلاح SIGSEGV إذا وُجدت رسالة خطأ في منتصف الدفعة في محرّك
Kafka. #12302 (Azat Khuzhin). - تم إصلاح حالة قد تتوقف فيها بعض سلاسل التنفيذ عشوائيًا لبضع ثوانٍ أثناء تحديث ذاكرة التخزين المؤقت لـ
DNS. #12296 (tavplubix). - تم إصلاح خطأ مطبعي في اسم الإعداد. #12292 (alexey-milovidov).
- عرض الخطأ بعد فشل تحميل
TrieDictionary. #12290 (Vitaly Baranov). - كانت الدالة
arrayFillتعمل بشكل غير صحيح مع المصفوفات الفارغة، مما قد يؤدي إلى تعطل. يُصلح هذا #12263. #12279 (alexey-milovidov). - تم تنفيذ التحويل إلى النوع المشترك للأنواع
LowCardinality. يتيح ذلك تنفيذUNION ALLعلى الجداول التي تحتوي على أعمدة من نوعLowCardinalityوأعمدة أخرى. يُصلح هذا #8212. يُصلح هذا #4342. #12275 (alexey-milovidov). - تم إصلاح السلوك عند بلوغ حد إعادة التوجيه في الطلب إلى وحدة تخزين
S3. #12256 (ianton-ru). - تم إصلاح السلوك الذي كانت فيه ترويسة
StorageFileلبعض الأنواع الخاصة تُكتب أكثر من مرة أثناء عمليات الإدراج المتسلسلة المتعددة. ويُصلح هذا #6155. #12197 (Nikita Mikhaylov). - تم إصلاح الدوال المنطقية لقيم
UInt8عندما لا تكون مساوية لـ 0 أو 1. #12196 (Alexander Kazakov). - تقييد حدود
max_memory_usage*بقدر الذاكرة المقيمة للعملية. #12182 (Azat Khuzhin). - إصلاح التحقق من وسائط
dictGetأثناء إزالة الدوال الحقنية فيGROUP BY. #12179 (Azat Khuzhin). - تم إصلاح السلوك عند قيام المحرك
SummingMergeTreeبجمع الأعمدة من مفتاح partition. وأُضيف استثناء في حال التعريف الصريح للأعمدة المراد جمعها إذا كانت تتقاطع مع أعمدة مفتاح partition. يُصلح هذا #7867. #12173 (Nikita Mikhaylov). - لا تقسّم اسم table الخاص بمصدر القاموس إلى schema واسم table نفسه إذا كان اتصال ODBC لا يدعم schema. #12165 (Vitaly Baranov).
- تم إصلاح منطق خاطئ في
ALTER DELETEكان يؤدي إلى حذف السجلات عندما يُقيَّم الشرط إلى NULL. يُصلح هذا #9088. ويغلق هذا #12106. #12153 (alexey-milovidov). - تم إصلاح تحويل query المُرسَلة إلى DBMS خارجي (مثل MySQL وODBC) في وجود aliases. يُصلح هذا #12032. #12151 (alexey-milovidov).
- تم إصلاح شيفرة غير سليمة في تحسين ORDER BY الزائد عن الحاجة. أُدخل هذا الخلل في #10067. #12148 (alexey-milovidov).
- تم إصلاح احتمال حدوث overflow في القسمة الصحيحة. يُصلح هذا #12119. #12140 (alexey-milovidov).
- تم إصلاح احتمال حدوث حلقة لا نهائية في
greatCircleDistanceوgeoDistance. يُصلح هذا #12117. #12137 (alexey-milovidov). - تمت مَعيَرة التعامل مع ملف “pid”. في الإصدارات السابقة، ربما كان server يرفض البدء إذا تم killed دون إيقاف صحيح، وكان هناك process آخر له pid نفسه الخاص بالخادم الذي كان يعمل سابقًا. كذلك قد يُزال ملف pid عند فشل بدء تشغيل server حتى لو كان هناك server آخر قيد التشغيل. يُصلح هذا #3501. #12133 (alexey-milovidov).
- تم إصلاح خلل كان يؤدي إلى بيانات وصفية غير صحيحة للجدول في ZooKeepeer لجداول ReplicatedVersionedCollapsingMergeTree. يُصلح هذا #12093. #12121 (alesapin).
- تجنّب استثناء “There is no query” في العروض المادية التي تحتوي على joins أو subqueries والمرتبطة بسجلات system (system.query_log وmetric_log وما إلى ذلك) أو بالجدول الأساسي للمحرك engine=Buffer. #12120 (filimonov).
- تم إصلاح التعامل مع dependency الخاصة بالجدول ذي ENGINE=Dictionary على القاموس. يُصلح هذا #10994. ويُصلح هذا #10397. #12116 (Vitaly Baranov).
- أصبح التنسيق
Parquetيعمل الآن بشكل صحيح مع النوعينLowCardinalityوLowCardinality(Nullable). يعالج #12086 و#8406. #12108 (Nikolai Kochetov). - تم إصلاح أداء استعلامات SELECT التي تتضمن
UNION، وكانت المشكلة ناتجة عن حد غير صحيح لإجمالي عدد خيوط التنفيذ. يعالج #12030. #12103 (Nikolai Kochetov). - تم إصلاح
segfaultفي combinators -StateResample. #12092 (Anton Popov). - تم إصلاح فراغ المقاييس
result_rowsوresult_bytesفيsystem.quey_logلاستعلامات SELECT. يعالج #11595. #12089 (Nikolai Kochetov). - تم إصلاح التقييد غير الضروري لعدد خيوط التنفيذ في استعلامات SELECT من
VIEW. يعالج #11937. #12085 (Nikolai Kochetov). - تم إصلاح SIGSEGV في StorageKafka عند تنفيذ DROP TABLE. #12075 (Azat Khuzhin).
- تم إصلاح احتمال حدوث crash عند استخدام نوع غير صحيح مع
PREWHERE. يعالج #12053 و#12060. #12060 (Nikolai Kochetov). - تم إصلاح الخطأ
Cannot capture columnفي الدوال عالية الرتبة التي لها argument من النوعTuple(LowCardinality). يعالج #9766. #12055 (Nikolai Kochetov). - تم إصلاح التحقق من القيود عندما يكون القيد تعبيرًا ثابتًا. يعالج هذا #11360. #12042 (alexey-milovidov).
- تم إصلاح النتيجة غير الصحيحة واحتمال حدوث crash عند استدعاء الدالة
ifباستخدام arguments من النوعFixedStringوبأحجام مختلفة. يعالج هذا #11362. #12021 (alexey-milovidov).
تحسين
- أصبح بالإمكان تعيين kind وtype لـ
JOINبطريقة أكثر معيارية:LEFT SEMI JOINبدلًا منSEMI LEFT JOIN. وفي الوقت الحالي، كلتاهما صحيحة. #12520 (Artem Zuikov). - تمت إضافة
lifetime_rows/lifetime_bytesلمحرك Buffer. #12421 (Azat Khuzhin). - كتابة رسالة Exception التفصيلية إلى العميل بدلًا من ‘MySQL server has gone away’. #12383 (BohuTANG).
- أصبح من الممكن تغيير مجموعة المحارف المستخدمة لطباعة حدود الجداول. مجموعات المحارف المتاحة هي: UTF-8، ASCII. ويُفعّل الإعداد
output_format_pretty_grid_charsetهذه الميزة. #12372 (Sabyanin Maxim). - تمت إضافة دعم MySQL للاستعلام ‘SELECT DATABASE()’ #9336 2. وإضافة اختبار تكامل لاستعلام الاستبدال في MySQL. #12314 (BohuTANG).
- تمت إضافة
KILL QUERY [connection_id]لعميل/مشغّل MySQL لإلغاء الاستعلامات الطويلة، issue #12038. #12152 (BohuTANG). - تمت إضافة دعم لاستبدالات
%g(سنة ISO من رقمين) و%G(سنة ISO من أربعة أرقام) في الدالةformatDateTime. #12136 (vivarum). - تمت إضافة العمود ‘type’ إلى system.disks. #12115 (ianton-ru).
- تم تحسين الأمر
REVOKE: الآن لا يتطلب خيار grant/admin إلا لحق الوصول الذي سيُسحب. على سبيل المثال، لتنفيذREVOKE ALL ON *.* FROM user1لم يعد من الضروري امتلاك كامل حقوق الوصول الممنوحة مع خيار grant. كما أُضيف الأمرREVOKE ALL FROM user1، وهو يسحب جميع الأدوار الممنوحة منuser1. #12083 (Vitaly Baranov). - تمت إضافة أولوية replica إلى load_balancing (لإتاحة تحديد الأولوية يدويًا في موازنة الحمل). #11995 (Azat Khuzhin).
- تم تحويل paths في بيانات S3 الوصفية إلى مسارات نسبية، مما يسهّل التعامل مع كائنات S3. #11892 (Vladimir Chebotarev).
تحسين الأداء
- تم تحسين أداء
ORDER BYوGROUP BYعند استخدام بادئة مفتاح الفرز (يُفعَّل ذلك عبر الإعدادoptimize_aggregation_in_order، وهو معطّل افتراضيًا). #11696 (Anton Popov). - أُزيلت الدوال الحقنية داخل
uniq*()إذا كانset optimize_injective_functions_inside_uniq=1. #12337 (Ruslan Kamalov). - لم يكن الفهرس يُستخدَم مع العامل IN عند استخدام القيم الحرفية، وهو تراجع في الأداء ظهر تقريبًا في v19.3. يُصلح هذا #10574. #12062 (nvartolomei).
- جرى تنفيذ عمليات رفع أحادية الجزء لـ DiskS3 (ميزة تجريبية). #12026 (Vladimir Chebotarev).
الميزة التجريبية
- أُضيف تنسيق جديد للأجزاء في الذاكرة في جداول عائلة
MergeTree، ويخزّن البيانات في الذاكرة. وتُكتب الأجزاء على القرص عند أول عملية دمج. ويُنشأ الجزء بتنسيق في الذاكرة إذا كان حجمه، من حيث عدد الصفوف أو البايتات، أقل من عتبتيmin_rows_for_compact_partوmin_bytes_for_compact_part. كما يتوفر دعم اختياري لـ Write-Ahead-Log، وهو مُمكّن افتراضيًا ويُتحكَّم به عبر الإعدادin_memory_parts_enable_wal. #10697 (Anton Popov).
تحسينات في البناء/الاختبار/إعداد الحزم
- تنفيذ وضع اختبار التشويش للاستعلامات المعتمد على AST في
clickhouse-client. اطّلع على هذا التصنيف للاطلاع على قائمة المشكلات التي اكتشفناها مؤخرًا عبر التشويش. وقد اكتُشف معظمها بهذه الأداة، واكتُشف بعضها بواسطة SQLancer و00746_sql_fuzzy.pl. #12111 (Alexander Kuzmenkov). - إضافة نوع جديد من الاختبارات يعتمد على إطار العمل Testflows. #12090 (vzakaznikov).
- أُضيف اختبار تكامل HTTPS لـ S3. #12412 (Pavel Kovalenko).
- تسجيل رسائل trap الخاصة بـ sanitizer من خيط تنفيذ منفصل. سيمنع ذلك احتمال حدوث توقف متبادل عند استخدام Thread sanitizer. #12313 (alexey-milovidov).
- أصبحت الاختبارات الوظيفية واختبارات الضغط الآن قادرة على العمل مع الإصدار القديم من سكربت
clickhouse-test. #12287 (alesapin). - إزالة إنشاء ملف غير معتاد أثناء البناء في
orc. #12258 (Nikita Mikhaylov). - وضع ملفات Docker Compose المشتركة في حاوية Docker الخاصة بالتكامل. #12168 (Ilya Yatsishin).
- إصلاح التحذيرات الصادرة من CodeQL. يُعد
CodeQLمحللًا ساكنًا آخر سنستخدمه إلى جانبclang-tidyوPVS-Studioاللذين نستخدمهما بالفعل. #12138 (alexey-milovidov). - إصلاحات طفيفة في CMake لبناء
UNBUNDLED. #12131 (Matwey V. Kornilov). - أُضيف مثال توضيحي لصورة Docker مصغّرة من دون استخدام أي توزيعة Linux. #12126 (alexey-milovidov).
- ترقية حزم النظام في صورة Docker الخاصة بـ
clickhouse-server. #12124 (Ivan Blinkov). - إضافة الراية
UNBUNDLEDإلى جدولsystem.build_options. ونقل قوائم التخطي الخاصة بـclickhouse-testإلى مستودع ClickHouse. #12107 (alesapin). - فحص منتظم بواسطة أداة التحليل الأمني Anchore Container Analysis التي تبحث عن CVE في صورة Docker الخاصة بـ
clickhouse-server. كما يؤكد أيضًا أنDockerfileقابل للبناء. ويُشغَّل يوميًا علىmasterوعلى طلبات السحب الخاصة بـDockerfile. #12102 (Ivan Blinkov). - فحص يومي بواسطة أداة التحليل الأمني GitHub CodeQL التي تبحث عن CWE. #12101 (Ivan Blinkov).
- تثبيت
ca-certificatesقبل أولapt-get updateفي Dockerfile. #12095 (Ivan Blinkov).
إصدار ClickHouse 20.5
إصدار ClickHouse v20.5.4.40-stable 2020-08-10
إصلاح الأخطاء
- تم إصلاح تحليل الفهرس الخاطئ عند استخدام الدوال. وكان من الممكن أن يؤدي ذلك إلى استبعاد أجزاء خاطئة أثناء القراءة من جداول
MergeTree. يُصلح #13060. ويُصلح #12406. #13081 (Anton Popov). - تم إصلاح التقييد غير الضروري لعدد الخيوط في عمليات
selectمن النسخة المتماثلة المحلية. #12840 (Nikolai Kochetov). - تم تحسين الأداء مع Tuples الكبيرة التي تُفسَّر على أنها دوال في قسم
IN. وينطبق ذلك على الحالة التي يكتب فيها المستخدمWHERE x IN tuple(1, 2, ...)بدلًا منWHERE x IN (1, 2, ...)لسبب غير معتاد. #12700 (Anton Popov). - تم إصلاح تتبّع الذاكرة لـ input_format_parallel_parsing (عبر ربط الخيط بالمجموعة). #12672 (Azat Khuzhin).
- تم إصلاح فهرس bloom filter عند استخدام تعبير ثابت. وهذا يُصلح #10572. #12659 (Winter Zhang).
- تم إصلاح
SIGSEGVفيStorageKafkaعندما لا يكون الـ broker متاحًا (وليس في هذه الحالة فقط). #12658 (Azat Khuzhin). - أُضيف دعم للدالة
ifمع وسيطاتArray(UUID). وهذا يُصلح #11066. #12648 (alexey-milovidov). - تم إصلاح غياب الأسماء المستعارة للدالة
any. #12593 (Anton Popov). - تم إصلاح حالة تسابق في external dictionaries ذات تخطيط cache، والتي قد تؤدي إلى تعطل الخادم. #12566 (alesapin).
- تمت إزالة بيانات Distributed tables (الكتل الناتجة عن عمليات INSERT غير المتزامنة) عند تنفيذ DROP TABLE. #12556 (Azat Khuzhin).
- تم إصلاح خلل كان يؤدي إلى تلف الأجزاء القديمة بعد الاستعلام
ALTER DELETEعندما يكونenable_mixed_granularity_parts=1. يُصلح #12536. #12543 (alesapin). - تحسين رسالة الاستثناء للدالة
inعند تمرير عدد غير صالح من الوسيطات. #12529 (Anton Popov). - تم إصلاح حالة تسابق في جداول live view كان يمكن أن تتسبب في تكرار البيانات. #12519 (vzakaznikov).
- تم إصلاح مشكلة في الأداء أثناء القراءة من compact parts. #12492 (Anton Popov).
- تم إصلاح التوافق مع الإصدارات السابقة في التنسيق الثنائي لقيم
AggregateFunction(avg, ...). وهذا يُصلح #12342. #12486 (alexey-milovidov). - تم إصلاح حالة التوقف المتبادل إذا كان
text_logمفعّلًا. #12452 (alexey-milovidov). - تم إصلاح تجاوز السعة عند تحديد LIMIT أو OFFSET بقيمة كبيرة جدًا. يُصلح هذا #10470. ويُصلح أيضًا #11372. #12427 (alexey-milovidov).
- تم إصلاح احتمال حدوث segfault في حال كان StorageMerge. ويغلق هذا #12054. #12401 (tavplubix).
- تم التراجع عن التغيير المُدخل في #11079 لحل #12098. #12397 (Mike).
- تجنّب حدوث Exception عند استخدام ثابت سالب أو عدد بفاصلة عائمة في شرط WHERE للجداول المفهرسة. يُصلح هذا #11905. #12384 (alexey-milovidov).
- أصبح من الممكن تنفيذ CLEAR على عمود حتى إذا كانت هناك تعبيرات DEFAULT تعتمد عليه. يُصلح هذا #12333. #12378 (alexey-milovidov).
- تم إصلاح TOTALS/ROLLUP/CUBE للدوال التجميعية التي تحتوي على الوسائط
-StateوNullable. يُصلح هذا #12163. #12376 (alexey-milovidov). - تم إصلاح SIGSEGV عند وجود رسالة خطأ في منتصف الدفعة في محرك
Kafka. #12302 (Azat Khuzhin). - تم إصلاح السلوك عند قيام المحرك
SummingMergeTreeبجمع أعمدة من مفتاح التقسيم. وأُضيف Exception في حال وجود تعريف صريح للأعمدة المراد جمعها إذا كانت تتقاطع مع أعمدة مفتاح التقسيم. يُصلح هذا #7867. #12173 (Nikita Mikhaylov). - تم إصلاح تحويل الاستعلام المُرسل إلى DBMS خارجي (مثل MySQL وODBC) عند وجود أسماء مستعارة. يُصلح هذا #12032. #12151 (alexey-milovidov).
- تم إصلاح خطأ كان يؤدي إلى بيانات وصفية غير صحيحة للجدول في ZooKeepeer لجداول ReplicatedVersionedCollapsingMergeTree. يُصلح هذا #12093. #12121 (alesapin).
- تم إصلاح التقييد غير الضروري لعدد threads في عمليات selects من
VIEW. يُصلح هذا #11937. #12085 (Nikolai Kochetov). - تم إصلاح crash في JOIN مع النوع LowCardinality عند استخدام
join_algorithm=partial_merge. #12035 (Artem Zuikov). - تم إصلاح نتيجة غير صحيحة للدالة
if()عند وجود NULLs في الشرط. #11807 (Artem Zuikov).
تحسين الأداء
- لم يكن الفهرس يُستخدم مع المعامل IN عند استخدام القيم الحرفية، وهو تراجع في الأداء ظهر تقريبًا منذ v19.3. يُصلح هذا #10574. #12062 (nvartolomei).
تحسينات في البناء/الاختبار/إعداد الحزم
- ثبّت
ca-certificatesقبل تشغيلapt-get updateلأول مرة في Dockerfile. #12095 (Ivan Blinkov).
إصدار ClickHouse v20.5.2.7-stable 2020-07-02
تغيير غير متوافق مع الإصدارات السابقة
- تُرجِع الدالتان
COUNT(DISTINCT)وعائلة الدوال التجميعيةuniqالآن نتيجة من النوع non-Nullable. وإذا كانت جميع القيم المُمرَّرة هي NULL، فستُرجِع صفرًا بدلًا من ذلك. وهذا يحسّن التوافق مع SQL. #11661 (alexey-milovidov). - أُضيف فحص للحالة التي يُحدَّد فيها إعداد على مستوى المستخدم في موضع غير صحيح. يجب تحديد الإعدادات على مستوى المستخدم في
users.xmlداخل القسم<profile>لملف تعريف مستخدم محدد (أو في<default>للإعدادات الافتراضية). ولن يبدأ الخادوم، مع ظهور رسالة استثناء في السجل. ويُصلح هذا #9051. إذا كنت تريد تخطي هذا الفحص، فيمكنك إما نقل الإعدادات إلى الموضع المناسب أو إضافة<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>إلى config.xml. #11449 (alexey-milovidov). - أصبح الإعداد
input_format_with_names_use_headerمفعّلًا افتراضيًا. وسيؤثر ذلك في تحليل تنسيقات الإدخال-WithNamesو-WithNamesAndTypes. #10937 (alexey-milovidov). - أُزيل الإعداد
experimental_use_processors. وهو مفعّل افتراضيًا. #10924 (Nikolai Kochetov). - تم تحديث
zstdإلى 1.4.4. ويتضمن ذلك بعض التحسينات الطفيفة في الأداء ونسبة الضغط. إذا كنت تشغّل نُسخًا متماثلة بإصدارات مختلفة من ClickHouse، فقد تظهر لك رسائل خطأ مفهومة مثلData after merge is not byte-identical to data on another replicas.مع توضيح. هذه الرسائل طبيعية ولا ينبغي أن تقلق بشأنها. هذا التغيير متوافق مع الإصدارات السابقة، لكننا ندرجه هنا في changelog تحسبًا لتساؤلك بشأن هذه الرسائل. #10663 (alexey-milovidov). - أُضيف فحص لاكتشاف codecs غير ذات معنى، إلى جانب الإعداد
allow_suspicious_codecsللتحكم في هذا الفحص. ويغلق هذا #4966. #10645 (alexey-milovidov). - تغيّرت القيم الافتراضية لعدة إعدادات في Kafka. انظر #11388.
- عند الترقية من إصدارات أقدم من 20.5، إذا نُفِّذ تحديث متدرّج وكان الـ عنقود يحتوي على الإصدارين 20.5 أو أحدث وأقدم من 20.5 معًا، ثم أُعيد تشغيل عُقد ClickHouse ذات الإصدارات القديمة وبدأ الإصدار القديم في وجود إصدارات أحدث، فقد يؤدي ذلك إلى ظهور أخطاء
Part ... intersects previous part. ولمنع هذا الخطأ، ثبّت أولًا حزم clickhouse-server الأحدث على جميع عُقد الـ عنقود، ثم أجرِ عمليات إعادة التشغيل (بحيث يبدأ clickhouse-server عند إعادة تشغيله بالإصدار الجديد).
ميزة جديدة
TTL DELETE WHEREوTTL GROUP BYللتخشين التلقائي للبيانات والتجميع المرحلي في الجداول. #10537 (expl0si0nn).- تنفيذ بروتوكول PostgreSQL wire. #10242 (Movses).
- أُضيفت جداول النظام للمستخدمين والأدوار والامتيازات وملفات تعريف الإعدادات والحصص وسياسات الصفوف؛ كما أُضيفت الأوامر SHOW USER و SHOW [CURRENT|ENABLED] ROLES و SHOW SETTINGS PROFILES. #10387 (Vitaly Baranov).
- دعم عمليات الكتابة في ODBC table function #10554 (ageraab). #10901 (tavplubix).
- إضافة مقاييس أداء الاستعلامات استنادًا إلى Linux
perf_events(تُحسب هذه المقاييس باستخدام عدادات CPU العتادية وعدادات نظام التشغيل). هذه الميزة اختيارية وتتطلب ضبطCAP_SYS_ADMINعلى الملف التنفيذي clickhouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov). - يدعم الآن المُعدِّلين
NULLوNOT NULLلأنواع البيانات في استعلامCREATE. #11057 (Павел Потемкин). - إضافة تنسيق الإدخال والإخراج
ArrowStream. #11088 (hcz). - دعم Cassandra كمصدر خارجي للقواميس. #4978 (favstovol).
- أُضيف layout جديد
directيحمّل جميع البيانات مباشرةً من المصدر لكل query، من دون تخزين البيانات أو استخدام التخزين المؤقت. #10622 (Artem Streltsov). - أُضيف layout جديد
complex_key_directإلى القواميس، ولا يخزّن أي شيء محليًا أثناء تنفيذ الاستعلام. #10850 (Artem Streltsov). - أُضيف دعم صياغة المتغيرات العامة بأسلوب MySQL (stub). وهذا مطلوب للتوافق مع بروتوكول MySQL. #11832 (alexey-milovidov).
- أُضيف تمييز الصياغة إلى
clickhouse-clientباستخدامreplxx. #11422 (Tagir Kuskarov). - أُضيفت الدالتان
minMapوmaxMap. #11603 (Ildus Kurbangaliev). - إضافة الجدول
system.asynchronous_metric_logالذي يسجل المقاييس التاريخية منsystem.asynchronous_metrics. #11588 (Alexander Kuzmenkov). - إضافة الدالتين
extractAllGroupsHorizontal(haystack, re)وextractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov). - إضافة استعلامات SHOW CLUSTER(S). #11467 (hexiaoting).
- إضافة الدالة
netlocلاستخراج موقع الشبكة، على غرارurlparse(url)وnetlocفي بايثون. #11356 (Guillaume Tassery). - إضافة عمودين افتراضيين آخرين لـ
engine=Kafkaللوصول إلى ترويسات الرسائل. #11283 (filimonov). - إضافة العمود الافتراضي
_timestamp_msلمحرك Kafka (النوع هوNullable(DateTime64(3))). #11260 (filimonov). - إضافة الدالة
randomFixedString. #10866 (Andrei Nekrashevich). - إضافة الدالة
fuzzBitsالتي تقلب البتات عشوائيًا في سلسلة نصية باحتمال محدد. #11237 (Andrei Nekrashevich). - السماح بمقارنة الأعداد بسلسلة نصية ثابتة في عوامل المقارنة، وIN، وأقسام VALUES. #11647 (alexey-milovidov).
- إضافة وضع موازنة الحمل
round_robin. #11645 (Azat Khuzhin). - إضافة الإعداد
cast_keep_nullable. إذا تم تعيينCAST(something_nullable AS Type)فسيُرجعNullable(Type). #11733 (Artem Zuikov). - تمت إضافة العمود
positionإلى جدولsystem.columnsوالعمودcolumn_positionإلى جدولsystem.parts_columns. ويحتوي على الموضع الترتيبي للعمود في الجدول بدءًا من 1. وهذا يُغلق #7744. #11655 (alexey-milovidov). - دعم ON CLUSTER لأوامر SYSTEM
{FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND}. #11415 (Azat Khuzhin). - إضافة جدول
system.distribution_queue. #11394 (Azat Khuzhin). - دعم جميع إعدادات format في Kafka، مع إتاحة بعض الإعدادات على مستوى الجدول، وضبط القيم الافتراضية لتحسين الأداء. #11388 (filimonov).
- إضافة الدالة
port(لاستخراج المنفذ من URL). #11120 (Azat Khuzhin). - أصبحت الدوال
dictGet*تقبل أسماء الجداول الآن. #11050 (Vitaly Baranov). - أصبحت الأداة
clickhouse-formatقادرة الآن على تنسيق عدة استعلامات عند استخدام الوسيطة-n. #10852 (Darío). - إمكانية تهيئة
proxy-resolverلـ DiskS3. #10744 (Pavel Kovalenko). - جعل
pointInPolygonيعمل مع مضلع غير ثابت. ويمكن لـ PointInPolygon الآن أخذ Array(Array(Tuple(…, …))) كوسيط ثانٍ، أي مصفوفة من المضلع والثقوب. #10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov). - أُضيف
move_ttl_infoإلىsystem.partsلتوفير إمكانات الفحص الداخلي لوظيفة move TTL. #10591 (Vladimir Chebotarev). - إتاحة العمل مع S3 عبر الوكلاء. #10576 (Pavel Kovalenko).
- إضافة الاسمين المرادفين
NCHARوNVARCHARلأنواع البيانات. #11025 (alexey-milovidov). - حُلّت #7224: أُضيفت مقاييس
FailedQueryوFailedSelectQueryوFailedInsertQueryإلى جدولsystem.events. #11151 (Nikita Orlov). - إضافة المزيد من إحصاءات
jemallocإلىsystem.asynchronous_metrics، وضمان ظهور قيمها المحدّثة. #11748 (Alexander Kuzmenkov). - السماح بتحديد بيانات اعتماد S3 الافتراضية وترويسات مصادقة مخصّصة. #11134 (Grigory Pervakov).
- أُضيفت دوال جديدة لاستيراد/تصدير DateTime64 كـ Int64 بدرجات precision مختلفة:
to-/fromUnixTimestamp64Milli/-Micro/-Nano. #10923 (Vasily Nemkov). - السماح بتحديد URI من النوع
mongodb://لقواميس MongoDB. #10915 (Alexander Kuzmenkov). - يمكن الآن استخدام الكلمة المحجوزة
OFFSETدون clauseLIMITمصاحبة. #10802 (Guillaume Tassery). - أُضيف جدول
system.licenses. يحتوي هذا الجدول على تراخيص المكتبات الخارجية الموجودة في الدليلcontrib. وبذلك أُغلقت #2890. #10795 (alexey-milovidov). - دالة جديدة
toStartOfSecond(DateTime64) -> DateTime64تُصفّر الجزء الأقل من الثانية من قيمة DateTime64. #10722 (Vasily Nemkov). - إضافة input format جديد
JSONAsStringيقبل تسلسلاً من JSON objects مفصولة بأسطر جديدة أو مسافات و/أو فواصل. #10607 (Kruglov Pavel). - أُتيح توصيف الذاكرة بخطوات granularity أدق من 4 MiB. وأُضيف Profiler لأخذ عينات الذاكرة لالتقاط allocations/deallocations عشوائية. #10598 (alexey-milovidov).
- يدعم
SimpleAggregateFunctionالآن أيضًاsumMap. #10000 (Ildus Kurbangaliev). - دعم
ALTER RENAME COLUMNلمحرك الجداول Distributed. استكمالًا لـ #10727. يعالج #10747. #10887 (alesapin).
إصلاحات الأخطاء
- إصلاح تقرير UBSan في تحليل Decimal. يُصلح هذا #7540. #10512 (alexey-milovidov).
- إصلاح استثناء فاصلة عائمة محتمل عند تحليل DateTime64. يُصلح هذا #11374. #11875 (alexey-milovidov).
- إصلاح تعطل نادر ناتج عن استخدام عمود
Nullableفي شرط prewhere. #11895 #11608 #11869 (Nikolai Kochetov). - عدم السماح باستخدام arrayJoin داخل الدوال عالية الرتبة. كان ذلك يؤدي إلى خلل في مزامنة protocol. يُغلق هذا #3933. #11846 (alexey-milovidov).
- إصلاح النتيجة الخاطئة عند مقارنة FixedString مع String ثابت. يُصلح هذا #11393. ظهر هذا الخطأ في الإصدار 20.4. #11828 (alexey-milovidov).
- إصلاح النتيجة الخاطئة لـ
ifعند وجود NULLs في الشرط. #11807 (Artem Zuikov). - إصلاح استخدام عدد كبير جدًا من threads للاستعلامات. #11788 (Nikolai Kochetov).
- إصلاح الاستثناء
Scalar does not existعند استخدامWITH <scalar subquery> ...فيSELECT ... FROM merge_tree_table ...#11621. #11767 (Amos Bird). - إصلاح السلوك غير المتوقع للاستعلامات مثل
SELECT *, xyz.*، التي كانت تنجح رغم أنه كان من المتوقع ظهور error. #11753 (hexiaoting). - سيتم الآن إلغاء replicated fetches أثناء تعديل metadata. #11744 (alesapin).
- تحليل metadata المخزنة في zookeeper قبل التحقق من تطابقها. #11739 (Azat Khuzhin).
- إصلاح LOGICAL_ERROR الناتج عن استنتاج نوع غير صحيح للقيم الحرفية المعقدة في Values input format. #11732 (tavplubix).
- إصلاح
ORDER BY ... WITH FILLمع الأعمدة الثابتة. #11697 (Anton Popov). - إصلاح race condition نادرة جدًا في SYSTEM SYNC REPLICA. إذا تم إنشاء replicated table، وفي الوقت نفسه نفّذ عميل آخر من connection منفصل الأمر
SYSTEM SYNC REPLICAعلى ذلك الجدول (وهذا غير مرجح، لأن العميل الآخر يجب أن يكون على علم بأن الجدول قد أُنشئ)، فقد يؤدي ذلك إلى إلغاء مرجعية nullptr. #11691 (alexey-milovidov). - تمرير قيم
timeoutالمناسبة عند التواصل مع جسر XDBC. في الآونة الأخيرة، لم تكن مهل الانتظار تُحترم عند التحقق من liveness للجسر وتلقي المعلومات الوصفية. #11690 (alexey-milovidov). - إصلاح استخدام
LIMIT n WITH TIESمع عبارةORDER BYالتي تتضمن aliases. #11689 (Anton Popov). - إصلاح احتمال حدوث
Pipeline stuckفي عمليات SELECT التي تستخدمFINALبالتوازي. يعالج هذا #11636. #11682 (Nikolai Kochetov). - إصلاح خطأ يؤدي إلى حالة غير صحيحة لـ
system.mutations. فقد يُظهر أن الـ mutation اكتملت بالكامل بالفعل، بينما لا يزال الخادم لديه مهامMUTATE_PARTفي replication queue ويحاول تنفيذها. يعالج هذا #11611. #11681 (alesapin). - إصلاح تمييز بناء الجملة في استعلام CREATE USER. #11664 (alexey-milovidov).
- إضافة دعم للتعبيرات النمطية مع علامات case-insensitive. يعالج هذا #11101 و#11506. #11649 (alexey-milovidov).
- إزالة تحسين استعلام count البسيط إذا كان أمان row-level مفعّلًا. في الإصدارات السابقة، كان المستخدم يحصل على العدد الإجمالي للسجلات في table بدلًا من العدد بعد التصفية. يعالج هذا #11352. #11644 (alexey-milovidov).
- إصلاح bloom filters لـ String (data skipping indices). #11638 (Azat Khuzhin).
- بدون الخيار
-q، لا يتم إنشاء database عند بدء التشغيل. #11604 (giordyb). - إصلاح الخطأ
Block structure mismatchفي queries التي تستخدم sampling وتقرأ من tableBuffer. #11602 (Nikolai Kochetov). - إصلاح رمز الخروج غير الصحيح لـ clickhouse-client عندما
exception.code() % 256 == 0. #11601 (filimonov). - إصلاح race condition في عمليتَي CREATE/DROP لنسخ replicas مختلفة من ReplicatedMergeTree. والاستمرار في العمل إذا لم تُزل table بالكامل من ZooKeeper أو إذا لم يتم إنشاؤها بنجاح. يعالج هذا #11432. #11592 (alexey-milovidov).
- إصلاح خطأ بسيط في رسالة السجل حول “تم خفض حجم mark cache” عند بدء تشغيل الخادم. يُغلق هذا #11399. #11589 (alexey-milovidov).
- إصلاح الخطأ
Size of offsets does not match size of columnفي queries التي تحتوي علىPREWHERE column in (subquery)وARRAY JOIN. #11580 (Nikolai Kochetov). - تم إصلاح عطل segfault نادر في
SHOW CREATE TABLE، ما يعالج #11490. #11579 (tavplubix). - كانت جميع الاستعلامات ضمن جلسة HTTP تحمل القيمة نفسها لـ
query_id. تم إصلاح ذلك. #11578 (tavplubix). - أصبحت حاوية Docker الخاصة بـ clickhouse-server تُفضّل الآن استخدام IPv6 عند التحقق من حيوية الخادم. #11550 (Ivan Starkov).
- تم إصلاح الخطأ
Data compressed with different methodsالذي قد يحدث إذا كانmin_bytes_to_use_direct_ioمفعّلًا، وكان PREWHERE نشطًا، مع استخدام SAMPLE أو عدد كبير من الخيوط. يعالج هذا #11539. #11540 (alexey-milovidov). - تم إصلاح shard_num/replica_num لـ
<node>(إذ كان ذلك يعطّل use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - تم إصلاح async INSERT إلى Distributed عند prefer_localhost_replica=0 ومن دون internal_replication. #11527 (Azat Khuzhin).
- تم إصلاح تسرّب للذاكرة عند طرح استثناء في منتصف aggregation باستخدام دوال
-State. يعالج هذا #8995. #11496 (alexey-milovidov). - تم إصلاح استثناء
Pipeline stuckفيINSERT SELECT FINALعندما يكونSELECT(max_threads>1) لديه streams متعددة، بينماINSERTلديه stream واحدة فقط (max_insert_threads==0). #11455 (Azat Khuzhin). - تم إصلاح النتيجة غير الصحيحة في استعلامات مثل
select count() from t, u. #11454 (Artem Zuikov). - تم إصلاح إرجاع compressed size لـ codecs. #11448 (Nikolai Kochetov).
- تم إصلاح تعطل الخادم عندما يحتوي عمود على compression codec بوسيطات غير literal. يعالج ذلك #11365. #11431 (alesapin).
- تم إصلاح قراءة محتملة من ذاكرة غير مهيأة أثناء إيقاف MergeTree إذا لم يتم إنشاء الجدول بنجاح. #11420 (alexey-milovidov).
- تم إصلاح التعطل في JOIN على
LowCarinality(T)وNullable(T). #11380. #11414 (Artem Zuikov). - تم إصلاح رمز الخطأ للمفتاح
USINGغير الصحيح. #11373. #11404 (Artem Zuikov). - تم إصلاح
geohashesInBoxعند استخدام وسيطات خارج نطاق خط العرض/خط الطول. #11403 (Vasily Nemkov). - تحسين رسائل الخطأ لدوال
joinGet(). #11389 (Artem Zuikov). - إصلاح خطأ
Pipeline stuckالمحتمل في الاستعلامات التي تتضمن فرزًا خارجيًا وحدًا أقصى. يُصلح #11359. #11366 (Nikolai Kochetov). - إزالة القفل غير الضروري أثناء إرسال الأجزاء في ReplicatedMergeTree. #11354 (alesapin).
- إصلاح دعم
\G(الإخراج العمودي) في clickhouse-client في وضع متعدد الأسطر. هذا يُغلق #9933. #11350 (alexey-milovidov). - إصلاح خطأ segfault محتمل عند استخدام قاعدة البيانات
Lazy. #11348 (alexey-milovidov). - إصلاح تعطل في استعلامات SELECT المباشرة من محرك الجدول
Join(من دون JOIN)، بالإضافة إلى معالجة غير صحيحة لقابلية NULL. #11340 (Artem Zuikov). - إصلاح تعطل في
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - أصبحت عمليات الدمج تتوقف الآن قبل تغيير البيانات الوصفية في استعلامات
ALTER. #11335 (alesapin). - جعل الكتابة إلى
MATERIALIZED VIEWمع الإعدادparallel_view_processing = 1متوازية من جديد. يُصلح #10241. #11330 (Nikolai Kochetov). - إصلاح
visitParamExtractRawعندما يحتوي JSON المُستخرَج على سلاسل نصية تتضمن { أو [ غير متوازنة. #11318 (Ewout). - إصلاح حالة تسابق نادرة جدًا في ThreadPool. #11314 (alexey-milovidov).
- إصلاح تسابق بيانات غير مؤثر في
clickhouse-copier. اكتشفته اختبارات التكامل. #11313 (alexey-milovidov). - إصلاح استخدام محتمل لذاكرة غير مهيأة أثناء التحويل. مثال:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - إصلاح المشكلة التي تمنع تحليل الفهرس من العمل إذا كان للجدول عمود من النوع Array في المفتاح الأساسي، وكان الاستعلام يطبّق تصفية على هذا العمود باستخدام الدالتين
emptyأوnotEmpty. هذا يُصلح #11286. #11303 (alexey-milovidov). - إصلاح خطأ قد يؤدي إلى عدم دقة تقدير سرعة الاستعلام، وقد لا يعمل الحد
min_execution_speedأو قد يعمل بشكل غير صحيح إذا كان الاستعلام مقيَّد المعدل بإعداداتmax_network_bandwidthأوmax_execution_speedأوpriority. كما تم تغيير القيمة الافتراضية لـtimeout_before_checking_execution_speedإلى قيمة غير صفرية، لأن الإعدادينmin_execution_speedوmax_execution_speedلن يكون لهما أي تأثير بخلاف ذلك. هذا يُصلح #11297. هذا يُصلح #5732. هذا يُصلح #6228. تحسين في سهولة الاستخدام: تجنّب دمج رسالة الاستثناء مع شريط التقدّم فيclickhouse-client. #11296 (alexey-milovidov). - إصلاح تعطل عند استدعاء
SET DEFAULT ROLEباستخدام معاملات غير صحيحة. هذا يُصلح #10586. #11278 (Vitaly Baranov). - إصلاح تعطل أثناء قراءة بيانات غير سليمة بتنسيق
Protobuf. هذا يُصلح #5957، ويُصلح #11203. #11258 (Vitaly Baranov). - إصلاح خطأ كان يجعل قاموس
cacheيعيد القيمة الافتراضية بدلًا من القيمة العادية (عندما تكون هناك مفاتيح منتهية الصلاحية فقط). يؤثر هذا فقط على الحقول النصية. #11233 (Nikita Mikhaylov). - إصلاح الخطأ
Block structure mismatch in QueryPipelineأثناء القراءة منVIEWمع وجود ثوابت في الاستعلام الداخلي. يُصلح #11181. #11205 (Nikolai Kochetov). - إصلاح الاستثناء المحتمل
Invalid status for associated output. #11200 (Nikolai Kochetov). - الآن سيتم التحقق من
primary.idxإذا كان معرّفًا في استعلامCREATE. #11199 (alesapin). - إصلاح الخطأ المحتمل
Cannot capture columnفي الدوال عالية الرتبة عند وجود معامل مُلتقط من النوعArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - إصلاح globbing في
S3الذي كان قد يفشل عند وجود أكثر من 1000 مفتاح ومع بعض الـ backend. #11179 (Vladimir Chebotarev). - إذا كان data skipping index يعتمد على أعمدة سيجري تعديلها أثناء merge في الخلفية (في SummingMergeTree وAggregatingMergeTree وكذلك في TTL GROUP BY)، فقد كان يُحسب بشكل غير صحيح. تم إصلاح هذه المشكلة بنقل حساب index إلى ما بعد merge بحيث يُحسب index على البيانات المدمجة. #11162 (Azat Khuzhin).
- إصلاح حالة التعليق التي كانت تحدث أحيانًا أثناء DROP لجدول بمحرك table engine=Kafka (أو أثناء إعادة تشغيل server). #11145 (filimonov).
- إصلاح الحجز المفرط لـ threads للاستعلامات البسيطة (وهو تحسين لتقليل عدد threads كان معطّلًا جزئيًا بعد التغييرات في pipeline). #11114 (Azat Khuzhin).
- إزالة التسجيل من مهمة إنهاء mutation إذا لم يكتمل أي شيء. #11109 (alesapin).
- إصلاح حالة توقف متبادل أثناء بدء تشغيل server بعد التحديث مع تغييرات في بنية log tables الخاصة بالنظام. #11106 (alesapin).
- إصلاح تسرّب للذاكرة في registerDiskS3. #11074 (Pavel Kovalenko).
- إصلاح الخطأ
No such name in Block::erase()عندما يظهرJOINمعPREWHEREأو عندما يحوّلoptimize_move_to_prewhereWHEREإلىPREWHERE. #11051 (Artem Zuikov). - إصلاح احتمال فقدان بعض البيانات أثناء إنهاء table بمحرك Kafka. #11048 (filimonov).
- إصلاح أخطاء في تحليل argument للدالة parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- أصبح من الممكن الآن تنفيذ
ADD/DROPوRENAMEعلى column نفسه ضمن query واحدة من نوعALTER. كما أصبحت رسالة Exception الخاصة بتنفيذMODIFYوRENAMEفي الوقت نفسه أكثر وضوحًا. ويعالج هذا جزئيًا #10669. #11037 (alesapin). - إصلاح تحليل عناوين URL الخاصة بـ S3. #11036 (Vladimir Chebotarev).
- إصلاح تتبّع الذاكرة في two-level aggregation لـ
GROUP BYعند وجودLIMIT. #11022 (Azat Khuzhin). - إصلاح خطأ نادر جدًا محتمل من نوع use-after-free في MergeTree إذا لم يتم إنشاء table بنجاح. #10986 (alexey-milovidov).
- إصلاح التعامل مع metadata (path نسبي لعملية rename) والبيانات (path نسبي للرابط الرمزي) في قاعدة البيانات Atomic. #10980 (Azat Khuzhin).
- إصلاح تعطل server عند تنفيذ queries متزامنة من نوع
ALTERوDROP DATABASEمع database engine من نوعAtomic. #10968 (tavplubix). - إصلاح الحجم غير الصحيح لـ raw data في method getRawData(). #10964 (Igr).
- إصلاح عدم التوافق في two-level aggregation بين الإصدار 20.1 والإصدارات الأقدم. يحدث هذا التعارض عندما تُستخدم إصدارات مختلفة من ClickHouse على عقدة initiator والعقد البعيدة، ويكون حجم نتيجة
GROUP BYكبيرًا، وتُنفَّذ aggregation باستخدام field واحد من نوعString. ويؤدي ذلك إلى ظهور عدة rows غير مدمجة للمفتاح نفسه في النتيجة. #10952 (alexey-milovidov). - تجنّب إرسال الملفات المكتوبة جزئيًا بواسطة DistributedBlockOutputStream. #10940 (Azat Khuzhin).
- إصلاح تعطل في
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - إصلاح مشكلة التعليق التي كانت تحدث أحيانًا أثناء تنفيذ
DROPلجدول بمحركKafka(أو أثناء إعادة تشغيل الخادم). #10910 (filimonov). - أصبح من الممكن الآن تنفيذ عدة عمليات
ALTER RENAMEمثلa TO b, c TO a. #10895 (alesapin). - إصلاح حالة سباق محتملة كان يمكن أن تحدث عند الحصول على النتيجة من حالة دالة تجميعية لنفس العمود من عدة thread. والطريقة الوحيدة (التي وجدتها) التي يمكن أن يحدث بها ذلك هي عند استخدام الدالة
finalizeAggregationأثناء القراءة من جدول بمحركMemoryيخزّن حالةAggregateFunctionللدالةquanite*. #10890 (Nikolai Kochetov). - إصلاح التوافق مع الإصدارات السابقة لـ tuples في Distributed tables. #10889 (Anton Popov).
- إصلاح SIGSEGV في
StringHashTable(إذا لم يكن هذا المفتاح موجودًا). #10870 (Azat Khuzhin). - إصلاح حالات تعليق
WATCHبعد حذف جدولLiveViewمن قاعدة بيانات بمحركAtomic. #10859 (tavplubix). - إصلاح خطأ في
ReplicatedMergeTreeقد يتسبب في تعليق بعض عملياتALTERعلى استعلامOPTIMIZEأثناء انتظار بعض replica بعد أن تصبح غير نشطة. #10849 (tavplubix). - تُحدَّث القيود الآن إذا أُعيدت تسمية العمود المشارك في تعبير
CONSTRAINT. يُصلح هذا #10844. #10847 (alesapin). - إصلاح احتمال قراءة ذاكرة غير مهيأة في cache dictionary. #10834 (alexey-milovidov).
- إصلاح ترتيب الأعمدة بعد
Block::sortColumns()(مع إضافة اختبار يوضح تأثير ذلك على إحدى حالات الاستخدام الفعلية، وهي محركBuffer). #10826 (Azat Khuzhin). - إصلاح المشكلة المتعلقة بـ ODBC bridge عند عدم طلب وضع علامات اقتباس حول المعرّفات. يُصلح هذا #7984. #10821 (alexey-milovidov).
- إصلاح تقريري UBSan وMSan في
DateLUT. #10798 (alexey-milovidov). - استخدام
src_typeلإجراء تحويل النوع بشكل صحيح في شروط المفتاح. يُصلح هذا #6287. #10791 (Andrew Onyshchuk). - التخلّص من التصحيحات القديمة الخاصة بـ
libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 يتيح هذا تعطيل-fno-omit-frame-pointerفي builds الخاصة بـclang، مما يحسّن الأداء بمتوسط لا يقل عن 1%. #10761 (Amos Bird). - إصلاح
avgWeightedعند استخدام وزن بنقطة عائمة عبر عدة shards. #10758 (Baudouin Giard). - إصلاح سلوك
parallel_view_processing. الآن يجب أن تكتمل جميع عمليات الإدراج فيMATERIALIZED VIEWدون استثناء حتى إذا وقع استثناء. يُصلح #10241. #10757 (Nikolai Kochetov). - إصلاح الـ combinator -OrNull و-OrDefault عند دمجهما مع -State. #10741 (hcz).
- إصلاح تعطل في
generateRandomمع الأنواع المتداخلة. يُصلح #10583. #10734 (Nikolai Kochetov). - إصلاح تلف البيانات في عمود المفتاح
LowCardinality(FixedString)فيSummingMergeTree، والذي كان يمكن أن يحدث بعد الدمج. يُصلح #10489. #10721 (Nikolai Kochetov). - إصلاح استخدام المفتاح الأساسي المغلف داخل دالة مع المُعدِّل ‘FINAL’ وتحسين ‘ORDER BY’. #10715 (Anton Popov).
- إصلاح احتمال تجاوز سعة المخزن المؤقت في الدالة
h3EdgeAngle. #10711 (alexey-milovidov). - إصلاح اختفاء الإجماليات. كان من الممكن تصفية الإجماليات إذا كان الاستعلام يحتوي على join أو subquery مع شرط where خارجي. يُصلح #10674. #10698 (Nikolai Kochetov).
- إصلاح ذرية عملية insert عبر HTTP. يُصلح هذا #9666. #10687 (Andrew Onyshchuk).
- إصلاح الاستخدامات المتعددة للمعامل
INمع المجموعة نفسها المتطابقة في استعلام واحد. #10686 (Anton Popov). - إصلاح خطأ كان يتسبب في تعليق طلبات HTTP عند إغلاق العميل عندما يكون
readonly=2وcancel_http_readonly_queries_on_client_close=1. يُصلح #7939, #7019, #7736, #7091. #10684 (tavplubix). - إصلاح ترتيب المعلمات في مُنشئ AggregateTransform. #10667 (palasonic1).
- إصلاح غياب التنفيذ المتوازي للاستعلامات البعيدة عند تفعيل
distributed_aggregation_memory_efficient. يُصلح #10655. #10664 (Nikolai Kochetov). - إصلاح احتمال ظهور عدد غير صحيح من الصفوف في الاستعلامات التي تحتوي على
LIMIT. يُصلح #10566, #10709. #10660 (Nikolai Kochetov). - إصلاح خلل يتسبب في تعليق عمليات
ALTERالمتزامنة عندما يحتوي الجدول على عدد كبير من الأجزاء. #10659 (alesapin). - إصلاح إلغاء الإشارة إلى nullptr في StorageBuffer إذا تم إيقاف الخادم قبل بدء تشغيل الجدول. #10641 (alexey-milovidov).
- إصلاح تحسين predicates في distributed queries (
enable_optimize_predicate_expression=1) للاستعلامات التي تتضمن قسمHAVING(أي عندما تكون التصفية على خادم initiator مطلوبة)، وذلك عبر الحفاظ على ترتيب expressions (وهذا يكفي للإصلاح)، وكذلك فرض استخدام المجمّع لأسماء الأعمدة بدلًا من الفهارس. إصلاحات: #10613، #11413. #10621 (Azat Khuzhin). - إصلاح optimize_skip_unused_shards مع LowCardinality. #10611 (Azat Khuzhin).
- إصلاح segfault في StorageBuffer عند حدوث استثناء أثناء بدء تشغيل الخادم. إصلاح #10550. #10609 (tavplubix).
- عند تنفيذ الاستعلام
SYSTEM DROP DNS CACHE، تُحذف أيضًا الذاكرات المؤقتة المستخدمة للتحقق مما إذا كان مسموحًا للمستخدم بالاتصال من بعض عناوين IP. #10608 (tavplubix). - إصلاح نتائج scalar غير الصحيحة داخل الاستعلام الداخلي لـ
MATERIALIZED VIEWإذا كان هذا الاستعلام يحتوي على جدول تابع. #10603 (Nikolai Kochetov). - إصلاح التعامل مع متغير condition في mutations المتزامنة. في بعض الحالات، كان يمكن أن تضيع الإشارات المرسلة إلى متغير condition هذا. #10588 (Vladimir Chebotarev).
- إصلاح احتمال حدوث crash إذا تم استدعاء
createDictionary()قبل اكتمالloadStoredObject(). #10587 (Vitaly Baranov). - إصلاح الخطأ
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - إصلاح SELECT لعمود ALIAS عندما يختلف نوع تعبير القيمة الافتراضية عن column type. #10563 (Azat Khuzhin).
- تنفيذ المقارنة بين قيم DateTime64 وString (كما هو الحال مع DateTime). #10560 (Vasily Nemkov).
- إصلاح تلف index، الذي قد يحدث في بعض الحالات بعد merge compact parts إلى compact part آخر. #10531 (Anton Popov).
- تعطيل تحسين GROUP BY sharding_key افتراضيًا (
optimize_distributed_group_by_sharding_keyأُضيف وتم تعطيله افتراضيًا بسبب تعقيد تحليل sharding_key؛ ومن الأمثلة البسيطة على ذلك وجودifفي sharding key)، مع إصلاحه لحالات WITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - إصلاحات: #10263 (بعد طلب السحب هذا، كان الإرسال الموزّع عبر
INSERTيتأجل مع كل عمليةINSERT) إصلاحات: #8756 (يتسبب طلب السحب هذا في تعطيل الإرسال الموزّع عند تحقق جميع الشروط التالية (إعداد غير مرجّح حاليًا فيما أظن):internal_replication == false، ووجود عدة shards محلية (مما يفعّل شيفرة الروابط الصلبة)، وdistributed_storage_policy(مما يؤدي إلى فشلlink(2)بسببEXDEV)). #10486 (Azat Khuzhin). - أُصلح خطأ في حد “max_rows_to_sort”. #10268 (alexey-milovidov).
- جلب Dictionary والتحقق من حقوق الوصول مرة واحدة فقط لكل استدعاء لأي دالة تقرأ external dictionaries. #10928 (Vitaly Baranov).
تحسين
- طبّق
TTLعلى البيانات القديمة بعد استعلامALTER MODIFY TTL. يتحكم الإعدادmaterialize_ttl_after_modifyفي هذا السلوك، وهو مُمكَّن افتراضيًا. #11042 (Anton Popov). - عند تحليل محارف الهروب بالشرطة المائلة العكسية بأسلوب C في القيم النصية الحرفية، وVALUES، ومختلف التنسيقات النصية (وهذا امتداد لمعيار SQL شائع في ClickHouse وMySQL)، احتفِظ بالشرطة المائلة العكسية إذا عُثر على تسلسل هروب غير معروف (مثل
\%أو\w)؛ ما يجعل استخدام التعبيرات النمطيةLIKEوmatchأسهل (إذ يكفي كتابةname LIKE 'used\_cars'بدلًا منname LIKE 'used\\_cars') وأكثر توافقًا في الوقت نفسه. يُصلح هذا #10922. #11208 (alexey-milovidov). - عند قراءة قيمة Decimal، اقطع الأرقام الزائدة بعد الفاصلة العشرية. هذا السلوك أكثر توافقًا مع MySQL وPostgreSQL. يُصلح هذا #10202. #11831 (alexey-milovidov).
- اسمح بتنفيذ DROP على جدول مكرَّر إذا كانت البيانات الوصفية في ZooKeeper قد أُزيلت بالفعل ولم تعد موجودة (وينطبق ذلك أيضًا عند استخدام TestKeeper للاختبار ثم إعادة تشغيل الخادم). واسمح بتنفيذ RENAME على جدول مكرَّر حتى عند حدوث خطأ في الاتصال بـ ZooKeeper. يُصلح هذا #10720. #11652 (alexey-milovidov).
- حسِّن قليلًا تشخيص قراءة Decimal من سلسلة نصية. يُغلق هذا #10202. #11829 (alexey-milovidov).
- أصلِح استدعاء sleep في handler الإشارات. إذ كان ينام لمدة أقل من المتوقع. #11825 (alexey-milovidov).
- (Linux فقط) ستعمل مقاييس الأداء المرتبطة بنظام التشغيل (لـ CPU وI/O) حتى بدون capability
CAP_NET_ADMIN. #10544 (Alexander Kazakov). - أُضيفت
hostnameباعتبارها alias للدالةhostName. واقترح هذه الميزة Victor Tarnavskiy من Yandex.Metrica. #11821 (alexey-milovidov). - أُضيف دعم
DDLالموزع (update/delete/drop partition) في عناقيد النسخ المتماثل المتقاطع. #11703 (Nikita Mikhaylov). - أصدِر تحذيرًا بدلًا من error في server log عند بدء التشغيل إذا تعذر الاستماع إلى أحد عناوين الاستماع (على سبيل المثال، إذا كان IPv6 غير متاح داخل Docker). لاحظ أنه إذا فشل الخادم في الاستماع إلى جميع العناوين المدرجة، فسيرفض بدء التشغيل كما كان من قبل. يُصلح هذا #4406. #11687 (alexey-milovidov).
- إنشاء المستخدم
defaultوقاعدة البيانات عند بدء Docker image. #10637 (Paramtamtam). - عند طباعة query متعددة الأسطر في server log، تُدمج الأسطر معًا. تم إصلاح ذلك ليعمل بشكل صحيح مع السلاسل النصية الحرفية متعددة الأسطر، والمُعرّفات، والتعليقات أحادية السطر. يُصلح هذا #3853. #11686 (alexey-milovidov).
- أصبح الآن مسموحًا باستخدام أسماء متعددة في الأوامر: CREATE USER وCREATE ROLE وALTER USER وSHOW CREATE USER وSHOW GRANTS وما إلى ذلك. #11670 (Vitaly Baranov).
- إضافة دعم لـ distributed DDL (
UPDATE/DELETE/DROP PARTITION) على clusters ذات النسخ المتماثل المتقاطع. #11508 (frank lee). - امسح password من سطر الأوامر في
clickhouse-clientوclickhouse-benchmarkإذا حدده المستخدم بقيمة صريحة. يمنع ذلك كشف password بواسطةpsوأدوات مشابهة. #11665 (alexey-milovidov). - لا تستخدم معلومات debug من ملف ELF إذا لم تكن مطابقة للـ binary الجاري تشغيله. هذا ضروري لتجنب طباعة أسماء دوال ومواقع source خاطئة في stack traces. يُصلح هذا #7514. #11657 (alexey-milovidov).
- أعد NULL/الصفر عندما لا يتم parsed value بالكامل في الدالتين parseDateTimeBestEffortOrNull/Zero. يُصلح هذا #7876. #11653 (alexey-milovidov).
- تخطَّ Parameters الفارغة في عنوان URL المطلوب. قد تظهر عند كتابة
http://localhost:8123/?&a=bأوhttp://localhost:8123/?a=b&&c=d. هذا يُغلق #10749. #11651 (alexey-milovidov). - اسمح باستخدام
groupArrayArrayوgroupUniqArrayArrayكـSimpleAggregateFunction. #11650 (Volodymyr Kuznetsov). - اسمح بالمقارنة مع Strings ثابتة عبر تحويلات ضمنية عند تحليل conditions الخاصة بـ index لأنواع أخرى. قد يُغلق هذا #11630. #11648 (alexey-milovidov).
- https://github.com/ClickHouse/ClickHouse/pull/7572#issuecomment-642815377 دعم HTTPHandlers الافتراضية في config. #11628 (Winter Zhang).
- اجعل المزيد من input formats تعمل مع Kafka engine. أصلِح مشكلة flushes المبكرة. وأصلِح مشكلة الأداء عندما تكون
kafka_num_consumersأكبر من عدد partitions في topic. #11599 (filimonov). - حسّن منطق
multiple_joins_rewriter_version=2. أصلِح خطأ الأعمدة غير المعروفة في aliases الخاصة بـ lambda. #11587 (Artem Zuikov). - رسالة Exception أفضل عند تعذر parse قائمة تعريف columns. هذا يُغلق #10403. #11537 (alexey-milovidov).
- تحسين منطق
enable_optimize_predicate_expression=1لـ VIEW. #11513 (Artem Zuikov). - إضافة دعم PREWHERE في جداول live view. #11495 (vzakaznikov).
- تحديث DNS cache تلقائيًا، والمستخدمة للتحقق مما إذا كان مسموحًا للمستخدم بالاتصال من عنوان معيّن. #11487 (tavplubix).
- سيؤدي OPTIMIZE FINAL إلى فرض merge حتى عند تنفيذ merges متزامنة. هذا يُغلق #11309 ويُغلق #11322. #11346 (alexey-milovidov).
- منع إخراج نتائج الاستعلامات المُلغاة في clickhouse-client. في الإصدارات السابقة، قد يستمر عرض النتيجة في الطرفية حتى بعد الضغط على Ctrl+C لإلغاء الاستعلام. هذا يُغلق #9473. #11342 (alexey-milovidov).
- الآن يُحدَّث ملف history بعد كل query، ولا تعود هناك race condition إذا استخدم عدة clients ملف history واحدًا. هذا يُصلح #9897. #11453 (Tagir Kuskarov).
- تحسين رسائل log messages أثناء إعادة تحميل configuration. #11341 (alexey-milovidov).
- إزالة المسافات البيضاء اللاحقة من queries المنسّقة في
clickhouse-clientأوclickhouse-formatفي بعض الحالات. #11325 (alexey-milovidov). - إضافة الإعداد “output_format_pretty_max_value_width”. إذا كانت القيمة أطول من اللازم، فسيتم اقتطاعها لتجنّب إخراج قيم كبيرة جدًا في الطرفية. هذا يُغلق #11140. #11324 (alexey-milovidov).
- تحسين رسالة Exception عند وجود نقص في memory mappings. هذا يُغلق #11027. #11316 (alexey-milovidov).
- دعم (U)Int8 و(U)Int16 وDate في ASOF JOIN. #11301 (Artem Zuikov).
- دعم parameter kafka_client_id لجداول Kafka. كما يغيّر
client.idالافتراضي الذي يستخدمه ClickHouse عند التواصل مع Kafka ليصبح أكثر verbose وأسهل استخدامًا. #11252 (filimonov). - الاحتفاظ بقيمة metric
DistributedFilesToInsertعند حدوث exceptions. في الإصدارات السابقة، كانت القيمة تُضبط عند الاستعداد لإرسال بعض الملفات، لكنها تصبح صفرًا إذا حدث Exception وظلّت بعض الملفات قيد الانتظار. الآن أصبحت تعكس عدد الملفات المعلّقة في filesystem. #11220 (alexey-milovidov). - إضافة دعم لأسماء أنواع البيانات متعددة الكلمات (مثل
DOUBLE PRECISIONوCHAR VARYING) لتحسين التوافق مع SQL. #11214 (Павел Потемкин). - إضافة أسماء بديلة لبعض أنواع البيانات. #10856 (Павел Потемкин).
- أصبح query log مُمكّنًا افتراضيًا الآن. #11184 (Ivan Blinkov).
- عرض نوع المصادقة في الجدول system.users وعند تنفيذ الاستعلام SHOW CREATE USER. #11080 (Vitaly Baranov).
- إزالة البيانات عند تنفيذ
DROP DATABASEصراحةً لمحرك قاعدة البياناتMemory. يُصلح هذا #10557. #11021 (tavplubix). - تعيين أسماء للخيوط الداخلية في مكتبة rdkafka، وإتاحة سجلات rdkafka في سجلات الخادم. #10983 (Azat Khuzhin).
- دعم المسافات البيضاء الخاصة بـ Unicode في الاستعلامات. يفيد ذلك عند نسخ الاستعلامات ولصقها من Word أو من صفحة ويب. يُصلح هذا #10896. #10903 (alexey-milovidov).
- السماح باستخدام أنواع UInt الكبيرة كفهرس في الدالة
tupleElement. #10874 (hcz). - مراعاة prefer_localhost_replica/load_balancing عند تنفيذ INSERT إلى Distributed. #10867 (Azat Khuzhin).
- إضافة الإعدادين
min_insert_block_size_rows_for_materialized_viewsوmin_insert_block_size_bytes_for_materialized_views. هذه الإعدادات مشابهة لـmin_insert_block_size_rowsوmin_insert_block_size_bytes، لكنها تُطبَّق فقط على الكتل المُدرجة فيMATERIALIZED VIEW. ويساعد ذلك على التحكم في دمج الكتل عند تمريرها إلى MVs وتجنب الاستخدام المفرط للذاكرة. #10858 (Azat Khuzhin). - التخلص من الاستثناء الصادر من قائمة الانتظار المتماثلة أثناء إيقاف تشغيل الخادم. يُصلح هذا #10819. #10841 (alesapin).
- ضمان ألا تُرجع
varSampوvarPopنتائج سالبة بسبب الأخطاء العددية، وألا يمكن حسابstddevSampوstddevPopانطلاقًا من تباين سالب. يُصلح هذا #10532. #10829 (alexey-milovidov). - تحسين رسالة استثناء DNS. يُصلح هذا #10813. #10828 (alexey-milovidov).
- تغيير رمز استجابة HTTP في بعض حالات أخطاء التحليل إلى 400 Bad Request. يُصلح هذا #10636. #10640 (alexey-milovidov).
- اطبع رسالة إذا كان clickhouse-client أحدث من clickhouse-server. #10627 (alexey-milovidov).
- إضافة دعم للاستعلام
INSERT INTO [db.]table WATCH. #10498 (vzakaznikov). - السماح بتمرير quota_key في clickhouse-client. يُغلق هذا #10227. #10270 (alexey-milovidov).
تحسين الأداء
- السماح لعدة نسخ متماثلة بإسناد merges وmutations وpartition drop وmove وreplace بالتوازي. هذا يُغلق #10367. #11639 (alexey-milovidov) #11795 (alexey-milovidov).
- تحسين GROUP BY بما يراعي sorting key للـ table، ويُفعَّل عبر الإعداد
optimize_aggregation_in_order. #9113 (dimarub2000). - تُنفَّذ عمليات SELECT مع
finalبالتوازي. أُضيف الإعدادmax_final_threadsلتقييد عدد threads المستخدمة. #10463 (Nikolai Kochetov). - تحسين أداء استعلامات INSERT عبر
INSERT SELECTأو INSERT باستخدام clickhouse-client عند توليد blocks صغيرة (وهو السيناريو المعتاد مع parsing المتوازي). هذا يُصلح #11275. كما أُصلحت المشكلة التي كانت تمنع CONSTRAINTs من العمل مع حقول DEFAULT. هذا يُصلح #11273. وأُصلحت أيضًا المشكلة التي كانت تتسبب في تجاهل CONSTRAINTS في الجداول TEMPORARY. هذا يُصلح #11274. #11276 (alexey-milovidov). - تحسين يزيل مجمِّعات min/max/any لمفاتيح GROUP BY في قسم SELECT، ويُفعَّل عبر الإعداد
optimize_aggregators_of_group_by_keys. #11667 (xPoSx). #11806 (Azat Khuzhin). - تحسين جديد يُخرج جميع العمليات من الدالة
any، ويُفعَّل عبرoptimize_move_functions_out_of_any#11529 (Ruslan). - تحسين أداء
clickhouse-clientفي interactive mode عند استخدام Pretty formats. في الإصدارات السابقة، كان قد يُستهلك قدر كبير من الوقت في حساب العرض المرئي لسلسلة UTF-8 string. هذا يُغلق #11323. #11323 (alexey-milovidov). - تحسين أداء الاستعلامات التي تستخدم
ORDER BYمعLIMITصغير (أقل منmax_block_size). #11171 (Albert Kidrachev). - إضافة اكتشاف CPU وقت التشغيل لاختيار أفضل تنفيذ للدوال وتوجيه التنفيذ إليه. وإضافة دعم لتوليد الشيفرة لعدة أهداف. هذا يُغلق #1017. #10058 (DimasKovas).
- تفعيل
mlockلملف clickhouse binary افتراضيًا. سيمنع ذلك ترحيل clickhouse executable إلى الذاكرة الافتراضية تحت حمل IO مرتفع. #11139 (alexey-milovidov). - جعل الاستعلامات التي تستخدم الدالة التجميعية
sumومن دون مفاتيح GROUP BY تعمل بسرعة أكبر بعدة مرات. #10992 (alexey-milovidov). - تحسين radix sort (المستخدم في
ORDER BYمع مفاتيح بسيطة) عبر إزالة بعض عمليات نقل البيانات غير الضرورية. #10981 (Arslan Gumerov). - فرز أجزاء أكبر من الجدول الأيسر في MergeJoin. تخزين الكتل اليسرى مؤقتًا في الذاكرة. إضافة الإعداد
partial_merge_join_left_table_buffer_bytesللتحكم في أحجام مخازن الكتل اليسرى. #10601 (Artem Zuikov). - إزالة ORDER BY وDISTINCT المكررين من الاستعلامات الفرعية. هذا التحسين مُمكَّن بواسطة
optimize_duplicate_order_by_and_distinct#10067 (Mikhail Malafeev). - تُزيل هذه الميزة الدوال الخاصة بالمفاتيح الأخرى في قسم GROUP BY، وهي مُمكَّنة بواسطة
optimize_group_by_function_keys#10051 (xPoSx). - تحسين جديد يستخرج العمليات الحسابية من الدوال التجميعية، وهو مُمكَّن بواسطة
optimize_arithmetic_operations_in_aggregate_functions#10047 (Ruslan). - استخدام عميل HTTP لـ S3 يعتمد على Poco بدلًا من curl. سيؤدي ذلك إلى تحسين الأداء وتقليل استخدام الذاكرة في وحدة تخزين S3 ودوال الجدول. #11230 (Pavel Kovalenko).
- إصلاح مشكلة أداء في Kafka مرتبطة بإعادة الجدولة المستندة إلى الحدود، التي كان يجري تطبيقها دائمًا. #11149 (filimonov).
- تمكين percpu_arena:percpu في jemalloc (سيؤدي ذلك إلى تقليل تجزئة الذاكرة الناتجة عن مجموعة مؤشرات الترابط). #11084 (Azat Khuzhin).
- تحسين استخدام الذاكرة عند قراءة استجابة من عميل HTTP لـ S3. #11561 (Pavel Kovalenko).
- ضبط إعدادات Kafka الافتراضية للحصول على أداء أفضل. #11388 (filimonov).
ميزة تجريبية
- إضافة نوعي البيانات
Point(Tuple(Float64, Float64)) وPolygon(Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov). - أُضيفت الدالة
hasSubstrالتي تتيح البحث عن متتاليات فرعية في المصفوفات. ملاحظة: من المرجح إعادة تسمية هذه الدالة من دون إشعار مسبق. #11071 (Ryad Zenine). - أُضيف دعم OpenCL وخوارزمية الفرز bitonic، والتي يمكن استخدامها لفرز أنواع البيانات الصحيحة في عمود واحد. يجب البناء باستخدام الراية
-DENABLE_OPENCL=1. ولاستخدام خوارزمية الفرز bitonic بدلًا من غيرها، تحتاج إلى تعيينbitonic_sortللإعدادspecial_sortوالتأكد من أن OpenCL متاح. لا تُحسّن هذه الميزة الأداء أو أي جانب آخر، وإنما تُوفَّر فقط كمثال ولأغراض العرض التوضيحي. ومن المرجح إزالتها في المستقبل القريب إذا لم يكن هناك مزيد من التطوير في هذا الاتجاه. #10232 (Ri).
تحسينات في البناء/الاختبار/التغليف
- تم تمكين clang-tidy للبرامج والأدوات المساعدة. #10991 (alexey-milovidov).
- إزالة الاعتماد على
tzdata: لا يحدث فشل إذا لم يكن الدليل/usr/share/zoneinfoموجودًا. لاحظ أن جميع المناطق الزمنية تعمل في ClickHouse حتى بدون تثبيت tzdata على النظام. #11827 (alexey-milovidov). - أُضيفت اختبارات إجهاد لـ MSan وUBSan. لاحظ أن لدينا بالفعل MSan وUBSan للاختبارات الوظيفية، وأن اختبار “stress” هو نوع آخر من الاختبارات. #10871 (alexey-milovidov).
- طباعة معرّف build الخاص بالمصرّف في رسائل الانهيار. سيجعلنا ذلك أكثر يقينًا قليلًا بشأن الملف التنفيذي الذي انهار. وأُضيفت دالة جديدة باسم
buildId. #11824 (alexey-milovidov). - أُضيف اختبار لضمان استمرار عمل عمليات mutation بعد استعلام FREEZE. #11820 (alexey-milovidov).
- عدم السماح بالاختبارات التي تحتوي أسماؤها على الجزء الفرعي “fail”، لأن ذلك يجعل استعراض نتائج الاختبارات في المتصفح أقل سهولة عند استخدام Ctrl+F والبحث عن “fail”. #11817 (alexey-milovidov).
- إزالة تعليمات الاستيراد غير المستخدمة من HTTPHandlerFactory. #11660 (Bharat Nallan).
- أُضيف أخذ عينات عشوائي للحالات التي يُنفَّذ فيها الناسخ. وهذا مطلوب لتجنب الخطأ
Too many simultaneous queries. كما زِيدت المهلة وخُفِّض احتمال الإخفاقات. #11573 (Nikita Mikhaylov). - إصلاح تضمين مفقود. #11525 (Matwey V. Kornilov).
- تسريع build بإزالة برامج الأمثلة القديمة. كما عُثر على اختبار وظيفي مهمل. #11486 (alexey-milovidov).
- زيادة حجم ccache لعمليات build في CI. #11450 (alesapin).
- الإبقاء فقط على unit_tests_dbms في build الخاص بـ deb. #11429 (Ilya Yatsishin).
- تحديث librdkafka إلى الإصدار 1.4.2. #11256 (filimonov).
- إعادة هيكلة ملفات build الخاصة بـ CMake. #11390 (Ivan).
- إصلاح عدة اختبارات تكامل غير مستقرة. #11355 (alesapin).
- إضافة دعم لتشغيل اختبارات الوحدة باستخدام UBSan. #11345 (alexey-milovidov).
- إزالة المهلة الزائدة من اختبار التكامل
test_insertion_sync_fails_with_timeout. #11343 (alesapin). - تحسين التحقق من الاستعلامات المعلّقة في clickhouse-test. #11321 (alexey-milovidov).
- إصدار تحذير إذا كان الخادم قد بُني بوضع debug أو باستخدام sanitizers. #11304 (alexey-milovidov).
- يتحقق clickhouse-test الآن من أن الخادم يعمل قبل تشغيل الاختبارات. #11285 (alesapin).
- إصلاح الاختبار
00731_long_merge_tree_select_opened_files.shالذي قد يكون غير مستقر. فهو لا يفشل كثيرًا، لكننا اكتشفنا احتمال وجود حالة تسابق في هذا الاختبار أثناء التجربة باستخدام ThreadFuzzer: #9814 راجع link للاطلاع على مثال. #11270 (alexey-milovidov). - إعادة الاختبار في CI إذا انتهت مهلة استدعاء
curl. وقد يحدث ذلك بسبب تجمدات في النظام تستمر لأكثر من 10 ثوانٍ، وهو أمر شائع في البنية التحتية لـ CI لدينا. يعالج هذا #11267. #11268 (alexey-milovidov). - إضافة اختبار لمحرك جدول Join من @donmikel. هذا يُغلق #9158. #11265 (alexey-milovidov).
- إصلاح عدة أخطاء غير مهمة في اختبارات الوحدة. #11262 (alesapin).
- لن تختلط بعد الآن أجزاء من أمر الربط الخاصة بمكتبة
cctzمع المكتبات الأخرى. #11213 (alesapin). - تقسيم /programs/server إلى البرنامج الفعلي ومكتبة. #11186 (Ivan).
- تحسين نصوص البناء لـ Protobuf و gRPC. #11172 (Vitaly Baranov).
- تفعيل اختبار الأداء الذي لم يكن يعمل. #11158 (alexey-milovidov).
- إنشاء S3 bucket الجذرية للاختبارات قبل بدء أي instance لـ CH. #11142 (Pavel Kovalenko).
- إضافة اختبار أداء للمضلعات غير الثابتة. #11141 (alexey-milovidov).
- إصلاح الاختبار
00979_live_view_watch_continuous_aggregates. #11024 (vzakaznikov). - إضافة إمكانية تشغيل ZooKeeper في integration tests عبر tmpfs. #11002 (alesapin).
- انتظار ODBC-bridge باستخدام backoff أُسّي. لم تكن مدة الانتظار السابقة البالغة 200 ms كافية في بيئة CI لدينا. #10990 (alexey-milovidov).
- إصلاح اختبار غير حتمي. #10989 (alexey-milovidov).
- إضافة اختبار للبيانات الخارجية الفارغة. #10926 (alexey-milovidov).
- يُعاد إنشاء قاعدة البيانات لكل اختبار. وهذا يحسّن من عزل الاختبارات. #10902 (alexey-milovidov).
- إضافة المزيد من عمليات التحقق في شيفرة الأعمدة. #10833 (alexey-milovidov).
- تحسين التكامل مع أدوات sanitizer. وطباعة معلومات عن query_id في رسالة فشل sanitizer. #10832 (alexey-milovidov).
- إصلاح race condition واضحة في فحص “Split build smoke test”. #10820 (alexey-milovidov).
- إصلاح تقرير MSan خاطئ في MergeTreeIndexFullText. ظهرت هذه المشكلة لأول مرة في #9968. #10801 (alexey-milovidov).
- إضافة suppression لـ MSan لمكتبة MariaDB Client. #10800 (alexey-milovidov).
- تعذّر على make الخاص بـ GRPC العثور على ملفات protobuf، لذا جرى تعديل ملف make بإضافة الرابط الصحيح. #10794 (mnkonkova).
- تمكين تحذيرات إضافية (
-Weverything) لـ base وutils وprograms. لاحظ أن هذا مفعّل بالفعل في معظم الشيفرة. #10779 (alexey-milovidov). - أُعلنت suppressions الخاصة بتحذيرات المكتبات على أنها public بالخطأ في #10396. #10776 (alexey-milovidov).
- استعادة patch حُذف بالخطأ في #10396. #10774 (alexey-milovidov).
- إصلاح أخطاء Performance tests، Part 2. #10773 (alexey-milovidov).
- إصلاح أخطاء اختبارات الأداء. #10766 (alexey-milovidov).
- تحديث cross-builds لاستخدام المصرّف clang-10. #10724 (Ivan).
- تحديث تعليمات تثبيت حزم RPM. جاء هذا باقتراح من Denis (معرّف TG @ldviolet) ونفّذه Arkady Shejn. #10707 (alexey-milovidov).
- محاولة إصلاح الاختبار
tests/queries/0_stateless/01246_insert_into_watch_live_view.py. #10670 (vzakaznikov). - إصلاح اختبار 00979_live_view_watch_continuous_aggregates.py وإعادة تفعيله. #10658 (vzakaznikov).
- إصلاح مشكلة OOM في اختبار الضغط ASan. #10646 (alexey-milovidov).
- إصلاح تقرير UBSan (إضافة صفر إلى nullptr) في HashTable، والذي ظهر بعد الترحيل إلى clang-10. #10638 (alexey-milovidov).
- إزالة الاستدعاء الخارجي للموصّل
ld(bfd) أثناء معالجة tzdata وقت الترجمة. #10634 (alesapin). - السماح باستخدام
lldلربط blobs (resources). #10632 (alexey-milovidov). - إصلاح تقرير UBSan في مكتبة
LZ4. #10631 (alexey-milovidov). انظر أيضًا https://github.com/lz4/lz4/issues/857 - تحديث LZ4 إلى أحدث فرع تطوير. #10630 (alexey-milovidov).
- إضافة ملف قابل للقراءة آليًا ومولَّد تلقائيًا يتضمن قائمة الإصدارات المستقرة. #10628 (alexey-milovidov).
- إصلاح التحقق من إصدار
capnprotoلـcapnp::UnalignedFlatArrayMessageReader. #10618 (Matwey V. Kornilov). - تقليل استخدام الذاكرة في الاختبارات. #10617 (alexey-milovidov).
- إصلاح قيم المهلة المرمَّزة مباشرة في اختبارات live view الجديدة. #10604 (vzakaznikov).
- زيادة المهلة عند فتح client في tests/queries/0_stateless/helpers/client.py. #10599 (vzakaznikov).
- تفعيل ThinLTO لإصدارات clang، استكمالًا لـ #10435. #10585 (Amos Bird).
- إضافة fuzzers والتحضير لتكامل oss-fuzz. #10546 (kyprizel).
- إصلاح build الخاص بـ FreeBSD. #10150 (Ivan).
- إضافة build جديد لاختبارات الاستعلامات باستخدام إطار العمل pytest. #10039 (Ivan).
إصدار ClickHouse v20.4
إصدار ClickHouse v20.4.8.99-stable 2020-08-10
إصلاحات الأخطاء
- تم إصلاح خطأ في الدالة
parseDateTimeBestEffortعند تمرير طابع زمني Unix كوسيط. يعالج هذا #13362. #13441 (alexey-milovidov). - تم إصلاح مشكلة كانت قد تؤدي إلى انخفاض محتمل في الأداء ونتائج غير دقيقة قليلًا في
uniqExactوtopKوsumDistinctوالدوال التجميعية المشابهة عند استدعائها على أنواع Float التي تحتوي على قيم NaN. كما كانت تتسبب أيضًا في إطلاق assert في build التصحيح. يعالج هذا #12491. #13254 (alexey-milovidov). - تم إصلاح الدالة
ifعند استخدام nullable constexpr كشرطcondلا يكون NULL حرفيًا. يعالج #12463. #13226 (alexey-milovidov). - تم إصلاح assert في الدالة
arrayElementعندما تكون عناصر المصفوفة Nullable ويكون فهرس المصفوفة أيضًا Nullable. يعالج هذا #12172. #13224 (alexey-milovidov). - تم إصلاح تحليل الفهرس غير الصحيح عند استخدام الدوال. وكان ذلك قد يؤدي إلى استبعاد parts غير صحيحة أثناء القراءة من جداول
MergeTree. يعالج #13060. يعالج #12406. #13081 (Anton Popov). - تم إصلاح التقييد غير الضروري لعدد خيوط التنفيذ لعمليات SELECT من replica محلية. #12840 (Nikolai Kochetov).
- تم إصلاح احتمال ظهور صف overflow إضافي في البيانات ضمن استعلامات
WITH TOTALS. #12747 (Nikolai Kochetov). - تم تحسين الأداء مع Tuples الكبيرة التي تُفسَّر على أنها دوال في قسم
IN. وهذا في الحالة التي يكتب فيها المستخدمWHERE x IN tuple(1, 2, ...)بدلًا منWHERE x IN (1, 2, ...)لسبب غير مألوف. #12700 (Anton Popov). - تم إصلاح تتبّع الذاكرة لـ
input_format_parallel_parsing(من خلال ربط thread بالمجموعة). #12672 (Azat Khuzhin). - تم إصلاح #12293 للسماح بتمرير predicate إلى الأسفل عندما يحتوي subquery على عبارة WITH. #12663 (Winter Zhang).
- تم إصلاح #10572 المتعلق بفهرس bloom filter مع const expression. #12659 (Winter Zhang).
- تم إصلاح
SIGSEGVفيStorageKafkaعندما يكون broker غير متاح (وليس في هذه الحالة فقط). #12658 (Azat Khuzhin). - أُضيف دعم للدالة
ifمع وسائط من النوعArray(UUID). يعالج هذا #11066. #12648 (alexey-milovidov). - تم إصلاح حالة تسابق في القواميس الخارجية ذات تخطيط cache، والتي قد تؤدي إلى تعطل الخادم. #12566 (alesapin).
- أُزيلت البيانات الخاصة بجداول Distributed (الكتل الناتجة عن عمليات INSERT غير المتزامنة) عند تنفيذ DROP TABLE. #12556 (Azat Khuzhin).
- تم إصلاح خلل كان يؤدي إلى تلف الأجزاء القديمة بعد الاستعلام
ALTER DELETEعند ضبطenable_mixed_granularity_parts=1. يُصلح هذا #12536. #12543 (alesapin). - تحسين رسالة الاستثناء للدالة
inعند تمرير عدد غير صالح من الوسائط. #12529 (Anton Popov). - تم إصلاح مشكلة في الأداء أثناء القراءة من الأجزاء compact. #12492 (Anton Popov).
- تم إصلاح تعطل في JOIN مع قاموس عند إجراء الربط على تعبير لمفتاح القاموس:
t JOIN dict ON expr(dict.id) = t.id. كما تم تعطيل تحسين ربط القاموس لهذه الحالة. #12458 (Artem Zuikov). - تم إصلاح segfault محتمل في StorageMerge. يُغلق هذا #12054. #12401 (tavplubix).
- تم إصلاح ترتيب الأعمدة في المُعدِّل
WITH FILL. سابقًا، لم يكن ترتيب أعمدة عبارةORDER BYيُحترم. #12306 (Anton Popov). - تجنّب استثناء “bad cast” عندما يوجد تعبير يرشّح البيانات بحسب الأعمدة الظاهرية (مثل
_tableفي جداولMerge) أو بحسب أعمدة “index” في جداول النظام، مثل التصفية حسب اسم قاعدة البيانات عند الاستعلام منsystem.tables، ويُرجع هذا التعبير النوعNullable. يُصلح هذا #12166. #12305 (alexey-milovidov). - إظهار خطأ بعد فشل تحميل TrieDictionary. #12290 (Vitaly Baranov).
- كانت الدالة
arrayFillتعمل بشكل غير صحيح مع المصفوفات الفارغة، ما قد يؤدي إلى تعطل. يُصلح هذا #12263. #12279 (alexey-milovidov). - تم تنفيذ تحويلات إلى النوع المشترك للأنواع
LowCardinality. يتيح ذلك تنفيذ UNION ALL على جداول تحتوي على أعمدة من نوع LowCardinality وأعمدة أخرى. يُصلح هذا #8212. ويُصلح هذا أيضًا #4342. #12275 (alexey-milovidov). - تم إصلاح السلوك الذي كانت فيه الترويسة لبعض الأنواع الخاصة تُكتب أكثر من مرة أثناء عمليات الإدراج المتتابعة المتعددة في
StorageFile. وقد أصلح هذا #6155. #12197 (Nikita Mikhaylov). - تم إصلاح الدوال المنطقية لقيم UInt8 عندما لا تكون مساوية لـ 0 أو 1. #12196 (Alexander Kazakov).
- تم تقييد حدود
max_memory_usage*بالذاكرة المقيمة للعملية. #12182 (Azat Khuzhin). - تم إصلاح التحقق من وسيطات
dictGetأثناء حذف الدوال الحقنية في GROUP BY. #12179 (Azat Khuzhin). - لا تقسّم اسم جدول مصدر القاموس إلى المخطط واسم الجدول نفسه إذا كان اتصال ODBC لا يدعم المخطط. #12165 (Vitaly Baranov).
- تم إصلاح منطق خاطئ في
ALTER DELETEكان يؤدي إلى حذف السجلات عندما يُقيَّم الشرط إلى NULL. هذا يُصلح #9088. وهذا يُغلق #12106. #12153 (alexey-milovidov). - تم إصلاح التحويل الخاطئ للاستعلام المُرسَل إلى نظام DBMS خارجي (مثل MySQL أو ODBC) عند وجود أسماء مستعارة. هذا يُصلح #12032. #12151 (alexey-milovidov).
- تم إصلاح احتمال حدوث تجاوز في القسمة الصحيحة. هذا يُصلح #12119. #12140 (alexey-milovidov).
- تم إصلاح احتمال حدوث حلقة لا نهائية في
greatCircleDistanceوgeoDistance. هذا يُصلح #12117. #12137 (alexey-milovidov). - تم توحيد آلية التعامل مع ملف “pid”. في الإصدارات السابقة، قد يرفض الخادم البدء إذا تم قتله دون إيقاف صحيح، وكان هناك process أخرى تحمل نفس pid الخاص بالخادم الذي كان يعمل سابقًا. كذلك قد يُزال ملف pid عند فشل بدء الخادم حتى لو كان هناك خادم آخر قيد التشغيل. هذا يُصلح #3501. #12133 (alexey-milovidov).
- تم إصلاح التعامل مع تبعية الجدول ذي ENGINE=Dictionary على القاموس. هذا يُصلح #10994. هذا يُصلح #10397. #12116 (Vitaly Baranov).
- تم تحسين الأداء في استعلامات SELECT التي تستخدم
UNION، وكان السبب حدًا خاطئًا لإجمالي عدد خيوط التنفيذ. يُصلح #12030. #12103 (Nikolai Kochetov). - تم إصلاح segfault مع المجمِّعات
-StateResample. #12092 (Anton Popov). - تم إصلاح كون المقاييس
result_rowsوresult_bytesفارغة فيsystem.quey_logلاستعلامات SELECT. يُصلح #11595. #12089 (Nikolai Kochetov). - تم إصلاح التقييد غير الضروري لعدد الخيوط في استعلامات SELECT من
VIEW. يُصلح #11937. #12085 (Nikolai Kochetov). - تم إصلاح احتمال حدوث تعطل عند استخدام نوع غير صحيح مع
PREWHERE. يُصلح #12053، #12060. #12060 (Nikolai Kochetov). - تم إصلاح الخطأ
Expected single dictionary argument for functionفي الدالةdefaultValueOfArgumentTypeمع النوعLowCardinality. يُصلح #11808. #12056 (Nikolai Kochetov). - تم إصلاح الخطأ
Cannot capture columnفي الدوال عالية الرتبة عند استخدام الوسيطTuple(LowCardinality). يُصلح #9766. #12055 (Nikolai Kochetov). - جرى تحليل metadata الجداول بالتوازي عند تحميل قاعدة البيانات. يُعالج هذا بطء بدء تشغيل الخادم عند وجود عدد كبير من الجداول. #12045 (tavplubix).
- أصبحت الدالة التجميعية
topKتُرجع Enum للأنواع Enum. يُصلح هذا #3740. #12043 (alexey-milovidov). - تم إصلاح التحقق من القيود إذا كان القيد تعبيرًا ثابتًا. يُصلح هذا #11360. #12042 (alexey-milovidov).
- تم إصلاح المقارنة غير الصحيحة بين tuples ذات الأعمدة
Nullable. يُصلح #11985. #12039 (Nikolai Kochetov). - تم إصلاح حساب access rights عندما تكون allow_introspection_functions=0. #12031 (Vitaly Baranov).
- تم إصلاح النتيجة غير الصحيحة واحتمال حدوث تعطل عند استدعاء الدالة
ifبوسائط من النوعFixedStringوبأحجام مختلفة. يُصلح هذا #11362. #12021 (alexey-milovidov). - قد يُرجع استعلام يحتوي على الدالة
neighborبوصفها التعبير الوحيد المُعاد نتيجةً فارغة إذا استُدعيت الدالة بإزاحة-9223372036854775808. يُصلح هذا #11367. #12019 (alexey-milovidov). - تم إصلاح حساب access rights عندما تكون allow_ddl=0. #12015 (Vitaly Baranov).
- تم إصلاح احتمال overflow في حجم المصفوفة في generateRandom، ما قد يؤدي إلى تعطل. يُصلح هذا #11371. #12013 (alexey-milovidov).
- تم إصلاح احتمال حدوث استثناء فاصلة عائمة. وهذا يُغلق #11378. #12005 (alexey-milovidov).
- تم إصلاح اسم إعداد غير صحيح في رسالة السجل عند بدء تشغيل الخادم. #11997 (alexey-milovidov).
- تم إصلاح
Query parameter was not setفي تنسيقValues. يُصلح هذا #11918. #11936 (tavplubix). - الإبقاء على الأسماء المستعارة لعمليات الاستبدال داخل الاستعلام (الاستعلامات ذات المعلمات). يُصلح هذا #11914. #11916 (alexey-milovidov).
- تم إصلاح خلل يتسبب في عدم تنفيذ أي عمليات نقل عند تغيير سياسة التخزين من السياسة الافتراضية. #11893 (Vladimir Chebotarev).
- تم إصلاح احتمال حدوث استثناء فاصلة عائمة عند تحليل
DateTime64. يُصلح هذا #11374. #11875 (alexey-milovidov). - تم إصلاح احتساب استخدام الذاكرة عبر واجهة HTTP (وقد يكون لذلك أثر ملحوظ عند استخدام
wait_end_of_query=1). #11840 (Azat Khuzhin). - تحليل البيانات الوصفية المخزنة في ZooKeeper قبل التحقق من التطابق. #11739 (Azat Khuzhin).
تحسين الأداء
- لم يكن الفهرس يُستخدم مع المعامل IN عند استخدام القيم الحرفية، وهو تراجع في الأداء ظهر تقريبًا منذ الإصدار v19.3. يُصلح هذا #10574. #12062 (nvartolomei).
تحسينات في البناء/الاختبار/التغليف
- ثبّت
ca-certificatesقبل أول تشغيل لـapt-get updateفي Dockerfile. #12095 (Ivan Blinkov).
إصدار ClickHouse v20.4.6.53-stable 2020-06-25
إصلاحات الأخطاء
- إصلاح تعطل نادر ناتج عن استخدام عمود
Nullableفي شرط prewhere. استكمالًا لـ #11608. #11869 (Nikolai Kochetov). - عدم السماح باستخدام arrayJoin داخل الدوال عالية الرتبة. كان ذلك يؤدي إلى خلل في مزامنة protocol. هذا يُغلق #3933. #11846 (alexey-milovidov).
- إصلاح النتيجة غير الصحيحة لمقارنة FixedString مع String ثابت. هذا يُصلح #11393. ظهر هذا الخطأ في الإصدار 20.4. #11828 (alexey-milovidov).
- إصلاح النتيجة غير الصحيحة للدالة
if()عند وجود NULLs في الشرط. #11807 (Artem Zuikov). - إصلاح استخدام عدد كبير جدًا من threads للاستعلامات. #11788 (Nikolai Kochetov).
- إصلاح السلوك غير المتوقع للاستعلامات مثل
SELECT *, xyz.*التي كانت تنجح رغم أنه كان من المفترض حدوث خطأ. #11753 (hexiaoting). - سيتم الآن إلغاء fetches المكررة أثناء تعديل metadata. #11744 (alesapin).
- إصلاح LOGICAL_ERROR الناتج عن الاستدلال الخاطئ على النوع للقيم الحرفية المعقدة في input format Values. #11732 (tavplubix).
- إصلاح
ORDER BY ... WITH FILLمع الأعمدة الثابتة. #11697 (Anton Popov). - تمرير قيم timeout الصحيحة عند التواصل مع XDBC bridge. في الفترة الأخيرة، لم يكن يتم الالتزام بالمهل الزمنية عند التحقق من liveness الخاصة بالجسر واستلام metadata. #11690 (alexey-milovidov).
- إصلاح استخدام
LIMIT n WITH TIESمع عبارةORDER BYالتي تحتوي على aliases. #11689 (Anton Popov). - إصلاح خطأ يؤدي إلى حالة غير صحيحة لـ
system.mutations. فقد يُظهر أن mutation بأكمله قد اكتمل بالفعل، بينما لا يزال لدى server مهامMUTATE_PARTفي replication queue ويحاول تنفيذها. هذا يُصلح #11611. #11681 (alesapin). - إضافة دعم للتعبيرات النمطية مع علامات case-insensitive. هذا يُصلح #11101 ويُصلح #11506. #11649 (alexey-milovidov).
- إزالة تحسين count query البسيط إذا كان أمان row-level مفعّلًا. في الإصدارات السابقة، كان المستخدم يحصل على العدد الإجمالي للسجلات في table بدلًا من العدد المُرشَّح. هذا يُصلح #11352. #11644 (alexey-milovidov).
- إصلاح bloom filters لـ String (فهارس تخطي البيانات). #11638 (Azat Khuzhin).
- إصلاح تعطل نادر ناتج عن استخدام عمود
Nullableفي شرط prewhere. (وربما يكون مرتبطًا بشكل ما بـ #11572). #11608 (Nikolai Kochetov). - إصلاح الخطأ
Block structure mismatchفي الاستعلامات التي تستخدم sampling عند القراءة من جدولBuffer. #11602 (Nikolai Kochetov). - إصلاح رمز الخروج غير الصحيح لبرنامج clickhouse-client عندما تكون exception.code() % 256 = 0. #11601 (filimonov).
- إصلاح خطأ بسيط في رسالة السجل حول “Mark cache size was lowered” عند بدء تشغيل الخادم. هذا يُغلق #11399. #11589 (alexey-milovidov).
- إصلاح الخطأ
Size of offsets does not match size of columnفي الاستعلامات التي تحتوي علىPREWHERE column in (subquery)وARRAY JOIN. #11580 (Nikolai Kochetov). - إصلاح segfault نادر في
SHOW CREATE TABLE. يُصلح هذا #11490. #11579 (tavplubix). - كانت جميع الاستعلامات ضمن جلسة HTTP تحمل نفس query_id. تم إصلاح ذلك. #11578 (tavplubix).
- أصبحت حاوية Docker الخاصة بـ clickhouse-server تفضّل الآن استخدام IPv6 للتحقق من حيوية الخادم. #11550 (Ivan Starkov).
- إصلاح shard_num/replica_num لـ
<node>(مما يعطّل use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - إصلاح حالة race condition قد تؤدي إلى استثناء أثناء حذف الجدول. الأمر معقد قليلًا، لكنه غير خطير إطلاقًا. إذا أردت شرحًا، فقط نبهني على telegram. #11523 (alesapin).
- إصلاح تسرّب في الذاكرة عند حدوث استثناء في منتصف aggregation مع الدوال من نوع -State. هذا يُصلح #8995. #11496 (alexey-milovidov).
- إذا كان data skipping index يعتمد على أعمدة سيجري تعديلها أثناء الدمج في الخلفية (بالنسبة إلى SummingMergeTree و AggregatingMergeTree وكذلك TTL GROUP BY)، فقد كان يُحتسب بشكل غير صحيح. أُصلحت هذه المشكلة بنقل حساب الفهرس إلى ما بعد الدمج، بحيث يُحتسب الفهرس على البيانات المدمجة. #11162 (Azat Khuzhin).
- إزالة تصحيحات libunwind القديمة. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 يتيح هذا تعطيل
-fno-omit-frame-pointerفي بُنىclang، مما يحسّن الأداء بمتوسط لا يقل عن 1%. #10761 (Amos Bird). - إصلاح استخدام المفتاح الأساسي المغلّف داخل دالة مع المُعدِّل ‘FINAL’ وتحسين ‘ORDER BY’. #10715 (Anton Popov).
تحسينات في البناء/الاختبار/التغليف
- إصلاح عدة أخطاء بسيطة في اختبارات الوحدة. #11262 (alesapin).
- إصلاح تقرير MSan خاطئ في MergeTreeIndexFullText. ظهرت هذه المشكلة لأول مرة في #9968. #10801 (alexey-milovidov).
إصدار ClickHouse v20.4.5.36-stable 2020-06-10
إصلاحات الأخطاء
- إصلاح الخطأ
Data compressed with different methodsالذي قد يحدث إذا كانmin_bytes_to_use_direct_ioمفعّلًا، وكان PREWHERE نشطًا، مع استخدام SAMPLE أو عدد كبير من الخيوط. يُصلح هذا #11539. #11540 (alexey-milovidov). - إصلاح إرجاع الحجم المضغوط لـ codecs. #11448 (Nikolai Kochetov).
- إصلاح تعطل الخادم عندما يحتوي عمود على compression codec ذي وسيطات غير حرفية. يُصلح هذا #11365. #11431 (alesapin).
- إصلاح pointInPolygon عند استخدام nan كنقطة. يُصلح هذا #11375. #11421 (Alexey Ilyukhov).
- إصلاح احتمال قراءة ذاكرة غير مهيأة عند إيقاف MergeTree إذا لم يُنشأ الجدول بنجاح. #11420 (alexey-milovidov).
- إصلاح geohashesInBox عند تمرير وسيطات خارج نطاق خط العرض/خط الطول. #11403 (Vasily Nemkov).
- إصلاح الخطأ المحتمل
Pipeline stuckفي queries التي تستخدم الفرز الخارجي وlimit. يُصلح هذا #11359. #11366 (Nikolai Kochetov). - إزالة القفل الزائد أثناء إرسال parts في ReplicatedMergeTree. #11354 (alesapin).
- إصلاح دعم
\G(الإخراج العمودي) في clickhouse-client في وضع multiline. يُغلق هذا #9933. #11350 (alexey-milovidov). - إصلاح segfault محتمل عند استخدام قاعدة البيانات
Lazy. #11348 (alexey-milovidov). - إصلاح التعطل في
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - أصبحت عمليات الدمج تتوقف الآن قبل تغيير metadata في استعلامات
ALTER. #11335 (alesapin). - إعادة الكتابة إلى
MATERIALIZED VIEWمع الإعدادparallel_view_processing = 1إلى العمل بشكل متوازٍ. يُصلح هذا #10241. #11330 (Nikolai Kochetov). - إصلاح visitParamExtractRaw عندما يحتوي JSON المستخرج على سلاسل نصية فيها { أو [ غير متوازنين. #11318 (Ewout).
- إصلاح race condition نادرة جدًا في ThreadPool. #11314 (alexey-milovidov).
- إصلاح data race غير مؤثرة في clickhouse-copier. اكتُشفت بواسطة integration tests. #11313 (alexey-milovidov).
- إصلاح احتمال استخدام ذاكرة غير مهيّأة أثناء التحويل. مثال:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - إصلاح مشكلة تمنع تحليل الفهرس من العمل إذا كان الجدول يحتوي على عمود Array في المفتاح الأساسي، وكان الاستعلام يصفّي حسب هذا العمود باستخدام الدالتين
emptyأوnotEmpty. يُصلح هذا #11286. #11303 (alexey-milovidov). - إصلاح خطأ قد يؤدي إلى تقدير غير صحيح لسرعة الاستعلام، وقد يتسبب في عدم عمل حد
min_execution_speedأو عمله بشكل غير صحيح إذا كان الاستعلام مقيّد المعدل بإعداداتmax_network_bandwidthأوmax_execution_speedأوpriority. كما تم تغيير القيمة الافتراضية لـtimeout_before_checking_execution_speedإلى قيمة غير صفرية، لأنه بخلاف ذلك لن يكون للإعدادينmin_execution_speedوmax_execution_speedأي تأثير. يُصلح هذا #11297. ويُصلح أيضًا #5732. ويُصلح أيضًا #6228. تحسين في سهولة الاستخدام: تجنّب دمج رسالة الاستثناء مع شريط التقدّم فيclickhouse-client. #11296 (alexey-milovidov). - إصلاح انهيار يحدث عند استدعاء SET DEFAULT ROLE بمعاملات غير صحيحة. يُصلح هذا #10586. #11278 (Vitaly Baranov).
- إصلاح انهيار أثناء قراءة بيانات غير صالحة بتنسيق Protobuf. يُصلح هذا #5957، ويُصلح #11203. #11258 (Vitaly Baranov).
- إصلاح خطأ كان يؤدي إلى أن يعيد cache-dictionary القيمة الافتراضية بدلًا من القيمة العادية (عندما تكون جميع المفاتيح الموجودة منتهية الصلاحية). يؤثر هذا فقط على الحقول النصية. #11233 (Nikita Mikhaylov).
- إصلاح الخطأ
Block structure mismatch in QueryPipelineأثناء القراءة منVIEWعند وجود ثوابت في الاستعلام الداخلي. يُصلح هذا #11181. #11205 (Nikolai Kochetov). - إصلاح استثناء محتمل
Invalid status for associated output. #11200 (Nikolai Kochetov). - إصلاح خطأ محتمل
Cannot capture columnفي الدوال عالية الرتبة عند وجود معامل مُلتقط من النوعArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - إصلاح globbing في S3، والذي كان قد يفشل عند وجود أكثر من 1000 مفتاح ومع بعض أنظمة backend. #11179 (Vladimir Chebotarev).
- إذا كان فهرس تخطي البيانات يعتمد على أعمدة ستتغير أثناء الدمج في الخلفية (في SummingMergeTree وAggregatingMergeTree وكذلك في TTL GROUP BY)، فكان يُحتسب بشكل غير صحيح. وقد أُصلحت هذه المشكلة بنقل حساب الفهرس إلى ما بعد الدمج، بحيث يُحتسب على البيانات المدمجة. #11162 (Azat Khuzhin).
- إصلاح مشكلة في أداء Kafka مرتبطة بإعادة الجدولة استنادًا إلى الحدود، والتي كانت تُطبَّق دائمًا. #11149 (filimonov).
- إصلاح التجمّد الذي كان يحدث أحيانًا أثناء تنفيذ DROP على جدول بمحرك engine=Kafka (أو أثناء إعادة تشغيل الخادم). #11145 (filimonov).
- إصلاح الحجز المفرط لخيوط التنفيذ للاستعلامات البسيطة (تحسين لتقليل عدد خيوط التنفيذ، وكان معطلًا جزئيًا بعد التغييرات في pipeline). #11114 (Azat Khuzhin).
- إصلاح تحسين predicates للاستعلامات الموزعة (
enable_optimize_predicate_expression=1) في الاستعلامات التي تحتوي على قسمHAVING(أي عندما يكون التصفية على الخادم البادئ مطلوبة)، وذلك بالحفاظ على ترتيب التعبيرات (وهذا يكفي للإصلاح)، وكذلك بإجبار المجمّع على استخدام أسماء الأعمدة بدلًا من الفهارس. إصلاحات: #10613, #11413. #10621 (Azat Khuzhin).
تحسينات في البناء/الاختبار/التغليف
إصدار ClickHouse v20.4.4.18-stable 2020-05-26
إصدار ClickHouse v20.4.3.16-stable 2020-05-23
إصلاحات الأخطاء
- أُزيل التسجيل من مهمة إنهاء الـ mutation إذا لم يجرِ إنهاء أي شيء. #11109 (alesapin).
- أُصلِح تسرّب للذاكرة في registerDiskS3. #11074 (Pavel Kovalenko).
- أُصلِح احتمال فقدان بيانات أثناء إنهاء جدول بمحرك Kafka. #11048 (filimonov).
- أُصلِحت أخطاء في تحليل الوسائط في
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - أُصلِح خطأ محتمل نادر جدًا من نوع use-after-free في
MergeTreeإذا لم يُنشأ الجدول بنجاح. #10986, #10970 (alexey-milovidov). - أُصلِحت معالجة البيانات الوصفية (المسار النسبي عند rename) والبيانات (المسار النسبي لـ symlink) في قاعدة البيانات Atomic. #10980 (Azat Khuzhin).
- أُصلِح تعطل الخادم عند تنفيذ استعلامَي
ALTERوDROP DATABASEبشكل متزامن مع محرك قاعدة البياناتAtomic. #10968 (tavplubix). - أُصلِح الحجم غير الصحيح للبيانات الخام في الدالة
getRawData(). #10964 (Igr). - أُصلِح عدم التوافق في التجميع على مستويين بين الإصدار 20.1 والإصدارات الأقدم. يحدث هذا التعارض عند استخدام إصدارات مختلفة من ClickHouse على العقدة المبادِرة والعقد البعيدة، وعندما يكون حجم نتيجة GROUP BY كبيرًا ويُنفَّذ التجميع باستخدام حقل String واحد. ويؤدي ذلك إلى ظهور عدة صفوف غير مدمجة لمفتاح واحد في النتيجة. #10952 (alexey-milovidov).
- أُصلِح إرسال الملفات المكتوبة جزئيًا بواسطة
DistributedBlockOutputStream. #10940 (Azat Khuzhin). - أُصلِح تعطل في
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - أُصلِح التوقف الذي كان يحدث أحيانًا أثناء تنفيذ
DROPلمحرك الجداولKafka(أو أثناء إعادة تشغيل الخادم). #10910 (filimonov). - أُصلِحت مشكلة تعذّر تنفيذ عدة عمليات
ALTER RENAMEمثلa TO b, c TO a. #10895 (alesapin). - أُصلِح احتمال حدوث حالة تسابق عند الحصول على النتيجة من حالة دالة تجميع من أكثر من thread واحد للعمود نفسه. والطريقة الوحيدة لحدوث ذلك هي استخدام الدالة
finalizeAggregationأثناء القراءة من جدول بمحركMemoryيخزّن حالةAggregateFunctionللدالةquantile*. #10890 (Nikolai Kochetov). - أُصلِح التوافق مع الإصدارات السابقة لـ tuples في الجداول Distributed. #10889 (Anton Popov).
- أُصلِح خطأ
SIGSEGVفيStringHashTableإذا لم يكن هذا المفتاح موجودًا. #10870 (Azat Khuzhin). - تم إصلاح حالات تعليق
WATCHبعد حذف جدولLiveViewمن قاعدة بيانات تستخدم المحركAtomic. #10859 (tavplubix). - تم إصلاح خلل في
ReplicatedMergeTreeقد يؤدي إلى تعليق بعض عملياتALTERعلى استعلامOPTIMIZEأثناء انتظار إحدى النسخ المتماثلة بعد أن تصبح غير نشطة. #10849 (tavplubix). - أصبحت القيود تُحدَّث الآن إذا أُعيدت تسمية العمود المشارك في تعبير
CONSTRAINT. يعالج هذا #10844. #10847 (alesapin). - تم إصلاح احتمال قراءة ذاكرة غير مهيأة في قاموس من نوع cache. #10834 (alexey-milovidov).
- تم إصلاح ترتيب الأعمدة بعد
Block::sortColumns(). #10826 (Azat Khuzhin). - تم إصلاح المشكلة في جسر
ODBCعند عدم طلب وضع علامات اقتباس حول المعرّفات. يعالج هذا #7984. #10821 (alexey-milovidov). - تم إصلاح تقارير
UBSanوMSanفيDateLUT. #10798 (alexey-milovidov). - تم إصلاح تحويل نوع غير صحيح في شروط المفتاح. يعالج هذا #6287. #10791 (Andrew Onyshchuk).
- تم إصلاح سلوك
parallel_view_processing. وأصبح من المضمون الآن إكمال جميع عمليات الإدراج فيMATERIALIZED VIEWبلا استثناء حتى إذا حدث استثناء. يعالج هذا #10241. #10757 (Nikolai Kochetov). - تم إصلاح المعدِّلين
-OrNullو-OrDefaultعند دمجهما مع-State. #10741 (hcz). - تم إصلاح احتمال تجاوز سعة buffer في الدالة
h3EdgeAngle. #10711 (alexey-milovidov). - تم إصلاح خلل يؤدي إلى حظر عمليات
ALTERالمتزامنة عندما يحتوي الجدول على عدد كبير من الأجزاء. #10659 (alesapin). - تم إصلاح إلغاء مرجعية
nullptrفيStorageBufferإذا أُغلق الخادم قبل بدء تشغيل الجدول. #10641 (alexey-milovidov). - تم إصلاح
optimize_skip_unused_shardsمعLowCardinality. #10611 (Azat Khuzhin). - تم إصلاح التعامل مع متغير الشرط الخاص بعمليات mutations المتزامنة. ففي بعض الحالات، كان من الممكن فقدان الإشارات المرسلة إلى متغير الشرط هذا. #10588 (Vladimir Chebotarev).
- تم إصلاح احتمال حدوث crash عند استدعاء
createDictionary()قبل اكتمالloadStoredObject(). #10587 (Vitaly Baranov). - تم إصلاح
SELECTللعمودALIASعندما يكون نوع التعبير الافتراضي مختلفًا عن نوع العمود. #10563 (Azat Khuzhin). - أُضيف دعم المقارنة بين قيم DateTime64 وString. #10560 (Vasily Nemkov).
- تم تعطيل تحسين
GROUP BYلمفتاح التجزئة افتراضيًا (optimize_distributed_group_by_sharding_keyكان قد أُضيف ثم تُرك معطّلًا افتراضيًا بسبب تعقيدات تحليل مفتاح التجزئة، ومثال بسيط على ذلك وجودifفي مفتاح التجزئة)، كما أُصلح لحالةWITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - تم إصلاح #10263. #10486 (Azat Khuzhin).
- أُضيفت اختبارات لإعداد
max_rows_to_sort. #10268 (alexey-milovidov). - أُضيف التوافق مع الإصدارات السابقة عند إنشاء فهرس bloom filter. #10551. #10569 (Winter Zhang).
إصدار ClickHouse v20.4.2.9، 2020-05-12
تغيير غير متوافق مع الإصدارات السابقة
- تستخدم جداول النظام (مثل system.query_log و system.trace_log و system.metric_log) تنسيق أجزاء البيانات المدمج للأجزاء التي يقل حجمها عن 10 MiB. تنسيق أجزاء البيانات المدمج مدعوم منذ الإصدار 20.3. إذا كنت ستُجري downgrade إلى إصدار أقدم من 20.3، فيجب عليك حذف بيانات جداول سجلات النظام يدويًا من
/var/lib/clickhouse/data/system/. - عندما تتضمن مقارنة السلاسل النصية FixedString وكانت الوسيطات المُقارنة بأحجام مختلفة، تُجرى المقارنة كما لو كانت السلسلة الأصغر مُبطّنة حتى طول السلسلة الأكبر. وهذا مخصص للتوافق مع SQL إذا افترضنا أن FixedString data type تقابل SQL CHAR. يحلّ هذا #9272. #10363 (alexey-milovidov)
- أصبح SHOW CREATE TABLE متعدد الأسطر. وهو الآن أكثر قابلية للقراءة وأقرب إلى MySQL. #10049 (Azat Khuzhin)
- تمت إضافة الإعداد
validate_polygonsالذي يُستخدم في الدالةpointInPolygonوهو مفعّل افتراضيًا. #9857 (alexey-milovidov)
ميزة جديدة
- إضافة دعم الاتصال المؤمَّن من ClickHouse إلى Zookeeper #10184 (Konstantin Lebedev)
- دعم معالجات HTTP المخصّصة. راجع #5436 للاطلاع على الوصف. #7572 (Winter Zhang)
- إضافة تنسيق الإدخال/الإخراج MessagePack. #9889 (Kruglov Pavel)
- إضافة تنسيق الإدخال Regexp. #9196 (Kruglov Pavel)
- إضافة تنسيق الإخراج
Markdownلتضمين الجداول في مستندات Markdown. #10317 (Kruglov Pavel) - إضافة دعم قسم الإعدادات المخصّصة في القواميس. كما يُصلح المشكلة #2829. #10137 (Artem Streltsov)
- إضافة دعم الإعدادات المخصّصة في استعلامات DDL لـ
CREATE DICTIONARY#10465 (Artem Streltsov) - إضافة أداة بسيطة لتحليل أداء الذاكرة على مستوى الخادم، تجمع سياقات التخصيص عندما يصبح استخدام ذاكرة الخادم أعلى من عتبة التخصيص التالية. #10444 (alexey-milovidov)
- إضافة الإعداد
always_fetch_merged_partالذي يقيّد الـ replica من دمج الأجزاء بنفسه، ويجعله يفضّل دائمًا تنزيلها من replicas أخرى. #10379 (alesapin) - إضافة الدالة
JSONExtractKeysAndValuesRawالتي تستخرج البيانات الخام من كائنات JSON #10378 (hcz) - إضافة استخدام الذاكرة من نظام التشغيل إلى
system.asynchronous_metrics. #10361 (alexey-milovidov) - إضافة صيغ عامة للدالتين
leastوgreatest. وهما الآن تعملان مع أي عدد من الوسائط ومن أي أنواع. يُصلح هذا #4767 #10318 (alexey-milovidov) - يتحكم ClickHouse الآن في مهلات مصادر القواميس من جهته. تمت إضافة إعدادين جديدين إلى إعدادات القاموس من نوع cache:
strict_max_lifetime_seconds، وتكون قيمتهmax_lifetimeافتراضيًا، وquery_wait_timeout_milliseconds، وتكون قيمته دقيقة واحدة افتراضيًا. كما أن الإعداد الأول مفيد أيضًا مع الإعدادallow_read_expired_keys(لمنع قراءة المفاتيح التي انتهت صلاحيتها منذ وقت طويل). #10337 (Nikita Mikhaylov) - إضافة log_queries_min_type لتصفية الإدخالات التي ستُكتب في query_log #10053 (Azat Khuzhin)
- إضافة الدالة
isConstant. تتحقق هذه الدالة مما إذا كانت وسيطتها تعبيرًا ثابتًا وتُرجع 1 أو 0. وهي مخصّصة لأغراض التطوير وتصحيح الأخطاء والعرض التوضيحي. #10198 (alexey-milovidov) - إضافة joinGetOrNull لإرجاع NULL عندما يكون المفتاح مفقودًا بدلًا من إرجاع القيمة الافتراضية. #10094 (Amos Bird)
- اعتبار
NULLمساويًا لـNULLفي المعاملINإذا كان الخيارtransform_null_inمفعّلًا. #10085 (achimbab) - إضافة
ALTER TABLE ... RENAME COLUMNإلى عائلة محركات الجداول MergeTree. #9948 (alesapin) - دعم تنفيذ
INSERT SELECTالموزع بالتوازي. #9759 (vxider) - إضافة إمكانية إجراء query على Distributed فوق Distributed (من دون
distributed_group_by_no_merge) … #9923 (Azat Khuzhin) - إضافة الدالة
arrayReduceInRangesالتي تُجمِّع عناصر المصفوفة ضمن نطاقات محددة. #9598 (hcz) - إضافة حالة Dictionary إلى مُصدِّر Prometheus. #9622 (Guillaume Tassery)
- إضافة الدالة
arrayAUC#8698 (taiyang-li) - دعم العبارة
DROP VIEWلتحسين التوافق مع TPC-H. #9831 (Amos Bird) - إضافة الخيار ‘strict_order’ إلى windowFunnel() #9773 (achimbab)
- دعم معاملي SQL
DATEوTIMESTAMP، مثلSELECT date '2001-01-01'#9691 (Artem Zuikov)
ميزة تجريبية
- تمت إضافة محرك قاعدة البيانات التجريبي Atomic. وهو يدعم استعلامي
DROPوRENAME TABLEدون حظر، وكذلك الاستعلام الذريEXCHANGE TABLES t1 AND t2#7512 (tavplubix) - دعم أولي لـ ReplicatedMergeTree عبر S3 (مع أنه لا يعمل على النحو الأمثل) #10126 (Pavel Kovalenko)
إصلاحات الأخطاء
- تم إصلاح النتائج scalar غير الصحيحة داخل الاستعلام الداخلي لـ
MATERIALIZED VIEWإذا كان هذا الاستعلام يحتوي على table تابع #10603 (Nikolai Kochetov) - تم إصلاح خلل كان يؤدي إلى تعلّق طلبات HTTP عند إغلاق client للاتصال عندما تكون
readonly=2وcancel_http_readonly_queries_on_client_close=1. #10684 (tavplubix) - تم إصلاح segfault في StorageBuffer عند حدوث exception أثناء بدء تشغيل server. يعالج #10550 #10609 (tavplubix)
- أصبح الاستعلام
SYSTEM DROP DNS CACHEالآن يحذف أيضًا ذاكرات التخزين المؤقت المستخدمة للتحقق مما إذا كان يُسمح للمستخدم بالاتصال من بعض عناوين IP #10608 (tavplubix) - تم إصلاح استخدام عدة عوامل تشغيل
INمع نفس المجموعة في استعلام واحد. يعالج #10539 #10686 (Anton Popov) - تم إصلاح crash في
generateRandomمع الأنواع المتداخلة. يعالج #10583. #10734 (Nikolai Kochetov) - تم إصلاح تلف البيانات في Key column من النوع
LowCardinality(FixedString)فيSummingMergeTree، والذي كان من الممكن أن يحدث بعد merge. يعالج #10489. #10721 (Nikolai Kochetov) - تم إصلاح منطق الإعداد aggregation_memory_efficient_merge_threads. #10667 (palasonic1)
- تم إصلاح اختفاء totals. إذ كان يمكن تصفية totals إذا كان الاستعلام يحتوي على
JOINأو subquery مع شرطWHEREخارجي. يعالج #10674 #10698 (Nikolai Kochetov) - تم إصلاح غياب التنفيذ المتوازي للاستعلامات البعيدة عند تمكين
distributed_aggregation_memory_efficient. يعالج #10655 #10664 (Nikolai Kochetov) - تم إصلاح احتمال ظهور عدد غير صحيح من rows في الاستعلامات التي تستخدم
LIMIT. يعالج #10566، #10709 #10660 (Nikolai Kochetov) - تم إصلاح تلف index، الذي قد يحدث في بعض الحالات بعد merging compact parts إلى compact part آخر. #10531 (Anton Popov)
- تم إصلاح الحالة التي تُكمل فيها mutation جميع parts، لكنها تبقى معلّقة عند
is_done=0. #10526 (alesapin) - إصلاح تجاوز السعة عند بداية حقبة Unix للمناطق الزمنية ذات الإزاحة الكسرية عن UTC. يُصلح #9335. #10513 (alexey-milovidov)
- تحسين التشخيص لتنسيقات الإدخال. يُصلح #10204 #10418 (tavplubix)
- إصلاح تجاوز السعة العددي في
simpleLinearRegression()مع الأعداد الصحيحة الكبيرة #10474 (hcz) - إصلاح استخدام الذاكرة بعد تحريرها عند إيقاف Distributed، مع تجنب انتظار إرسال جميع الدفعات #10491 (Azat Khuzhin)
- إضافة شهادات CA إلى صورة Docker الخاصة بـ clickhouse-server #10476 (filimonov)
- إصلاح حلقة لا نهائية نادرة كان يمكن أن تحدث عند استخدام الدالة
addressToLineأو أعمدة AggregateFunctionState. #10466 (Alexander Kuzmenkov) - التعامل مع خطأ zookeeper “no node error” أثناء الاستعلام الموزع #10050 (Daniel Chen)
- إصلاح خطأ يحدث عندما يتعذر على الخادم إرفاق جدول بعد تعديل القيمة الافتراضية للعمود. #10441 (alesapin)
- إجراء CAST ضمني لنوع التعبير الافتراضي إلى نوع العمود في أعمدة ALIAS #10563 (Azat Khuzhin)
- عدم إزالة دليل البيانات الوصفية إذا فشل
ATTACH DATABASE#10442 (Winter Zhang) - تجنب الاعتماد على system tzdata. إصلاح تحميل المنطقة الزمنية
Africa/Casablancaعلى CentOS 8. يُصلح #10211 #10425 (alexey-milovidov) - إصلاح بعض المشكلات عند إدراج البيانات باستخدام quorum ثم حذفها لاحقًا (DROP PARTITION وTTL وغير ذلك). كان ذلك يؤدي إلى تعليق عمليات INSERT أو ظهور استثناءات إيجابية كاذبة في عمليات SELECT. يُصلح #9946 #10188 (Nikita Mikhaylov)
- التحقق من عدد الوسيطات وأنواعها عند إنشاء فهرس BloomFilter #9623 #10431 (Winter Zhang)
- تفضيل
fallback_to_stale_replicasعلىskip_unavailable_shards، وإلا فعند تحديد كلا الإعدادين وعدم وجود replicas مُحدَّثة سيفشل الاستعلام (رقعة من @alex-zaitsev ) #10422 (Azat Khuzhin) - إصلاح مشكلة قد تؤدي إلى أن يُرجع استعلام يحتوي على ARRAY JOIN وORDER BY وLIMIT نتيجة غير مكتملة. يُصلح #10226. #10427 (Vadim Plakhtinskiy)
- أضف اسم قاعدة البيانات إلى اسم القاموس بعد
DETACH/ATTACH. يُصلح جدولsystem.dictionariesواستعلامSYSTEM RELOAD#10415 (Azat Khuzhin) - أصلِح احتمال ظهور نتيجة غير صحيحة للقيم القصوى في خط أنابيب المعالجات. #10131 (Nikolai Kochetov)
- أصلِح احتمال حدوث
segfaultعند تمكين الإعدادdistributed_group_by_no_merge(أُضيف في 20.3.7.46 عبر #10131). #10399 (Nikolai Kochetov) - أصلِح التسطيح الخاطئ لأنواع البيانات
Array(Tuple(...)). يُصلح #10259 #10390 (alexey-milovidov) - أصلِح أسماء الأعمدة للثوابت داخل
JOINالتي قد تتعارض مع أسماء الثوابت خارجJOIN#9950 (Alexander Kuzmenkov) - أصلِح ترتيب الأعمدة بعد
Block::sortColumns()#10826 (Azat Khuzhin) - أصلِح احتمال ظهور الخطأ
Pipeline stuckفيConcatProcessor، والذي قد يحدث في استعلام عن بُعد. #10381 (Nikolai Kochetov) - لا تُجرِ حجوزات على القرص لعمليات التجميع. يُصلح #9241 #10375 (Azat Khuzhin)
- أصلِح السلوك الخاطئ لدوال التاريخ والوقت للمناطق الزمنية التي تغيّرت بين إزاحات موجبة وسالبة عن UTC (مثل Pacific/Kiritimati). يُصلح #7202 #10369 (alexey-milovidov)
- تجنّب الحلقة اللانهائية في الدالة
dictIsIn. يُصلح #515 #10365 (alexey-milovidov) - عطّل تحسين
sharding_keyفيGROUP BYافتراضيًا، وأصلِحه معWITH ROLLUP/CUBE/TOTALS#10516 (Azat Khuzhin) - تحقّق من رمز الخطأ عند فحص الأجزاء، ولا تضع علامة على الجزء على أنه تالف إذا كان الخطأ من نوع “ذاكرة غير كافية”. يُصلح #6269 #10364 (alexey-milovidov)
- اعرض معلومات عن القواميس غير المحمّلة في جداول النظام. #10234 (Vitaly Baranov)
- أصلِح إلغاء مرجعية
nullptrفيStorageBufferإذا تم إيقاف تشغيل الخادم قبل بدء تشغيل الجدول. #10641 (alexey-milovidov) - أُصلحت حالة التسابق بين
DROPوOPTIMIZEفيReplicatedMergeTree. كانDROPقد يترك بعض المخلفات في مسار الـ replica داخل ZooKeeper إذا وُجد استعلامOPTIMIZEمتزامن. #10312 (tavplubix) - إصلاح الخطأ ‘Logical error: CROSS JOIN has expressions’ في الاستعلامات التي تجمع بين الفواصل وعمليات join المسماة. يُصلح #9910 #10311 (Artem Zuikov)
- إصلاح الاستعلامات التي تستخدم
max_bytes_before_external_group_by. #10302 (Artem Zuikov) - إصلاح مشكلة تقييد الحد الأقصى لعمق الاستدعاء التعاودي في المحلل اللغوي في بعض الحالات. يُصلح هذا #10283. قد يؤدي هذا الإصلاح إلى عدم توافق طفيف: فقد ترفض الاستعلامات الطويلة والمتداخلة عبر clickhouse-client العمل، وعليك ضبط الإعدادين
max_query_sizeوmax_parser_depthوفقًا لذلك. #10295 (alexey-milovidov) - السماح باستخدام
count(*)مع عدة عمليات JOIN. يُصلح #9853 #10291 (Artem Zuikov) - إصلاح الخطأ
Pipeline stuckمعmax_rows_to_group_byوgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov) - إصلاح الخطأ ‘Cannot add column’ أثناء إنشاء قاموس
range_hashedباستخدام استعلام DDL. يُصلح #10093. #10235 (alesapin) - إصلاح استثناء نادر محتمل
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov) - إصلاح خلل كان يجعل ClickHouse يطرح رسالة الخطأ “Unknown function lambda.” عندما يحاول المستخدم تشغيل ALTER UPDATE/DELETE على الجداول التي تستخدم ENGINE = Replicated*. وأصبح التحقق من الدوال غير الحتمية يتعامل الآن مع تعبيرات lambda بشكل صحيح. #10237 (Alexander Kazakov)
- إصلاح عطل نادر نسبيًا من نوع segfault في StorageSystemTables يحدث عند تشغيل SELECT … FROM system.tables على قاعدة بيانات تستخدم محرك Lazy. #10209 (Alexander Kazakov)
- إصلاح احتمال استمرار تنفيذ الاستعلام بلا نهاية رغم أنه كان ينبغي أن يتوقف عند LIMIT، وذلك أثناء القراءة من مصدر لا نهائي مثل
system.numbersأوsystem.zeros. #10206 (Nikolai Kochetov) - إصلاح الدالة “generateRandom” للنوع Date. يُصلح هذا #9973. كما أُصلحت حالة طرفية عند إدراج تواريخ بالسنة 2106 في جداول MergeTree ذات التقسيم بالنمط القديم، بينما تُسمّى الأقسام بالسنة 1970. #10218 (alexey-milovidov)
- تحويل الأنواع إذا كان تعريف جدول View لا يتطابق مع استعلام SELECT. يُصلح هذا #10180 و #10022 #10217 (alexey-milovidov)
- إصلاح
parseDateTimeBestEffortللسلاسل النصية بتنسيق RFC-2822 عندما يكون يوم الأسبوع الثلاثاء أو الخميس. يُصلح هذا #10082 #10214 (alexey-milovidov) - إصلاح أسماء الأعمدة الخاصة بالثوابت داخل JOIN التي قد تتعارض مع أسماء الثوابت خارج JOIN. #10207 (alexey-milovidov)
- إصلاح تحسين move-to-prewhere عند وجود دوال arrayJoin (في حالات معيّنة). يُصلح هذا #10092 #10195 (alexey-milovidov)
- إصلاح مشكلة ظهور الفاصل في SCRAMBLE مع mysql-connector-java الأصلي (JDBC) #10140 (BohuTANG)
- إصلاح استخدام قاعدة البيانات الحالية عند التحقق من صلاحيات الوصول إذا لم تُحدَّد قاعدة البيانات. #10192 (Vitaly Baranov)
- إصلاح ALTER للجداول ذات الأجزاء المدمجة. #10130 (Anton Popov)
- إضافة إمكانية تخفيف القيد المفروض على استخدام الدوال غير الحتمية في mutations باستخدام الإعداد
allow_nondeterministic_mutations. #10186 (filimonov) - إصلاح استدعاء
DROP TABLEللقاموس. #10165 (Azat Khuzhin) - تحويل blocks إذا لم تتطابق البنية عند تنفيذ
INSERTفي جدول Distributed #10135 (Azat Khuzhin) - سُجِّل عدد rows بشكل غير صحيح (كمجموع عبر جميع الأجزاء) عند تقسيم block المُدرَج إلى أجزاء وفقًا لـ partition key. #10138 (alexey-milovidov)
- إضافة بعض عمليات التحقق من الوسيطات ودعم وسيطات Identifier لمحرك قاعدة بيانات MySQL #10077 (Winter Zhang)
- إصلاح التحقق غير الصحيح من
index_granularity_bytesأثناء إنشاء replica جديدة. يُصلح #10098. #10121 (alesapin) - إصلاح خلل في استعلام
CHECK TABLEعندما يحتوي الجدول على فهارس تخطٍّ. #10068 (alesapin) - إصلاح Distributed-over-Distributed عند وجود shard واحد فقط في جدول متداخل #9997 (Azat Khuzhin)
- إصلاح احتمال فقدان rows في queries التي تحتوي على
JOINوUNION ALL. يُصلح #9826، #10113. … #10099 (Nikolai Kochetov) - إصلاح خلل في القاموس عند استخدام خادم ClickHouse محلي كمصدر. وقد يؤدي ذلك إلى تلف الذاكرة إذا لم تكن الأنواع في القاموس والمصدر متوافقة. #10071 (alesapin)
- تم إصلاح بدء تشغيل الجداول المكررة عند التحديث من إصدار قديم من ClickHouse حيث لا تكون العقدة
/table/replicas/replica_name/metadataموجودة. يُصلح #10037. #10095 (alesapin) - تم إصلاح الخطأ
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. كان ذلك يحدث عندما يكون الإعدادdistributed_aggregation_memory_efficientمفعّلًا، ويقرأ الاستعلام الموزّع بيانات مُجمّعة بمزيج من التجميع أحادي المستوى والتجميع ثنائي المستوى من أجزاء مختلفة. #10063 (Nikolai Kochetov) - تم إصلاح حالة جمود عند فشل attach لقاعدة بيانات تحتوي على materialized view أثناء بدء التشغيل #10054 (Azat Khuzhin)
- تم إصلاح خطأ segmentation fault كان يمكن أن يحدث في GROUP BY على مفاتيح نصية تحتوي على بايتات صفرية لاحقة (#8636, #8925). … #10025 (Alexander Kuzmenkov)
- تم إصلاح النتائج الخاطئة للاستعلامات الموزعة عندما كان الاسم المستعار قد يتجاوز الاسم المؤهل للعمود. يُصلح #9672 #9714 #9972 (Artem Zuikov)
- تم إصلاح احتمال حدوث جمود في
SYSTEM RESTART REPLICAS#9955 (tavplubix) - تم إصلاح عدد الخيوط المستخدمة لتنفيذ الاستعلامات البعيدة (تراجع في الأداء منذ 20.3). كان ذلك يحدث عندما يُنفَّذ استعلام من جدول
Distributedبالتزامن على الأجزاء المحلية والبعيدة. يُصلح #9965 #9971 (Nikolai Kochetov) - تم إصلاح منطق
DeleteOnDestroyفيATTACH PART، والذي كان يمكن أن يؤدي إلى إزالة الجزء المُرفق تلقائيًا، مع إضافة بعض الاختبارات #9410 (Vladimir Chebotarev) - تم إصلاح خلل كان يؤدي إلى تجمّد استعلامات DDL
ON CLUSTERعند بدء تشغيل الخادم. #9927 (Gagan Arneja) - تم إصلاح خلل لم تكن بسببه الجداول المطلوبة تُسترجع في إحدى مراحل معالجة الاستعلامات لبعض قواعد البيانات. يُصلح #9699. #9949 (achulkov2)
- تم إصلاح الخطأ ‘Not found column in block’ عند ظهور
JOINمعTOTALS. يُصلح #9839 #9939 (Artem Zuikov) - تم إصلاح تحليل عدة مضيفين محددين في الأمر CREATE USER #9924 (Vitaly Baranov)
- تم إصلاح
TRUNCATEلمحرك الجداول Join (#9917). #9920 (Amos Bird) - إصلاح حالة تسابق بين
dropوoptimizeفيReplicatedMergeTree. #9901 (alesapin) - إصلاح
DISTINCTفي Distributed عند تعيينoptimize_skip_unused_shards. #9808 (Azat Khuzhin) - إصلاح الخطأ “scalar does not exist” في عمليات ALTER (#9878). … #9904 (Amos Bird)
- إصلاح الخطأ المتعلق بالأسماء المؤهلة في
distributed_product_mode=\'local\'. يُصلح #4756 #9891 (Artem Zuikov) - بالنسبة إلى استعلامات INSERT، أصبحت الأجزاء الآن تُقيِّد الإعدادات القادمة من initiator وفقًا للقيود الخاصة بها بدلًا من طرح استثناء. يتيح هذا الإصلاح إرسال استعلامات INSERT إلى shard لديه قيود مختلفة. كما يُحسِّن هذا التغيير الإصلاح الوارد في #9447. #9852 (Vitaly Baranov)
- إضافة بعض retries عند ترحيل offsets إلى Kafka broker، إذ قد يرفض commit إذا لم تتوفر replicas كافية للـ topic
__consumer_offsetsخلالoffsets.commit.timeout.ms#9884 (filimonov) - إصلاح سلوك Distributed engine عند استخدام virtual columns الخاصة بـ underlying table في
WHERE#9847 (Azat Khuzhin) - إصلاح بعض الحالات التي لم تُستخدم فيها timezone الخاصة بـ argument الخاص بالدالة بشكل صحيح. #9574 (Vasily Nemkov)
- إصلاح الخطأ ‘Different expressions with the same alias’ عندما يحتوي query على PREWHERE وWHERE في distributed table مع
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov) - إصلاح الاستهلاك المفرط للذاكرة في mutations للجداول ذات primary key المركب. يُصلح هذا #9850. #9860 (alesapin)
- إصلاح احتساب grants الخاصة بـ introspection functions من الإعداد
allow_introspection_functions. #9840 (Vitaly Baranov) - إصلاح max_distributed_connections (مع وبدون Processors) #9673 (Azat Khuzhin)
- إصلاح Exception المحتمل
Got 0 in totals chunk, expected 1على client. كان ذلك يحدث مع queries التي تحتوي علىJOINإذا كان الجدول المنضم من الجهة اليمنى لا يحتوي على أي rows. مثال:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. يُصلح #9777. … #9823 (Nikolai Kochetov) - إصلاح الخطأ ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ في حالة subqueries التي تحتوي على COMMA JOIN خارج قوائم الجداول (أي داخل WHERE). يُصلح #9782 #9830 (Artem Zuikov)
- إصلاح تعطل الخادم عند تعيين
optimize_skip_unused_shardsإذا تعذر تحويل تعبير المفتاح إلى نوع الحقل الخاص به #9804 (Azat Khuzhin) - إصلاح التعامل مع السلسلة الفارغة في
splitByString. #9767 (hcz) - إصلاح استعلام
ALTER TABLE DELETE COLUMNالمعطّل للأجزاء المدمجة. #9779 (alesapin) - إصلاح غياب
rows_before_limit_at_leastفي الاستعلامات عبر http (مع processors pipeline). يعالج هذا #9730 #9757 (Nikolai Kochetov) - إصلاح الاستهلاك المفرط للذاكرة في استعلامات
ALTER(mutations). يعالج هذا #9533 و#9670. #9754 (alesapin) - إصلاح خطأ محتمل دائم: “Cannot schedule a task”. #9154 (Azat Khuzhin)
- إصلاح خطأ في استخدام العلامات المائلة العكسية في عبارات DDL الخاصة بـ external dictionaries. يعالج هذا #9619. #9734 (alesapin)
- إصلاح حالة data race في
text_log. وهي لا ترتبط بأي خطأ فعلي. #9726 (alexey-milovidov) - إصلاح خطأ في النسخ المتماثل كان يمنع عمله إذا كان المستخدم قد نفّذ mutations على الإصدار السابق. يعالج هذا #9645. #9652 (alesapin)
- إصلاح أسماء الدوال الداخلية غير الصحيحة لـ
sumKahanوsumWithOverflow. وقد أدى ذلك إلى حدوث استثناء عند استخدام هذه الدوال في الاستعلامات البعيدة. #9636 (Azat Khuzhin) - إضافة الإعداد
use_compact_format_in_distributed_parts_namesالذي يتيح كتابة الملفات لاستعلاماتINSERTإلى جدولDistributedبتنسيق أكثر إحكامًا. يعالج هذا #9647. #9653 (alesapin) - إصلاح RIGHT و FULL JOIN مع LowCardinality في مفاتيح JOIN. #9610 (Artem Zuikov)
- إصلاح الاستثناءات المحتملة
Size of filter does not match size of columnوInvalid number of rows in ChunkفيMergeTreeRangeReader. وقد تظهر أثناء تنفيذPREWHEREفي بعض الحالات. #9612 (Anton Popov) - السماح بتنفيذ
ALTER ON CLUSTERعلى Distributed tables ذات النسخ المتماثل الداخلي. يعالج هذا #3268 #9617 (shinoi2) - إصلاح مشكلة عدم الاحتفاظ بالمنطقة الزمنية عند كتابة تعبير حسابي بسيط مثل
time + 1(على عكس تعبير مثلtime + INTERVAL 1 SECOND). يُعالج هذا #5743 #9323 (alexey-milovidov)
تحسين
- استخدم المنطقة الزمنية عند مقارنة DateTime بنص حرفي. يُصلح هذا #5206. #10515 (alexey-milovidov)
- اطبع معلومات تشخيصية مفصلة إذا تعذّر تحليل قيمة Decimal من تنسيق إدخال نصي. #10205 (alexey-milovidov)
- أضف مقاييس tasks/memory لمجمّعات جدولة distributed/buffer #10449 (Azat Khuzhin)
- اعرض النتيجة فور جاهزيتها لاستعلامات SELECT DISTINCT في clickhouse-local وواجهة HTTP. يُصلح هذا #8951 #9559 (alexey-milovidov)
- اسمح باستخدام استعلام
SAMPLE OFFSETبدلًا منcityHash64(PRIMARY KEY) % N == nللتقسيم فيclickhouse-copier. لاستخدام هذه الميزة، مرّر--experimental-use-sample-offset 1كوسيط في سطر الأوامر. #10414 (Nikita Mikhaylov) - اسمح بتحليل BOM في TSV إذا كان العمود الأول لا يمكن أن يحتوي على BOM في قيمته. يُصلح هذا #10301 #10424 (alexey-milovidov)
- أضف دعم insert للحقول المتداخلة في Avro #10354 (Andrew Onyshchuk)
- أصبح تعديل column مسموحًا به في وضع البيانات غير المعدِّل عند تحديد النوع نفسه. #10382 (Vladimir Chebotarev)
- تفعيل
distributed_group_by_no_mergeتلقائيًا مع GROUP BY على sharding key (إذا كانoptimize_skip_unused_shardsمضبوطًا) #10341 (Azat Khuzhin) - حسّن queries التي تحتوي على LIMIT/LIMIT BY/ORDER BY في Distributed مع GROUP BY على sharding_key #10373 (Azat Khuzhin)
- أُضيف الإعداد
max_server_memory_usageللحد من إجمالي memory usage على server. ويُحتسب المقياسMemoryTrackingالآن من دون انحراف. وأصبح الإعدادmax_memory_usage_for_all_queriesمتقادمًا ولم يعد يفعل شيئًا. يُغلق هذا #10293. #10362 (alexey-milovidov) - أضف خيار config باسم
system_tables_lazy_load. وإذا كان مضبوطًا على false، فسيتم تحميل system tables التي تحتوي على logs عند بدء تشغيل server. Alexander Burmak, Svyatoslav Tkhon Il Pak, #9642 #10359 (alexey-milovidov) - استخدم background thread pool (background_schedule_pool_size) لعمليات الإرسال الموزعة #10263 (Azat Khuzhin)
- استخدم background thread pool لعمليات flushes الخاصة بالمخزن المؤقت في الخلفية. #10315 (Azat Khuzhin)
- دعم حالة خاصة لإزالة الأجزاء المكتوبة بشكل غير مكتمل. يُصلح هذا #9940. #10221 (alexey-milovidov)
- استخدام isInjective() بدلًا من قائمة يدوية لهذه الدوال لتحسين GROUP BY. #10342 (Azat Khuzhin)
- تجنّب طباعة رسالة error في السجل إذا أرسل العميل حزمة RST فور الاتصال. وهذا سلوك معتاد لموازن IPVS مع keepalived وVRRP. يُصلح هذا #1851 #10274 (alexey-milovidov)
- السماح بتحليل
+infلأنواع الأعداد ذات الفاصلة العائمة. هذا يُغلق #1839 #10272 (alexey-milovidov) - تنفيذ table function
generateRandomلأنواع Nested. هذا يُغلق #9903 #10219 (alexey-milovidov) - توفير
max_allowed_packedفي واجهة التوافق مع MySQL، ما يساعد بعض العملاء على التواصل مع ClickHouse عبر protocol MySQL. #10199 (BohuTANG) - السماح بالقيم الحرفية مع GLOBAL IN (أي
SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin) - إصلاح مشكلات صغيرة متنوعة في interactive mode في clickhouse-client #10194 (alexey-milovidov)
- تجنّب تحميل Dictionaries دون داعٍ (system.tables, DROP/SHOW CREATE TABLE) #10164 (Azat Khuzhin)
- تحديث RWLock: إضافة parameter timeout إلى getLock() + إعادة العمل على التنفيذ ليصبح phase fair #10073 (Alexander Kazakov)
- تحسين التوافق مع mysql-connector-java(JDBC) الأصلي #10021 (BohuTANG)
- تُعد الدالة
toStringرتيبة ويمكن استخدامها في index analysis حتى عند تطبيقها في الحالات البديهية ذات argument من نوع String أو LowCardinality(String). #10110 (Amos Bird) - إضافة دعم clause
ON CLUSTERإلى الأوامر{CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTAوGRANT. #9811 (Vitaly Baranov) - دعم أسلوب الاستضافة الافتراضية لعناوين URI الخاصة بـ S3 #9998 (Pavel Kovalenko)
- يمكن الآن تحديد نوع layout للقواميس التي لا تحتوي على arguments من دون أقواس دائرية في استعلامات DDL الخاصة بالقواميس. يُصلح هذا #10057. #10064 (alesapin)
- إضافة إمكانية استخدام نطاقات أرقام ذات أصفار بادئة في filepath #9989 (Olga Khvostikova)
- تحسين استخدام الذاكرة في CROSS JOIN. #10029 (Artem Zuikov)
- محاولة الاتصال بجميع الأجزاء في cluster عند جلب structure للجدول البعيد إذا كان skip_unavailable_shards مضبوطًا. #7278 (nvartolomei)
- إضافة
total_rows/total_bytesإلى جدولsystem.tables. #9919 (Azat Khuzhin) - تستخدم log tables الخاصة بالنظام الآن parts متعددة الأشكال افتراضيًا. #9905 (Anton Popov)
- إضافة عمود type إلى system.settings/merge_tree_settings #9909 (Azat Khuzhin)
- التحقق من تعليمات CPU المتاحة في أقرب وقت ممكن عند بدء تشغيل server. #9888 (alexey-milovidov)
- إزالة مرحلة
ORDER BYمن mutations لأن القراءة تتم من part واحدة مرتبة ضمن thread واحدة. كما أُضيف تحقق من أن rows في mutation مرتبة حسب sorting key وأن هذا الترتيب لم يُنتهك. #9886 (alesapin) - تنفيذ المعامل LIKE لـ FixedString في الطرف الأيسر. وهذا مطلوب لتحسين دعم الاستعلامات من TPC-DS. #9890 (alexey-milovidov)
- إضافة
force_optimize_skip_unused_shards_no_nestedالذي يعطّلforce_optimize_skip_unused_shardsللجدول Distributed المتداخل #9812 (Azat Khuzhin) - يُحسب الآن حجم columns مرة واحدة فقط لأجزاء بيانات MergeTree. #9827 (alesapin)
- تقييم expressions الثابتة لأجل
optimize_skip_unused_shards(أيSELECT * FROM foo_dist WHERE key=xxHash32(0)) #8846 (Azat Khuzhin) - أُزيل التحقق من استخدام عمود
DateأوDateTimeفي تعبيرات TTL. #9967 (Vladimir Chebotarev) - تنفيذ أمثل للروابط الصلبة في DiskS3. #9760 (Pavel Kovalenko)
- إذا ضُبط
set multiple_joins_rewriter_version = 2، فسيُفعِّل الإصدار الثاني من عمليات إعادة كتابة JOIN المتعددة، والذي يُبقي column names غير المتصادمة كما هي. وهو يدعم JOINs متعددة معUSINGويسمح بـselect *لعمليات JOIN التي تتضمن subqueries. #9739 (Artem Zuikov) - تنفيذ alter “غير الحاجب” لـ StorageMergeTree #9606 (alesapin)
- إضافة دعم كامل لـ MergeTree من أجل DiskS3 #9646 (Pavel Kovalenko)
- توسيع
splitByStringلدعم السلاسل الفارغة كفواصل. #9742 (hcz) - إضافة عمود
timestamp_nsإلىsystem.trace_log. يحتوي على طابع زمني فائق الدقة لحدث التتبّع، ويتيح إنشاء مخططات زمنية لملفات تعريف سلاسل التنفيذ (“flame charts”). #9696 (Alexander Kuzmenkov) - عند تفعيل الإعداد
send_logs_level، يُتجنَّب تداخل رسائل السجل مع تقدّم الاستعلام. #9634 (Azat Khuzhin) - إضافة دعم
MATERIALIZE TTL IN PARTITION. #9581 (Vladimir Chebotarev) - دعم الأنواع المعقّدة داخل الحقول المتداخلة في Avro #10502 (Andrew Onyshchuk)
تحسين الأداء
- تحسين منطق الإدراج في الجدول الأيمن لـ Partial MergeJoin. #10467 (Artem Zuikov)
- تحسين أداء التنسيقات الموجَّهة صفّيًا (بأكثر من 10% لـ CSV وبأكثر من 35% لـ Avro في حالة الجداول الضيقة). #10503 (Andrew Onyshchuk)
- تحسين أداء الاستعلامات التي تحتوي على مجموعات معرّفة صراحةً في الجانب الأيمن من العامل IN، وTuples في الجانب الأيسر. #10385 (Anton Popov)
- تقليل استهلاك الذاكرة لجدول hash في HashJoin. #10416 (Artem Zuikov)
- HashJoin خاص فوق StorageDictionary. يتيح إعادة كتابة دوال
dictGet()باستخدام JOINs. هذا ليس غير متوافق مع الإصدارات السابقة بحد ذاته، لكنه قد يكشف المشكلة #8400 في بعض البيئات. #10133 (Artem Zuikov) - تمكين الإدراج المتوازي في materialized view عندما يدعم target table ذلك. #10052 (vxider)
- تحسين أداء تحليل الفهرس مع الدوال الرتيبة. #9607#10026 (Anton Popov)
- استخدام تعليمات SIMD المضمّنة SSE2 أو SSE4.2 لتسريع tokenization في bloom filters. #9968 (Vasily Nemkov)
- تحسين أداء الاستعلامات التي تحتوي على مجموعات معرّفة صراحةً في الجانب الأيمن من العامل
IN. ويُصلح هذا تراجع الأداء في الإصدار 20.3. #9740 (Anton Popov) - أصبح clickhouse-copier الآن يقسّم كل partition إلى عدة أجزاء وينسخها بشكل مستقل. #9075 (Nikita Mikhaylov)
- إضافة المزيد من أساليب aggregation. على سبيل المثال، سيختار الاستعلام 1 من TPC-H الآن
FixedHashMap<UInt16, AggregateDataPtr>ويحقق تحسنًا في الأداء بنسبة 25% #9829 (Amos Bird) - استخدام عدّاد صفوف واحد لعدة streams في تحويل pre-limit. يساعد هذا على تجنب دمج streams الخاصة بـ pipeline في الاستعلامات التي تحتوي على
limitولكن من دونorder by(مثلselect f(x) from (select x from t limit 1000000000)) وإتاحة استخدام عدة threads لمزيد من المعالجة. #9602 (Nikolai Kochetov)
تحسينات في البناء/الاختبار/التغليف
- استخدم نسخة متفرعة من مكتبات AWS SDK من ClickHouse-Extras #10527 (Pavel Kovalenko)
- أضف اختبارات تكامل لاستعلام ALTER RENAME COLUMN الجديد. #10654 (vzakaznikov)
- أصلح احتمال حدوث تجاوز سعة لعدد صحيح موقّع عند استدعاء الدالة
now64بوسائط غير صحيحة. ويعالج هذا #8973 #10511 (alexey-milovidov) - افصل إعدادات fuzzer و sanitizer لجعل تهيئة build متوافقة مع Oss-fuzz. #10494 (kyprizel)
- إصلاحات لـ clang-tidy على clang-10. #10420 (alexey-milovidov)
- اعرض المسارات المطلقة في رسائل الخطأ. وإلا فسيفشل KDevelop في الانتقال إلى الملف الصحيح وسيفتح ملفًا جديدًا بدلًا منه. #10434 (alexey-milovidov)
- أُضيف متغير البيئة
ASAN_OPTIONSللتحقيق في الأخطاء في اختبارات stress ضمن CI باستخدام Address sanitizer. #10440 (Nikita Mikhaylov) - فعّل ThinLTO لعمليات build الخاصة بـ clang (تجريبي). #10435 (alexey-milovidov)
- أزل الاعتماد غير المقصود على Z3 الذي قد يظهر إذا كان محلّل Z3 مثبتًا على النظام. #10426 (alexey-milovidov)
- انقل ملفات docker الخاصة باختبارات التكامل إلى الدليل docker/. #10335 (Ilya Yatsishin)
- اسمح باستخدام
clang-10في CI. وهذا يضمن إصلاح #10238. #10384 (alexey-milovidov) - حدّث OpenSSL إلى فرع master في المشروع upstream. وقد أُصلحت المشكلة التي قد تؤدي إلى فشل اتصالات TLS مع الرسالة
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal errorوSSL Exception: error:2400006E:random number generator::error retrieving entropy. كانت المشكلة موجودة في الإصدار 20.1. #8956 (alexey-milovidov) - أصلح build الخاص بـ clang-10. #10238 #10370 (Amos Bird)
- أضف اختبار أداء لـ Parallel INSERT for materialized view. #10345 (vxider)
- أصلح الاختبار غير المستقر
test_settings_constraints_distributed.test_insert_clamps_settings. #10346 (Vitaly Baranov) - أضف أداة مساعدة لرفع نتائج الاختبارات في ClickHouse CI #10330 (Ilya Yatsishin)
- تحويل نتائج الاختبار إلى تنسيق JSONEachRow في أداة junit_to_html #10323 (Ilya Yatsishin)
- تحديث cctz. #10215 (alexey-milovidov)
- إتاحة إنشاء تقرير HTML من تقرير JUnit XML الخام تمامًا. #10247 (Ilya Yatsishin)
- تحديث فحص الحد الأدنى لإصدار المترجم البرمجي. وإصلاح السبب الجذري للمشكلة #10250 #10256 (alexey-milovidov)
- دعم أولي لجداول live view عبر Distributed #10179 (vzakaznikov)
- إصلاح تقرير MSan (الخاطئ) في MergeTreeIndexFullText. ظهرت المشكلة أول مرة في #9968. #10801 (alexey-milovidov)
- clickhouse-docker-util #10151 (filimonov)
- تحديث pdqsort إلى إصدار أحدث #10171 (Ivan)
- تحديث libdivide إلى v3.0 #10169 (Ivan)
- إضافة فحص مع تمكين الأجزاء متعددة الأشكال. #10086 (Anton Popov)
- إضافة build للترجمة المتقاطعة لـ FreeBSD. هذا يُصلح #9465 #9643 (Ivan)
- إضافة اختبار أداء لـ #6924 #6980 (filimonov)
- إضافة دعم
/dev/nullفي محركFileلتحسين اختبارات الأداء #8455 (Amos Bird) - نقل جميع المجلدات داخل /dbms إلى مستوى أعلى واحد #9974 (Ivan)
- إضافة اختبار يتحقق من أن القراءة من MergeTree بمؤشر ترابط واحد تتم بالترتيب. إضافة إلى #9670 #9762 (alexey-milovidov)
- إصلاح الاختبار
00964_live_view_watch_events_heartbeat.pyلتجنب حالة تسابق. #9944 (vzakaznikov) - إصلاح اختبار تكامل
test_settings_constraints#9962 (Vitaly Baranov) - كل دالة في ملف مستقل، الجزء 12. #9922 (alexey-milovidov)
- أُضيف اختبار أداء لحالة البطء الشديد في تحليل مصفوفة من Tuples. #9872 (alexey-milovidov)
- حُدِّث zstd إلى 1.4.4. ويتضمن ذلك بعض التحسينات الطفيفة في الأداء ونسبة الضغط. إذا كنت تشغّل نسخًا متماثلة بإصدارات مختلفة من ClickHouse، فقد تظهر لك رسائل خطأ مناسبة مثل
Data after merge is not byte-identical to data on another replicas.مع توضيح للسبب. هذه الرسائل طبيعية ولا داعي للقلق بشأنها. #10663 (alexey-milovidov) - أُصلح تقرير TSan في
system.stack_trace. #9832 (alexey-milovidov) - أُزيل الاعتماد على
clock_getres. #9833 (alexey-milovidov) - أُضيف فحص لأسماء المعرّفات باستخدام clang-tidy. #9799 (alexey-milovidov)
- حُدِّثت صورة Docker “builder”. هذه الصورة لا تُستخدم في CI، لكنها مفيدة للمطورين. #9809 (alexey-milovidov)
- أُزيلت أداة
performance-testالقديمة التي لم تعد تُستخدم في CI. إنclickhouse-performance-testأداة رائعة، لكننا نستخدم الآن أداة أفضل بكثير تُجري اختبارات مقارنة باستخدام صيغ إحصائية متقدمة لتحقيق نتائج موثوقة بغض النظر عن اختلافات البيئة. #9796 (alexey-milovidov) - أُضيفت معظم فحوصات clang-static-analyzer. #9765 (alexey-milovidov)
- حُدِّث Poco إلى 1.9.3 تمهيدًا لدعم MongoDB URI. #6892 (Alexander Kuzmenkov)
- أُصلح البناء مع
-DUSE_STATIC_LIBRARIES=0 -DENABLE_JEMALLOC=0#9651 (Artem Zuikov) - في البرنامج النصي لسجل التغييرات، إذا جرى cherry-pick لـ merge commit إلى فرع الإصدار، فخُذ اسم PR من وصف commit. #9708 (Nikolai Kochetov)
- دعم الوسم
vX.X-conflictsفي البرنامج النصي لـ backport. #9705 (Nikolai Kochetov) - أُصلح
auto-labelفي البرنامج النصي للـ backporting. #9685 (Nikolai Kochetov) - استُخدم libc++ في Darwin cross-build لجعله متسقًا مع البناء الأصلي. #9665 (Hui Wang)
- أُصلح الاختبار غير المستقر
01017_uniqCombined_memory_usage. استكمالًا لـ #7236. #9667 (alexey-milovidov) - أُصلح البناء لمصرّف Clang الأصلي على macOS #9649 (Ivan)
- إتاحة إضافة أنواع مختلفة من الأعطال حول الدالتين
pthread_mutex_lockوpthread_mutex_unlock. #9635 (alexey-milovidov) - إضافة دعم
clang-tidyإلى السكربتpackager. #9625 (alexey-milovidov) - إضافة إمكانية استخدام msgpack غير المضمّن. #10168 (Azat Khuzhin)
إصدار ClickHouse v20.3
إصدار ClickHouse v20.3.21.2-lts، 2020-11-02
إصلاحات الأخطاء
- إصلاح
dictGetفيsharding_key(وفي المواضع المشابهة، أي عند تخزين سياق الدالة بشكل دائم). #16205 (Azat Khuzhin). - إصلاح النتيجة الفارغة غير الصحيحة للاستعلام من جدول
Distributedإذا كان الاستعلام يحتوي علىWHEREوPREWHEREوGLOBAL IN. ويعالج هذا #15792. #15933 (Nikolai Kochetov). - إصلاح الرؤوس المفقودة أو الزائدة في تنسيقات
TSV/CSVWithNames. ويعالج هذا #12504. #13343 (Azat Khuzhin).
إصدار ClickHouse v20.3.20.6-lts، 2020-10-09
إصلاحات الأخطاء
- قد تتعطل عملية mutation أثناء انتظار part غير موجود بعد
MOVEأوREPLACE PARTITIONأو، في حالات نادرة، بعدDETACHأوDROP PARTITION. تم إصلاح ذلك. #15724, #15537 (tavplubix). - إصلاح تعليق الاستعلامات التي تحتوي على عدد كبير من الاستعلامات الفرعية على جدول
MySQLengine نفسه. سابقًا، إذا كان هناك أكثر من 16 استعلامًا فرعيًا على جدولMySQLنفسه ضمن الاستعلام، فإنه كان يظل معلقًا إلى الأبد. #15299 (Anton Popov). - إصلاح خطأ “Unknown identifier” في GROUP BY عندما يحتوي الاستعلام على JOIN على Merge table. #15242 (Artem Zuikov).
- إصلاح يتيح عمل predicate push down عندما يحتوي الاستعلام الفرعي على الدالة finalizeAggregation. يُصلح #14847. #14937 (filimonov).
- قد تتسبب استعلامات
ALTER ... REPLACE/MOVE PARTITION ...المتزامنة في حدوث deadlock. تم إصلاح ذلك. #13626 (tavplubix).
إصدار ClickHouse v20.3.19.4-lts، 2020-09-18
إصلاحات الأخطاء
- إصلاح خطأ نادر في استعلامات
SELECTعندما يكون للعمود المطلوب تعبيرDEFAULTيعتمد على عمود آخر له أيضًاDEFAULT، لكنه غير موجود في استعلامSELECTولا يوجد على القرص. يُصلح هذا جزئيًا #14531. #14845 (alesapin). - إصلاح خلل يحدث عندما تؤدي عملية mutation من نوع
ALTER UPDATE، مع عمود Nullable في تعبير الإسناد وقيمة ثابتة (مثلUPDATE x = 42)، إلى قيمة غير صحيحة في العمود أو إلى segfault. يُصلح #13634، #14045. #14646 (alesapin). - إصلاح نتيجة ضرب Decimal غير الصحيحة الناتجة عن scale عشرية غير صحيحة لعمود النتيجة. #14603 (Artem Zuikov).
تحسين
- دعم ترميزات ضغط مخصّصة في الأجزاء المتراصّة. #12183 (Anton Popov).
إصدار ClickHouse v20.3.18.10-lts، 2020-09-08
إصلاحات الأخطاء
- أوقِف تنفيذ الاستعلام إذا حدث استثناء داخل
PipelineExecutorنفسه. قد يمنع ذلك حالات نادرة محتملة من تعليق الاستعلام. استكمال لـ #14334. #14402 (Nikolai Kochetov). - أُصلح السلوك الذي كان فيه قاموس
cacheيعيد أحيانًا القيمة الافتراضية بدلًا من القيمة الموجودة في المصدر. #13624 (Nikita Mikhaylov). - أُصلح تحليل سياسات الصفوف من users.xml عندما تحتوي أسماء قواعد البيانات أو الجداول على نقاط. يعالج هذا #5779، #12527. #13199 (Vitaly Baranov).
- إصلاح CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
- أُصلح تسابق بيانات في
text_log. ولا يرتبط ذلك بأي خطأ فعلي. #9726 (alexey-milovidov).
تحسين
- إصلاح رسالة الخطأ الخاطئة للاستعلامات الطويلة. كان يمكن أن يظهر خطأ في بناء الجملة مختلف عن
Max query size exceededحتى مع استعلام صحيح. #13928 (Nikolai Kochetov). - إرجاع NULL/الصفر عندما لا تُحلَّل القيمة بالكامل في الدالتين parseDateTimeBestEffortOrNull/Zero. يُصلح هذا #7876. #11653 (alexey-milovidov).
تحسين الأداء
- تحسين طفيف للاستعلامات القصيرة جدًا مع LowCardinality. #14129 (Anton Popov).
تحسينات في البناء/الاختبار/التغليف
- إصلاح تقرير UBSan (إضافة الصفر إلى nullptr) في HashTable، والذي ظهر بعد الانتقال إلى clang-10. #10638 (alexey-milovidov).
إصدار ClickHouse v20.3.17.173-lts، 2020-08-15
إصلاحات الأخطاء
- إصلاح تعطل في JOIN مع StorageMerge و
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - إصلاح نوع الإرجاع غير الصحيح عند مقارنة Tuples تحتوي على عناصر
NULL. يعالج #12461. #13420 (Nikolai Kochetov). - إصلاح الاستعلامات التي تحتوي على أعمدة ثابتة عندما تكون
ORDER BYبادئة للمفتاح الأساسي. #13396 (Anton Popov). - إرجاع الرقم المُمرَّر كما هو للأعداد التي تكون قيمة MSB فيها مضبوطة في roundUpToPowerOfTwoOrZero(). #13234 (Azat Khuzhin).
إصدار ClickHouse v20.3.16.165-lts 2020-08-10
إصلاحات الأخطاء
- أُصلح خطأ في الدالة
parseDateTimeBestEffortعند تمرير طابع زمني Unix كوسيطة. يُصلح هذا #13362. #13441 (alexey-milovidov). - أُصلح احتمال انخفاض الأداء والحصول على نتائج غير دقيقة قليلًا في الدوال التجميعية
uniqExactوtopKوsumDistinctوما شابهها عند استدعائها على أنواعFloatالتي تحتوي على قيمNaN. كما كان ذلك يؤدي إلى assert في build التصحيح. يُصلح هذا #12491. #13254 (alexey-milovidov). - أُصلحت الدالة if عند استخدام nullable constexpr كشرط cond ما دام ليس
NULLحرفيًا. يُصلح هذا #12463. #13226 (alexey-milovidov). - أُصلح assert في الدالة
arrayElementعندما تكون عناصر Array من النوع Nullable ويكون فهرس Array أيضًا من النوع Nullable. يُصلح هذا #12172. #13224 (alexey-milovidov). - أُصلح التقييد غير الضروري لعدد threads في عمليات SELECT من replica محلية. #12840 (Nikolai Kochetov).
- أُصلح احتمال ظهور صف overflow إضافي في البيانات في استعلامات
WITH TOTALS. #12747 (Nikolai Kochetov). - أُصلح الأداء عند استخدام Tuples كبيرة تُفسَّر على أنها دوال ضمن قسم
IN، وذلك في الحالة التي يكتب فيها المستخدمWHERE x IN tuple(1, 2, ...)بدلًا منWHERE x IN (1, 2, ...)لسبب غامض. #12700 (Anton Popov). - أُصلحت متابعة الذاكرة في input_format_parallel_parsing (من خلال إلحاق thread بالمجموعة). #12672 (Azat Khuzhin).
- أُصلح #12293 للسماح بـ push predicate عندما يحتوي الاستعلام الفرعي على WITH Clause. #12663 (Winter Zhang).
- أُصلح #10572 لإصلاح index من نوع bloom filter مع expression ثابت. #12659 (Winter Zhang).
- أُصلح SIGSEGV في StorageKafka عندما يكون broker غير متاح، وليس في هذه الحالة فقط. #12658 (Azat Khuzhin).
- أُصلح race condition في external dictionaries ذات layout من نوع cache، والتي قد تؤدي إلى crash في الخادم. #12566 (alesapin).
- أُصلح خلل كان يؤدي إلى تلف parts القديمة بعد الاستعلام
ALTER DELETEعندما تكون القيمةenable_mixed_granularity_parts=1. يُصلح هذا #12536. #12543 (alesapin). - استثناء أوضح للدالة
inعند تمرير عدد غير صالح من الوسائط. #12529 (Anton Popov). - تم إصلاح مشكلة في الأداء عند القراءة من الأجزاء المدمجة. #12492 (Anton Popov).
- تم إصلاح حالة التوقف المتبادل عند تفعيل
text_log. #12452 (alexey-milovidov). - تم إصلاح احتمال حدوث segfault في
StorageMerge. يُغلق هذا #12054. #12401 (tavplubix). - تم إصلاح
TOTALS/ROLLUP/CUBEللدوال التجميعية ذات الوسائط-StateوNullable. يُصلح هذا #12163. #12376 (alexey-milovidov). - تم إصلاح ترتيب الأعمدة في المُعدِّل
WITH FILL. في السابق، لم يكن ترتيب الأعمدة في عبارةORDER BYمُراعًى. #12306 (Anton Popov). - تم تجنّب استثناء “bad cast” عندما توجد عبارة تُرشّح البيانات حسب الأعمدة الافتراضية (مثل
_tableفي جداولMerge) أو حسب أعمدة “index” في جداول النظام، مثل التصفية باسم قاعدة البيانات عند الاستعلام منsystem.tables، وتُرجع هذه العبارة النوعNullable. يُصلح هذا #12166. #12305 (alexey-milovidov). - إظهار الخطأ بعد فشل تحميل
TrieDictionary. #12290 (Vitaly Baranov). - كانت الدالة
arrayFillتعمل بشكل غير صحيح مع المصفوفات الفارغة، ما قد يؤدي إلى تعطل. يُصلح هذا #12263. #12279 (alexey-milovidov). - تم تنفيذ التحويل إلى النوع المشترك لأنواع
LowCardinality. يتيح هذا تنفيذ UNION ALL على الجداول التي تحتوي على أعمدة من نوع LowCardinality وأعمدة أخرى. يُصلح هذا #8212. يُصلح هذا #4342. #12275 (alexey-milovidov). - تم إصلاح الحالة التي كانت فيها، أثناء عمليات insert المتسلسلة المتعددة في
StorageFile، تُكتب ترويسة بعض الأنواع الخاصة أكثر من مرة. وقد أصلح هذا #6155. #12197 (Nikita Mikhaylov). - تم إصلاح الدوال المنطقية لقيم UInt8 عندما لا تكون مساوية لـ 0 أو 1. #12196 (Alexander Kazakov).
- تم إصلاح التحقق من وسائط
dictGetأثناء حذف الدوال الحقنية في GROUP BY. #12179 (Azat Khuzhin). - تم إصلاح المنطق الخاطئ في
ALTER DELETEالذي يؤدي إلى حذف السجلات عندما يُقيَّم الشرط إلى NULL. يُصلح هذا #9088. ويُغلق هذا #12106. #12153 (alexey-milovidov). - تم إصلاح تحويل الاستعلام لإرساله إلى نظام إدارة قواعد بيانات خارجي (مثل MySQL و ODBC) في حال وجود أسماء مستعارة. يُصلح هذا #12032. #12151 (alexey-milovidov).
- تم إصلاح احتمال حدوث تجاوز سعة في القسمة الصحيحة. يُصلح هذا #12119. #12140 (alexey-milovidov).
- تم إصلاح احتمال حدوث حلقة لا نهائية في
greatCircleDistanceوgeoDistance. يُصلح هذا #12117. #12137 (alexey-milovidov). - تجنُّب الاستثناء
There is no queryفي العروض المادية التي تحتوي على joins أو استعلامات فرعية والمرتبطة بسجلات النظام (system.query_log و metric_log وما إلى ذلك) أو بالجدول الأساسي لـ engine=Buffer. #12120 (filimonov). - تم إصلاح أداء عمليات SELECT التي تستخدم
UNION، والذي كان يتأثر بحدٍّ غير صحيح لإجمالي عدد خيوط التنفيذ. يُصلح هذا #12030. #12103 (Nikolai Kochetov). - تم إصلاح segfault مع المجمِّعات
-StateResample. #12092 (Anton Popov). - تم إصلاح التقييد غير الضروري لعدد خيوط التنفيذ لعمليات SELECT من
VIEW. يُصلح هذا #11937. #12085 (Nikolai Kochetov). - تم إصلاح احتمال حدوث تعطل أثناء استخدام نوع غير صحيح مع
PREWHERE. يُصلح هذا #12053، #12060. #12060 (Nikolai Kochetov). - تم إصلاح الخطأ
Expected single dictionary argument for functionفي الدالةdefaultValueOfArgumentTypeمع النوعLowCardinality. يُصلح هذا #11808. #12056 (Nikolai Kochetov). - تم إصلاح الخطأ
Cannot capture columnفي الدوال عالية الرتبة ذات الوسيطTuple(LowCardinality). يُصلح هذا #9766. #12055 (Nikolai Kochetov). - تحليل البيانات الوصفية للجداول بالتوازي عند تحميل قاعدة البيانات. يُصلح هذا بطء بدء تشغيل الخادم عند وجود عدد كبير من الجداول. #12045 (tavplubix).
- جعل الدالة التجميعية
topKتُرجع Enum لأنواع Enum. يُصلح هذا #3740. #12043 (alexey-milovidov). - تم إصلاح التحقق من القيود إذا كان القيد تعبيرًا ثابتًا. يُصلح هذا #11360. #12042 (alexey-milovidov).
- تم إصلاح المقارنة غير الصحيحة بين الـ tuples والأعمدة
Nullable. يُصلح هذا #11985. #12039 (Nikolai Kochetov). - تم إصلاح النتيجة الخاطئة واحتمال التعطل عند استدعاء الدالة
ifبوسائط من النوعFixedStringذات أحجام مختلفة. يُصلح هذا #11362. #12021 (alexey-milovidov). - قد يُرجع استعلام تكون فيه الدالة
neighborهي التعبير الوحيد المُعاد نتيجة فارغة إذا جرى استدعاء الدالة بإزاحة-9223372036854775808. يُصلح هذا #11367. #12019 (alexey-milovidov). - تم إصلاح تجاوز محتمل في حجم المصفوفة في
generateRandomقد يؤدي إلى تعطل. يُصلح هذا #11371. #12013 (alexey-milovidov). - تم إصلاح استثناء محتمل متعلق بالأعداد ذات الفاصلة العائمة. يُغلق هذا #11378. #12005 (alexey-milovidov).
- تم إصلاح اسم إعداد غير صحيح في رسالة log عند بدء تشغيل server. #11997 (alexey-milovidov).
- تم إصلاح الخطأ
Query parameter was not setفي formatValues. يُصلح هذا #11918. #11936 (tavplubix). - الإبقاء على الأسماء المستعارة لعمليات substitution في الاستعلام (الاستعلامات المعلَّمة بمعاملات). يُصلح هذا #11914. #11916 (alexey-milovidov).
- تم إصلاح استثناء محتمل متعلق بالأعداد ذات الفاصلة العائمة عند تحليل
DateTime64. يُصلح هذا #11374. #11875 (alexey-milovidov). - تم إصلاح احتساب الذاكرة عبر واجهة
HTTP(وقد يكون ذلك ملحوظًا عند استخدامwait_end_of_query=1). #11840 (Azat Khuzhin). - تم إصلاح النتيجة الخاطئة لـ
if()عند وجود NULLs في الشرط. #11807 (Artem Zuikov). - تحليل البيانات الوصفية المخزنة في ZooKeeper قبل التحقق من تساويها. #11739 (Azat Khuzhin).
- تم إصلاح استخدام
LIMIT n WITH TIESمع عبارةORDER BYالتي تحتوي على أسماء مستعارة. #11689 (Anton Popov). - تم إصلاح احتمال قراءة ذاكرة غير مهيأة في قاموس cache. #10834 (alexey-milovidov).
تحسين الأداء
- لم يكن الفهرس يُستخدم مع العامل IN عند استخدام القيم الحرفية، وقد ظهر تراجع في الأداء بدءًا من الإصدار v19.3 تقريبًا. يُصلح ذلك #10574. #12062 (nvartolomei).
إصدار ClickHouse v20.3.12.112-lts 2020-06-25
إصلاحات الأخطاء
- إصلاح تعطل نادر ناتج عن استخدام العمود
Nullableفي شرط prewhere. استكمال لـ #11608. #11869 (Nikolai Kochetov). - منع استخدام arrayJoin داخل الدوال عالية الرتبة. وكان ذلك يؤدي إلى اختلال مزامنة البروتوكول. وهذا يغلق #3933. #11846 (alexey-milovidov).
- إصلاح استخدام عدد كبير جدًا من الخيوط للاستعلامات. #11788 (Nikolai Kochetov).
- إصلاح السلوك غير المتوقع للاستعلامات مثل
SELECT *, xyz.*، التي كانت تنجح رغم أنه كان من المفترض ظهور خطأ. #11753 (hexiaoting). - ستُلغى الآن عمليات الجلب المتماثلة أثناء تعديل البيانات الوصفية. #11744 (alesapin).
- إصلاح LOGICAL_ERROR الناتج عن استنتاج نوع غير صحيح للقيم الحرفية المعقدة في تنسيق الإدخال Values. #11732 (tavplubix).
- إصلاح
ORDER BY ... WITH FILLمع الأعمدة الثابتة. #11697 (Anton Popov). - تمرير مهلات timeout الصحيحة عند التواصل مع XDBC bridge. مؤخرًا، لم تكن مهلات timeout تُحترم عند التحقق من liveness للجسر واستلام البيانات الوصفية. #11690 (alexey-milovidov).
- إصلاح خطأ يؤدي إلى حالة غير صحيحة لـ
system.mutations. فقد يُظهر أن الـ mutation اكتمل بالكامل بالفعل، بينما لا يزال الخادم يحتوي على مهامMUTATE_PARTفي replication queue ويحاول تنفيذها. هذا يصلح #11611. #11681 (alesapin). - إضافة دعم للتعبيرات النمطية مع علامات case-insensitive. هذا يصلح #11101 ويصلح #11506. #11649 (alexey-milovidov).
- إزالة query optimization الخاصة باستعلام count البسيط إذا كان الأمان على مستوى الصفوف مفعّلًا. في الإصدارات السابقة، كان المستخدم يحصل على العدد الإجمالي للسجلات في الجدول بدلًا من العدد المُصفّى. هذا يصلح #11352. #11644 (alexey-milovidov).
- إصلاح bloom filters لـ String (فهارس تخطي البيانات). #11638 (Azat Khuzhin).
- إصلاح تعطل نادر ناتج عن استخدام العمود
Nullableفي شرط prewhere. (ومن المحتمل أن يكون مرتبطًا بشكل ما بـ #11572). #11608 (Nikolai Kochetov). - إصلاح الخطأ
Block structure mismatchفي الاستعلامات التي تستخدم sampling عند القراءة من جدولBuffer. #11602 (Nikolai Kochetov). - إصلاح رمز الخروج غير الصحيح لـ clickhouse-client عندما تكون
exception.code() % 256 = 0. #11601 (filimonov). - إصلاح خطأ بسيط في رسالة السجل حول “تم خفض حجم mark cache” عند بدء تشغيل الخادم. يُغلق هذا #11399. #11589 (alexey-milovidov).
- إصلاح الخطأ
Size of offsets does not match size of columnفي الاستعلامات التي تحتوي علىPREWHERE column in (subquery)وARRAY JOIN. #11580 (Nikolai Kochetov). - كانت جميع الاستعلامات ضمن جلسة HTTP تحمل
query_idنفسه. تم إصلاح ذلك. #11578 (tavplubix). - أصبحت حاوية Docker الخاصة بـ clickhouse-server تفضّل الآن IPv6 عند التحقق من توفر الخادم. #11550 (Ivan Starkov).
- إصلاح shard_num/replica_num في
<node>(ما كان يؤدي إلى تعطّل use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - إصلاح تسرّب في الذاكرة عند طرح استثناء في منتصف aggregation باستخدام الدوال -State. يُصلح هذا #8995. #11496 (alexey-milovidov).
- إصلاح النتائج غير الصحيحة للاستعلامات الموزعة عندما يمكن للاسم المستعار أن يتجاوز اسم عمود مؤهّلًا. يُصلح هذا #9672 #9714. #9972 (Artem Zuikov).
إصدار ClickHouse v20.3.11.97-lts 2020-06-10
ميزة جديدة
- أصبح ClickHouse الآن يتحكم في مهلات الانتظار الخاصة بمصادر القواميس من جهته. أُضيف إعدادان جديدان إلى إعدادات قاموس
cache:strict_max_lifetime_seconds، وتكون قيمته افتراضيًاmax_lifetime، وquery_wait_timeout_milliseconds، وتكون قيمته الافتراضية دقيقة واحدة. كما أن الإعداد الأول مفيد أيضًا مع إعداداتallow_read_expired_keys(لمنع قراءة المفاتيح التي انتهت صلاحيتها منذ فترة طويلة جدًا). #10337 (Nikita Mikhaylov).
إصلاحات الأخطاء
- إصلاح الخطأ
Data compressed with different methodsالذي قد يحدث إذا كانmin_bytes_to_use_direct_ioمُمكّنًا، وكان PREWHERE نشطًا مع استخدام SAMPLE أو عدد كبير من الخيوط. يُصلح هذا #11539. #11540 (alexey-milovidov). - إصلاح إرجاع الحجم المضغوط لـ codecs. #11448 (Nikolai Kochetov).
- إصلاح تعطل الخادم عندما يحتوي عمود على compression codec بمعاملات غير literal. يُصلح #11365. #11431 (alesapin).
- إصلاح pointInPolygon عند استخدام nan كنقطة. يُصلح #11375. #11421 (Alexey Ilyukhov).
- إصلاح التعطل في JOIN على LowCarinality(T) و Nullable(T). #11380. #11414 (Artem Zuikov).
- إصلاح رمز الخطأ لمفتاح
USINGغير الصحيح. #11373. #11404 (Artem Zuikov). - إصلاح geohashesInBox عند وجود وسيطات خارج نطاق خطوط العرض/الطول. #11403 (Vasily Nemkov).
- تحسين رسائل الخطأ لدوال
joinGet(). #11389 (Artem Zuikov). - إصلاح الخطأ المحتمل
Pipeline stuckفي الاستعلامات التي تستخدم sort خارجيًا و limit. يُصلح #11359. #11366 (Nikolai Kochetov). - إزالة القفل الزائد أثناء إرسال parts في ReplicatedMergeTree. #11354 (alesapin).
- إصلاح دعم
\G(الإخراج العمودي) في clickhouse-client في وضع multiline. يُغلق هذا #9933. #11350 (alexey-milovidov). - إصلاح التعطل في عمليات SELECT المباشرة من StorageJoin (من دون JOIN) ومع nullability غير الصحيحة. #11340 (Artem Zuikov).
- إصلاح التعطل في
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - أصبحت عمليات الدمج تتوقف الآن قبل تغيير metadata في استعلامات
ALTER. #11335 (alesapin). - جعل الكتابة إلى
MATERIALIZED VIEWمع الإعدادparallel_view_processing = 1متوازية مجددًا. يُصلح #10241. #11330 (Nikolai Kochetov). - إصلاح
visitParamExtractRawعندما يحتوي JSON المستخرَج على سلاسل نصية فيها { أو [ غير متوازنين. #11318 (Ewout). - إصلاح حالة تسابق نادرة جدًا في
ThreadPool. #11314 (alexey-milovidov). - إصلاح احتمال وجود ذاكرة غير مهيّأة أثناء التحويل. مثال:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - إصلاح المشكلة التي تمنع تحليل الفهرس من العمل إذا كان الجدول يحتوي على عمود Array في المفتاح الأساسي، وكان الاستعلام يطبّق عامل تصفية على هذا العمود باستخدام الدالتين
emptyأوnotEmpty. هذا يصلح #11286. #11303 (alexey-milovidov). - إصلاح خلل قد يجعل تقدير سرعة الاستعلام غير دقيق، وقد يؤدي إلى عدم عمل حد
min_execution_speedأو عمله بشكل غير صحيح إذا كان الاستعلام مقيَّد المعدل بواسطة إعداداتmax_network_bandwidthأوmax_execution_speedأوpriority. كما جرى تغيير القيمة الافتراضية لـtimeout_before_checking_execution_speedإلى قيمة غير صفرية، لأن الإعدادينmin_execution_speedوmax_execution_speedلا يكون لهما أي تأثير بخلاف ذلك. هذا يصلح #11297. هذا يصلح #5732. هذا يصلح #6228. تحسين في سهولة الاستخدام: تجنب دمج رسالة الاستثناء مع شريط التقدّم فيclickhouse-client. #11296 (alexey-milovidov). - إصلاح انهيار أثناء قراءة بيانات غير سليمة بتنسيق Protobuf. هذا يصلح #5957، ويصلح #11203. #11258 (Vitaly Baranov).
- إصلاح خلل كان يجعل cache-dictionary يعيد القيمة الافتراضية بدلًا من القيمة المعتادة (عندما لا توجد سوى مفاتيح منتهية الصلاحية). يؤثر هذا فقط في الحقول النصية. #11233 (Nikita Mikhaylov).
- إصلاح الخطأ
Block structure mismatch in QueryPipelineأثناء القراءة منVIEWعند وجود ثوابت في الاستعلام الداخلي. يصلح #11181. #11205 (Nikolai Kochetov). - إصلاح الاستثناء المحتمل
Invalid status for associated output. #11200 (Nikolai Kochetov). - إصلاح الخطأ المحتمل
Cannot capture columnفي الدوال عالية الرتبة مع الوسيط الملتقَطArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - إصلاح مطابقة الأنماط في S3، التي كان يمكن أن تفشل عند وجود أكثر من 1000 مفتاح ومع بعض الأنظمة الخلفية. #11179 (Vladimir Chebotarev).
- إذا كان data skipping index يعتمد على أعمدة سيجري تعديلها أثناء merge في الخلفية (في SummingMergeTree وAggregatingMergeTree وكذلك في TTL GROUP BY)، فكان يُحتسَب بشكل غير صحيح. وقد أُصلحت هذه المشكلة بنقل حساب الفهرس إلى ما بعد merge، بحيث يُحتسَب الفهرس على البيانات المدمجة. #11162 (Azat Khuzhin).
- إصلاح الحجز المفرط لخيوط التنفيذ للاستعلامات البسيطة (تحسين لتقليل عدد خيوط التنفيذ، وقد تعطّل جزئيًا بعد التغييرات في خط المعالجة). #11114 (Azat Khuzhin).
- إصلاح تحسين الـ predicates في الاستعلامات الموزعة (
enable_optimize_predicate_expression=1) للاستعلامات التي تتضمن قسمHAVING(أي عندما تكون التصفية على الخادم المبادِر مطلوبة)، وذلك بالحفاظ على ترتيب التعبيرات (وهذا يكفي للإصلاح)، وكذلك بإجبار المجمّع على استخدام أسماء الأعمدة بدلًا من الفهارس. إصلاحات: #10613، #11413. #10621 (Azat Khuzhin). - إضافة منطق إعادة محاولة commit لتقليل احتمال الحصول على قيَم مكررة من Kafka في حالات نادرة عند فشل commit للإزاحة. #9884 (filimonov).
تحسين الأداء
- جلب القاموس والتحقق من حقوق الوصول مرة واحدة فقط عند كل استدعاء لأي دالة تقرأ القواميس الخارجية. #10928 (Vitaly Baranov).
تحسينات في البناء/الاختبار/التغليف
إصدار ClickHouse v20.3.10.75-lts 2020-05-23
إصلاحات الأخطاء
- أُزيل logging من مهمة إنهاء mutation إذا لم يكتمل أي شيء. #11109 (alesapin).
- أُصلحت أخطاء تحديد argument في
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - أُصلح الحجم غير الصحيح للـ raw data في method
getRawData(). #10964 (Igr). - أُصلح عدم التوافق في two-level aggregation بين الإصدار 20.1 والإصدارات الأقدم. يحدث هذا التعارض عند استخدام إصدارات مختلفة من ClickHouse على عقدة initiator والعقد البعيدة، وعندما يكون حجم نتيجة
GROUP BYكبيرًا وتُجرى aggregation باستخدام field واحد من نوعString. ويؤدي ذلك إلى ظهور عدة rows غير مدمجة للمفتاح نفسه في النتيجة. #10952 (alexey-milovidov). - أُصلح التوافق مع الإصدارات السابقة لـ tuples في جداول
Distributed. #10889 (Anton Popov). - أُصلح
SIGSEGVفيStringHashTableإذا لم يكن هذا المفتاح موجودًا. #10870 (Azat Khuzhin). - أُصلح خلل في
ReplicatedMergeTreeكان قد يتسبب في تعليق بعض عملياتALTERعلى queryOPTIMIZEأثناء انتظار replica ما بعد أن تصبح غير نشطة. #10849 (tavplubix). - أُصلح ترتيب columns بعد
Block::sortColumns(). #10826 (Azat Khuzhin). - أُصلحت المشكلة في جسر
ODBCعند عدم طلب وضع علامات اقتباس حول المعرّفات. يُصلح #7984. #10821 (alexey-milovidov). - أُصلح التقرير الصادر من
UBSanوMSanفيDateLUT. #10798 (alexey-milovidov). - أُصلح التحويل غير الصحيح للـ type في key conditions. يُصلح #6287. #10791 (Andrew Onyshchuk)
- أُصلح سلوك
parallel_view_processing. والآن يجب أن تكتمل جميع عمليات insert إلىMATERIALIZED VIEWالتي لا ينتج عنها استثناء، حتى إذا حدث استثناء. يُصلح #10241. #10757 (Nikolai Kochetov). - أُصلح combinator -
OrNullو-OrDefaultعند دمجهما مع-State. #10741 (hcz). - أُصلح crash في
generateRandomمع nested types. يُصلح #10583. #10734 (Nikolai Kochetov). - أُصلح تلف البيانات في Key column من النوع
LowCardinality(FixedString)فيSummingMergeTree، والذي كان يمكن أن يحدث بعد merge. يُصلح #10489. #10721 (Nikolai Kochetov). - تم إصلاح احتمال حدوث تجاوز في المخزن المؤقت في الدالة
h3EdgeAngle. #10711 (alexey-milovidov). - تم إصلاح مشكلة اختفاء الإجماليات. كان من الممكن تصفية الإجماليات إذا كان الاستعلام يحتوي على join أو استعلام فرعي مع شرط where خارجي. يُصلِح #10674. #10698 (Nikolai Kochetov).
- تم إصلاح الاستخدامات المتعددة للمعامل
INمع المجموعة نفسها في استعلام واحد. #10686 (Anton Popov). - تم إصلاح خطأ كان يتسبب في تعليق طلبات HTTP عند إغلاق العميل عندما تكون
readonly=2وcancel_http_readonly_queries_on_client_close=1. يُصلِح #7939, #7019, #7736, #7091. #10684 (tavplubix). - تم إصلاح ترتيب المعلمات في الباني
AggregateTransform. #10667 (palasonic1). - تم إصلاح غياب التنفيذ المتوازي للاستعلامات البعيدة عند تفعيل
distributed_aggregation_memory_efficient. يُصلِح #10655. #10664 (Nikolai Kochetov). - تم إصلاح احتمال ظهور عدد غير صحيح من الصفوف في الاستعلامات التي تستخدم
LIMIT. يُصلِح #10566, #10709. #10660 (Nikolai Kochetov). - تم إصلاح خطأ كان يؤدي إلى حظر عمليات ALTER المتزامنة عندما يحتوي الجدول على عدد كبير من الأجزاء. #10659 (alesapin).
- تم إصلاح خطأ كان يؤدي فيه استعلام
SYSTEM DROP DNS CACHEأيضًا إلى حذف الذاكرات المؤقتة المستخدمة للتحقق مما إذا كان يُسمح للمستخدم بالاتصال من بعض عناوين IP. #10608 (tavplubix). - تم إصلاح نتائج scalar غير الصحيحة داخل الاستعلام الداخلي لـ
MATERIALIZED VIEWإذا كان هذا الاستعلام يحتوي على جدول تابع. #10603 (Nikolai Kochetov). - تم إصلاح
SELECTللعمودALIASعندما يكون نوع تعبيره الافتراضي مختلفًا عن نوع العمود. #10563 (Azat Khuzhin). - تم تنفيذ المقارنة بين قيم DateTime64 و String. #10560 (Vasily Nemkov).
- تم إصلاح تلف الفهرس، الذي قد يحدث في بعض الحالات بعد دمج أجزاء compact في جزء compact آخر. #10531 (Anton Popov).
- تم إصلاح الحالة التي تنتهي فيها mutation من جميع الأجزاء، لكنها تظل معلقة عند
is_done=0. #10526 (alesapin). - تم إصلاح تجاوز السعة عند بداية حقبة Unix للمناطق الزمنية ذات الإزاحة الكسرية بالنسبة إلى
UTC. ويعالج هذا #9335. #10513 (alexey-milovidov). - تم إصلاح الإيقاف غير السليم لمحرك التخزين
Distributed. #10491 (Azat Khuzhin). - تم إصلاح تجاوز السعة العددي في
simpleLinearRegressionمع الأعداد الصحيحة الكبيرة. #10474 (hcz).
تحسينات في البناء/الاختبار/التغليف
- إصلاح تقرير UBSan في مكتبة LZ4. #10631 (alexey-milovidov).
- إصلاح build الخاص بـ clang-10. #10238. #10370 (Amos Bird).
- إضافة اختبارات فاشلة تتعلق بإعداد
max_rows_to_sort. #10268 (alexey-milovidov). - إضافة بعض التحسينات إلى طباعة المعلومات التشخيصية في تنسيقات الإدخال. يُصلح #10204. #10418 (tavplubix).
- إضافة شهادات CA إلى صورة Docker الخاصة بـ clickhouse-server. #10476 (filimonov).
إصلاحات الأخطاء
- إصلاح الخطأ
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang).
إصدار ClickHouse v20.3.8.53، 2020-04-23
إصلاحات الأخطاء
- تم إصلاح السلوك غير الصحيح لدوال datetime للمناطق الزمنية التي يتغيّر فيها الإزاحة من UTC بين القيم الموجبة والسالبة (مثل Pacific/Kiritimati). يُصلح هذا #7202 #10369 (alexey-milovidov)
- إصلاح احتمال حدوث segfault عند تفعيل
distributed_group_by_no_merge(أُدخل في 20.3.7.46 بواسطة #10131). #10399 (Nikolai Kochetov) - إصلاح التسطيح غير الصحيح لأنواع البيانات
Array(Tuple(...)). يُصلح هذا #10259 #10390 (alexey-milovidov) - إزالة حجز الأقراص في Aggregator. يُصلح هذا خللًا في حجز مساحة القرص قد يتسبب في فشل external aggregation الكبيرة حتى عندما يكون بالإمكان إكمالها بنجاح #10375 (Azat Khuzhin)
- تم إصلاح حالة التسابق بين
DROPوOPTIMIZEفيReplicatedMergeTree. فقد كانDROPقد يترك بعض المخلفات في مسار replica في ZooKeeper إذا وُجد query متزامن من نوعOPTIMIZE. #10312 (tavplubix) - إصلاح خلل يمنع server من attach table بعد تعديل القيمة الافتراضية للعمود. #10441 (alesapin)
- عدم إزالة دليل metadata عندما يفشل attach database قبل loading tables. #10442 (Winter Zhang)
- تم إصلاح عدة أخطاء كانت تظهر عند إدراج بعض البيانات باستخدام quorum، ثم حذفها بطريقة ما (DROP PARTITION, TTL)، ما كان يؤدي إلى تعلّق عمليات INSERT أو ظهور استثناءات إيجابية كاذبة في عمليات SELECT. يُصلح هذا #9946 #10188 (Nikita Mikhaylov)
- إصلاح احتمال ظهور الخطأ
Pipeline stuckفيConcatProcessor، وهو ما كان يمكن أن يحدث في query بعيد. #10381 (Nikolai Kochetov) - تم إصلاح سلوك غير صحيح في HashTable كان يتسبب في خطأ ترجمة برمجية عند محاولة قراءة HashMap من buffer. #10386 (palasonic1)
- السماح باستخدام
count(*)مع عدة JOINs. يُصلح هذا #9853 #10291 (Artem Zuikov) - تفضيل
fallback_to_stale_replicasعلىskip_unavailable_shards، وإلا فعند تحديد كلا الإعدادين وعدم وجود replicas محدّثة سيفشل الـ query (تصحيح من @alex-zaitsev). يُصلح هذا: #2564. #10422 (Azat Khuzhin) - إصلاح المشكلة التي قد تؤدي إلى أن query تحتوي على ARRAY JOIN وORDER BY وLIMIT تُرجع نتيجة غير مكتملة. يُصلح هذا #10226. المؤلف: Vadim Plakhtinskiy. #10427 (alexey-milovidov)
- التحقق من عدد الوسائط ونوعها عند إنشاء فهرس BloomFilter #9623 #10431 (Winter Zhang)
تحسين الأداء
- تم تحسين أداء الاستعلامات التي تحتوي على مجموعات مُعرَّفة صراحةً في الطرف الأيمن من العامل
IN، وعلى قيم Tuple في الطرف الأيسر. يُصلح هذا تراجعًا في الأداء في الإصدار 20.3. #9740, #10385 (Anton Popov)
إصدار ClickHouse v20.3.7.46، 2020-04-17
إصلاح الأخطاء
- إصلاح الخطأ
Logical error: CROSS JOIN has expressionsفي الاستعلامات التي تمزج بين الفواصل وعمليات JOIN المُسمّاة. #10311 (Artem Zuikov). - إصلاح مشكلة الاستعلامات التي تستخدم
max_bytes_before_external_group_by. #10302 (Artem Zuikov). - إصلاح تحسين النقل إلى PREWHERE عند وجود دوال
arrayJoin(في بعض الحالات). ويعالج هذا #10092. #10195 (alexey-milovidov). - إضافة إمكانية تخفيف القيد المفروض على استخدام الدوال غير الحتمية في mutations باستخدام الإعداد
allow_nondeterministic_mutations. #10186 (filimonov).
إصدار ClickHouse v20.3.6.40، 2020-04-16
ميزة جديدة
- أُضيفت الدالة
isConstant. تتحقق هذه الدالة مما إذا كان وسيطها تعبيرًا ثابتًا، وتُرجع 1 أو 0. وهي مخصّصة لأغراض التطوير وتصحيح الأخطاء والعرض التوضيحي. #10198 (alexey-milovidov).
إصلاح الأخطاء
- إصلاح الخطأ
Pipeline stuckمعmax_rows_to_group_byوgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - إصلاح الاستثناء النادر المحتمل
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - إصلاح الخلل الذي كان يتسبب في أن يعرض ClickHouse رسالة الخطأ “Unknown function lambda.” عندما يحاول المستخدم تشغيل ALTER UPDATE/DELETE على الجداول ذات
ENGINE = Replicated*. وأصبح التحقق من الدوال غير الحتمية يتعامل الآن مع تعبيرات lambda بشكل صحيح. #10237 (Alexander Kazakov). - إصلاح الدالة “generateRandom” للنوع Date. ويعالج هذا #9973. كما يُصلح حالة حدّية عند إدراج تواريخ من السنة 2106 في جداول MergeTree ذات التقسيم القديم، بينما تُسمّى الأقسام باسم السنة 1970. #10218 (alexey-milovidov).
- تحويل الأنواع إذا لم يتوافق تعريف جدول View مع استعلام SELECT. ويعالج هذا #10180 و#10022. #10217 (alexey-milovidov).
- إصلاح
parseDateTimeBestEffortللسلاسل النصية بتنسيق RFC-2822 عندما يكون يوم الأسبوع الثلاثاء أو الخميس. ويعالج هذا #10082. #10214 (alexey-milovidov). - إصلاح أسماء الأعمدة الخاصة بالثوابت داخل JOIN التي قد تتعارض مع أسماء الثوابت خارج JOIN. #10207 (alexey-milovidov).
- إصلاح احتمال استمرار تنفيذ query إلى ما لا نهاية، رغم أنه يُفترض أن يتوقف عند LIMIT، عند القراءة من source لا نهائي مثل
system.numbersأوsystem.zeros. #10206 (Nikolai Kochetov). - إصلاح استخدام قاعدة البيانات الحالية للتحقق من الوصول عندما لا تكون قاعدة البيانات محددة. #10192 (Vitaly Baranov).
- تحويل blocks إذا لم تتطابق البنية عند INSERT إلى Distributed(). #10135 (Azat Khuzhin).
- إصلاح احتمال ظهور نتيجة غير صحيحة لـ extremes في processors pipeline. #10131 (Nikolai Kochetov).
- إصلاح بعض أنواع أوامر ALTER على compact parts. #10130 (Anton Popov).
- إصلاح التحقق غير الصحيح من
index_granularity_bytesأثناء إنشاء replica جديدة. ويعالج هذا #10098. #10121 (alesapin). - إصلاح SIGSEGV عند INSERT إلى distributed table عندما تختلف بنيتها عن بنية الجداول الأساسية. #10105 (Azat Khuzhin).
- إصلاح احتمال فقدان بعض الصفوف في الاستعلامات التي تحتوي على
JOINوUNION ALL. يعالج #9826، #10113. #10099 (Nikolai Kochetov). - إصلاح بدء تشغيل الجداول المُكرّرة عند التحديث من إصدار قديم من ClickHouse حيث لا تكون العقدة
/table/replicas/replica_name/metadataموجودة. يعالج #10037. #10095 (alesapin). - إضافة بعض عمليات التحقق من الوسيطات ودعم وسيطات المعرّفات لمحرك قاعدة بيانات MySQL. #10077 (Winter Zhang).
- إصلاح خلل في مصدر القاموس من ClickHouse server على localhost. قد يؤدي هذا الخلل إلى تلف الذاكرة إذا لم تكن الأنواع في القاموس والمصدر متوافقة. #10071 (alesapin).
- إصلاح خلل في استعلام
CHECK TABLEعندما يحتوي الجدول على فهارس تخطٍّ. #10068 (alesapin). - إصلاح الخطأ
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. كان ذلك يحدث عندما يكون الإعدادdistributed_aggregation_memory_efficientمفعّلًا، وكان الاستعلام الموزّع يقرأ بيانات مجمّعة بمستويات مختلفة من shards مختلفة (مزيج من التجميع أحادي المستوى وثنائي المستوى). #10063 (Nikolai Kochetov). - إصلاح خطأ segmentation fault كان قد يحدث في GROUP BY على مفاتيح String تحتوي على بايتات صفرية لاحقة (#8636، #8925). #10025 (Alexander Kuzmenkov).
- إصلاح عدد الخيوط المستخدمة لتنفيذ الاستعلامات البعيدة (تراجع في الأداء منذ 20.3). كان ذلك يحدث عندما يُنفَّذ الاستعلام من جدول
Distributedبالتزامن على shards المحلية والبعيدة. يعالج #9965. #9971 (Nikolai Kochetov). - إصلاح خلل كانت بسببه الجداول المطلوبة لا تُسترجع في إحدى مراحل معالجة الاستعلامات على بعض قواعد البيانات. يعالج #9699. #9949 (achulkov2).
- إصلاح الخطأ ‘Not found column in block’ عند ظهور
JOINمعTOTALS. يعالج #9839. #9939 (Artem Zuikov). - إصلاح خلل يؤدي إلى تجمّد استعلامات DDL مع
ON CLUSTERعند بدء تشغيل الخادم. #9927 (Gagan Arneja). - إصلاح تحليل عدة مضيفين محددين في الأمر CREATE USER، مثل
CREATE USER user6 HOST NAME REGEXP 'lo.?*host', NAME REGEXP 'lo*host'. #9924 (Vitaly Baranov). - إصلاح
TRUNCATEلمحرك الجدول Join (#9917). #9920 (Amos Bird). - إصلاح الخطأ “scalar does not exist” في أوامر ALTER (#9878). #9904 (Amos Bird).
- إصلاح حالة تسابق بين عمليتي drop و optimize في
ReplicatedMergeTree. #9901 (alesapin). - إصلاح الخطأ المتعلق بالأسماء المؤهلة في
distributed_product_mode='local'. يُصلح #4756. #9891 (Artem Zuikov). - إصلاح احتساب امتيازات دوال الاستبطان استنادًا إلى الإعداد ‘allow_introspection_functions’. #9840 (Vitaly Baranov).
تحسينات البناء/الاختبار/التغليف
- إصلاح اختبار التكامل
test_settings_constraints. #9962 (Vitaly Baranov). - أُزيلت التبعية إلى
clock_getres. #9833 (alexey-milovidov).
إصدار ClickHouse v20.3.5.21، 2020-03-27
إصلاح الأخطاء
- إصلاح الخطأ ‘Different expressions with the same alias’ عندما يحتوي الاستعلام على PREWHERE وWHERE على جدول موزّع مع
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - إصلاح الاستهلاك المفرط للذاكرة في عمليات mutation للجداول ذات المفتاح الأساسي المركّب. ويعالج هذا #9850. #9860 (alesapin).
- بالنسبة إلى استعلامات INSERT، أصبح الـ shard الآن يقيّد الإعدادات الواردة من الـ initiator وفقًا لقيود الـ shard بدلًا من إطلاق استثناء. ويتيح هذا الإصلاح إرسال استعلامات INSERT إلى shard ذي قيود مختلفة. كما يُحسّن هذا التغيير الإصلاح الوارد في #9447. #9852 (Vitaly Baranov).
- إصلاح الخطأ ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ في حالة وجود استعلامات فرعية تتضمن COMMA JOIN خارج قوائم الجداول (أي في WHERE). يعالج #9782. #9830 (Artem Zuikov).
- إصلاح استثناء محتمل
Got 0 in totals chunk, expected 1على الـ client. كان ذلك يحدث مع الاستعلامات التي تحتوي علىJOINإذا كان الجدول المنضم من الجهة اليمنى لا يحتوي على أي صفوف. Example:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. يعالج #9777. #9823 (Nikolai Kochetov). - إصلاح SIGSEGV مع optimize_skip_unused_shards عندما يتعذر تحويل النوع. #9804 (Azat Khuzhin).
- إصلاح استعلام
ALTER TABLE DELETE COLUMNالمعطّل مع compact parts. #9779 (alesapin). - إصلاح max_distributed_connections (مع وبدون Processors). #9673 (Azat Khuzhin).
- إصلاح بعض الحالات التي لم تُستخدم فيها المنطقة الزمنية الخاصة بـ argument الدالة على نحو صحيح. #9574 (Vasily Nemkov).
تحسين
- إزالة مرحلة ORDER BY من عمليات mutation لأننا نقرأ من part واحد مرتب ضمن خيط تنفيذ واحد. وإضافة تحقق أيضًا من أن ترتيب الصفوف في عملية mutation يكون وفق ترتيب مفتاح الفرز، وأن هذا الترتيب لا يُنتهك. #9886 (alesapin).
إصدار ClickHouse v20.3.4.10، 2020-03-20
إصلاح الأخطاء
- يحتوي هذا الإصدار أيضًا على جميع إصلاحات الأخطاء الواردة في 20.1.8.41
- إصلاح مشكلة غياب
rows_before_limit_at_leastفي queries عبر http (ضمن processors pipeline). يُصلح هذا #9730. #9757 (Nikolai Kochetov)
إصدار ClickHouse v20.3.3.6، بتاريخ 2020-03-17
إصلاح الأخطاء
- يحتوي هذا الإصدار أيضًا على جميع إصلاحات الأخطاء الواردة في 20.1.7.38
- إصلاح خلل في النسخ المتماثل كان يمنع عمله إذا كان المستخدم قد نفّذ mutations في الإصدار السابق. يُصلح هذا #9645. #9652 (alesapin). ويجعل هذا الإصدار 20.3 متوافقًا مع الإصدارات السابقة مجددًا.
- إضافة الإعداد
use_compact_format_in_distributed_parts_namesالذي يتيح كتابة ملفات استعلاماتINSERTإلى جدولDistributedبتنسيق أكثر إحكامًا. يُصلح هذا #9647. #9653 (alesapin). ويجعل هذا الإصدار 20.3 متوافقًا مع الإصدارات السابقة مجددًا.
إصدار ClickHouse v20.3.2.1، 2020-03-12
تغيير غير متوافق مع الإصدارات السابقة
- تم إصلاح مشكلة
file name too longعند إرسال البيانات إلى جداولDistributedعند وجود عدد كبير من النسخ المتماثلة. كما تم إصلاح مشكلة انكشاف بيانات اعتماد النسخ المتماثلة في سجل الخادم. وتغيّر تنسيق اسم الدليل على القرص إلى[shard{shard_index}[_replica{replica_index}]]. #8911 (Mikhail Korotov) بعد الترقية إلى الإصدار الجديد، لن تتمكن من الرجوع إلى إصدار أقدم دون تدخل يدوي، لأن إصدار الخادم الأقدم لا يتعرّف على تنسيق الدليل الجديد. وإذا أردت الرجوع إلى إصدار أقدم، فعليك إعادة تسمية الأدلة المقابلة يدويًا إلى التنسيق القديم. ولا ينطبق هذا التغيير إلا إذا كنت قد استخدمت عملياتINSERTغير المتزامنة إلى جداولDistributed. في الإصدار 20.3.3 سنضيف إعدادًا يتيح لك تفعيل التنسيق الجديد تدريجيًا. - تم تغيير تنسيق إدخالات سجل النسخ المتماثل لأوامر mutation. يجب الانتظار حتى تكتمل معالجة الـ mutations القديمة قبل تثبيت الإصدار الجديد.
- تم تنفيذ محلل بسيط للذاكرة يفرغ stacktraces إلى
system.trace_logكل N بايت فوق حد التخصيص المرن #8765 (Ivan) #9472 (alexey-milovidov) كما أُعيدت تسمية العمود فيsystem.trace_logمنtimer_typeإلىtrace_type. وسيتطلب ذلك إجراء تغييرات في أدوات الجهات الخارجية لتحليل الأداء ومعالجة flamegraph. - استخدام معرّف thread الخاص بنظام التشغيل في جميع المواضع بدلًا من الرقم الداخلي للـ thread. ويعالج هذا #7477 ولا يستطيع
clickhouse-clientالقديم استقبال السجلات التي يرسلها الخادم عند تفعيل الإعدادsend_logs_level، لأن أسماء وأنواع رسائل السجل المهيكلة قد تغيّرت. ومن ناحية أخرى، يمكن لإصدارات الخادم المختلفة أن ترسل سجلات بأنواع مختلفة إلى بعضها بعضًا. وإذا كنت لا تستخدم الإعدادsend_logs_level، فلا داعي للقلق بشأن ذلك. #8954 (alexey-milovidov) - إزالة الدالة
indexHint#9542 (alexey-milovidov) - إزالة الدالتين
findClusterIndexوfindClusterValue. ويعالج هذا #8641. إذا كنت تستخدم هاتين الدالتين، فأرسل رسالة بريد إلكتروني إلىclickhouse-feedback@yandex-team.com#9543 (alexey-milovidov) - لم يعد مسموحًا الآن بإنشاء أعمدة أو إضافة أعمدة يكون فيها الاستعلام الفرعي
SELECTتعبيرًا افتراضيًا. #9481 (alesapin) - أصبحت الأسماء المستعارة مطلوبة للاستعلامات الفرعية في JOIN. #9274 (Artem Zuikov)
- تم تحسين منطق استعلامات
ALTER MODIFY/ADD. الآن لا يمكنكADDعمودًا من دون نوع، كما أنMODIFYللتعبير الافتراضي لا يغيّر نوع العمود، وMODIFYللنوع لا يفقد قيمة التعبير الافتراضي. ويعالج هذا #8669. #9227 (alesapin) - أصبح من الضروري إعادة تشغيل الخادم لتطبيق التغييرات في إعدادات التسجيل. وهذا حل بديل مؤقت لتجنّب الخطأ الذي يجعل الخادم يسجّل في ملف سجل محذوف (انظر #8696). #8707 (Alexander Kuzmenkov)
- الإعداد
experimental_use_processorsمفعّل افتراضيًا. يتيح هذا الإعداد استخدام مسار تنفيذ الاستعلام الجديد. هذه إعادة هيكلة داخلية، ولا نتوقع أي تغييرات ملحوظة. إذا لاحظت أي مشكلات، فأعِد ضبطه إلى الصفر. #8768 (alexey-milovidov)
ميزة جديدة
- إضافة تنسيقات الإدخال/الإخراج
AvroوAvroConfluent#8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov) - تحديث المفاتيح منتهية الصلاحية في قواميس
cacheبأسلوب متعدد الخيوط وغير حاجب (مع إمكانية اختيارية لقراءة القيم القديمة). #8303 (Nikita Mikhaylov) - إضافة الاستعلام
ALTER ... MATERIALIZE TTL. يشغّل هذا عملية mutation تفرض إزالة البيانات منتهية الصلاحية وفق TTL، وتعيد حساب البيانات الوصفية الخاصة بـ TTL في جميع الأجزاء. #8775 (Anton Popov) - التبديل من HashJoin إلى MergeJoin (على القرص) عند الحاجة #9082 (Artem Zuikov)
- إضافة الأمر
MOVE PARTITIONإلىALTER TABLE#4729 #6168 (Guillaume Tassery) - إعادة تحميل إعدادات التخزين من ملف الإعدادات أثناء التشغيل. #8594 (Vladimir Chebotarev)
- السماح بتغيير
storage_policyإلى سياسة لا تقل ثراءً. #8107 (Vladimir Chebotarev) - إضافة دعم للأنماط العامة/أحرف البدل في تخزين S3 ودالة الجدول. #8851 (Vladimir Chebotarev)
- تنفيذ
bitAndوbitOrوbitXorوbitNotلنوع البياناتFixedString(N). #9091 (Guillaume Tassery) - إضافة الدالة
bitCount. ويُصلح هذا #8702. #8708 (alexey-milovidov) #8749 (ikopylov) - إضافة دالة الجدول
generateRandomلتوليد صفوف عشوائية وفق مخطط مُعطى. ويتيح ذلك تعبئة أي جدول اختبار بالبيانات. #8994 (Ilya Yatsishin) JSONEachRowFormat: دعم الحالة الخاصة التي تكون فيها الكائنات محاطة بمصفوفة على المستوى الأعلى. #8860 (Kruglov Pavel)- أصبح من الممكن الآن إنشاء عمود بتعبير
DEFAULTيعتمد على عمود ذي تعبيرALIASافتراضي. #9489 (alesapin) - السماح بتحديد
--limitبقيمة أكبر من حجم البيانات المصدرية فيclickhouse-obfuscator. وستتكرر البيانات نفسها مع بذرة عشوائية مختلفة. #9155 (alexey-milovidov) - إضافة الدالة
groupArraySample(المشابهة لـgroupArray) مع خوارزمية أخذ العينات بالخزان. #8286 (Amos Bird) - يمكنك الآن مراقبة حجم قائمة انتظار التحديث في قواميس
cache/complex_key_cacheعبر مقاييس النظام. #9413 (Nikita Mikhaylov) - إتاحة استخدام CRLF كفاصل أسطر في output format CSV عند ضبط الإعداد
output_format_csv_crlf_end_of_lineعلى 1 #8934 #8935 #8963 (Mikhail Korotov) - تنفيذ المزيد من الدوال في واجهة برمجة تطبيقات H3:
h3GetBaseCellوh3HexAreaM2وh3IndexesAreNeighborsوh3ToChildrenوh3ToStringوstringToH3#8938 (Nico Mandery) - تقديم إعداد جديد:
max_parser_depthللتحكم في الحد الأقصى لحجم المكدس والسماح بالاستعلامات الكبيرة والمعقدة. ويعالج هذا #6681 و#7668. #8647 (Maxim Smirnov) - إضافة إعداد
force_optimize_skip_unused_shardsلطرح استثناء إذا لم يكن تخطي الأجزاء غير المستخدمة ممكنًا #8805 (Azat Khuzhin) - إتاحة تهيئة عدة أقراص/وحدات تخزين لتخزين البيانات المُرسلة في المحرك
Distributed#8756 (Azat Khuzhin) - دعم سياسة التخزين (
<tmp_policy>) لتخزين البيانات المؤقتة. #8750 (Azat Khuzhin) - تمت إضافة HTTP header
X-ClickHouse-Exception-Code، ويُضبط إذا طُرح استثناء قبل إرسال البيانات. ويحقق هذا #4971. #8786 (Mikhail Korotov) - تمت إضافة الدالة
ifNotFinite. وهي مجرد اختصار نحوي:ifNotFinite(x, y) = isFinite(x) ? x : y. #8710 (alexey-milovidov) - تمت إضافة العمود
last_successful_update_timeإلى جدولsystem.dictionaries#9394 (Nikita Mikhaylov) - إضافة الدالة
blockSerializedSize(الحجم على القرص دون Compression) #8952 (Azat Khuzhin) - إضافة الدالة
moduloOrZero#9358 (hcz) - تمت إضافة system tables
system.zerosوsystem.zeros_mt، بالإضافة إلى table functions zeros()وzeros_mt(). تحتوي الجداول (ودوال الجداول) على عمود واحد باسمzeroونوعهUInt8. ويحتوي هذا العمود على أصفار. وهذا مطلوب لأغراض الاختبار باعتباره أسرع طريقة لتوليد عدد كبير من الصفوف. ويعالج هذا #6604 #9593 (Nikolai Kochetov)
ميزة تجريبية
- أُضيف تنسيق compact جديد للأجزاء في جداول عائلة
MergeTree، حيث تُخزَّن جميع الأعمدة في ملف واحد. يساعد ذلك على تحسين أداء عمليات الإدراج الصغيرة والمتكررة. أما التنسيق القديم (ملف واحد لكل عمود) فأصبح يُسمّى الآن wide. ويتحكم الإعدادانmin_bytes_for_wide_partوmin_rows_for_wide_partفي تنسيق تخزين البيانات. #8290 (Anton Popov) - دعم S3 storage لجداول
LogوTinyLogوStripeLog. #8862 (Pavel Kovalenko)
إصلاح الأخطاء
- تم إصلاح عدم اتساق المسافات البيضاء في رسائل السجل. #9322 (alexey-milovidov)
- تم إصلاح خطأ كانت فيه Arrays من Tuples غير المسماة تُحوَّل إلى بُنى Nested عند إنشاء الجدول. #8866 (achulkov2)
- تم إصلاح مشكلة قد تؤدي إلى ظهور الخطأ “Too many open files” إذا وُجد عدد كبير جدًا من الملفات المطابقة لـ glob pattern في جدول
Fileأو table function file. أصبحت الملفات الآن تُفتح بشكل كسول. وهذا يُصلح #8857 #8861 (alexey-milovidov) - أصبح DROP TEMPORARY TABLE الآن يحذف temporary table فقط. #8907 (Vitaly Baranov)
- إزالة partition القديمة عند إيقاف الخادم أو تنفيذ DETACH/ATTACH على جدول. #8602 (Guillaume Tassery)
- بالنسبة إلى كيفية احتساب disk الافتراضي للمساحة الحرة من الدليل الفرعي
data، تم إصلاح المشكلة التي لا يُحتسب فيها مقدار المساحة الحرة بشكل صحيح إذا كان الدليلdataمربوطًا بجهاز منفصل (وهي حالة نادرة). وهذا يُصلح #7441 #9257 (Mikhail Korotov) - السماح باستخدام join بالفاصلة (التقاطعي) مع IN () بداخله. #9251 (Artem Zuikov)
- السماح بإعادة كتابة CROSS إلى INNER JOIN إذا وُجد العامل [NOT] LIKE في قسم WHERE. #9229 (Artem Zuikov)
- تم إصلاح احتمال ظهور نتيجة غير صحيحة بعد
GROUP BYمع تفعيل الإعدادdistributed_aggregation_memory_efficient. يُصلح هذا #9134. #9289 (Nikolai Kochetov) - كانت المفاتيح التي جرى العثور عليها تُحتسب على أنها مفقودة في مقاييس قواميس cache. #9411 (Nikita Mikhaylov)
- تم إصلاح عدم توافق في بروتوكول replication أُدخل في #8598. #9412 (alesapin)
- تم إصلاح race condition في
queue_task_handleعند بدء تشغيل جداولReplicatedMergeTree. #9552 (alexey-milovidov) - لم يكن الرمز
NOTيعمل في الاستعلامSHOW TABLES NOT LIKE#8727 #8940 (alexey-milovidov) - أُضيف فحص للنطاق إلى الدالة
h3EdgeLengthM. ومن دون هذا الفحص، قد يحدث تجاوز في سعة buffer. #8945 (alexey-milovidov) - تم إصلاح خطأ في الحسابات المجمّعة على دفعات للعمليات المنطقية الثلاثية على عدة معاملات (أكثر من 10). #8718 (Alexander Kazakov)
- إصلاح خطأ في PREWHERE optimization كان يمكن أن يؤدي إلى حدوث segfaults أو الاستثناء
Inconsistent number of columns got from MergeTreeRangeReader. #9024 (Anton Popov) - إصلاح الاستثناء غير المتوقع
Timeout exceeded while reading from socket، الذي كان يحدث عشوائيًا على اتصال آمن قبل تجاوز المهلة فعليًا وعند تمكين query profiler. كما أُضيف الإعدادconnect_timeout_with_failover_secure_ms(القيمة الافتراضية 100ms)، وهو مشابه لـconnect_timeout_with_failover_ms، لكنه يُستخدم للاتصالات الآمنة (لأن SSL handshake أبطأ من اتصال TCP العادي) #9026 (tavplubix) - إصلاح خلل في إنهاء mutations، إذ قد تظل mutation عالقة في حالة تكون فيها
parts_to_do=0وis_done=0. #9022 (alesapin) - استخدام منطق ANY JOIN الجديد مع الإعداد
partial_merge_join. أصبح من الممكن الآن إجراء joins من النوعANY|ALL|SEMI LEFTوALL INNERمعpartial_merge_join=1. #8932 (Artem Zuikov) - أصبح Shard الآن يقيّد الإعدادات الواردة من initiator وفقًا لقيود shard، بدلًا من طرح استثناء. يتيح هذا الإصلاح إرسال queries إلى shard ذي قيود مختلفة. #9447 (Vitaly Baranov)
- إصلاح مشكلة في إدارة الذاكرة في
MergeTreeReadPool. #8791 (Vladimir Chebotarev) - إصلاح family الدوال
toDecimal*OrNull()عند استدعائها بالسلسلةe. يُصلح هذا #8312 #8764 (Artem Zuikov) - التأكد من أن
FORMAT Nullلا يرسل أي بيانات إلى client. #8767 (Alexander Kuzmenkov) - إصلاح خلل كان يمنع تحديث timestamp في
LiveViewBlockInputStream. إنLIVE VIEWميزة تجريبية. #8644 (vxider) #8625 (vxider) - إصلاح السلوك غير الصحيح لـ
ALTER MODIFY TTLالذي لم يكن يسمح بحذف تعبيرات TTL القديمة. #8422 (Vladimir Chebotarev) - إصلاح تقرير UBSan في MergeTreeIndexSet. يُصلح هذا #9250 #9365 (alexey-milovidov)
- إصلاح سلوك الدالتين
matchوextractعندما يحتوي haystack على بايتات صفرية. كان السلوك غير صحيح عندما كان haystack ثابتًا. يُصلح هذا #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) - تجنب طرح استثناء من destructor في مكتبة Apache Avro التابعة لجهة خارجية. #9066 (Andrew Onyshchuk)
- لا تُثبِّت دفعةً جرى سحبها من
Kafkaجزئيًا، لأن ذلك قد يؤدي إلى حدوث فجوات في البيانات. #8876 (filimonov) - إصلاح
joinGetمع أنواع الإرجاعNullable. #8919 #9014 (Amos Bird) - إصلاح عدم توافق البيانات عند ضغطها باستخدام codec
T64. #9016 (Artem Zuikov) وإصلاح معرّفات أنواع البيانات في compression codec T64التي تؤدي إلى ضغط/فك ضغط غير صحيحين في الإصدارات المتأثرة. #9033 (Artem Zuikov) - إضافة الإعداد
enable_early_constant_foldingوتعطيله في بعض الحالات التي تؤدي إلى أخطاء. #9010 (Artem Zuikov) - إصلاح مُحسِّن pushdown predicate مع VIEW، وتفعيل الاختبار. #9011 (Winter Zhang)
- إصلاح segfault في جداول
Merge، والذي قد يحدث عند القراءة من وحدات التخزينFile. #9387 (tavplubix) - إضافة تحقق من storage policy في
ATTACH PARTITION FROMوREPLACE PARTITIONوMOVE TO TABLE. وإلا فقد يجعل ذلك بيانات الجزء غير قابلة للوصول بعد إعادة التشغيل ويمنع ClickHouse من البدء. #9383 (Vladimir Chebotarev) - إصلاح أوامر ALTER إذا كان قد تم تعيين TTL للجدول. #8800 (Anton Popov)
- إصلاح حالة تسابق قد تحدث عند تنفيذ
SYSTEM RELOAD ALL DICTIONARIESبينما يجري تعديل بعض Dictionary أو إضافته أو إزالته. #8801 (Vitaly Baranov) - في الإصدارات السابقة، كان محرّك قاعدة البيانات
Memoryيستخدم data path فارغًا، لذا كانت الجداول تُنشأ في الدليلpath(مثل/var/lib/clickhouse/) وليس في دليل بيانات قاعدة البيانات (مثل/var/lib/clickhouse/db_name). #8753 (tavplubix) - إصلاح رسائل السجل الخاطئة بشأن غياب القرص الافتراضي أو السياسة. #9530 (Vladimir Chebotarev)
- إصلاح
not(has())لمؤشرbloom_filterلأنواعArray. #9407 (achimbab) - السماح بأن يكون العمود الأول، أو الأعمدة الأولى، في جدول ذي محرّك
Logاسمًا مستعارًا. #9231 (Ivan) - إصلاح ترتيب النطاقات أثناء القراءة من جدول
MergeTreeفي خيط واحد. وقد يؤدي ذلك إلى استثناءات منMergeTreeRangeReaderأو إلى نتائج استعلام خاطئة. #9050 (Anton Popov) - جعل
reinterpretAsFixedStringيعيدFixedStringبدلًا منString. #9052 (Andrew Onyshchuk) - تجنّب الحالات النادرة جدًا التي قد يتلقى فيها المستخدم رسالة خطأ غير صحيحة (
Successبدلًا من وصف تفصيلي للخطأ). #9457 (alexey-milovidov) - عدم حدوث تعطل عند استخدام format
Templateمع قالب صف فارغ. #8785 (Alexander Kuzmenkov) - كان من الممكن إنشاء ملفات metadata الخاصة بجداول النظام في موضع غير صحيح #8653 (tavplubix)، ويُصلح هذا #8581.
- إصلاح حالة data race على exception_ptr في Dictionary من نوع cache #8303. #9379 (Nikita Mikhaylov)
- عدم إطلاق استثناء للاستعلام
ATTACH TABLE IF NOT EXISTS. سابقًا، كان يُطلَق إذا كان الجدول موجودًا بالفعل، رغم وجود العبارةIF NOT EXISTS. #8967 (Anton Popov) - إصلاح القوس الختامي المفقود في رسالة الاستثناء. #8811 (alexey-milovidov)
- تجنّب ظهور الرسالة
Possible deadlock avoidedعند بدء تشغيل clickhouse-client في interactive mode. #9455 (alexey-milovidov) - إصلاح المشكلة التي قد يصبح فيها padding في نهاية القيمة المشفرة بـ base64 غير صحيح. تم تحديث مكتبة base64. ويُصلح هذا #9491، ويغلق #9492 #9500 (alexey-milovidov)
- منع فقدان البيانات في
Kafkaفي حالات نادرة عند حدوث استثناء بعد قراءة suffix وقبل commit. ويُصلح هذا #9378 #9507 (filimonov) - إصلاح استثناء في
DROP TABLE IF EXISTS#8663 (Nikita Vasilev) - إصلاح تعطل عند محاولة المستخدم تنفيذ
ALTER MODIFY SETTINGلعائلة table engines MergeTreeبالتنسيق القديم. #9435 (alesapin) - دعم أعداد UInt64 التي لا تتسع ضمن Int64 في الدوال المرتبطة بـ JSON. تم تحديث SIMDJSON إلى الفرع الرئيسي. ويُصلح هذا #9209 #9344 (alexey-milovidov)
- إصلاح تنفيذ predicates المعكوسة عند استخدام functional index غير رتيب بشكل صارم. #9223 (Alexander Kazakov)
- عدم محاولة طي الثابت
INفيGROUP BY#8868 (Amos Bird) - إصلاح خطأ في طفرات
ALTER DELETEكان يؤدي إلى تلف الفهرس. يُصلح هذا #9019 و#8982. بالإضافة إلى ذلك، تم إصلاح حالات تسابق نادرة للغاية في استعلاماتALTERالخاصة بـReplicatedMergeTree. #9048 (alesapin) - عندما يكون الإعداد
compile_expressionsمُمكّنًا، قد تظهر الرسالةunexpected columnفيLLVMExecutableFunctionعند استخدام النوعNullable#8910 (Guillaume Tassery) - عدة إصلاحات لمحرك
Kafka: 1) إصلاح التكرارات التي كانت تظهر أثناء إعادة موازنة مجموعة المستهلكين. 2) إصلاح ‘holes’ نادرة كانت تظهر عند استطلاع البيانات من عدة partitions في عملية poll واحدة ثم تنفيذ commit لها جزئيًا (والآن نعالج دائمًا كتلة الرسائل المستطلعة بالكامل وننفّذ لها commit بالكامل). 3) إصلاح عمليات التفريغ بحسب حجم الكتلة (قبل ذلك، كان التفريغ بحسب timeout فقط يعمل بشكل صحيح). 4) تحسين إجراء subscription (مع تغذية راجعة للتعيين). 5) تسريع عمل الاختبارات (باستخدام intervals وtimeouts الافتراضية). ونظرًا لأن البيانات لم تكن تُفرَّغ سابقًا بحسب حجم الكتلة (كما يفترض وفقًا للتوثيق)، فقد يؤدي هذا الطلب المدمج إلى بعض التراجع في الأداء مع الإعدادات الافتراضية (بسبب زيادة عدد عمليات التفريغ وصِغر حجمها، ما يجعلها أقل كفاءة). إذا واجهت مشكلة في الأداء بعد هذا التغيير، فيُرجى زيادة قيمةkafka_max_block_sizeفي الجدول (على سبيل المثالCREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). يُصلح #7259 #8917 (filimonov) - إصلاح الاستثناء
Parameter out of boundفي بعض الاستعلامات بعد تحسينات PREWHERE. #8914 (Baudouin Giard) - إصلاح حالة اختلاط الوسيطات الثابتة وغير الثابتة في الدالة
arrayZip. #8705 (alexey-milovidov) - عند تنفيذ استعلام
CREATE، تُطوى expressions الثابتة في وسيطات محرك التخزين. كما يُستبدل اسم قاعدة البيانات الفارغ بقاعدة البيانات الحالية. يُصلح #6508، #3492 #9262 (tavplubix) - لم يعد من الممكن الآن إنشاء أعمدة أو إضافتها باستخدام aliases دورية بسيطة مثل
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - إصلاح خطأ في النقل المزدوج قد يؤدي إلى إتلاف part الأصلية. وهذا مهم إذا كنت تستخدم
ALTER TABLE MOVE#8680 (Vladimir Chebotarev) - السماح للمُعرّف
intervalبأن يُحلَّل بشكل صحيح من دون backticks. كما تم إصلاح مشكلة كانت تمنع تنفيذ query حتى إذا كان المعرّفintervalمحاطًا بـ backticks أو بعلامات اقتباس مزدوجة. يُصلح هذا #9124. #9142 (alexey-milovidov) - إصلاح اختبار fuzz والسلوك غير الصحيح للدالتين
bitTestAll/bitTestAny. #9143 (alexey-milovidov) - إصلاح احتمال حدوث انهيار أو ظهور عدد غير صحيح من الصفوف في
LIMIT n WITH TIESعندما يكون هناك عدد كبير من الصفوف المساوية للصف رقم n. #9464 (tavplubix) - إصلاح
mutationsفيpartsالمكتوبة مع تفعيلinsert_quorum. #9463 (alesapin) - إصلاح
data raceعند تدميرPoco::HTTPServer. كان هذا قد يحدث عند تشغيل الخادم ثم إيقافه فورًا. #9468 (Anton Popov) - إصلاح خطأ كان يؤدي إلى عرض رسالة خطأ مضللة عند تنفيذ
SHOW CREATE TABLE a_table_that_does_not_exist. #8899 (achulkov2) - إصلاح الاستثناء
Parameters are out of boundفي بعض الحالات النادرة عند وجود ثابت في عبارةSELECTمع عبارتيORDER BYوLIMIT. #8892 (Guillaume Tassery) - إصلاح استكمال
mutations، إذ قد تكونmutationالمكتملة بالفعل تحمل الحالةis_done=0. #9217 (alesapin) - منع تنفيذ
ALTER ADD INDEXعلى جداول MergeTree ذات الصياغة القديمة لأنه لا يعمل. #8822 (Mikhail Korotov) - أثناء بدء تشغيل الخادم، لا يتم الوصول إلى الجدول الذي تعتمد عليه
LIVE VIEW، بحيث يتمكن الخادم من البدء. كما أُزيلت تبعياتLIVE VIEWعند تنفيذdetachلـLIVE VIEW. إنLIVE VIEWميزة تجريبية. #8824 (tavplubix) - إصلاح احتمال حدوث
segfaultفيMergeTreeRangeReaderأثناء تنفيذPREWHERE. #9106 (Anton Popov) - إصلاح احتمال عدم تطابق
checksumsمعcolumn TTLs. #9451 (Anton Popov) - إصلاح خطأ كان يمنع نقل
partsفي الخلفية بواسطة قواعد TTL عندما لا يوجد سوىvolumeواحد. #8672 (Vladimir Chebotarev) - إصلاح المشكلة
Method createColumn() is not implemented for data type Set. وهذا يصلح #7799. #8674 (alexey-milovidov) - سنحاول الآن استكمال
mutationsبوتيرة أعلى. #9427 (alesapin) - إصلاح
intDivمع ثابت قيمته سالب واحد. #9351 (hcz) - إصلاح احتمال حدوث
race conditionفيBlockIO. #9356 (Nikolai Kochetov) - إصلاح خطأ كان يؤدي إلى توقف الخادم عند محاولة استخدام / حذف جدول
Kafkaأُنشئ بمعلمات غير صحيحة. #9513 (filimonov) - إضافة حل بديل إذا أعاد نظام التشغيل نتيجة غير صحيحة للدالة
timer_create. #8837 (alexey-milovidov) - إصلاح خطأ في استخدام المعامل
min_marks_for_seek. وإصلاح رسالة الخطأ عند عدم وجودsharding keyفي جدول Distributed ومحاولة تخطيshardsغير المستخدمة. #8908 (Azat Khuzhin)
تحسين
- تنفيذ استعلامات
ALTER MODIFY/DROPبالاستناد إلى mutations في عائلة المحركاتReplicatedMergeTree*. الآن لا تؤديALTERSإلى الحظر إلا في مرحلة تحديث metadata، ولا تعود تحظر بعد ذلك. #8701 (alesapin) - إضافة إمكانية إعادة كتابة CROSS إلى INNER JOINs مع قسم
WHEREيحتوي على أسماء غير مؤهلة. #9512 (Artem Zuikov) - جعل استعلامات
SHOW TABLESوSHOW DATABASESتدعم تعبيراتWHEREوFROM/IN#9076 (sundyli) - إضافة الإعداد
deduplicate_blocks_in_dependent_materialized_views. #9070 (urykhy) - بعد التغييرات الأخيرة، بدأ عميل MySQL في طباعة السلاسل الثنائية بصيغة hex، مما جعلها غير قابلة للقراءة (#9032). يتمثل الحل البديل في ClickHouse في وسم أعمدة السلاسل النصية على أنها UTF-8، وهذا ليس صحيحًا دائمًا، لكنه يكون كذلك في معظم الحالات. #9079 (Yuriy Baranov)
- إضافة دعم للمفاتيح من نوع String و FixedString في
sumMap#8903 (Baudouin Giard) - دعم مفاتيح السلاسل النصية في خرائط SummingMergeTree #8933 (Baudouin Giard)
- إرسال إشارة إنهاء thread إلى thread pool حتى إذا كان thread قد طرح استثناءً #8736 (Ding Xiang Fei)
- السماح بتعيين
query_idفيclickhouse-benchmark#9416 (Anton Popov) - عدم السماح بتعبيرات غريبة في الاستعلام
ALTER TABLE ... PARTITION partition. يعالج هذا #7192 #8835 (alexey-milovidov) - يوفّر الجدول
system.table_enginesالآن معلومات حول دعم الميزات (مثلsupports_ttlأوsupports_sort_order). #8830 (Max Akhmedov) - تفعيل
system.metric_logافتراضيًا. سيحتوي على صفوف تتضمن قيم ProfileEvents و CurrentMetrics المُجمّعة بفاصل “collect_interval_milliseconds” (ثانية واحدة افتراضيًا). الجدول صغير جدًا (عادةً في حدود بضعة ميغابايت)، ومن المنطقي جمع هذه البيانات افتراضيًا. #9225 (alexey-milovidov) - تهيئة query profiler لجميع threads في مجموعة، ما يتيح مثلًا إجراء توصيف كامل لاستعلامات الإدراج. إصلاح #6964 #8874 (Ivan)
- الآن يُنشأ
LIVE VIEWالمؤقت باستخدامCREATE LIVE VIEW name WITH TIMEOUT [42] ...بدلًا منCREATE TEMPORARY LIVE VIEW ...، لأن الصياغة السابقة لم تكن متسقة معCREATE TEMPORARY TABLE ...#9131 (tavplubix) - إضافة مَعلمة الإعداد text_log.level لتقييد الإدخالات التي تذهب إلى جدول
system.text_log#8809 (Azat Khuzhin) - السماح بوضع الجزء الذي تم تنزيله على الأقراص/وحدات التخزين وفقًا لقواعد TTL #8598 (Vladimir Chebotarev)
- بالنسبة إلى Dictionaries الخارجية في MySQL، أصبح من الممكن مشاركة connection pool الخاصة بـ MySQL فيما بينها. يقلل هذا الخيار بشكل كبير عدد الاتصالات بخوادم MySQL. #9409 (Clément Rodriguez)
- عرض أقرب وقت فعلي لتنفيذ الاستعلام بالنسبة إلى quantiles في خرج
clickhouse-benchmarkبدلًا من القيم المستوفاة. من الأفضل عرض قيم تتوافق مع وقت تنفيذ بعض queries. #8712 (alexey-milovidov) - إمكانية إضافة مفتاح وtimestamp للرسالة عند insert البيانات إلى Kafka. يُصلح #7198 #8969 (filimonov)
- إذا كان server يعمل من الطرفية، فسيتم تمييز رقم thread وQuery id وأولوية السجل بالألوان. يهدف ذلك إلى تحسين قابلية قراءة log messages المترابطة للمطورين. #8961 (alexey-milovidov)
- تحسين رسالة Exception أثناء loading الجداول لقاعدة البيانات
Ordinary. #9527 (alexey-milovidov) - تنفيذ
arraySliceللمصفوفات التي تحتوي على حالات الدوال التجميعية. يُصلح هذا #9388 #9391 (alexey-milovidov) - السماح باستخدام الدوال الثابتة والمصفوفات الثابتة على الجانب الأيمن من المعامل IN. #8813 (Anton Popov)
- إذا حدث Exception من ZooKeeper أثناء fetch البيانات لـ system.replicas، فاعرضه في عمود منفصل. يحقق هذا #9137 #9138 (alexey-milovidov)
- إزالة data parts الخاصة بـ MergeTree بصورة ذرية عند التدمير. #8402 (Vladimir Chebotarev)
- دعم الأمان على مستوى الصفوف لـ Distributed tables. #8926 (Ivan)
- أصبحنا الآن نتعرف على suffix (مثل KB وKiB…) في قيم الإعدادات. #8072 (Mikhail Korotov)
- منع نفاد الذاكرة أثناء إنشاء نتيجة JOIN كبيرة. #8637 (Artem Zuikov)
- أُضيفت أسماء clusters إلى الاقتراحات في interactive mode في
clickhouse-client. #8709 (alexey-milovidov) - تهيئة query profiler لجميع threads في المجموعة، ما يتيح مثلًا إجراء profiling كامل لاستعلامات insert #8820 (Ivan)
- تمت إضافة العمود
exception_codeإلى جدولsystem.query_log. #8770 (Mikhail Korotov) - تم تمكين خادم التوافق مع MySQL على المنفذ
9004في ملف إعدادات الخادم الافتراضي. كما تم إصلاح أمر إنشاء كلمة المرور في المثال ضمن الإعدادات. #8771 (Yuriy Baranov) - منع الإيقاف القسري عند إيقاف التشغيل إذا كان نظام الملفات للقراءة فقط. يُصلح هذا #9094 #9100 (alexey-milovidov)
- تحسين رسالة الاستثناء عندما يكون الطول مطلوبًا في استعلام HTTP POST. #9453 (alexey-milovidov)
- إضافة الأعمدة الظاهرية
_pathو_fileإلى المحركينHDFSوFileوإلى دوال الجداولhdfsوfile#8489 (Olga Khvostikova) - إصلاح الخطأ
Cannot find columnأثناء الإدراج فيMATERIALIZED VIEWإذا أُضيف عمود جديد إلى الجدول الداخلي للعرض. #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov) - إصلاح معلومات التقدم عبر بروتوكول العميل-الخادم الأصلي، وذلك بإرسال التقدم بعد التحديث النهائي (مثل السجلات). قد يكون هذا مهمًا فقط لبعض الأدوات الخارجية التي تستخدم البروتوكول الأصلي. #9495 (Azat Khuzhin)
- إضافة مقياس نظام يتتبع عدد اتصالات العملاء التي تستخدم بروتوكول MySQL (#9013). #9015 (Eugene Klimov)
- من الآن فصاعدًا، ستحتوي استجابات HTTP على ترويسة
X-ClickHouse-Timezoneمضبوطة على قيمة المنطقة الزمنية نفسها التي تُرجعهاSELECT timezone(). #9493 (Denis Glazachev)
تحسين الأداء
- تحسين أداء تحليل الفهرس مع IN #9261 (Anton Popov)
- كود أبسط وأكثر كفاءة في Logical Functions، مع بعض عمليات تنظيف الكود. متابعة لـ #8718 #8728 (Alexander Kazakov)
- تحسين عام في الأداء (ضمن نطاق 5%..200% للاستعلامات المتأثرة) من خلال فرض aliasing أكثر صرامة باستخدام ميزات C++20. #9304 (Amos Bird)
- فرض aliasing أكثر صرامة على الحلقات الداخلية في دوال المقارنة. #9327 (alexey-milovidov)
- فرض aliasing أكثر صرامة على الحلقات الداخلية في الدوال الحسابية. #9325 (alexey-milovidov)
- تنفيذ أسرع بنحو 3 مرات لـ
ColumnVector::replicate()، والذي يُنفَّذ عبرهColumnConst::convertToFullColumn(). وسيكون مفيدًا أيضًا في الاختبارات عند تجسيد الثوابت. #9293 (Alexander Kazakov) - تحسين طفيف إضافي في الأداء لـ
ColumnVector::replicate()(يؤدي هذا إلى تسريع الدالةmaterializeوالدوال عالية الرتبة)، وهو تحسين إضافي على #9293 #9442 (Alexander Kazakov) - تحسين أداء الدالة التجميعية
stochasticLinearRegression. هذه الرقعة مقدمة من Intel. #8652 (alexey-milovidov) - تحسين أداء الدالة
reinterpretAsFixedString. #9342 (alexey-milovidov) - عدم إرسال كتل البيانات إلى العميل لتنسيق
Nullفي مسار processors. #8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)
تحسينات البناء/الاختبار/التغليف
- تعمل معالجة الاستثناءات الآن على نحو صحيح في Windows Subsystem for Linux. انظر https://github.com/ClickHouse-Extras/libunwind/pull/3 يحلّ هذا المشكلة #6480 #9564 (sobolevsv)
- استبدال
readlineبـreplxxلتحرير الأسطر التفاعلي فيclickhouse-client#8416 (Ivan) - تحسين وقت البناء وتقليل عدد إنشاءات القوالب في FunctionsComparison. #9324 (alexey-milovidov)
- أُضيف تكامل مع
clang-tidyفي CI. انظر أيضًا #6044 #9566 (alexey-milovidov) - نربط ClickHouse الآن في CI باستخدام
lldحتى معgcc. #9049 (alesapin) - السماح بعشوائية جدولة الخيوط وإدخال تشويشات عند ضبط متغيرات البيئة
THREAD_FUZZER_*. يساعد هذا في الاختبار. #9459 (alexey-milovidov) - تفعيل المقابس الآمنة في الاختبارات عديمة الحالة #9288 (tavplubix)
- جعل SPLIT_SHARED_LIBRARIES=OFF أكثر متانة #9156 (Azat Khuzhin)
- جعل الاختبار “performance_introspection_and_logging” أكثر موثوقية في مواجهة تعلّق server بشكل عشوائي. قد يحدث هذا في بيئة CI. انظر أيضًا #9515 #9528 (alexey-milovidov)
- التحقق من XML في Style check. #9550 (alexey-milovidov)
- إصلاح حالة تسابق في الاختبار
00738_lock_for_inner_table. كان هذا الاختبار يعتمد على sleep. #9555 (alexey-milovidov) - إزالة اختبارات الأداء من النوع
once. هذا مطلوب لتشغيل جميع اختبارات الأداء في وضع المقارنة الإحصائية (وهو أكثر موثوقية). #9557 (alexey-milovidov) - أُضيف اختبار أداء للدوال الحسابية. #9326 (alexey-milovidov)
- أُضيف اختبار أداء للدالتين التجميعيتين
sumMapوsumMapWithOverflow. استكمالًا لـ #8933 #8947 (alexey-milovidov) - التحقق من نمط ErrorCodes بواسطة Style check. #9370 (alexey-milovidov)
- إضافة نص برمجي لسجل الاختبارات. #8796 (alesapin)
- أُضيف تحذير GCC
-Wsuggest-overrideلتحديد جميع المواضع التي يجب فيها استخدام الكلمة المفتاحيةoverrideوإصلاحها. #8760 (kreuzerkrieg) - تجاهل الرمز الضعيف في Mac OS X لأنه يجب أن يكون معرّفًا. #9538 (Deleted user)
- توحيد زمن تشغيل بعض الاستعلامات في اختبارات الأداء. وقد أُنجز ذلك تمهيدًا لتشغيل جميع اختبارات الأداء في وضع المقارنة. #9565 (alexey-milovidov)
- إصلاح بعض الاختبارات لدعم pytest مع اختبارات الاستعلامات. #9062 (Ivan)
- تفعيل SSL في البناء باستخدام MSan، حتى لا يفشل الخادم عند بدء التشغيل أثناء تشغيل الاختبارات عديمة الحالة. #9531 (tavplubix)
- إصلاح استبدال قاعدة البيانات في نتائج الاختبارات. #9384 (Ilya Yatsishin)
- إصلاحات في البناء لمنصات متنوعة. #9381 (proller) #8755 (proller) #8631 (proller)
- أُضيف قسم disks إلى Docker image الخاصة باختبار stateless-with-coverage. #9213 (Pavel Kovalenko)
- التخلّص من الملفات الموجودة داخل شجرة المصدر عند البناء باستخدام GRPC. #9588 (Amos Bird)
- تسريع طفيف لوقت البناء عبر إزالة SessionCleaner من Context، مع تبسيط شيفرة SessionCleaner. #9232 (alexey-milovidov)
- تحديث آلية التحقق من الاستعلامات المعلّقة في سكربت clickhouse-test. #8858 (Alexander Kazakov)
- إزالة بعض الملفات غير المفيدة من المستودع. #8843 (alexey-milovidov)
- تغيير نوع اختبارات أداء العمليات الرياضية من
onceإلىloop. #8783 (Nikolai Kochetov) - إضافة Docker image تتيح إنشاء تقرير HTML تفاعلي لمتصفح الشيفرة الخاصة بقاعدة الشيفرة لدينا. #8781 (alesapin) راجع Woboq Code Browser
- كتم بعض حالات فشل الاختبارات في MSan. #8780 (Alexander Kuzmenkov)
- تسريع اختبار “استثناء أثناء الإدراج”. وكثيرًا ما تنتهي مهلة هذا الاختبار في بناء debug-with-coverage. #8711 (alexey-milovidov)
- تحديث
libcxxوlibcxxabiإلى master، تمهيدًا لـ #9304 #9308 (alexey-milovidov) - إصلاح الاختبار غير المستقر
00910_zookeeper_test_alter_compression_codecs. #9525 (alexey-milovidov) - تنظيف علامات الرابط المكررة، والتأكد من أن الرابط لن يبحث عن رمز غير متوقع. #9433 (Amos Bird)
- إضافة برنامج التشغيل
clickhouse-odbcإلى صور الاختبار. يتيح ذلك اختبار تفاعل ClickHouse مع ClickHouse عبر ODBC Driver الخاص به. #9348 (filimonov) - إصلاح عدة أخطاء في اختبارات الوحدة. #9047 (alesapin)
- تفعيل تحذير GCC
-Wmissing-include-dirsللتخلص من جميع ملفات التضمين غير الموجودة، ومعظمها ناتج عن أخطاء في سكربتات CMake #8704 (kreuzerkrieg) - توضيح أسباب تعذر عمل query profiler. وهذا مخصص لـ #9049 #9144 (alexey-milovidov)
- تحديث OpenSSL إلى فرع master في upstream. أُصلحت المشكلة التي قد تتسبب في فشل اتصالات TLS مع ظهور الرسالة
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal errorوSSL Exception: error:2400006E:random number generator::error retrieving entropy. كانت هذه المشكلة موجودة في الإصدار 20.1. #8956 (alexey-milovidov) - تحديث Dockerfile الخاص بالخادم #8893 (Ilya Mazaev)
- إصلاحات طفيفة في سكربت build-gcc-from-sources #8774 (Michael Nacharov)
- استبدال
numbersبـzerosفي اختبارات الأداء حيث لا يُستخدم العمودnumber. سيؤدي ذلك إلى نتائج اختبار أنظف. #9600 (Nikolai Kochetov) - إصلاح مشكلة تجاوز سعة المكدس عند استخدام initializer_list في بانيات Column. #9367 (Deleted user)
- ترقية librdkafka إلى v1.3.0، وتفعيل مكتبتي
rdkafkaوgsaslالمضمّنتين على Mac OS X. #9000 (Andrew Onyshchuk) - إصلاح build على GCC 9.2.0 #9306 (vxider)
إصدار ClickHouse v20.1
إصدار ClickHouse v20.1.16.120-stable 2020-60-26
إصلاح الأخطاء
- إصلاح تعطل نادر ناتج عن استخدام عمود
Nullableفي شرط prewhere. استكمالًا لـ #11608. #11869 (Nikolai Kochetov). - عدم السماح باستخدام arrayJoin داخل الدوال عالية الرتبة، إذ كان ذلك يؤدي إلى خلل في مزامنة protocol. هذا يُغلق #3933. #11846 (alexey-milovidov).
- إصلاح السلوك غير المتوقع للاستعلامات مثل
SELECT *, xyz.*التي كانت تنجح رغم أنه كان من المفترض ظهور خطأ. #11753 (hexiaoting). - إصلاح الخطأ LOGICAL_ERROR الناتج عن استنتاج نوع غير صحيح للقيم الحرفية المعقدة في Values input format. #11732 (tavplubix).
- إصلاح
ORDER BY ... WITH FILLمع الأعمدة الثابتة. #11697 (Anton Popov). - تمرير قيم timeout صحيحة عند التواصل مع XDBC bridge. في الفترة الأخيرة، لم تكن قيم timeout تُحترم عند التحقق من liveness الخاص بالجسر واستلام المعلومات الوصفية. #11690 (alexey-milovidov).
- إضافة دعم للتعبيرات النمطية مع علامات case-insensitive. هذا يُصلح #11101 ويُصلح #11506. #11649 (alexey-milovidov).
- إصلاح bloom filters لـ String (data skipping indices). #11638 (Azat Khuzhin).
- إصلاح تعطل نادر ناتج عن استخدام عمود
Nullableفي شرط prewhere. (من المرجح أن يكون هذا مرتبطًا بشكل ما بـ #11572). #11608 (Nikolai Kochetov). - إصلاح رمز الخروج غير الصحيح لـ clickhouse-client عندما يكون exception.code() % 256 = 0. #11601 (filimonov).
- إصلاح خطأ بسيط في رسالة Log حول “Mark cache size was lowered” عند بدء تشغيل server. هذا يُغلق #11399. #11589 (alexey-milovidov).
- ستُفضّل حاوية Docker الخاصة بـ clickhouse-server الآن استخدام IPv6 عند التحقق من أن server يعمل. #11550 (Ivan Starkov).
- إصلاح تسرّب في الذاكرة عند طرح استثناء في منتصف aggregation باستخدام الدوال -State. هذا يُصلح #8995. #11496 (alexey-milovidov).
- إصلاح استخدام primary key المغلف داخل دالة مع المعدّل ‘FINAL’ وتحسين ‘ORDER BY’. #10715 (Anton Popov).
إصدار ClickHouse v20.1.15.109-stable 2020-06-19
إصلاح الأخطاء
إصدار ClickHouse v20.1.14.107-stable 2020-06-11
إصلاح الأخطاء
- إصلاح الخطأ
Size of offsets does not match size of columnفي الاستعلامات التي تحتوي علىPREWHERE column in (subquery)وARRAY JOIN. #11580 (Nikolai Kochetov).
إصدار ClickHouse v20.1.13.105-stable 2020-06-10
إصلاح الأخطاء
- إصلاح الخطأ
Data compressed with different methodsالذي قد يحدث إذا كانmin_bytes_to_use_direct_ioممكّنًا وكان PREWHERE نشطًا مع استخدام SAMPLE أو عدد كبير من الخيوط. يُصلح هذا #11539. #11540 (alexey-milovidov). - إصلاح إرجاع الحجم المضغوط لـ codecs. #11448 (Nikolai Kochetov).
- إصلاح تعطل server عندما يحتوي column على compression codec ذي arguments غير حرفية. يُصلح #11365. #11431 (alesapin).
- إصلاح pointInPolygon عندما تكون النقطة nan. يُصلح #11375. #11421 (Alexey Ilyukhov).
- إصلاح geohashesInBox عندما تكون arguments خارج نطاق خط العرض/خط الطول. #11403 (Vasily Nemkov).
- إصلاح خطأ
Pipeline stuckالمحتمل في queries التي تتضمن sort خارجيًا وlimit. يُصلح #11359. #11366 (Nikolai Kochetov). - إصلاح تعطل في
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - جعل الكتابة إلى
MATERIALIZED VIEWمع الإعدادparallel_view_processing = 1متوازيةً مجددًا. يُصلح #10241. #11330 (Nikolai Kochetov). - إصلاح visitParamExtractRaw عندما يحتوي JSON المستخرج على strings فيها { أو [ غير متوازنين. #11318 (Ewout).
- إصلاح race condition نادرة جدًا في ThreadPool. #11314 (alexey-milovidov).
- إصلاح احتمال وجود ذاكرة غير مهيأة في التحويل. مثال:
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - إصلاح المشكلة التي يتعذر فيها على index analysis العمل إذا كان table يحتوي على Array column في primary key وكانت query تُجري filtering على هذا column باستخدام الدالتين
emptyأوnotEmpty. يُصلح هذا #11286. #11303 (alexey-milovidov). - إصلاح خلل قد يؤدي إلى عدم دقة تقدير سرعة الاستعلام، وقد لا يعمل حد
min_execution_speedأو قد يعمل بشكل غير صحيح إذا كان الاستعلام مقيَّد المعدّل بإعداداتmax_network_bandwidthأوmax_execution_speedأوpriority. كما تم تغيير القيمة الافتراضية لـtimeout_before_checking_execution_speedإلى قيمة غير صفرية، لأن الإعدادينmin_execution_speedوmax_execution_speedلن يكون لهما أي تأثير بخلاف ذلك. يُصلح هذا #11297. يُصلح هذا #5732. يُصلح هذا #6228. تحسين في سهولة الاستخدام: تجنّب دمج رسالة الاستثناء مع شريط التقدّم فيclickhouse-client. #11296 (alexey-milovidov). - إصلاح تعطّل عند قراءة بيانات غير سليمة بتنسيق Protobuf. يُصلح هذا #5957، ويُصلح #11203. #11258 (Vitaly Baranov).
- إصلاح الخطأ المحتمل
Cannot capture columnفي الدوال عالية الرتبة عند وجود argument ملتقَط من النوعArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - إذا كان data skipping index يعتمد على columns سيجري تعديلها أثناء الدمج في الخلفية (في SummingMergeTree وAggregatingMergeTree وكذلك في TTL GROUP BY)، فقد كان يُحتسب بشكل غير صحيح. وقد أُصلحت هذه المشكلة بنقل حساب index إلى ما بعد الدمج، بحيث يُحتسب على البيانات المدمجة. #11162 (Azat Khuzhin).
- إزالة Logging من مهمة إنهاء mutation إذا لم يُنهَ أي شيء. #11109 (alesapin).
- إصلاح أخطاء في تحليل argument ضمن parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- إصلاح الحجم غير الصحيح للبيانات الخام في method getRawData(). #10964 (Igr).
- إصلاح backward compatibility مع tuples في Distributed tables. #10889 (Anton Popov).
- إصلاح SIGSEGV في StringHashTable (إذا لم يكن هذا المفتاح موجودًا). #10870 (Azat Khuzhin).
- إصلاح خلل في
ReplicatedMergeTreeقد يتسبب في تعليق بعض عملياتALTERعلى استعلامOPTIMIZEأثناء انتظار إحدى النسخ المتماثلة بعد أن تصبح غير نشطة. #10849 (tavplubix). - إصلاح ترتيب الأعمدة بعد Block::sortColumns() (مع إضافة اختبار يوضّح تأثير ذلك في إحدى حالات الاستخدام الفعلية - محرك Buffer). #10826 (Azat Khuzhin).
- إصلاح المشكلة في ODBC bridge عند عدم طلب وضع علامات اقتباس حول المعرّفات. يُصلح هذا #7984. #10821 (alexey-milovidov).
- إصلاح تقريري UBSan وMSan في DateLUT. #10798 (alexey-milovidov).
-
- استخدام
src_typeلإجراء تحويل النوع بشكل صحيح في شروط المفاتيح. يُصلح #6287. #10791 (Andrew Onyshchuk).
- استخدام
- إصلاح سلوك
parallel_view_processing. الآن يجب أن تكتمل جميع عمليات الإدراج إلىMATERIALIZED VIEWدون استثناء، حتى إذا حدث استثناء. يُصلح #10241. #10757 (Nikolai Kochetov). - إصلاح المبدّل combinator -OrNull و-OrDefault عند دمجهما مع -State. #10741 (hcz).
- إصلاح اختفاء الإجماليات. كان من الممكن تصفية الإجماليات إذا كان الاستعلام يحتوي على join أو subquery مع شرط where خارجي. يُصلح #10674. #10698 (Nikolai Kochetov).
- إصلاح الاستخدامات المتعددة للمعامل
INمع المجموعة نفسها في استعلام واحد. #10686 (Anton Popov). - إصلاح ترتيب المعلمات في الباني AggregateTransform. #10667 (palasonic1).
- إصلاح غياب التنفيذ المتوازي للاستعلامات البعيدة عند تمكين
distributed_aggregation_memory_efficient. يُصلح #10655. #10664 (Nikolai Kochetov). - إصلاح تحسين predicates في distributed queries (
enable_optimize_predicate_expression=1) للاستعلامات التي تحتوي على قسمHAVING(أي عندما تكون التصفية على خادم initiator مطلوبة)، وذلك عبر الحفاظ على ترتيب expressions (وهذا يكفي للإصلاح)، وكذلك إجبار المجمّع على استخدام أسماء الأعمدة بدلًا من الفهارس. يُصلح: #10613, #11413. #10621 (Azat Khuzhin). - إصلاح الخطأ
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - إصلاح SELECT لعمود ALIAS عندما يختلف نوع expression الافتراضي له عن column type. #10563 (Azat Khuzhin).
-
- تم تنفيذ المقارنة بين قيم DateTime64 وقيم String (تمامًا كما هو الحال مع DateTime). #10560 (Vasily Nemkov).
إصدار ClickHouse v20.1.12.86، 2020-05-26
إصلاح الأخطاء
- تم إصلاح عدم توافق التجميع على مستويين بين الإصدار 20.1 والإصدارات الأقدم. يحدث هذا التعارض عند استخدام إصدارات مختلفة من ClickHouse على عقدة initiator والعقد البعيدة، وعندما يكون حجم نتيجة
GROUP BYكبيرًا ويُجرى التجميع على حقلStringواحد. ويؤدي ذلك إلى ظهور عدة صفوف غير مدمجة لمفتاح واحد في النتيجة. #10952 (alexey-milovidov). - تم إصلاح تلف البيانات في عمود المفتاح
LowCardinality(FixedString)فيSummingMergeTree، والذي كان قد يحدث بعد الدمج. يُصلح هذا #10489. #10721 (Nikolai Kochetov). - تم إصلاح خلل كان يتسبب في تعليق طلبات HTTP عند إغلاق client عندما تكون
readonly=2وcancel_http_readonly_queries_on_client_close=1. يُصلح هذا #7939، #7019، #7736، #7091. #10684 (tavplubix). - تم إصلاح خلل كان يؤدي فيه الاستعلام
SYSTEM DROP DNS CACHEأيضًا إلى حذف الذاكرات المؤقتة المستخدمة للتحقق مما إذا كان يُسمح للمستخدم بالاتصال من بعض عناوين IP. #10608 (tavplubix). - تم إصلاح نتائج scalar غير الصحيحة داخل الاستعلام الداخلي لـ
MATERIALIZED VIEWإذا كان هذا الاستعلام يحتوي على جدول تابع. #10603 (Nikolai Kochetov). - تم إصلاح الحالة التي تنتهي فيها mutation من جميع الأجزاء، لكنها تظل معلّقة عند
is_done=0. #10526 (alesapin). - تم إصلاح overflow في بداية Unix epoch للمناطق الزمنية ذات الإزاحة الكسرية عن UTC. يُصلح هذا #9335. #10513 (alexey-milovidov).
- تم إصلاح الإيقاف غير السليم لوحدة تخزين Distributed. #10491 (Azat Khuzhin).
- تم إصلاح overflow العددي في
simpleLinearRegressionعند التعامل مع أعداد صحيحة كبيرة. #10474 (hcz). - تم إصلاح إزالة دليل metadata عند فشل attach database. #10442 (Winter Zhang).
- أُضيف تحقق من عدد arguments وأنواعها عند إنشاء فهرس
BloomFilter#9623. #10431 (Winter Zhang). - تم إصلاح المشكلة التي قد يتسبب فيها استعلام يحتوي على
ARRAY JOINوORDER BYوLIMITفي إرجاع نتيجة غير مكتملة. يُصلح هذا #10226. #10427 (alexey-milovidov). - يُفضَّل
fallback_to_stale_replicasعلىskip_unavailable_shards. #10422 (Azat Khuzhin). - تم إصلاح التسطيح غير الصحيح لأنواع البيانات
Array(Tuple(...)). يُصلح هذا #10259. #10390 (alexey-milovidov). - تم إصلاح سلوك غير صحيح في
HashTableكان يتسبب في حدوث خطأ تجميع عند محاولة قراءة HashMap من المخزن المؤقت. #10386 (palasonic1). - تم إصلاح الخطأ المحتمل
Pipeline stuckفيConcatProcessor، والذي كان يمكن أن يحدث في استعلام بعيد. #10381 (Nikolai Kochetov). - تم إصلاح الخطأ
Pipeline stuckمعmax_rows_to_group_byوgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - تم إصلاح عدة أخطاء كانت تحدث عند إدراج بعض البيانات باستخدام quorum، ثم حذفها بطريقة ما (DROP PARTITION، TTL)، مما كان يؤدي إلى تعطّل عمليات INSERT أو ظهور استثناءات إيجابية كاذبة في عمليات SELECT. يُصلح هذا #9946. #10188 (Nikita Mikhaylov).
- تم إصلاح مشكلة عدم توافق عند استخدام إصدارات أقدم من 18.12.17 على خوادم بعيدة، مع استخدام إصدار أحدث على الخادم المُبادِر، وعند تنفيذ GROUP BY على كلٍّ من المفاتيح الثابتة وغير الثابتة، مع تفعيل أسلوب group by ثنائي المستوى. #3254 (alexey-milovidov).
تحسينات البناء/الاختبار/التغليف
إصدار ClickHouse v20.1.10.70، 2020-04-17
إصلاح الأخطاء
- إصلاح استثناء محتمل ونادر
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - إصلاح خلل كان يتسبب في أن يعرض ClickHouse رسالة الخطأ
'Unknown function lambda.'عندما يحاول المستخدم تنفيذALTER UPDATE/DELETEعلى الجداول التي تستخدمENGINE = Replicated*. وأصبح التحقق من الدوال غير الحتمية يتعامل الآن مع تعبيرات lambda بشكل صحيح. #10237 (Alexander Kazakov). - إصلاح
parseDateTimeBestEffortللسلاسل النصية بتنسيق RFC-2822 عندما يكون يوم الأسبوع Tuesday أو Thursday. يُصلح هذا #10082. #10214 (alexey-milovidov). - إصلاح أسماء الأعمدة الخاصة بالثوابت داخل
JOINالتي قد تتعارض مع أسماء الثوابت خارجJOIN. #10207 (alexey-milovidov). - إصلاح احتمال استمرار تنفيذ الاستعلام إلى ما لا نهاية، رغم أنه كان ينبغي أن يتوقف فعليًا عند LIMIT، وذلك عند القراءة من مصدر غير منتهٍ مثل
system.numbersأوsystem.zeros. #10206 (Nikolai Kochetov). - إصلاح تحسين move-to-prewhere في وجود دوال
arrayJoin(في بعض الحالات). يُصلح هذا #10092. #10195 (alexey-milovidov). - إضافة إمكانية تخفيف القيود على استخدام الدوال غير الحتمية في mutations عبر الإعداد
allow_nondeterministic_mutations. #10186 (filimonov). - تحويل blocks إذا لم تتطابق البنية عند
INSERTإلى جدول يستخدم المحركDistributed. #10135 (Azat Khuzhin). - إصلاح
SIGSEGVعندINSERTإلى جدولDistributedعندما تختلف بنيته عن الجداول الأساسية. #10105 (Azat Khuzhin). - إصلاح احتمال فقدان rows في الاستعلامات التي تتضمن
JOINوUNION ALL. يُصلح هذا #9826، #10113. #10099 (Nikolai Kochetov). - إضافة التحقق من arguments ودعم Identifier arguments لمحرك قاعدة بيانات MySQL. #10077 (Winter Zhang).
- إصلاح خلل في dictionary source الخاص بـ ClickHouse من ClickHouse server على localhost. قد يؤدي هذا الخلل إلى تلف الذاكرة إذا لم تكن types في dictionary والمصدر متوافقة. #10071 (alesapin).
- إصلاح الخطأ
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. كان ذلك يحدث عندما يكون الإعدادdistributed_aggregation_memory_efficientمفعّلًا، ويقرأ distributed query بيانات مُجمّعة بمستويات مختلفة من shards مختلفة (مزيج من aggregation أحادي المستوى وثنائي المستوى). #10063 (Nikolai Kochetov). - إصلاح خطأ تجزئة كان يمكن أن يحدث في
GROUP BYعلى مفاتيح سلاسل نصية تحتوي على بايتات صفرية في النهاية (#8636, #8925). #10025 (Alexander Kuzmenkov). - إصلاح خلل كانت بسببه الجداول المطلوبة لا تُسترجع في إحدى مراحل معالجة الاستعلامات لبعض قواعد البيانات. يُصلح #9699. #9949 (achulkov2).
- إصلاح الخطأ
'Not found column in block'عند ظهورJOINمعTOTALS. يُصلح #9839. #9939 (Artem Zuikov). - إصلاح خلل كان يؤدي إلى تجمّد استعلامات DDL الخاصة بـ
ON CLUSTERعند بدء تشغيل الخادم. #9927 (Gagan Arneja). - إصلاح
TRUNCATEلمحرك الجدول Join (#9917). #9920 (Amos Bird). - إصلاح الخطأ
'scalar does not exist'في استعلامات ALTER (#9878). #9904 (Amos Bird). - إصلاح حالة تسابق بين
dropوoptimizeفيReplicatedMergeTree. #9901 (alesapin). - تم إصلاح منطق
DeleteOnDestroyفيATTACH PART، والذي كان يمكن أن يؤدي إلى إزالة الجزء المرفَق تلقائيًا، مع إضافة بعض الاختبارات. #9410 (Vladimir Chebotarev).
تحسينات البناء/الاختبار/التغليف
- إصلاح اختبار الوحدة
collapsing_sorted_stream. #9367 (مستخدم محذوف).
إصدار ClickHouse v20.1.9.54، 2020-03-28
إصلاح الأخطاء
- إصلاح الخطأ
'Different expressions with the same alias'عندما يحتوي الاستعلام علىPREWHEREوWHEREفي جدول موزّع ويكونSET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - إصلاح الاستهلاك المفرط للذاكرة في عمليات mutation للجداول التي تحتوي على مفتاح أساسي مركب. ويعالج هذا #9850. #9860 (alesapin).
- بالنسبة إلى استعلامات INSERT، أصبح shard الآن يقيّد الإعدادات الواردة من initiator بما يتوافق مع قيود shard بدلًا من إطلاق استثناء. يتيح هذا الإصلاح إرسال استعلامات
INSERTإلى shard ذي قيود مختلفة. كما يحسّن هذا التغيير الإصلاح الوارد في #9447. #9852 (Vitaly Baranov). - إصلاح الاستثناء المحتمل
Got 0 in totals chunk, expected 1على جهة العميل. وكان ذلك يحدث في الاستعلامات التي تتضمنJOINإذا كان الجدول المنضم من الطرف الأيمن لا يحتوي على أي صفوف. مثال:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. إصلاح #9777. #9823 (Nikolai Kochetov). - إصلاح
SIGSEGVمعoptimize_skip_unused_shardsعندما يتعذر تحويل النوع. #9804 (Azat Khuzhin). - إصلاح بعض الحالات التي لم تُستخدم فيها المنطقة الزمنية لوسيطة الدالة استخدامًا صحيحًا. #9574 (Vasily Nemkov).
تحسين
- إزالة مرحلة
ORDER BYمن mutation لأننا نقرأ من جزء واحد مرتّب وفي خيط تنفيذ واحد. وأُضيف أيضًا تحقّق للتأكد من أن ترتيب الصفوف في mutation يتبع ترتيب مفتاح الفرز، وأن هذا الترتيب لا تتم مخالفته. #9886 (alesapin).
تحسينات البناء/الاختبار/التغليف
إصدار ClickHouse v20.1.8.41، 2020-03-20
إصلاح الأخطاء
- إصلاح الخطأ المحتمل الدائم
Cannot schedule a task(بسبب Exception غير مُعالَج فيParallelAggregatingBlockInputStream::Handler::onFinish/onFinishThread). يُصلح هذا #6833. #9154 (Azat Khuzhin) - إصلاح الاستهلاك المفرط للذاكرة في queries
ALTER(mutations). يُصلح هذا #9533 و#9670. #9754 (alesapin) - إصلاح خلل في استخدام علامات الاقتباس العكسية في DDL الخاصة بـ external dictionaries. يُصلح هذا #9619. #9734 (alesapin)
إصدار ClickHouse v20.1.7.38، 2020-03-18
إصلاح الأخطاء
- تم تصحيح أسماء الدوال الداخلية غير الصحيحة لـ
sumKahanوsumWithOverflow. وكان ذلك يؤدي إلى ظهور استثناء عند استخدام هذه الدوال في الاستعلامات البعيدة. #9636 (Azat Khuzhin). كانت هذه المشكلة موجودة في جميع إصدارات ClickHouse. - أصبح مسموحًا الآن بتنفيذ
ALTER ON CLUSTERعلى جداولDistributedذات النسخ المتماثل الداخلي. ويعالج هذا #3268. #9617 (shinoi2). كانت هذه المشكلة موجودة في جميع إصدارات ClickHouse. - تم إصلاح الاستثناءين المحتملين
Size of filter does not match size of columnوInvalid number of rows in ChunkفيMergeTreeRangeReader. وكانا قد يظهران أثناء تنفيذPREWHEREفي بعض الحالات. يعالج هذا #9132. #9612 (Anton Popov) - تم إصلاح المشكلة التالية: لم تكن المنطقة الزمنية تُحفَظ عند كتابة تعبير حسابي بسيط مثل
time + 1(على خلاف تعبير مثلtime + INTERVAL 1 SECOND). يعالج هذا #5743. #9323 (alexey-milovidov). كانت هذه المشكلة موجودة في جميع إصدارات ClickHouse. - لم يعد ممكنًا الآن إنشاء أعمدة أو إضافتها باستخدام أسماء مستعارة دورية بسيطة مثل
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - تم إصلاح المشكلة التي قد يصبح فيها الحشو في نهاية قيمة مشفرة بـ base64 غير صحيح. كما جرى تحديث مكتبة base64. يعالج هذا #9491، ويغلق #9492 #9500 (alexey-milovidov)
- تم إصلاح سباق بيانات عند تدمير
Poco::HTTPServer. وكان يمكن أن يحدث ذلك عند تشغيل الخادم ثم إيقافه فورًا. #9468 (Anton Popov) - تم إصلاح احتمال حدوث انهيار أو ظهور عدد غير صحيح من الصفوف في
LIMIT n WITH TIESعندما يكون هناك عدد كبير من الصفوف المساوية للصف رقم n. #9464 (tavplubix) - تم إصلاح احتمال عدم تطابق قيم التحقق مع
TTLالخاصة بالأعمدة. #9451 (Anton Popov) - تم إصلاح انهيار يحدث عند محاولة مستخدم تنفيذ
ALTER MODIFY SETTINGلمحركات الجداول من عائلةMergeTreeذات التنسيق القديم. #9435 (alesapin) - سنحاول الآن إتمام mutations بوتيرة أعلى. #9427 (alesapin)
- تم إصلاح عدم توافق في بروتوكول النسخ المتماثل أُدخل في #8598. #9412 (alesapin)
- تم إصلاح
not(has())لفهرس bloom_filter الخاص بأنواع Array. #9407 (achimbab) - تم إصلاح سلوك الدالتين
matchوextractعندما يكون حجمhaystackصفر بايت. وكان هذا السلوك غير صحيح عندما كانتhaystackثابتة. ويعالج ذلك #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)
تحسينات البناء/الاختبار/التغليف
- تعمل معالجة الاستثناءات الآن بشكل صحيح على Windows Subsystem for Linux. راجع https://github.com/ClickHouse-Extras/libunwind/pull/3. ويعالج هذا #6480 #9564 (sobolevsv)
إصدار ClickHouse v20.1.6.30، 2020-03-05
إصلاح الأخطاء
- إصلاح عدم توافق البيانات عند ضغطها باستخدام codec
T64. #9039 (abyss7) - إصلاح ترتيب النطاقات أثناء القراءة من جدول MergeTree ضمن خيط تنفيذ واحد. يُصلح #8964. #9050 (CurtizJ)
- إصلاح احتمال حدوث segfault في
MergeTreeRangeReaderأثناء تنفيذPREWHERE. يُصلح #9064. #9106 (CurtizJ) - إصلاح
reinterpretAsFixedStringبحيث يعيدFixedStringبدلًا منString. #9052 (oandrew) - إصلاح
joinGetمع أنواع الإرجاع من النوع Nullable. يُصلح #8919 #9014 (amosbird) - إصلاح اختبار fuzz والسلوك غير الصحيح للدالتين bitTestAll/bitTestAny. #9143 (alexey-milovidov)
- إصلاح سلوك الدالتين match و extract عندما تحتوي سلسلة الإدخال على بايتات صفرية. كان السلوك غير صحيح عندما كانت سلسلة الإدخال ثابتة. يُصلح #9160 #9163 (alexey-milovidov)
- إصلاح تنفيذ شروط التصفية المعكوسة عند استخدام فهرس دالي غير رتيب تمامًا. يُصلح #9034 #9223 (Akazz)
- السماح بإعادة كتابة
CROSSإلىINNER JOINإذا وُجد العامل[NOT] LIKEفي قسمWHERE. يُصلح #9191 #9229 (4ertus2) - السماح بأن يكون العمود الأول، أو عدة أعمدة أولى، في جدول بمحرك Log أسماءً مستعارة. #9231 (abyss7)
- السماح باستخدام comma join مع
IN()داخله. يُصلح #7314. #9251 (4ertus2) - تحسين منطق استعلامات
ALTER MODIFY/ADD. الآن لا يمكنكADDعمودًا بدون نوع، كما أن تعبيرMODIFYالافتراضي لا يغيّر نوع العمود، وMODIFYللنوع لا يفقد قيمة التعبير الافتراضي. يُصلح #8669. #9227 (alesapin) - إصلاح إنهاء mutations، بحيث قد تكون mutation المكتملة بالفعل لها الحالة is_done=0. #9217 (alesapin)
- دعم خط أنابيب “Processors” لـ system.numbers و system.numbers_mt. ويُصلح هذا أيضًا الخطأ الذي لا تتم فيه مراعاة
max_execution_time. #7796 (KochetovNicolai) - تصحيح العدّ غير الصحيح للمقياس
DictCacheKeysRequestedFound. #9411 (nikitamikhaylov) - أُضيف تحقّق من سياسة التخزين في
ATTACH PARTITION FROMوREPLACE PARTITIONوMOVE TO TABLE، إذ كان غيابه قد يجعل بيانات الجزء غير قابلة للوصول بعد إعادة التشغيل ويمنع ClickHouse من البدء. #9383 (excitoon) - إصلاح تقرير UBSan في
MergeTreeIndexSet. هذا يُصلح #9250 #9365 (alexey-milovidov) - إصلاح احتمال حدوث سباق بيانات في BlockIO. #9356 (KochetovNicolai)
- دعم أعداد
UInt64التي لا تتسع ضمن Int64 في الدوال المرتبطة بـ JSON. تحديثSIMDJSONإلى الفرع الرئيسي. هذا يُصلح #9209 #9344 (alexey-milovidov) - إصلاح المشكلة التي لا تُحتسب فيها المساحة الحرة بشكل صحيح إذا كان دليل البيانات مربوطًا بجهاز منفصل. بالنسبة إلى القرص default، تُحتسب المساحة الحرة من الدليل الفرعي للبيانات. هذا يُصلح #7441 #9257 (millb)
- إصلاح المشكلة التي قد تتسبب في فشل اتصالات TLS مع ظهور الرسالة
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy.تحديث OpenSSL إلى النسخة الرئيسية في المشروع upstream. #8956 (alexey-milovidov) - عند تنفيذ استعلام
CREATE، تُطوى التعبيرات الثابتة في معاملات محرك التخزين. ويُستبدل اسم قاعدة البيانات الفارغ بقاعدة البيانات الحالية. يُصلح #6508، #3492. كما يُصلح أيضًا التحقق من العنوان المحلي في ClickHouseDictionarySource. #9262 (tabplubix) - إصلاح segfault في
StorageMerge، والذي قد يحدث عند القراءة من StorageFile. #9387 (tabplubix) - منع فقدان البيانات في
Kafkaفي حالات نادرة عند حدوث استثناء بعد قراءة اللاحقة ولكن قبل commit. يُصلح #9378. ذو صلة: #7175 #9507 (filimonov) - إصلاح خلل يؤدي إلى إنهاء الخادم عند محاولة استخدام / حذف جدول
Kafkaأُنشئ بمعلمات خاطئة. يُصلح #9494. ويتضمن #9507. #9513 (filimonov)
ميزة جديدة
- إضافة الخيار
deduplicate_blocks_in_dependent_materialized_viewsللتحكم في سلوك عمليات الإدراج متطابقة الأثر في الجداول ذات العروض المادية. أُضيفت هذه الميزة الجديدة إلى إصدار إصلاح الأخطاء بناءً على طلب خاص من Altinity. #9070 (urykhy)
إصدار ClickHouse v20.1.2.4، 2020-01-22
تغيير غير متوافق مع الإصدارات السابقة
- أصبح الإعداد
merge_tree_uniform_read_distributionمتقادمًا. لا يزال الخادم يتعرّف على هذا الإعداد، لكنه لم يعد له أي تأثير. #8308 (alexey-milovidov) - تم تغيير نوع الإرجاع للدالة
greatCircleDistanceإلىFloat32لأن نتيجة الحساب أصبحت الآنFloat32. #7993 (alexey-milovidov) - من المتوقع الآن أن تُمثَّل معلمات الاستعلام بصيغة “escaped”. على سبيل المثال، لتمرير السلسلة
a<tab>bيجب كتابةa\tbأوa\<tab>b، وبالمثلa%5Ctbأوa%5C%09bفي عنوان URL. وهذا مطلوب لإتاحة إمكانية تمرير NULL على هيئة\N. ويعالج هذا #7488. #8517 (alexey-milovidov) - أصبح الإعداد
use_minimalistic_part_header_in_zookeeperمفعّلًا افتراضيًا لـReplicatedMergeTree. سيؤدي هذا إلى تقليل كمية البيانات المخزنة في ZooKeeper بشكل كبير. هذا الإعداد مدعوم منذ الإصدار 19.1، ونحن نستخدمه بالفعل في بيئة الإنتاج عبر عدة خدمات من دون أي مشكلات منذ أكثر من نصف عام. عطّل هذا الإعداد إذا كان هناك احتمال للرجوع إلى إصدار أقدم من 19.1. #6850 (alexey-milovidov) - أصبحت فهارس تخطي البيانات جاهزة لبيئة الإنتاج ومفعّلة افتراضيًا. أما الإعدادات
allow_experimental_data_skipping_indicesوallow_experimental_cross_to_join_conversionوallow_experimental_multiple_joins_emulationفقد أصبحت الآن متقادمة ولا تفعل شيئًا. #7974 (alexey-milovidov) - أُضيف منطق جديد لـ
ANY JOINفيStorageJoinيتوافق مع عمليةJOIN. وللترقية من دون تغييرات في السلوك، تحتاج إلى إضافةSETTINGS any_join_distinct_right_table_keys = 1إلى البيانات الوصفية لجداول Engine Join، أو إعادة إنشاء هذه الجداول بعد الترقية. #8400 (Artem Zuikov) - أصبح من الضروري إعادة تشغيل الخادم لتطبيق التغييرات في إعدادات التسجيل. هذا حل بديل مؤقت لتجنب الخطأ الذي يجعل الخادم يكتب السجلات في ملف سجل محذوف (راجع #8696). #8707 (Alexander Kuzmenkov)
ميزة جديدة
- أُضيفت معلومات حول مسارات الأجزاء إلى
system.merges. #8043 (Vladimir Chebotarev) - أُضيفت إمكانية تنفيذ الاستعلام
SYSTEM RELOAD DICTIONARYفي وضعON CLUSTER. #8288 (Guillaume Tassery) - أُضيفت إمكانية تنفيذ استعلامات
CREATE DICTIONARYفي وضعON CLUSTER. #8163 (alesapin) - يمكن الآن لملف profile الخاص بالمستخدم في
users.xmlأن يرث عدة ملفات profile. #8343 (Mikhail f. Shiryaev) - أُضيف جدول
system.stack_traceالذي يتيح الاطلاع على stack traces لجميع threads الخاصة بالخادم. وهذا مفيد للمطورين لفحص حالة الخادم داخليًا. ويعالج هذا #7576. #8344 (alexey-milovidov) - أُضيف نوع البيانات
DateTime64مع دقة أقل من الثانية قابلة للتهيئة. #7170 (Vasily Nemkov) - أُضيفت دالة الجدول
clusterAllReplicasالتي تتيح تنفيذ query على جميع العقد في الـ cluster. #8493 (kiran sunkari) - أُضيفت الدالة التجميعية
categoricalInformationValueالتي تحسب القيمة المعلوماتية لميزة متقطعة. #8117 (hcz) - تسريع parsing لملفات البيانات بتنسيق
CSVوTSVوJSONEachRowمن خلال تنفيذه بالتوازي. #7780 (Alexander Kuzmenkov) - أُضيفت الدالة
bankerRoundالتي تنفّذ تقريب المصرفيين. #8112 (hcz) - دعم المزيد من اللغات في القاموس المضمن لأسماء المناطق: ‘ru’، ‘en’، ‘ua’، ‘uk’، ‘by’، ‘kz’، ‘tr’، ‘de’، ‘uz’، ‘lv’، ‘lt’، ‘et’، ‘pt’، ‘he’، ‘vi’. #8189 (alexey-milovidov)
- تحسينات على اتساق منطق
ANY JOIN. وأصبحt1 ANY LEFT JOIN t2الآن مساويًا لـt2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov) - أُضيف setting باسم
any_join_distinct_right_table_keysيفعّل السلوك القديم لـANY INNER JOIN. #7665 (Artem Zuikov) - أُضيف
SEMIوANTI JOINجديدان. وأصبح السلوك القديم لـANY INNER JOINمتاحًا الآن على هيئةSEMI LEFT JOIN. #7665 (Artem Zuikov) - أُضيف التنسيق
DistributedلمحركFileولدالة الجدولfile، مما يتيح القراءة من ملفات.binالناتجة عن عمليات inserts غير المتزامنة إلى جدولDistributed. #8535 (Nikolai Kochetov) - إضافة وسيطة عمود إعادة تعيين اختيارية إلى
runningAccumulate، ما يتيح إعادة تعيين نتائج التجميع لكل قيمة مفتاح جديدة. #8326 (Sergey Kononenko) - إضافة إمكانية استخدام ClickHouse كنقطة نهاية Prometheus. #7900 (vdimir)
- إضافة القسم
<remote_url_allow_hosts>فيconfig.xml، الذي يقيّد المضيفين المسموح بهم لمحركات الجداول البعيدة ودوال الجداولURLوS3وHDFS. #7154 (Mikhail Korotov) - إضافة الدالة
greatCircleAngleالتي تحسب المسافة على سطح الكرة بالدرجات. #8105 (alexey-milovidov) - تغيير نصف قطر الأرض ليكون متسقًا مع مكتبة H3. #8105 (alexey-milovidov)
- إضافة التنسيقين
JSONCompactEachRowوJSONCompactEachRowWithNamesAndTypesللإدخال والإخراج. #7841 (Mikhail Korotov) - إضافة ميزة لمحركات الجداول ودوال الجداول المرتبطة بالملفات (
FileوS3وURLوHDFS) تتيح قراءة ملفاتgzipوكتابتها استنادًا إلى معلمة إضافية للمحرك أو امتداد الملف. #7840 (Andrey Bodrov) - إضافة الدالة
randomASCII(length)، التي تُنشئ سلسلة تحتوي على مجموعة عشوائية من محارف ASCII القابلة للطباعة. #8401 (BayoNet) - إضافة الدالة
JSONExtractArrayRawالتي تُرجع مصفوفة من عناصر JSON array غير المُحلَّلة من سلسلةJSON. #8081 (Oleg Matrokhin) - إضافة الدالة
arrayZipالتي تتيح دمج عدة مصفوفات ذات أطوال متساوية في مصفوفة واحدة من tuples. #8149 (Winter Zhang) - إضافة إمكانية نقل البيانات بين الأقراص وفقًا لعبارات
TTLالمهيأة لعائلة محركات الجداول*MergeTree. #8140 (Vladimir Chebotarev) - إضافة aggregate function جديدة
avgWeightedتتيح حساب المتوسط المرجّح. #7898 (Andrey Bodrov) - أصبح التحليل المتوازي مفعّلًا افتراضيًا لتنسيقات
TSVوTSKVوCSVوJSONEachRow. #7894 (Nikita Mikhaylov) - إضافة عدة دوال Geo من مكتبة
H3: h3GetResolutionوh3EdgeAngleوh3EdgeLengthوh3IsValidوh3kRing. #8034 (Konstantin Malanchev) - إضافة دعم ضغط brotli (
br) في وحدات التخزين ودوال الجداول المرتبطة بالملفات. هذا يُصلح #8156. #8526 (alexey-milovidov) - إضافة دوال
groupBit*للنوعSimpleAggregationFunction. #8485 (Guillaume Tassery)
إصلاح الأخطاء
- إصلاح إعادة تسمية الجداول ذات المحرك
Distributed. يُصلح المشكلة #7868. #8306 (tavplubix) - أصبحت Dictionaries تدعم
EXPRESSIONللسمات في أي سلسلة نصية ضمن SQL dialect غير خاص بـ ClickHouse. #8098 (alesapin) - إصلاح استعلام
INSERT SELECT FROM mysql(...)المعطّل. يُصلح هذا #8070 و#7960. #8234 (tavplubix) - إصلاح الخطأ “Mismatch column sizes” عند إدراج
Tupleافتراضي منJSONEachRow. يُصلح هذا #5653. #8606 (tavplubix) - الآن سيتم طرح استثناء عند استخدام
WITH TIESإلى جانبLIMIT BY. وأُضيفت أيضًا إمكانية استخدامTOPمعLIMIT BY. يُصلح هذا #7472. #7637 (Nikita Mikhaylov) - إصلاح الاعتماد غير المقصود على إصدار حديث من glibc في الملف التنفيذي
clickhouse-odbc-bridge. #8046 (Amos Bird) - إصلاح خلل في دالة check ضمن عائلة المحركات
*MergeTree. الآن لم تعد تفشل عندما يكون عدد الصفوف في الـ granule الأخيرة مساويًا لعددها في الـ mark الأخيرة (غير النهائية). #8047 (alesapin) - إصلاح الإدراج في أعمدة
Enum*بعد استعلامALTER، عندما يكون النوع الرقمي الأساسي مساويًا للنوع المحدد للجدول. يُصلح هذا #7836. #7908 (Anton Popov) - سُمِح باستخدام argument سالبة وغير ثابتة باسم “size” للدالة
substring. لم يكن ذلك مسموحًا به سابقًا بسبب خطأ. يُصلح هذا #4832. #7703 (alexey-milovidov) - إصلاح خلل في parsing عند تمرير عدد خاطئ من الوسائط إلى table engine
(O|J)DBC. #7709 (alesapin) - استخدام اسم الأمر لعملية clickhouse قيد التشغيل عند إرسال السجلات إلى syslog. في الإصدارات السابقة، كانت تُستخدم سلسلة فارغة بدلًا من اسم الأمر. #8460 (Michael Nacharov)
- إصلاح التحقق من المضيفين المسموح بهم لـ
localhost. ويُصحّح هذا الطلب المدمج الحل المقدَّم في #8241. #8342 (Vitaly Baranov) - إصلاح crash نادر في الدالتين
argMinوargMaxمع وسائط السلاسل النصية الطويلة، عندما تُستخدم النتيجة في الدالةrunningAccumulate. يُصلح هذا #8325 #8341 (dinosaur) - إصلاح memory overcommit للجداول التي تستخدم محرك
Buffer. #8345 (Azat Khuzhin) - إصلاح خلل محتمل في الدوال التي يمكن أن تأخذ
NULLكأحد الوسائط وتعيد قيمة غيرNULL. #8196 (alexey-milovidov) - تحسين حسابات المقاييس في thread pool لعمليات الخلفية في table engines من نوع
MergeTree. #8194 (Vladimir Chebotarev) - إصلاح الدالة
INداخل عبارةWHEREعند وجود مرشح على مستوى الصفوف للجدول. يُصلح #6687 #8357 (Ivan) - الآن يُطرَح استثناء إذا لم تُحلَّل القيمة الصحيحة بالكامل في values الخاصة بالإعدادات. #7678 (Mikhail Korotov)
- إصلاح استثناء عند استخدام aggregate function في query إلى distributed table تحتوي على أكثر من shard محليين. #8164 (小路)
- أصبح bloom filter الآن قادرًا على التعامل مع المصفوفات ذات الطول الصفري، ولا يُجري حسابات زائدة عن الحاجة. #8242 (achimbab)
- إصلاح التحقق مما إذا كان host الخاص بالعميل مسموحًا به، وذلك بمطابقة host العميل مع
host_regexpالمحدد فيusers.xml. #8241 (Vitaly Baranov) - تخفيف التحقق من column الملتبس الذي يؤدي إلى false positives في عدة أقسام
JOIN ON. #8385 (Artem Zuikov) - إصلاح تعطل محتمل في server (
std::terminate) عندما يتعذر على الخادم إرسال البيانات أو write data بتنسيقJSONأوXMLمع قيم من Data typeString(التي تتطلب التحقق منUTF-8)، أو عند compressing بيانات النتائج بخوارزمية Brotli، أو في بعض الحالات النادرة الأخرى. يُصلح هذا #7603 #8384 (alexey-milovidov) - إصلاح race condition في
StorageDistributedDirectoryMonitorاكتشفه CI. يُصلح هذا #8364. #8383 (Nikolai Kochetov) - أصبحت background merges في family الخاصة بـ table engines من نوع
*MergeTreeتحافظ الآن على ترتيب وحدات التخزين في storage policy بدقة أكبر. #8549 (Vladimir Chebotarev) - يعمل table engine
Kafkaالآن بشكل صحيح مع formatNative. يُصلح هذا #6731 #7337 #8003. #8016 (filimonov) - إصلاح formats ذات headers (مثل
CSVWithNames) التي كانت تطرح استثناءً متعلقًا بـ EOF لمحرك الجدولKafka. #8016 (filimonov) - تم إصلاح خطأ متعلق بإنشاء Set من استعلام فرعي في الجزء الأيمن من قسم
IN. يعالج هذا #5767 و#2542. #7755 (Nikita Mikhaylov) - تم إصلاح تعطل محتمل أثناء القراءة من محرك التخزين
File. #7756 (Nikolai Kochetov) - تم إصلاح قراءة الملفات بتنسيق
Parquetالتي تحتوي على أعمدة من النوعlist. #8334 (maxulan) - تم إصلاح الخطأ
Not found columnفي الاستعلامات الموزعة التي تتضمن شرطPREWHEREيعتمد على sampling key إذا كانت قيمةmax_parallel_replicas > 1. #7913 (Nikolai Kochetov) - تم إصلاح الخطأ
Not found columnإذا كان الاستعلام يستخدمPREWHEREيعتمد على alias الخاص بالجدول وكانت مجموعة النتائج فارغة بسبب شرط primary key. #7911 (Nikolai Kochetov) - تم إصلاح نوع الإرجاع للدالتين
randوrandConstantفي حالة وجود argument من النوعNullable. الآن تُرجع الدالتان دائمًاUInt32ولا تُرجعان مطلقًاNullable(UInt32). #8204 (Nikolai Kochetov) - تم تعطيل push-down للـ predicate في التعبير
WITH FILL. يعالج هذا #7784. #7789 (Winter Zhang) - تم إصلاح النتيجة غير الصحيحة لـ
count()فيSummingMergeTreeعند استخدام قسمFINAL. #3280 #7786 (Nikita Mikhaylov) - تم إصلاح احتمال ظهور نتائج غير صحيحة للدوال الثابتة من الخوادم البعيدة. كان ذلك يحدث في الاستعلامات التي تتضمن دوال مثل
version()وuptime()وغيرها، والتي تُرجع قيمًا ثابتة مختلفة على خوادم مختلفة. يعالج هذا #7666. #7689 (Nikolai Kochetov) - تم إصلاح خطأ معقد في تحسين push-down للـ predicate كان يؤدي إلى نتائج خاطئة. يعالج هذا عددًا كبيرًا من المشكلات المتعلقة بهذا التحسين. #8503 (Winter Zhang)
- تم إصلاح تعطل في استعلام
CREATE TABLE .. AS dictionary. #8508 (Azat Khuzhin) - أُجريت عدة تحسينات على قواعد ClickHouse النحوية في ملف
.g4. #8294 (taiyang-li) - تم إصلاح خطأ كان يؤدي إلى حالات تعطل في عمليات
JOINمع الجداول التي تستخدم المحركJoin. يعالج هذا #7556 #8254 #7915 #8100. #8298 (Artem Zuikov) - إصلاح إعادة تحميل القواميس غير الضرورية عند
CREATE DATABASE. #7916 (Azat Khuzhin) - تقييد الحد الأقصى لعدد التدفقات لعمليات القراءة من
StorageFileوStorageHDFS. يُصلح هذا #7650. #7981 (alesapin) - إصلاح خطأ في استعلام
ALTER ... MODIFY ... CODECعند تحديد المستخدم لكلٍّ من التعبير الافتراضي وcodec. يُصلح هذا 8593. #8614 (alesapin) - إصلاح خطأ في الدمج في الخلفية للأعمدة من النوع
SimpleAggregateFunction(LowCardinality). #8613 (Nikolai Kochetov) - إصلاح التحقق من النوع في الدالة
toDateTime64. #8375 (Vasily Nemkov) - لم يعد الخادم يتعطل عند استخدام
LEFTأوFULL JOINمع محرك Join وإعداداتjoin_use_nullsغير المدعومة. #8479 (Artem Zuikov) - لم يعد استعلام
DROP DICTIONARY IF EXISTS db.dictيطرح استثناءً إذا لم تكنdbموجودة. #8185 (Vitaly Baranov) - إصلاح أعطال محتملة في وظائف الجداول (
file,mysql,remote) ناتجة عن استخدام مرجع إلى الكائنIStorageبعد إزالته. وإصلاح التحليل غير الصحيح للأعمدة المحددة عند الإدراج في table function. #7762 (tavplubix) - التأكد من جاهزية الشبكة قبل بدء
clickhouse-server. يُصلح هذا #7507. #8570 (Zhichang Yu) - إصلاح التعامل مع حالات timeout في secure connections، حتى لا تبقى الاستعلامات معلّقة إلى أجل غير مسمى. يُصلح هذا #8126. #8128 (alexey-milovidov)
- إصلاح التنافس الزائد بين workers المتزامنين في
clickhouse-copier. #7816 (Ding Xiang Fei) - لم تعد عمليات mutations تتخطى الأجزاء attached، حتى إذا كان إصدار mutation الخاص بها أكبر من إصدار mutation الحالي. #7812 (Zhichang Yu) #8250 (alesapin)
- تجاهل النسخ غير الضرورية من data parts الخاصة بـ
*MergeTreeبعد نقلها إلى disk آخر وإعادة تشغيل الخادم. #7810 (Vladimir Chebotarev) - إصلاح تعطل في
FULL JOINمعLowCardinalityفي مفتاحJOIN. #8252 (Artem Zuikov) - يُمنع استخدام اسم العمود أكثر من مرة في استعلام insert، مثل
INSERT INTO tbl (x, y, x). يُصلح هذا #5465، #7681. #7685 (alesapin) - أُضيفت آلية fallback لاكتشاف عدد نوى CPU الفعلية لوحدات CPU غير المعروفة (باستخدام عدد نوى CPU المنطقية). يُصلح هذا #5239. #7726 (alexey-milovidov)
- إصلاح الخطأ
There's no columnللأعمدةmaterializedوalias. #8210 (Artem Zuikov) - أُصلح تعطل شديد للخادم عند استخدام استعلام
EXISTSبدون المحددTABLEأوDICTIONARY، مثلEXISTS t. يُصلح هذا #8172. أُدخل هذا الخطأ في الإصدار 19.17. #8213 (alexey-milovidov) - إصلاح خطأ نادر بالرسالة
"Sizes of columns does not match"قد يظهر عند استخدام عمودSimpleAggregateFunction. #7790 (Boris Granveaud) - إصلاح خطأ كان يمنح المستخدم الذي لديه
allow_databasesفارغ إمكانية الوصول إلى جميع قواعد البيانات (وينطبق الأمر نفسه علىallow_dictionaries). #7793 (DeifyTheGod) - إصلاح تعطل العميل عندما يكون الخادم قد قطع الاتصال به بالفعل. #8071 (Azat Khuzhin)
- إصلاح سلوك
ORDER BYعند الفرز حسب بادئة المفتاح الأساسي ولاحقة ليست من المفتاح الأساسي. #7759 (Anton Popov) - التحقق مما إذا كان العمود المؤهل موجودًا في الجدول. يُصلح هذا #6836. #7758 (Artem Zuikov)
- أُصلح سلوك
ALTER MOVEعند تشغيله مباشرةً بعد اكتمالmerge، إذ كان ينقلsuperpartبدلًا من الجزء المحدد. يُصلح هذا #8103. #8104 (Vladimir Chebotarev) - إصلاح احتمال تعطل الخادم أثناء استخدام
UNIONمع عدد مختلف من الأعمدة. يُصلح هذا #7279. #7929 (Nikolai Kochetov) - إصلاح حجم الجزء الفرعي الناتج للدالة
substrعند استخدام حجم سالب. #8589 (Nikolai Kochetov) - الآن لا ينفّذ الخادم
part mutationفيMergeTreeإذا لم تكن هناكthreadsحرة كافية فيbackground pool. #8588 (tavplubix) - إصلاح خطأ مطبعي بسيط في تنسيق شجرة
ASTالخاصة بـUNION ALL. #7999 (litao91) - تم إصلاح النتائج غير الصحيحة لمرشح bloom مع الأعداد السالبة. يُصلح هذا #8317. #8566 (Winter Zhang)
- تم إصلاح تجاوز محتمل لسعة المخزن المؤقت أثناء فك الضغط. يمكن لمستخدم خبيث تمرير بيانات مضغوطة مُلفّقة تتسبب في القراءة بعد نهاية المخزن المؤقت. اكتشف هذه المشكلة Eldar Zaitov من فريق أمن المعلومات في Yandex. #8404 (alexey-milovidov)
- تم إصلاح نتيجة غير صحيحة ناتجة عن overflow في الأعداد الصحيحة داخل
arrayIntersect. #7777 (Nikolai Kochetov) - لن ينتظر استعلام
OPTIMIZE TABLEالآن النسخ المتماثلة غير المتصلة لتنفيذ العملية. #8314 (javi santana) - تم إصلاح المحلل الخاص بـ
ALTER TTLلجداولReplicated*MergeTree. #8318 (Vladimir Chebotarev) - تم إصلاح الاتصال بين الخادم والعميل، بحيث يقرأ الخادم معلومات الجداول المؤقتة بعد فشل الاستعلام. #8084 (Azat Khuzhin)
- تم إصلاح خطأ الدالة
bitmapAndعند تقاطع bitmap مُجمّع مع bitmap scalar. #8082 (Yue Huang) - تم تحسين تعريف
ZXidوفقًا لـ ZooKeeper Programmer’s Guide، مما يُصلح خللًا فيclickhouse-cluster-copier. #8088 (Ding Xiang Fei) - أصبحت الدالة الجدولية
odbcالآن تراعي الإعدادexternal_table_functions_use_nulls. #7506 (Vasily Nemkov) - تم إصلاح خلل أدى إلى data race نادرة. #8143 (Alexander Kazakov)
- يعيد
SYSTEM RELOAD DICTIONARYالآن تحميل القاموس بالكامل، مع تجاهلupdate_field. يُصلح هذا #7440. #8037 (Vitaly Baranov) - أُضيفت إمكانية التحقق مما إذا كان القاموس موجودًا في استعلام CREATE. #8032 (alesapin)
- تم إصلاح parsing لـ
Float*في format Values. يُصلح هذا #7817. #7870 (tavplubix) - تم إصلاح تعطل يحدث عند تعذر حجز مساحة في بعض العمليات الخلفية ضمن عائلة table engines
*MergeTree. #7873 (Vladimir Chebotarev) - تم إصلاح تعطل في عملية الدمج عندما يحتوي الجدول على عمود
SimpleAggregateFunction(LowCardinality). يُصلح هذا #8515. #8522 (Azat Khuzhin) - تمت استعادة دعم جميع الإعدادات المحلية لـ ICU، وأُضيفت إمكانية تطبيق collations على expressions الثابتة. كما أُضيف اسم اللغة إلى جدول
system.collations. #8051 (alesapin) - إصلاح خللٍ كان يمنع تحديث القواميس الخارجية ذات الحد الأدنى للعمر الصفري (
LIFETIME(MIN 0 MAX N),LIFETIME(N)) في الخلفية. #7983 (alesapin) - إصلاح تعطل يحدث عندما يحتوي قاموس خارجي ذو مصدر ClickHouse على استعلام فرعي داخل الاستعلام. #8351 (Nikolai Kochetov)
- إصلاح التحليل غير الصحيح لامتداد الملف في جدول يستخدم المحرك
URL. يعالج هذا #8157. #8419 (Andrey Bodrov) - إصلاح استعلام
CHECK TABLEلجداول*MergeTreeالتي لا تحتوي على مفتاح. يعالج هذا #7543. #7979 (alesapin) - إصلاح تحويل
Float64إلى نوع MySQL. #8079 (Yuriy Baranov) - الآن، إذا لم يُحذف الجدول بالكامل بسبب تعطل الخادم، فسيحاول الخادم استعادته وتحميله. #8176 (tavplubix)
- إصلاح تعطل في دالة الجدول
fileعند الإدراج في ملف غير موجود. والآن، في هذه الحالة، سيُنشأ الملف أولًا ثم تُعالج عملية الإدراج. #8177 (Olga Khvostikova) - إصلاح حالة تعارض نادرة قد تحدث عندما يكون
trace_logمُمكّنًا. #7838 (filimonov) - إضافة إمكانية العمل مع أنواع أخرى غير
Dateفي القاموس الخارجيRangeHashedالمُنشأ من استعلام DDL. يعالج هذا 7899. #8275 (alesapin) - إصلاح تعطل يحدث عند استدعاء
now64()باستخدام ناتج دالة أخرى. #8270 (Vasily Nemkov) - إصلاح خلل في اكتشاف عنوان IP للعميل للاتصالات عبر بروتوكول MySQL wire. #7743 (Dmitry Muzyka)
- إصلاح التعامل مع المصفوفات الفارغة في الدالة
arraySplit. يعالج هذا #7708. #7747 (hcz) - إصلاح المشكلة التي قد تؤدي إلى حذف
pid-fileالخاص بعمليةclickhouse-serverأخرى قيد التشغيل. #8487 (Weiqing Xu) - إصلاح إعادة تحميل القاموس إذا كان يحتوي على
invalidate_query، والذي كان يوقف التحديثات ويتسبب في ظهور بعض الاستثناءات في محاولات التحديث السابقة. #8029 (alesapin) - إصلاح خطأ في الدالة
arrayReduceقد يؤدي إلى “تحرير مزدوج”، وخطأ في مُعدِّل الدالة التجميعيةResampleقد يؤدي إلى تسرّب في الذاكرة. كما أُضيفت الدالة التجميعيةaggThrow، ويمكن استخدامها لأغراض الاختبار. #8446 (alexey-milovidov)
تحسين
- تم تحسين التسجيل عند العمل مع محرك الجدول
S3. #8251 (Grigory Pervakov) - تُعرَض الآن رسالة المساعدة عند استدعاء
clickhouse-localبدون تمرير أي وسيطات. يُصلح هذا #5335. #8230 (Andrey Nagorny) - أُضيف الإعداد
mutations_syncالذي يتيح انتظار استعلاماتALTER UPDATE/DELETEبشكل متزامن. #8237 (alesapin) - أصبح من الممكن تعيين
user_files_pathكمسار نسبي فيconfig.xml(بطريقة مشابهة لـformat_schema_path). #7632 (hcz) - أُضيف استثناء للأنواع غير الصالحة في دوال التحويل ذات اللاحقة
-OrZero. #7880 (Andrey Konyaev) - جرى تبسيط تنسيق ترويسة إرسال البيانات إلى شظية في استعلام موزع. #8044 (Vitaly Baranov)
- أُعيدت هيكلة محرك الجدول
Live View. #8519 (vzakaznikov) - أُضيفت فحوصات إضافية للقواميس الخارجية المُنشأة من استعلامات DDL. #8127 (alesapin)
- أُصلح الخطأ
Column ... already existsعند استخدامFINALوSAMPLEمعًا، على سبيل المثالselect count() from table final sample 1/2. يُصلح هذا #5186. #7907 (Nikolai Kochetov) - يمكن الآن أن تكون الوسيطة الأولى للدالة
joinGetمُعرّف جدول. #7707 (Amos Bird) - أُتيح استخدام
MaterializedViewمع الاستعلامات الفرعية فوق جداولKafka. #8197 (filimonov) - تعمل الآن عمليات النقل الخلفية بين الأقراص ضمن مجموعة مؤشرات ترابط منفصلة. #7670 (Vladimir Chebotarev)
- يُنفَّذ
SYSTEM RELOAD DICTIONARYالآن بشكل متزامن. #8240 (Vitaly Baranov) - تعرض تتبعات المكدس الآن العناوين الفعلية (الإزاحات في ملف الكائن) بدلًا من عناوين الذاكرة الافتراضية (حيث جرى تحميل ملف الكائن). يتيح ذلك استخدام
addr2lineعندما يكون الملف التنفيذي مستقلاً موضعيًا ويكون ASLR نشطًا. يُصلح هذا #8360. #8387 (alexey-milovidov) - دعم صياغة جديدة لمرشحات الأمان على مستوى الصفوف:
<table name='table_name'>...</table>. يُصلح هذا #5779. #8381 (Ivan) - يمكن الآن للدالة
cityHashالعمل مع النوعينDecimalوUUID. يُصلح هذا #5184. #7693 (Mikhail Korotov) - أُزيلت قيمة
index granularityالثابتة (وكانت 1024) من سجلات النظام لأنها أصبحت متقادمة بعد تنفيذadaptive granularity. #7698 (alexey-milovidov) - تم تمكين خادم التوافق مع MySQL عندما يُجمَّع ClickHouse بدون SSL. #7852 (Yuriy Baranov)
- أصبح الخادم الآن يحسب قيم التحقق
checksumsللدفعات الموزعةbatches، مما يوفر رسائل خطأ أكثر تفصيلًا عند وجود بيانات تالفة في الدفعة. #7914 (Azat Khuzhin) - دعم
DROP DATABASEوDETACH TABLEوDROP TABLEوATTACH TABLEلمحرك قاعدة البياناتMySQL. #8202 (Winter Zhang) - أُضيفت المصادقة إلى
S3table function ومحرك الجداول. #7623 (Vladimir Chebotarev) - أُضيف تحقق من الأجزاء الإضافية في
MergeTreeعلى أقراص مختلفة، حتى لا يُسمح بفقدانdata partsعلى أقراص غير معرّفة. #8118 (Vladimir Chebotarev) - تم تمكين دعم SSL لعميل وخادم Mac. #8297 (Ivan)
- يمكن لـ ClickHouse الآن العمل كخادم MySQL federated (راجع https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html). #7717 (Maxim Fedotov)
- أصبح
clickhouse-clientالآن يفعّلbracketed-pasteفقط عندما يكون multiquery مفعّلًا وmultiline معطّلًا. وهذا يُصلح #7757. #7761 (Amos Bird) - دعم
Array(Decimal)في الدالةif. #7721 (Artem Zuikov) - دعم
Decimalفي الدوالarrayDifferenceوarrayCumSumوarrayCumSumNegative. #7724 (Artem Zuikov) - أُضيف العمود
lifetimeإلى جدولsystem.dictionaries. #6820 #7727 (kekekekule) - جرى تحسين التحقق من وجود
partsعلى أقراص مختلفة لمحركات الجداول*MergeTree. ويعالج ذلك #7660. #8440 (Vladimir Chebotarev) - تكامل مع
AWS SDKلتفاعلاتS3، مما يتيح استخدام جميع ميزات S3 مباشرةً. #8011 (Pavel Kovalenko) - أُضيف دعم
subqueriesفي جداولLive View. #7792 (vzakaznikov) - أُزيل التحقق من استخدام عمود
DateأوDateTimeفي تعبيراتTTL. #7920 (Vladimir Chebotarev) - أُضيفت معلومات عن القرص إلى جدول
system.detached_parts. #7833 (Vladimir Chebotarev) - يمكن الآن تغيير الإعدادات
max_(table|partition)_size_to_dropمن دون إعادة التشغيل. #7779 (Grigory Pervakov) - تحسّن طفيف في سهولة استخدام رسائل الخطأ. ويُطلب من المستخدم عدم إزالة الأسطر الموجودة أسفل
Stack trace:. #7897 (alexey-milovidov) - تحسّنت قراءة الرسائل من محرك
Kafkaعبر تنسيقات مختلفة بعد #7935. #8035 (Ivan) - توافق أفضل مع عملاء MySQL الذين لا يدعمون مكوّن المصادقة الإضافي
sha2_password. #8036 (Yuriy Baranov) - دعم المزيد من أنواع الأعمدة في خادم التوافق مع MySQL. #7975 (Yuriy Baranov)
- تنفيذ تحسين
ORDER BYلوحدات التخزينMergeوBufferوMaterilized Viewالتي تستند إلى جداولMergeTree. #8130 (Anton Popov) - نستخدم الآن دائمًا تنفيذ POSIX للدالة
getrandomللحصول على توافق أفضل مع النوى القديمة (< 3.17). #7940 (Amos Bird) - تحقّق أفضل من صحة الوجهة في قاعدة نقل TTL. #8410 (Vladimir Chebotarev)
- تحققات أفضل من دفعات الإدراج التالفة لمحرك الجدول
Distributed. #7933 (Azat Khuzhin) - أُضيف عمود يحتوي على مصفوفة بأسماء الأجزاء التي يجب أن تعالجها عمليات mutation مستقبلًا إلى جدول
system.mutations. #8179 (alesapin) - تحسين لفرز الدمج المتوازي للمعالجات. #8552 (Nikolai Kochetov)
- أصبح الإعداد
mark_cache_min_lifetimeالآن قديمًا ولم يعد له أي تأثير. في الإصدارات السابقة، كان يمكن لذاكرة التخزين المؤقت للعلامات أن تنمو في الذاكرة إلى حجم أكبر منmark_cache_sizeلاستيعاب البيانات خلالmark_cache_min_lifetimeثانية. وكان ذلك يؤدي إلى التباس وإلى استهلاك ذاكرة أعلى من المتوقع، وهو أمر سيئ خصوصًا على الأنظمة ذات الذاكرة المحدودة. إذا لاحظت تراجعًا في الأداء بعد تثبيت هذا الإصدار، فينبغي زيادةmark_cache_size. #8484 (alexey-milovidov) - تمهيد لاستخدام
tidفي جميع المواضع. وهذا مطلوب من أجل #7477. #8276 (alexey-milovidov)
تحسين الأداء
- تحسينات في الأداء في مسار المعالِجات. #7988 (Nikolai Kochetov)
- تحديثات غير حاجزة للمفاتيح منتهية الصلاحية في القواميس من نوع cache (مع إذن بقراءة القيم القديمة). #8303 (Nikita Mikhaylov)
- تجميع ClickHouse بدون
-fno-omit-frame-pointerعلى مستوى النظام ككل لتوفير سجل إضافي. #8097 (Amos Bird) - تسريع الدالة
greatCircleDistanceوإضافة اختبارات أداء لها. #7307 (Olga Khvostikova) - تحسين أداء الدالة
roundDown. #8465 (alexey-milovidov) - تحسين أداء
maxوminوargMinوargMaxلنوع البياناتDateTime64. #8199 (Vasily Nemkov) - تحسين أداء الفرز دون حد، أو مع حد كبير، ومع الفرز الخارجي. #8545 (alexey-milovidov)
- تحسين أداء تنسيق الأعداد ذات الفاصلة العائمة حتى 6 مرات. #8542 (alexey-milovidov)
- تحسين أداء الدالة
modulo. #7750 (Amos Bird) - تحسين
ORDER BYوعمليات الدمج مع مفتاح مكوَّن من عمود واحد. #8335 (alexey-milovidov) - تنفيذ أفضل للمُعدِّلات
arrayReduceو-Arrayو-State. #7710 (Amos Bird) - ينبغي الآن تحسين
PREWHEREليكون على الأقل بالكفاءة نفسها التي يوفّرهاWHERE. #7769 (Amos Bird) - تحسين طريقة تعامل
roundوroundBankersمع الأعداد السالبة. #8229 (hcz) - تحسين أداء فك الترميز في codecs
DoubleDeltaوGorillaبنحو 30-40% تقريبًا. ويعالج هذا #7082. #8019 (Vasily Nemkov) - تحسين أداء الدوال المرتبطة بـ
base64. #8444 (alexey-milovidov) - تمت إضافة الدالة
geoDistance. وهي مشابهة لـgreatCircleDistance، لكنها تستخدم تقريبًا لنموذج الإهليلج WGS-84. وأداء الدالتين متقارب جدًا. #8086 (alexey-milovidov) - دوال التجميع
minوmaxأصبحت أسرع لنوع البياناتDecimal. #8144 (Artem Zuikov) - جعل معالجة
arrayReduceمتجهة. #7608 (Amos Bird) - تُحسَّن سلاسل
ifالآن لتُنفَّذ على هيئةmultiIf. #8355 (kamalov-ruslan) - إصلاح تراجع الأداء في محرك الجدول
Kafkaالذي ظهر في 19.15. ويعالج هذا #7261. #7935 (filimonov) - أُزيل توليد الشيفرة “pie” الذي تُضيفه
gccأحيانًا افتراضيًا في حزم Debian. #8483 (alexey-milovidov) - تحليل تنسيقات البيانات بالتوازي #6553 (Nikita Mikhaylov)
- تفعيل المحلل المُحسَّن لـ
Valuesالتي تتضمن تعبيرات افتراضيًا (input_format_values_deduce_templates_of_expressions=1). #8231 (tavplubix)
تحسينات البناء/الاختبار/التحزيم
- إصلاحات لعملية البناء على
ARMوفي الوضع المصغّر. #8304 (proller) - إضافة تفريغ ملف التغطية لـ
clickhouse-serverعندما لا يُستدعىstd::atexit. كما جرى تحسين التسجيل قليلًا في الاختبارات عديمة الحالة مع التغطية. #8267 (alesapin) - تحديث مكتبة LLVM في contrib، مع تجنّب استخدام LLVM من حزم نظام التشغيل. #8258 (alexey-milovidov)
- جعل عملية بناء
curlالمضمّن صامتة بالكامل. #8232 #8203 (Pavel Kovalenko) - إصلاح بعض تحذيرات
MemorySanitizer. #8235 (Alexander Kuzmenkov) - استخدام وحدات الماكرو
add_warningوno_warningفيCMakeLists.txt. #8604 (Ivan) - إضافة دعم لكائنات Minio المتوافقة مع S3 لتحسين اختبارات التكامل. #7863 #7875 (Pavel Kovalenko)
- استيراد ترويسات
libcإلى contrib. يتيح ذلك جعل عمليات البناء أكثر اتساقًا عبر أنظمة مختلفة (فقط لـx86_64-linux-gnu). #5773 (alexey-milovidov) - إزالة
-fPICمن بعض المكتبات. #8464 (alexey-milovidov) - تنظيف
CMakeLists.txtالخاص بـcurl. راجع https://github.com/ClickHouse/ClickHouse/pull/8011#issuecomment-569478910 #8459 (alexey-milovidov) - إسكات التحذيرات في مكتبة
CapNProto. #8220 (alexey-milovidov) - إضافة اختبارات الأداء لجداول hash المحسّنة للسلاسل النصية القصيرة. #7679 (Amos Bird)
- أصبح ClickHouse الآن يُبنى على
AArch64حتى إذا لم يكنMADV_FREEمتاحًا. هذا يُصلح #8027. #8243 (Amos Bird) - تحديث
zlib-ngلإصلاح مشكلاتMemorySanitizer. #7182 #8206 (Alexander Kuzmenkov) - تفعيل مكتبة MySQL الداخلية على الأنظمة غير المعتمدة على Linux، لأن استخدام حزم نظام التشغيل هش جدًا وعادةً لا يعمل إطلاقًا. هذا يُصلح #5765. #8426 (alexey-milovidov)
- إصلاح عملية البناء على بعض الأنظمة بعد تفعيل
libc++. يحل هذا محل #8374. #8380 (alexey-milovidov) - اجعل أساليب
Fieldأكثر أمانًا من حيث الأنواع لاكتشاف المزيد من الأخطاء. #7386 #8209 (Alexander Kuzmenkov) - أُضيفت الملفات المفقودة إلى الوحدة الفرعية
libc-headers. #8507 (alexey-milovidov) - إصلاح علامات الاقتباس الخاطئة في
JSONضمن مخرجات اختبارات الأداء. #8497 (Nikolai Kochetov) - يُعرَض الآن stack trace لكل من
std::exceptionوPoco::Exception. في الإصدارات السابقة، كان ذلك متاحًا فقط لـDB::Exception. وهذا يحسّن التشخيص. #8501 (alexey-milovidov) - نقل
clock_gettimeوclock_nanosleepلدعم إصدارات glibc الأحدث. #8054 (Amos Bird) - تفعيل
part_logفي تهيئة المثال للمطورين. #8609 (alexey-milovidov) - إصلاح السلوك غير المتزامن لإعادة التحميل في
01036_no_superfluous_dict_reload_on_create_database*. #8111 (Azat Khuzhin) - إصلاح اختبارات أداء
codec. #8615 (Vasily Nemkov) - إضافة نصوص تثبيت لإصدار
.tgzوتوثيق لها. #8612 #8591 (alesapin) - أُزيل اختبار
ZSTDالقديم (وقد أُنشئ في عام 2016 لإعادة إنتاج الخلل الذي كان موجودًا في إصدارات ZSTD السابقة لـ 1.0). وهذا يُصلح #8618. #8619 (alexey-milovidov) - إصلاح عملية البناء على Mac OS Catalina. #8600 (meo)
- زيادة عدد الصفوف في اختبارات أداء
codecلجعل النتائج أكثر وضوحًا. #8574 (Vasily Nemkov) - في بُنى Debug، تُعامَل استثناءات
LOGICAL_ERRORعلى أنها حالات فشل assertion، بحيث يسهل ملاحظتها. #8475 (Alexander Kuzmenkov) - جعل اختبار الأداء المتعلق بـ
formatsأكثر حتمية. #8477 (alexey-milovidov) - تحديث
lz4لإصلاح فشل في MemorySanitizer. #8181 (Alexander Kuzmenkov) - كبح نتيجة إيجابية كاذبة معروفة في MemorySanitizer أثناء معالجة الاستثناءات. #8182 (Alexander Kuzmenkov)
- تحديث
gccوg++إلى الإصدار 9 فيbuild/docker/build.sh#7766 (TLightSky) - إضافة حالة اختبار أداء للتحقق من أن
PREWHEREأسوأ منWHERE. #7768 (Amos Bird) - إحراز تقدّم نحو إصلاح اختبار غير مستقر. #8621 (alexey-milovidov)
- تجنّب ظهور تقرير MemorySanitizer للبيانات القادمة من
libunwind. #8539 (alexey-milovidov) - تحديث
libc++إلى أحدث إصدار. #8324 (alexey-milovidov) - بناء مكتبة ICU من الشيفرة المصدرية. يُصلح هذا #6460. #8219 (alexey-milovidov)
- التبديل من
libresslإلىopenssl. ينبغي أن يدعم ClickHouse كلًا من TLS 1.3 وSNI بعد هذا التغيير. يُصلح هذا #8171. #8218 (alexey-milovidov) - إصلاح تقرير UBSan عند استخدام
chacha20_poly1305من SSL (يحدث ذلك عند الاتصال بـ https://yandex.ru/). #8214 (alexey-milovidov) - إصلاح أذونات ملف كلمة المرور الافتراضية لتوزيعات Linux من نوع
.deb. #8075 (proller) - تحسين expression المستخدمة للحصول على PID الخاص بـ
clickhouse-serverفيclickhouse-test. #8063 (Alexander Kazakov) - تحديث contrib/googletest إلى v1.10.0. #8587 (Alexander Burmak)
- إصلاح تقرير ThreadSanitizer في مكتبة
base64. كما تم تحديث هذه المكتبة إلى أحدث إصدار، لكن ذلك غير مهم. يُصلح هذا #8397. #8403 (alexey-milovidov) - إصلاح
00600_replace_running_queryللـ processors. #8272 (Nikolai Kochetov) - إزالة دعم
tcmallocلجعلCMakeLists.txtأبسط. #8310 (alexey-milovidov) - تستخدم إصدارات البناء المعتمدة على gcc الآن
libc++بدلًا منlibstdc++. ومؤخرًا، كانlibc++يُستخدم فقط مع clang. سيؤدي ذلك إلى تحسين اتساق إعدادات البناء وقابلية النقل. #8311 (alexey-milovidov) - تمكين مكتبة ICU في البناء باستخدام MemorySanitizer. #8222 (alexey-milovidov)
- كتم التحذيرات الصادرة من مكتبة
CapNProto. #8224 (alexey-milovidov) - أُزيلت الحالات الخاصة في الشيفرة لـ
tcmalloc، لأنه لم يعد مدعومًا. #8225 (alexey-milovidov) - في مهمة التغطية ضمن CI، أُضيف إنهاء منظّم للخادم كي يتمكن من حفظ تقرير التغطية. يعالج هذا مشكلة تقارير التغطية غير المكتملة التي لاحظناها مؤخرًا. #8142 (alesapin)
- اختبارات أداء لجميع
codecsعلى قيمFloat64وUInt64. #8349 (Vasily Nemkov) - أصبح
termcapمهملًا بدرجة كبيرة، وقد تسبب في مشكلات متنوعة (مثل غياب cap “up” وإظهار^Jبدلًا من الأسطر المتعددة). يُفضَّل استخدامterminfoأوncursesالمضمّن. #7737 (Amos Bird) - إصلاح اختبار التكامل
test_storage_s3. #7734 (Nikolai Kochetov) - دعم
StorageFile(<format>, null)لإدراج block في ملف بالتنسيق المحدد من دون الكتابة فعليًا إلى disk. هذا مطلوب لاختبارات الأداء. #8455 (Amos Bird) - أُضيفت الوسيطة
--print-timeإلى الاختبارات الوظيفية، وتطبع زمن التنفيذ لكل اختبار. #8001 (Nikolai Kochetov) - أُضيفت تأكيدات إلى
KeyConditionأثناء تقييم RPN. سيؤدي هذا إلى إصلاح التحذير الصادر من gcc-9. #8279 (alexey-milovidov) - طباعة خيارات cmake في نواتج build الخاصة بـ CI. #8273 (Alexander Kuzmenkov)
- عدم توليد معلومات Debug لبعض المكتبات الكبيرة. #8271 (alexey-milovidov)
- اجعل
log_to_console.xmlيسجّل دائمًا إلى stderr، سواء أكان في وضع تفاعلي أم لا. #8395 (Alexander Kuzmenkov) - أُزيلت بعض الميزات غير المستخدمة من أداة
clickhouse-performance-test. #8555 (alexey-milovidov) - سنبحث الآن أيضًا عن
lld-Xالمطابق لإصدارclang-X. #8092 (alesapin) - تحسين في build الخاص بـ Parquet. #8421 (maxulan)
- المزيد من تحذيرات GCC. #8221 (kreuzerkrieg)
- أصبحت حزمة Arch Linux تسمح الآن بتشغيل خادم ClickHouse، وليس العميل فقط. #8534 (Vladimir Chebotarev)
- إصلاح اختبار متعلق بـ processors. وتحسينات طفيفة في الأداء. #7672 (Nikolai Kochetov)
- تحديث contrib/protobuf. #8256 (Matwey V. Kornilov)
- استعدادًا للانتقال إلى c++20 احتفالًا بحلول العام الجديد. “لتكن قوة C++ مع ClickHouse.” #8447 (Amos Bird)
ميزة تجريبية
- أُضيف الإعداد التجريبي
min_bytes_to_use_mmap_io. يتيح قراءة الملفات الكبيرة دون نسخ البيانات من النواة إلى فضاء المستخدم. يكون هذا الإعداد معطّلًا افتراضيًا. والحدّ الموصى به هو نحو 64 ميغابايت، لأنmmap/munmapبطيئان. #8520 (alexey-milovidov) - أُعيدت هيكلة الحصص ضمن نظام التحكم في الوصول. وأُضيف الجدول الجديد
system.quotas، والدالتان الجديدتانcurrentQuota,currentQuotaKey، وصياغة SQL الجديدةCREATE QUOTA,ALTER QUOTA,DROP QUOTA,SHOW QUOTA. #7257 (Vitaly Baranov) - أصبح بالإمكان تخطي الإعدادات غير المعروفة مع إصدار تحذيرات بدلًا من طرح استثناءات. #7653 (Vitaly Baranov)
- أُعيدت هيكلة سياسات الصفوف ضمن نظام التحكم في الوصول. وأُضيف الجدول الجديد
system.row_policies، والدالة الجديدةcurrentRowPolicies()، وصياغة SQL الجديدةCREATE POLICY,ALTER POLICY,DROP POLICY,SHOW CREATE POLICY,SHOW POLICIES. #7808 (Vitaly Baranov)
إصلاح أمني
- أُصلِحَت ثغرة كانت تتيح قراءة بنية الدلائل في الجداول التي تستخدم محرك الجداول
File. يُصلح ذلك #8536. #8537 (alexey-milovidov)