الانتقال إلى المحتوى الرئيسي

إصدار 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).

تحسينات البناء/الاختبار/التحزيم

  • تحديث معلومات المناطق الزمنية إلى الإصدار 2020e. #18531 (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 في غير موضعه في query CREATE 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).

ميزة تجريبية

  • تمت إضافة محرك الجدول EmbeddedRocksDB (يمكن استخدامه مع القواميس). #15073 (sundyli).

تحسينات البناء/الاختبار/التحزيم

  • تحسينات في تغطية اختبارات بناء الصور. #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 &#95;state (LOGICAL&#95;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).

تحسينات البناء/الاختبار/التحزيم

  • تحديث معلومات المناطق الزمنية إلى الإصدار 2020e. #18531 (alesapin).

إصدار 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&#95;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 محتمل في topK aggregate 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>. وبالنسبة إلى storages ReplicatedMergeTree*، تُطبَّق الإعدادات من <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 engine MaterializeMySQL. #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 balancing FIRST_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 بعد query ALTER. يُصلح هذا #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&#95;threads &gt; 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&#95;localhost&#95;replica=0 وinternal&#95;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&#95;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 دون clause LIMIT مصاحبة. #10802 (Guillaume Tassery).
  • أُضيف جدول system.licenses. يحتوي هذا الجدول على تراخيص المكتبات الخارجية الموجودة في الدليل contrib. وبذلك أُغلقت #2890. #10795 (alexey-milovidov).
  • دالة جديدة toStartOfSecond(DateTime64) -&gt; 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 وتقرأ من table Buffer. #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&#95;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&#95;memory&#95;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).

تحسينات في البناء/الاختبار/التغليف

  • إصلاح عدة اختبارات تكاملية متقطعة. #11355 (alesapin).

إصدار ClickHouse v20.4.4.18-stable 2020-05-26

لا توجد تغييرات مقارنةً بـ v20.4.3.16-stable.

إصدار 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).
  • إصلاح تعليق الاستعلامات التي تحتوي على عدد كبير من الاستعلامات الفرعية على جدول MySQL engine نفسه. سابقًا، إذا كان هناك أكثر من 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 في format Values. يُصلح هذا #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&#95;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).

تحسينات في البناء/الاختبار/التغليف

  • إصلاح عدة اختبارات تكامل متقلبة. #11355 (alesapin).

إصدار 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 على query OPTIMIZE أثناء انتظار 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).

تحسينات البناء/الاختبار/التغليف

إصدار 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&#95;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

إصلاح الأخطاء

  • إصلاح القفل الزائد على البنية أثناء تنفيذ alter. #11790 (alesapin).

إصدار 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).

تحسينات البناء/الاختبار/التغليف

  • أُضيفت شهادات CA إلى صورة Docker الخاصة بـ clickhouse-server. #10476 (filimonov).

إصدار 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).

تحسينات البناء/الاختبار/التغليف

إصدار 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).

تحسينات البناء/الاختبار/التغليف

  • إزالة أعلام الرابط المكررة. والتأكد من أن الرابط لن يبحث عن رمز غير متوقع. #9433 (Amos Bird).

إصدار 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)

تحسينات البناء/الاختبار/التغليف

إصدار 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 type String (التي تتطلب التحقق من 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 الآن بشكل صحيح مع format Native. يُصلح هذا #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)
  • أُضيفت المصادقة إلى S3 table 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)
آخر تعديل في ٢٩ يونيو ٢٠٢٦