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

إصدار ClickHouse 22.12، 2022-12-15. العرض التقديمي، الفيديو

يحتوي هذا الإصدار على تعليق خاطئ في خدمة systemd، وقد يؤدي ذلك إلى تعطل تثبيت ClickHouse عند الترقية على بعض توزيعات لينكس. تُعدّل خدمة systemd أذونات مالك الدليل /run/systemd، مما يتسبب في فشل جميع عمليات systemd اللاحقة. ويُنصح بتجاوز الترقية إلى هذا الإصدار والترقية بدلًا من ذلك إلى إصدار أحدث من ClickHouse.راجع هذه المشكلة على GitHub لمزيد من التفاصيل: https://github.com/ClickHouse/ClickHouse/issues/48285

ملاحظات الترقية

  • تم إصلاح عدم التوافق مع الإصدارات السابقة في تسلسل/إلغاء تسلسل حالات الدوال التجميعية min وmax وany* وargMin وargMax التي تأخذ وسيطًا من النوع String. يؤثر هذا الخلل في فروع 22.9 و22.10 و22.11 (وقد أُصلح بدءًا من 22.9.6 و22.10.4 و22.11.2 على التوالي). كما تتأثر أيضًا بعض الإصدارات الفرعية من فروع 22.3 و22.7 و22.8: ‏22.3.13…22.3.14 (أُصلح بدءًا من 22.3.15)، و22.8.6…22.8.9 (أُصلح بدءًا من 22.8.10)، و22.7.6 وما بعده (لن يُصلح في 22.7، ونوصي بالترقية من 22.7.* إلى 22.8.10 أو أحدث). لا تهم ملاحظة الإصدار هذه المستخدمين الذين لم يسبق لهم استخدام الإصدارات المتأثرة. تضيف الإصدارات غير المتوافقة محرف '\0' إضافيًا إلى السلاسل النصية عند قراءة حالات الدوال التجميعية المذكورة أعلاه. على سبيل المثال، إذا حفظ إصدار أقدم حالة anyState('foobar') في state_column، فسيطبع الإصدار غير المتوافق 'foobar\0' عند anyMerge(state_column). كما أن الإصدارات غير المتوافقة تكتب حالات الدوال التجميعية من دون '\0' ختامية. يمكن للإصدارات الأحدث (التي تتضمن الإصلاح) قراءة البيانات المكتوبة بواسطة جميع الإصدارات، بما في ذلك الإصدارات غير المتوافقة، بشكل صحيح، باستثناء حالة نادرة واحدة. فإذا حفظ إصدار غير متوافق حالةً تحتوي على سلسلة نصية تنتهي فعليًا بمحرف null، فسيحذف الإصدار الأحدث '\0' الختامية عند قراءة حالة الدالة التجميعية المتأثرة. على سبيل المثال، إذا حفظ إصدار غير متوافق حالة anyState('abrac\0dabra\0') في state_column، فستطبع الإصدارات الأحدث 'abrac\0dabra' عند anyMerge(state_column). تؤثر هذه المشكلة أيضًا في الاستعلامات الموزعة عندما يعمل إصدار غير متوافق ضمن cluster مع إصدارات أقدم أو أحدث. #43038 (Alexander Tokmakov, Raúl Marín). ملاحظة: تتضمن جميع البُنى الرسمية لـ ClickHouse هذه الترقيعات بالفعل. ولا ينطبق ذلك بالضرورة على البُنى غير الرسمية من جهات خارجية، والتي ينبغي تجنبها.

ميزة جديدة

  • إضافة تنسيق الإدخال/الإخراج BSONEachRow. في هذا التنسيق، يقوم ClickHouse بتنسيق/تحليل كل صف على أنه مستند BSON مستقل، كما يُنسَّق/يُحلَّل كل عمود على أنه حقل BSON واحد، ويكون اسم العمود هو المفتاح. #42033 (mark-polokhov).
  • إضافة خوارزمية JOIN ‏grace_hash، ويمكن تفعيلها باستخدام SET join_algorithm = 'grace_hash'. #38191 (BigRedEye, Vladimir C).
  • السماح بتهيئة قواعد تعقيد كلمات المرور وعمليات التحقق عند إنشاء المستخدمين وتغييرهم. #43719 (Nikolay Degterinsky).
  • إخفاء المعلومات الحساسة في السجلات؛ وإخفاء الأجزاء السرية في مخرجات الاستعلامين SHOW CREATE TABLE وSELECT FROM system.tables. كما يعالج أيضًا #41418. #43227 (Vitaly Baranov).
  • إضافة صياغة GROUP BY ALL: #37631. #42265 (刘陶峰).
  • إضافة صياغة FROM table SELECT column. #41095 (Nikolay Degterinsky).
  • إضافة الدالة concatWithSeparator، وإضافة concat_ws كاسم مستعار للتوافق مع Spark SQL. كما أُضيفت الدالة concatWithSeparatorAssumeInjective كصيغة أخرى لتمكين تحسين GROUP BY، على نحو مماثل لـ concatAssumeInjective. #43749 (李扬).
  • إضافة الدالتين multiplyDecimal وdivideDecimal لعمليات Decimal ذات الدقة الثابتة. #42438 (Andrey Zvonov).
  • إضافة الجدول system.moves مع قائمة بالأجزاء الجاري نقلها حاليًا. #42660 (Sergei Trifonov).
  • إضافة دعم نقطة نهاية Prometheus المضمّنة لـ ClickHouse Keeper. #43087 (Antonio Andelic).
  • دعم القيم العددية الحرفية التي تستخدم _ فاصلًا، على سبيل المثال 1_000_000. #43925 (jh0x).
  • إضافة إمكانية استخدام Array كمعامل ثانٍ للدالة cutURLParameter. وسيتيح ذلك إزالة عدة معاملات. يغلق #6827. #43788 (Roman Vasin).
  • إضافة عمود يتضمن expression الخاصة بالـ index في الجدول system.data_skipping_indices. #43308 (Guillaume Tassery).
  • إضافة العمود engine_full إلى جدول النظام databases بحيث يمكنك الوصول إلى تعريف engine الكامل لقاعدة البيانات عبر جداول النظام. #43468 (凌涛).
  • تمت إضافة hash function جديدة هي xxh3. كما جرى تحسين أداء xxHash32 وxxHash64 على ARM بفضل تحديث المكتبة. #43411 (Nikita Taranov).
  • أُضيف دعم لتحديد قيود على إعدادات MergeTree. على سبيل المثال، يمكنك منع المستخدمين من تجاوز storage_policy. #43903 (Sergei Trifonov).
  • أُضيف إعداد جديد input_format_json_read_objects_as_strings يتيح تحليل كائنات JSON المتداخلة كـ Strings في جميع تنسيقات إدخال JSON. هذا الإعداد معطّل افتراضيًا. #44052 (Kruglov Pavel).

ميزة تجريبية

  • دعم إزالة الازدواجية لعمليات الإدراج غير المتزامنة. قبل هذا التغيير، لم تكن عمليات الإدراج غير المتزامنة تدعم إزالة الازدواجية، لأن عدة عمليات insert صغيرة كانت تُدمج ضمن Batch واحدة مُدرجة. يُغلق #38075. #43304 (Han Fei).
  • إضافة دعم cosine distance إلى فهرس Annoy التجريبي (vector similarity search). #42778 (Filatenkov Artur).
  • إضافة استعلامات CREATE / ALTER / DROP NAMED COLLECTION. #43252 (Kseniia Sumarokova). هذه الميزة قيد التطوير، وهذه الاستعلامات ليست فعّالة حتى الإصدار 22.12. أُضيف بند changelog هذا فقط لتجنب الالتباس. تم تقييد الوصول الافتراضي إلى named collections بالمستخدم المعرّف في config. ويتطلب ذلك ضبط show_named_collections = 1 لكي تصبح مرئية. #43325 (Kseniia Sumarokova). وتمت إضافة table ‏system.named_collections #43147 (Kseniia Sumarokova).

تحسين الأداء

  • أُضيف الإعدادان max_streams_for_merge_tree_reading وallow_asynchronous_read_from_io_pool_for_merge_tree. يحدّ الإعداد max_streams_for_merge_tree_reading من عدد تدفقات القراءة في جداول MergeTree. ويُفعّل الإعداد allow_asynchronous_read_from_io_pool_for_merge_tree تجمّع I/O في الخلفية للقراءة من جداول MergeTree. قد يؤدي ذلك إلى تحسين الأداء في الاستعلامات المقيّدة بـ I/O إذا استُخدم مع max_streams_to_max_threads_ratio أو max_streams_for_merge_tree_reading. #43260 (Nikolai Kochetov). ويمكن أن يحسّن هذا الأداء بما يصل إلى 100 مرة في حالات التخزين ذي زمن الوصول المرتفع، والعدد المنخفض من CPU، والعدد الكبير من أجزاء البيانات.
  • لم تكن الإعدادات merge_tree_min_rows_for_concurrent_read_for_remote_filesystem/merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem تراعي adaptive granularity. كما أن الصفوف الكبيرة لم تكن تقلّل عدد الصفوف المقروءة (كما هو الحال مع merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read)، ما قد يؤدي إلى ارتفاع استهلاك الذاكرة عند استخدام أنظمة الملفات البعيدة. #43965 (Nikolai Kochetov).
  • جرى تحسين عدد طلبات القائمة المرسلة إلى ZooKeeper أو ClickHouse Keeper عند اختيار جزء لدمجه. في السابق، كان ذلك قد ينتج آلاف الطلبات في بعض الحالات. يُصلح #43647. #43675 (Alexander Tokmakov).
  • يُتجاوز هذا التحسين الآن إذا كانت قيمة max_size_to_preallocate_for_aggregation صغيرة جدًا. كما زادت القيمة الافتراضية لهذا الإعداد إلى 10^8. #43945 (Nikita Taranov).
  • تسريع إيقاف الخادم عبر تجنّب تنظيف أجزاء البيانات القديمة، لأن ذلك لم يعد ضروريًا بعد https://github.com/ClickHouse/ClickHouse/pull/41145. #43760 (Sema Checherinda).
  • أصبح الدمج على العقدة البادئة يستخدم الآن النهج نفسه المقيّد بالذاكرة المستخدم في دمج نتائج التجميع المحلية إذا كان enable_memory_bound_merging_of_aggregation_results مضبوطًا. #40879 (Nikita Taranov).
  • تحسين في Keeper: محاولة مزامنة السجلات إلى القرص بالتوازي مع النسخ المتماثل. #43450 (Antonio Andelic).
  • تحسين في Keeper: تُجمَّع الطلبات على دفعات بوتيرة أكبر. ويمكن التحكّم في هذا التجميع عبر الإعداد الجديد max_requests_quick_batch_size. #43686 (Antonio Andelic).

تحسينات

  • تنفيذ التبعيات المرجعية واستخدامها لإنشاء الجداول بالترتيب الصحيح أثناء الاستعادة من نسخة احتياطية. #43834 (Vitaly Baranov).
  • استبدال UDFs في استعلام CREATE لتجنّب حالات الإخفاق أثناء التحميل عند بدء التشغيل. بالإضافة إلى ذلك، يمكن الآن استخدام UDFs كتعبيرات DEFAULT للأعمدة. #43539 (Antonio Andelic).
  • تغيير آلية حذف الأجزاء في الاستعلامات التالية: TRUNCATE TABLE و ALTER TABLE DROP PART و ALTER TABLE DROP PARTITION. تُنشئ هذه الاستعلامات الآن أجزاءً فارغة تغطي الأجزاء القديمة. وهذا يجعل استعلام TRUNCATE يعمل من دون قفل followedexclusive، ما يعني أن عمليات القراءة المتزامنة لا تُحظر. كما تحققت المتانة في جميع هذه الاستعلامات. وإذا نجح الطلب، فلن تظهر لاحقًا أجزاء أُعيد إحياؤها. لاحظ أن atomicity لا تتحقق إلا ضمن نطاق transaction. #41145 (Sema Checherinda).
  • لم يعد استعلام SET param_x يتطلب إجراء serialization نصي يدوي لقيمة المعلَمة. على سبيل المثال، يمكن الآن كتابة الاستعلام SET param_a = '[\'a\', \'b\']' على النحو SET param_a = ['a', 'b']. #41874 (Nikolay Degterinsky).
  • عرض الصفوف المقروءة في مؤشر التقدم أثناء القراءة من stdin من client. يُغلق #43423. #43442 (Kseniia Sumarokova).
  • عرض شريط التقدم أثناء القراءة من S3 table function / engine. #43454 (Kseniia Sumarokova).
  • سيعرض شريط التقدم كلاً من الصفوف المقروءة والمكتوبة. #43496 (Ilya Yatsishin).
  • تدعم filesystemAvailable والدوال ذات الصلة وسيطًا اختياريًا واحدًا لاسم disk، كما تم تغيير filesystemFree إلى filesystemUnreserved. يُغلق #35076. #42064 (flynn).
  • التكامل مع LDAP: زيادة default value لـ search_limit إلى 256، وإضافة خيار config لخادم LDAP لتغييرها إلى أي قيمة. يُغلق: #42276. #42461 (Vasily Nemkov).
  • السماح أيضًا بإزالة المعلومات الحساسة (راجع query_masking_rules في configuration file) من رسائل الاستثناء. يحل #41418. #42940 (filimonov).
  • دعم استعلامات مثل SHOW FULL TABLES ... للتوافق مع MySQL. #43910 (Filatenkov Artur).
  • تحسين في Keeper: إضافة الأمر 4lw rqld الذي يتيح تعيين عقدة يدويًا كـ leader. #43026 (JackyWoo).
  • تطبيق إعدادات Connection timeout على Distributed async INSERT من الاستعلام. #43156 (Azat Khuzhin).
  • تدعم الدالة unhex الآن argument من نوع FixedString. issue42369. #43207 (DR).
  • تُعطى الأولوية لحذف الأجزاء المنتهية الصلاحية بالكامل وفقًا لقواعد TTL، راجع #42869. #43222 (zhongyuankai).
  • عرض أكثر دقة واستجابةً لحمل CPU في clickhouse-client. #43307 (Sergei Trifonov).
  • دعم قراءة الأعمدة الفرعية للأنواع المتداخلة من وحدة التخزين S3 ودالة الجدول s3 بالتنسيقات Parquet وArrow وORC. #43329 (chen).
  • إضافة العمود table_uuid إلى الجدول system.parts. #43404 (Azat Khuzhin).
  • أُضيف خيار للعميل لعرض عدد الصفوف المُعالجة محليًا في الوضع غير التفاعلي (--print-num-processed-rows). #43407 (jh0x).
  • تنفيذ تحسين aggregation-in-order على مستوى خطة الاستعلام. وهو مُمكّن افتراضيًا (لكنه لا يعمل إلا مع optimize_aggregation_in_order، وهو معطّل افتراضيًا). اضبط query_plan_aggregation_in_order = 0 لاستخدام الإصدار السابق المستند إلى AST. #43592 (Nikolai Kochetov).
  • السماح بجمع profile events مع trace_type = 'ProfileEvent' في system.trace_log عند كل زيادة، مع المكدس الحالي واسم profile event وقيمة الزيادة. يمكن تمكين ذلك عبر الإعداد trace_profile_events واستخدامه للتحقيق في أداء الاستعلامات. #43639 (Anton Popov).
  • إضافة إعداد جديد input_format_max_binary_string_size لتقييد حجم السلسلة النصية في تنسيق RowBinary. #43842 (Kruglov Pavel).
  • عندما يرسل ClickHouse طلبًا إلى خادم HTTP بعيد ويُرجع هذا الخادم خطأً، لم يكن رمز HTTP الرقمي يُعرض بشكل صحيح في رسالة الاستثناء. يُغلق #43919. #43920 (Alexey Milovidov).
  • الإبلاغ عن الأخطاء في الاستعلامات بشكل صحيح حتى عند تنفيذ تحسين عمليات JOIN المتعددة. #43583 (Salvatore).

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

  • يُخطر تكامل Systemd الآن systemd بشكل صحيح بأن الخدمة قد بدأت بالفعل وأصبحت جاهزة لمعالجة الطلبات. #43400 (Коренберг Марк).
  • أُضيف خيار لبناء ClickHouse باستخدام OpenSSL مع OpenSSL FIPS Module. لم يخضع هذا النوع من البناء للاختبار للتحقق من الأمان، وهو غير مدعوم. #43991 (Boris Kuschel).
  • ترقية إلى compression codec الجديد DeflateQpl، الذي جرى تنفيذه في PR سابق (التفاصيل: https://github.com/ClickHouse/ClickHouse/pull/39494). يُحسّن هذا التصحيح الـ codec من الجوانب التالية: 1. الترقية من QPL v0.2.0 إلى QPL v0.3.0 Intel® Query Processing Library (QPL) 2. تحسين ملف CMake لمعالجة مشكلات build في QPL v0.3.0. 3. ربط مكتبة QPL مع libaccel-config في وقت build بدلاً من التحميل في وقت runtime في QPL v0.2.0 ‏(dlopen) 4. إصلاح مشكلة طباعة السجل في CompressionCodecDeflateQpl.cpp. #44024 (jasperzhu).

إصلاح خلل (سلوك خاطئ ظاهر للمستخدم في إصدار رسمي مستقر أو ما قبل الاستقرار)

  • تم إصلاح خطأ كان قد يؤدي إلى توقف تام عند استخدام asynchronous inserts. #43233 (Anton Popov).
  • إصلاح بعض المنطق غير الصحيح في تحسينات مستوى AST ‏optimize_normalize_count_variants. #43873 (Duc Canh Le).
  • إصلاح حالة لا تُحرِز فيها mutations أي تقدم عندما لا تتطابق checksums بين replicas (على سبيل المثال، بسبب تغيّر في format البيانات أثناء الترقية). #36877 (nvartolomei).
  • إصلاح تحسين skip_unavailable_shards الذي لم يكن يعمل مع table function ‏hdfsCluster. #43236 (chen).
  • إصلاح دعم s3 للرمز البديل ?. يُغلق هذا #42731. #43253 (chen).
  • إصلاح الدالتين arrayFirstOrNull وarrayLastOrNull بحيث تُرجعان null عندما تحتوي المصفوفة على عناصر Nullable. #43274 (Duc Canh Le).
  • إصلاح احتساب UserTimeMicroseconds/SystemTimeMicroseconds غير الصحيح المرتبط بـ Kafka tables. #42791 (Azat Khuzhin).
  • عدم كتم الاستثناءات في أقراص web. وإصلاح retries الخاصة بالقرص web. #42800 (Azat Khuzhin).
  • تم إصلاح race condition (منطقية) بين inserts وdropping materialized views. كانت race condition تحدث عند حذف materialized view بالتزامن مع عملية INSERT، حيث تكون MVs موجودة كتبعية لعملية insert في بداية التنفيذ، لكن يكون الجدول قد حُذف بحلول الوقت الذي تحاول فيه سلسلة insert الوصول إليه، ما يؤدي إلى الاستثناء UNKNOWN_TABLE أو TABLE_IS_DROPPED ويوقف insertion. بعد هذا التغيير، أصبحنا نتجنب هذه الاستثناءات ونواصل عملية insert ببساطة إذا كانت التبعية قد اختفت. #43161 (AlfVII).
  • إصلاح سلوك غير معرّف في الدالة quantiles قد يؤدي إلى استخدام ذاكرة غير مهيأة. اكتُشف ذلك بواسطة fuzzer. يُغلق هذا #44066. #44067 (Alexey Milovidov).
  • تمت إضافة check إضافي على كون uncompressed size صفراً إلى CompressionCodecDelta. #43255 (Nikita Taranov).
  • تسطيح المصفوفات من Parquet لتجنّب مشكلة تتعلق بعدم اتساق البيانات داخل المصفوفات. ويمكن أن تُنشئ Apache Iceberg هذه الملفات غير الصحيحة. #43297 (Arthur Passos).
  • إصلاح cast غير صحيح من column ‏LowCardinality عند استخدام تنفيذ الدوال بأسلوب short circuit. #43311 (Kruglov Pavel).
  • تم إصلاح queries التي تستخدم SAMPLE BY مع تحسين prewhere على الجداول التي تستخدم engine ‏Merge. #43315 (Antonio Andelic).
  • التحقق من محتوى الملف format_version في MergeTreeData ومقارنته، بحيث يمكن تحميل الجداول حتى إذا تم تغيير storage policy. #43328 (Antonio Andelic).
  • إصلاح الخطأ المنطقي المحتمل (وإن كان غير مرجح جدًا) “لا يوجد عمود للتراجع” أثناء INSERT في جداول Buffer. #43336 (Azat Khuzhin).
  • إصلاح خلل كان يسمح للمحلل اللغوي بتحليل عدد غير محدود من الأقواس المستديرة ضمن دالة واحدة إذا كان allow_function_parameters مفعّلًا. #43350 (Nikolay Degterinsky).
  • يدعم MaterializeMySQL (ميزة تجريبية) أوامر DDL التالية: drop table t1, t2، وهو متوافق مع معظم أوامر DROP DDL في MySQL. #43366 (zzsmdfj).
  • session_log (ميزة تجريبية): تم إصلاح مشكلة تعذر تسجيل الدخول (بسبب الفشل في إنشاء إدخال session_log) في حالة نادرة جدًا من اضطراب setting profiles. #42641 (Vasily Nemkov).
  • إصلاح احتمال ظهور الخطأ Cannot create non-empty column with type Nothing في الدالتين if/multiIf. يغلق #43356. #43368 (Kruglov Pavel).
  • إصلاح خلل عند استخدام عامل تصفية على مستوى الصف يعتمد على القيمة الافتراضية لعمود. #43387 (Alexander Gololobov).
  • قد يُرجع الاستعلام الذي يحتوي على DISTINCT + LIMIT BY + LIMIT عددًا من الصفوف أقل من المتوقع. يصلح #43377. #43410 (Igor Nikonov).
  • إصلاح sumMap لـ Nullable(Decimal(...)). #43414 (Azat Khuzhin).
  • إصلاح date_diff للساعات/الدقائق على MacOS. يغلق #42742. #43466 (zzsmdfj).
  • إصلاح احتساب الذاكرة غير الصحيح بسبب merges/mutations. #43516 (Azat Khuzhin).
  • تم إصلاح تحليل primary key مع الشروط التي تتضمن toString(enum). #43596 (Nikita Taranov). اكتشف @tisonkun هذا الخطأ.
  • ضمان الاتساق عند تحديث clickhouse-copier لكلٍّ من الحالة وattach_is_done في Keeper بعد اكتمال إرفاق partition. #43602 (lzydmxy).
  • أثناء استعادة replica مفقودة لقاعدة بيانات Replicated (ميزة تجريبية)، قد تنشأ حالة نحتاج فيها إلى swap ذري بين اسمي جدولين (باستخدام EXCHANGE). في السابق، كنا نحاول استخدام استعلامَي RENAME، وكان ذلك يفشل بوضوح، بل ويتسبب أيضًا في فشل عملية استعادة replica قاعدة البيانات بالكامل. #43628 (Nikita Mikhaylov).
  • إصلاح الحالة التي تُطلق فيها الدالة s3Cluster الخطأ NOT_FOUND_COLUMN_IN_BLOCK. يغلق #43534. #43629 (chen).
  • إصلاح خطأ منطقي محتمل Array sizes mismatched أثناء تحليل كائن JSON يحتوي على مصفوفات بأسماء مفاتيح متطابقة ولكن بمستويات تداخل مختلفة. يغلق #43569. #43693 (Kruglov Pavel).
  • إصلاح استثناء محتمل في حالة GROUP BY الموزع مع وجود عمود ALIAS بين مفاتيح التجميع. #43709 (Nikita Taranov).
  • إصلاح خطأ قد يؤدي إلى تلف projections إذا كان zero-copy replication (ميزة تجريبية) مُمكّنًا ويُستخدم. #43764 (alesapin).
  • إصلاح استخدام multipart upload للكائنات الكبيرة جدًا في AWS S3. #43824 (ianton-ru).
  • إصلاح ALTER ... RESET SETTING مع ON CLUSTER. كان من الممكن أن يُطبَّق على replica واحدة فقط. يصلح #43843. #43848 (Elena Torró).
  • إصلاح خطأ منطقي في JOIN مع محرك الجدول Join في الطرف الأيمن، عند استخدام USING. #43963 (Vladimir C). إصلاح خطأ متعلق بالترتيب غير الصحيح للمفاتيح في محرك الجدول Join. #44012 (Vladimir C).
  • إصلاح في Keeper: تنفيذ throw إذا كان منفذ الاتصال بين الخوادم الخاص بـ Raft مستخدمًا بالفعل. #43984 (Antonio Andelic).
  • إصلاح الوسيطة الموضعية في ORDER BY (مثال: ORDER BY 1, 2) في حالة pruning الأعمدة غير اللازمة من subqueries. يغلق #43964. #43987 (Kseniia Sumarokova).
  • إصلاح استثناء عند احتواء subquery على HAVING من دون أن تتضمن aggregation فعلية. #44051 (Nikita Taranov).
  • إصلاح حالة تسابق في s3 multipart upload. وكان من الممكن أن تتسبب هذه الحالة في ظهور الخطأ Part number must be an integer between 1 and 10000, inclusive. (S3_ERROR) أثناء restoring من نسخة احتياطية. #44065 (Vitaly Baranov).

إصدار ClickHouse 22.11، 2022-11-17. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • ستحاول الآن دوال عائلة JSONExtract تحويل القيم قسرًا إلى النوع المطلوب. #41502 (Márcio Martins).

ميزة جديدة

  • يضيف دعمًا لإعادة المحاولة أثناء عمليات INSERT إلى ReplicatedMergeTree عند فقدان الجلسة مع ClickHouse Keeper. وإلى جانب تحمّل الأعطال، يهدف هذا إلى تحسين تجربة المستخدم وتجنّب إرجاع خطأ إليه أثناء الإدراج إذا أُعيد تشغيل Keeper (على سبيل المثال، بسبب الترقية). #42607 (Igor Nikonov).
  • يضيف محركَي الجداول Hudi وDeltaLake بوضع القراءة فقط، وذلك للجداول الموجودة على S3 فقط. #41054 (Daniil Rubin, Kseniia Sumarokova).
  • يضيف table function hudi وdeltaLake. #43080 (flynn).
  • دعم للفواصل الزمنية المركّبة. 1. أصبحت عمليات الجمع والطرح والنفي متاحة الآن على Intervals. وفي حال اختلفت أنواع Intervals، فستُحوَّل إلى Tuple من تلك الأنواع. 2. يمكن إضافة tuple of intervals إلى حقل Date/DateTime أو طرحها منه. 3. أُضيف دعم parsing لـ Intervals من أنواع مختلفة، على سبيل المثال: INTERVAL '1 HOUR 1 MINUTE 1 SECOND'. #42195 (Nikolay Degterinsky).
  • أُضيف دعم glob ** للاجتياز التكراري لـ directory في filesystem وS3. يحلّ #36316. #42376 (SmitaRKulkarni).
  • تقديم disk type s3_plain لعمليات الكتابة مرة واحدة والقراءة مرات عديدة. وتنفيذ ATTACH لجدول MergeTree على قرص s3_plain. #42628 (Azat Khuzhin).
  • أُضيفت سياسات row-level المطبَّقة إلى system.query_log. #39819 (Vladimir Chebotaryov).
  • إضافة الأمر ذي الأحرف الأربعة csnp لإنشاء snapshots يدويًا في ClickHouse Keeper. بالإضافة إلى ذلك، أُضيف lgif للحصول على معلومات Raft لعقدة محددة (مثلًا، فهرس آخر snapshot تم إنشاؤها، وفهرس آخر سجل committed). #41766 (JackyWoo).
  • إضافة الدالة ascii كما في Apache Spark: https://spark.apache.org/docs/latest/api/sql/#ascii. #42670 (李扬).
  • إضافة الدالة pmod التي تُرجع نتيجة غير سالبة استنادًا إلى modulo. #42755 (李扬).
  • إضافة الدالة formatReadableDecimalSize. #42774 (Alejandro).
  • إضافة الدالة randCanonical، وهي مشابهة للدالة rand في Apache Spark أو Impala. تُولّد الدالة نتائج عشوائية زائفة بقيم موزعة توزيعًا منتظمًا، ومستقلة ومتماثلة التوزيع، ضمن [0, 1). #43124 (李扬).
  • إضافة الدالة displayName، مع إغلاق #36770. #37681 (hongbin).
  • إضافة الإعداد min_age_to_force_merge_on_partition_only لتحسين الأجزاء القديمة على مستوى partition بالكامل فقط. #42659 (Antonio Andelic).
  • إضافة تنفيذ عام للمجموعات المسماة ذات البنية الاعتباطية، ولنمط الوصول وsystem.named_collections. #43147 (Kseniia Sumarokova).

تحسين الأداء

  • يمكن للدالة match استخدام الفهرس إذا كان الشرط متعلقًا ببادئة سلسلة نصية. هذا يُغلق #37333. #42458 (clarkcaoliu).
  • تسريع معاملي AND وOR عند استخدامهما بشكل متسلسل. #42214 (Zhiguo Zhou).
  • دعم parsing المتوازي لـ input format ‏LineAsString. يحسّن هذا الأداء بدرجة طفيفة فقط. هذا يُغلق #42502. #42780 (Kruglov Pavel).
  • تحسين أداء ClickHouse Keeper: تحسين أداء commit في الحالات التي تكون فيها لدى العديد من العقد المختلفة حالات غير committed. من المفترض أن يساعد هذا في الحالات التي يتعذر فيها على عقدة follower المزامنة بالسرعة الكافية. #42926 (Antonio Andelic).
  • يمكن لشرط مثل NOT LIKE 'prefix%' استخدام primary index. #42209 (Duc Canh Le).

ميزة تجريبية

  • دعم النوع Object داخل أنواع أخرى، مثل Array(JSON). #36969 (Anton Popov).
  • تجاهل حدث SAVEPOINT في سجل binlog الخاص بـ MySQL ضمن MaterializedMySQL. #42931 (zzsmdfj). معالجة استعلامات SAVEPOINT في MaterializedMySQL (بتجاهلها). #43086 (Stig Bakken).

تحسينات

  • ستحدّد الاستعلامات البسيطة ذات LIMIT الصغير عدد الصفوف التقديري المطلوب قراءتها على نحو صحيح، بحيث يُفحَص الحدّ الفاصل بشكل صحيح. يُغلق #7071. #42580 (Han Fei).
  • إضافة دعم للمعلمات التفاعلية في استعلامات INSERT VALUES. #43077 (Nikolay Degterinsky).
  • أُضيف الحقل الجديد allow_readonly في system.table_functions للسماح باستخدام وظائف الجداول في وضع القراءة فقط. يحلّ #42414 التنفيذ: * أُضيف حقل جديد allow_readonly إلى الجدول system.table_functions. * تم التحديث لاستخدام الحقل الجديد allow_readonly للسماح باستخدام وظائف الجداول في وضع القراءة فقط. الاختبار: * أُضيف اختبار لـ filesystem tests/queries/0_stateless/02473_functions_in_readonly_mode.sh التوثيق: * تم تحديث التوثيق الإنجليزي لـ Table Functions. #42708 (SmitaRKulkarni).
  • أصبح system.asynchronous_metrics يتضمن توثيقًا مضمّنًا. ويُصدَّر هذا التوثيق أيضًا إلى Prometheus. كما أُصلح خطأ في المقاييس الخاصة بأقراص cache، إذ كانت تُحتسب لقرص cache عشوائي واحد فقط بدلًا من جميعها. يُغلق هذا #7644. #43194 (Alexey Milovidov).
  • تم تغيير خوارزمية throttling إلى token bucket. #42665 (Sergei Trifonov).
  • إخفاء كلمات المرور والمفاتيح السرية في كلٍّ من system.query_log و /var/log/clickhouse-server/*.log، وكذلك في رسائل الخطأ. #42484 (Vitaly Baranov).
  • إزالة الأجزاء المغطاة للجزء الذي تم جلبه (لتجنّب الزيادات المحتملة في تأخر النسخ المتماثل). #39737 (Azat Khuzhin).
  • إذا كان /dev/tty متاحًا، فسيُعرَض التقدّم في clickhouse-client و clickhouse-local مباشرةً على الطرفية، من دون الكتابة إلى STDERR. يتيح ذلك عرض التقدّم حتى إذا أُعيد توجيه STDERR إلى ملف، كما لن يتلوّث الملف بتسلسلات الهروب الخاصة بالطرفية. يمكن تعطيل التقدّم عبر --progress false. يُغلق هذا #32238. #42003 (Alexey Milovidov).
  • إضافة دعم لإدخال FixedString إلى دوال ترميز base64. #42285 (ltrk2).
  • إضافة العمودين bytes_on_disk و path إلى system.detached_parts. يُغلق #42264. #42303 (chen).
  • تحسين استخدام البنية من جدول الإدراج في وظائف الجداول، إذ أصبحت هناك قيمة جديدة ممكنة للإعداد use_structure_from_insertion_table_in_table_functions هي 2، وتعني أن ClickHouse سيحاول تلقائيًا تحديد ما إذا كان يمكن استخدام البنية من جدول الإدراج أم لا. يُغلق #40028. #42320 (Kruglov Pavel).
  • إصلاح غياب مؤشر التقدّم في INSERT FROM INFILE. يُغلق #42548. #42634 (chen).
  • إعادة هيكلة الدالة tokens لتمكين تحديد الحد الأقصى لعدد الـ tokens المُعادة في الدوال ذات الصلة (وهو معطّل افتراضيًا). #42673 (李扬).
  • السماح باستخدام الوسيطات Date32 في الدالتين formatDateTime و FROM_UNIXTIME. #42737 (Roman Vasin).
  • تحديث tzdata إلى 2022f. لن تعود المكسيك تعتمد التوقيت الصيفي إلا بالقرب من الحدود الأمريكية: https://www.timeanddate.com/news/time/mexico-abolishes-dst-2022.html. وستنتقل Chihuahua إلى UTC-6 على مدار العام اعتبارًا من 2022-10-30. كما أن Fiji لم تعد تعتمد التوقيت الصيفي. راجع https://github.com/google/cctz/pull/235 و https://bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1995209. #42796 (Alexey Milovidov).
  • إضافة مقياس الحدث FailedAsyncInsertQuery لعمليات الإدراج غير المتزامنة. #42814 (Krzysztof Góralski).
  • تنفيذ تحسين read-in-order بالاعتماد على query plan. وهو مفعّل افتراضيًا. اضبط query_plan_read_in_order = 0 لاستخدام الإصدار السابق المستند إلى AST. #42829 (Nikolai Kochetov).
  • زيادة حجم جزء الرفع بشكل أُسّي عند النسخ الاحتياطي إلى S3 لتجنّب الأخطاء المرتبطة بالحد الأقصى البالغ 10 000 جزء في multipart upload إلى S3. #42833 (Vitaly Baranov).
  • عندما تكون مهمة الدمج مشغولة باستمرار وتكون مساحة القرص غير كافية، يتعذر تحديد الأجزاء المنتهية الصلاحية بالكامل وإزالتها، مما يؤدي إلى نقص في مساحة القرص. والفكرة هنا هي أنه عندما تنتهي صلاحية الـ Part بالكامل، فلا حاجة إلى حجز مساحة إضافية على القرص، بما يضمن التنفيذ الطبيعي لـ TTL. #42869 (zhongyuankai).
  • إضافة الدالة oss وtable engine ‏OSS (وهذا أكثر ملاءمة للمستخدمين). ‏oss متوافق بالكامل مع S3. #43155 (zzsmdfj).
  • تحسين الإبلاغ عن الأخطاء عند جمع المعلومات المتعلقة بنظام التشغيل لجدول system.asynchronous_metrics. #43192 (Alexey Milovidov).
  • تعديل جداول INFORMATION_SCHEMA بحيث يتمكن ClickHouse من الاتصال بنفسه باستخدام compatibility protocol الخاصة بـ MySQL. وإضافة columns بدلًا من aliases (على صلة بـ #9769). سيؤدي ذلك إلى تحسين التوافق مع مختلف عملاء MySQL. #43198 (Filatenkov Artur).
  • إضافة بعض الدوال لتحسين التوافق مع PowerBI عند اتصاله باستخدام بروتوكول MySQL #42612 (Filatenkov Artur).
  • تحسين سهولة استخدام لوحة المعلومات عند إجراء التغييرات #42872 (Vladimir C).

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

  • شغّل SQLancer لكل طلب سحب ولكل commit على master. ‏SQLancer هو fuzzer مفتوح المصدر يركّز على الاكتشاف التلقائي للأخطاء المنطقية. #42397 (Ilya Yatsishin).
  • حدِّث إلى أحدث إصدار من zlib-ng. #42463 (Boris Kuschel).
  • أضِف دعمًا لاختبار ClickHouse server باستخدام Jepsen. وبالمناسبة، لدينا بالفعل دعم لاختبار ClickHouse Keeper باستخدام Jepsen. يوسّع طلب السحب هذا هذا الدعم ليشمل الجداول Replicated. #42619 (Antonio Andelic).
  • استخدم https://github.com/matus-chochlik/ctcache للتخزين المؤقت لنتائج clang-tidy. #42913 (Mikhail f. Shiryaev).
  • قبل هذا الإصلاح، كان RPM يحتفظ بملف config الذي يحدده المستخدم في $file.rpmsave. يُصلح طلب السحب هذا المشكلة، ولن يستبدل ملفات المستخدم القادمة من الحزم. #42936 (Mikhail f. Shiryaev).
  • أزِل بعض المكتبات من Docker image الخاصة بـ Ubuntu. #42622 (Alexey Milovidov).

إصلاح خلل (سلوك غير صحيح ظاهر للمستخدم في إصدار مستقر أو ما قبل الاستقرار رسمي)

  • تم تحديث المُطبِّع لاستنساخ alias ast. يحلّ هذا #42452 التنفيذ: * تم تحديث QueryNormalizer لاستنساخ alias ast عند استبداله. في السابق، كان مجرد إسناد الكائن نفسه يؤدي إلى ظهور استثناء في LogicalExpressinsOptimizer، لأن الأصل نفسه كان يُدرَج مرة أخرى. * لا تظهر هذه المشكلة مع analyzer الجديد (allow_experimental_analyzer)، لذلك لم تُجرَ أي تغييرات عليه. كما أُضيف اختبار للحالة نفسها. #42827 (SmitaRKulkarni).
  • إصلاح حالة تسابق في النسخ الاحتياطي للجداول في قواعد البيانات Lazy. #43104 (Vitaly Baranov).
  • إصلاح لـ skip_unavailable_shards: لم يكن يعمل مع دالة الجدول s3Cluster. #43131 (chen).
  • إصلاح schema inference في s3Cluster وتحسين في hdfsCluster. #41979 (Kruglov Pavel).
  • إصلاح إعادة المحاولات أثناء القراءة من محركات الجداول URL / دالة الجدول. (كان يمكن إعادة محاولة الأخطاء القابلة لإعادة المحاولة مرات أكثر من اللازم، بينما كانت الأخطاء غير القابلة لإعادة المحاولة تؤدي إلى فشل assertion في الشيفرة). #42224 (Kseniia Sumarokova).
  • تم الإبلاغ عن fault تجزئة متعلق بـ DNS و c-ares وتم إصلاحه. #42234 (Arthur Passos).
  • إصلاح LOGICAL_ERROR Arguments of 'plus' have incorrect data types الذي قد يحدث أثناء تحليل PK (فحص الرتابة). كما أُصلح تحليل PK غير الصحيح للدوال الثنائية الرتيبة ذات الوسيط الثابت الأول. #42410 (Nikolai Kochetov).
  • إصلاح تحليل المفتاح غير الصحيح عندما لا يمكن أن تكون أنواع المفاتيح ضمن Nullable. يحلّ هذا #42456. #42469 (Amos Bird).
  • إصلاح خطأ مطبعي في اسم أحد الإعدادات أدى إلى استخدام غير صحيح لذاكرة التخزين المؤقت الخاصة بـ schema inference عند استخدام الإعداد input_format_csv_use_best_effort_in_schema_inference. يغلق هذا #41735. #42536 (Kruglov Pavel).
  • إصلاح إنشاء Set بترويسة غير صحيحة عندما يكون نوع البيانات LowCardinality. يغلق هذا #42460. #42579 (flynn).
  • بات التحقق من قيم (U)Int128 و (U)Int256 يتم بشكل صحيح في PREWHERE. #42605 (Antonio Andelic).
  • إصلاح خطأ في parser الدوال كان يمكن أن يؤدي إلى fault تجزئة. #42724 (Nikolay Degterinsky).
  • إصلاح آلية القفل في truncate table. #42728 (flynn).
  • إصلاح احتمال حدوث crash في أقراص web عندما لا يكون الملف موجودًا (أو في OPTIMIZE TABLE FINAL، إذ قد ينتهي الأمر به أيضًا إلى الخطأ نفسه). #42767 (Azat Khuzhin).
  • إصلاح تعيين auth_type في system.session_log عبر تضمين SSL_CERTIFICATE ضمن قيم enum. #42782 (Miel Donkers).
  • إصلاح مشكلة stack-use-after-return في نسخة ASAN ضمن محلل استعلام Create User. #42804 (Nikolay Degterinsky).
  • إصلاح lowerUTF8/upperUTF8 عندما يقع الرمز بين حدَّي 16 بايت (وهي حالة شائعة جدًا إذا كانت السلاسل النصية أطول من 16 بايت). #42812 (Azat Khuzhin).
  • أُضيف فحص إضافي للحدود إلى إجراء فك ضغط LZ4 لإصلاح السلوك غير الصحيح عند وجود إدخال غير صالح. #42868 (Nikita Taranov).
  • إصلاح احتمال نادر لحدوث تعليق عند إلغاء الاستعلام. #42874 (Azat Khuzhin).
  • إصلاح سلوك غير صحيح عند وجود عدة شروط منفصلة في hash join، يغلق #42832. #42876 (Vladimir C).
  • قد يتولّد مؤشّر NULL عند استخدام select if as from في ‘three table join’، على سبيل المثال، في استعلام SQL التالي: #42883 (zzsmdfj).
  • إصلاح تقرير memory sanitizer في Cluster Discovery، يغلق #42763. #42905 (Vladimir C).
  • تحسين استنباط مخطط DateTime في حالة السلسلة النصية الفارغة. #42911 (Kruglov Pavel).
  • إصلاح خطأ NOT_FOUND_COLUMN_IN_BLOCK نادر عند إمكان استخدام projection مع عدم توفّر أي projection فعليًا. يُصلح هذا #42771. أُدخل هذا الخلل في https://github.com/ClickHouse/ClickHouse/pull/25563. #42938 (Amos Bird).
  • إصلاح ATTACH TABLE في engine قاعدة البيانات PostgreSQL إذا كان الجدول يحتوي على نوع البيانات DATETIME. يغلق #42817. #42960 (Kseniia Sumarokova).
  • إصلاح parsing لتعبيرات lambda. يغلق #41848. #42979 (Nikolay Degterinsky).
  • إصلاح التحليل غير الصحيح للمفاتيح عند ظهور مفاتيح Nullable في وسط مستطيل فائق. يُصلح هذا #43111. #43133 (Amos Bird).
  • إصلاح عدة قراءات زائدة من المخزن المؤقت أثناء deserialization لحالات aggregate function states المُعدّة بعناية. #43159 (Raúl Marín).
  • إصلاح الدالة if في حالة NULL ووسائط Nullable الثابتة. يغلق #43069. #43178 (Kruglov Pavel).
  • إصلاح تجاوز السعة في حسابات Decimal عند تحليل DateTime باستخدام خوارزمية ‘best effort’. يُغلق #43061. #43180 (Kruglov Pavel).
  • كان حساب الحقل indent الذي تُنتجه أداة git-import غير صحيح. راجع https://clickhouse.com/docs/getting-started/example-datasets/github/. #43191 (Alexey Milovidov).
  • إصلاح سلوك غير متوقع لأنواع Interval مع الاستعلامات الفرعية والتحويل بين الأنواع. #43193 (jh0x).

إصدار ClickHouse 22.10، 2022-10-25. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • إعادة تسمية أوامر ذاكرة التخزين المؤقت: show caches -> show filesystem caches، وdescribe cache -> describe filesystem cache. #41508 (Kseniia Sumarokova).
  • إزالة دعم القسم WITH TIMEOUT في LIVE VIEW. وبذلك يُغلَق #40557. #42173 (Alexey Milovidov).
  • إزالة دعم الماكرو {database} من موجّه client. كان يُعرَض بشكل غير صحيح إذا لم تكن قاعدة البيانات محددة، كما أنه لم يكن يُحدَّث عند تنفيذ عبارات USE. وبذلك يُغلَق #25891. #42508 (Alexey Milovidov).

ميزة جديدة

  • تمت إضافة إعدادات بروتوكولات قابلة للتركيب. ويمكن الآن إعداد بروتوكولات مختلفة مع مضيفات استماع مختلفة. كما يمكن إعداد أغلفة البروتوكول مثل PROXYv1 فوق أي بروتوكولات أخرى (TCP، وTCP secure، وMySQL، وPostgres). #41198 (Yakov Olkhovskiy).
  • تمت إضافة S3 كنوع جديد من وجهات النسخ الاحتياطية. كما أصبح BACKUP إلى S3 مدعومًا مع الحفاظ على بنية path/data كما هي. #42333 (Vitaly Baranov), #42232 (Azat Khuzhin).
  • أضيفت دوال (randUniform, randNormal, randLogNormal, randExponential, randChiSquared, randStudentT, randFisherF, randBernoulli, randBinomial, randNegativeBinomial, randPoisson) لتوليد قيم عشوائية وفقًا للتوزيعات المحددة. وبذلك يُغلَق #21834. #42411 (Nikita Mikhaylov).
  • تحسين في ClickHouse Keeper: إضافة دعم لرفع snapshots إلى S3. ويمكن تعريف معلومات S3 داخل keeper_server.s3_snapshot. #41342 (Antonio Andelic).
  • تمت إضافة دالة تجميعية analysisOfVariance (anova) لإجراء اختبار إحصائي على عدة مجموعات من المشاهدات ذات التوزيع الطبيعي لمعرفة ما إذا كان متوسط جميع المجموعات متساويًا أم لا. Original PR #37872. #42131 (Nikita Mikhaylov).
  • دعم تقييد حجم البيانات المؤقتة المخزنة على disk باستخدام settings ‏max_temporary_data_on_disk_size_for_user/max_temporary_data_on_disk_size_for_query. #40893 (Vladimir C).
  • إضافة setting ‏format_json_object_each_row_column_for_object_name لكتابة/تحليل اسم object كقيمة column في format ‏JSONObjectEachRow. #41703 (Kruglov Pavel).
  • إضافة دالة hash ‏BLAKE3 إلى SQL. #33435 (BoloniniD).
  • تم توسيع الدالة javaHash لتشمل الأعداد الصحيحة. #41131 (JackyWoo).
  • إضافة دعم OpenTelemetry إلى ON CLUSTER DDL (يتطلب ضبط distributed_ddl_entry_format_version على 4). #41484 (Frank Chen).
  • تمت إضافة جدول النظام ‏asynchronous_insert_log. ويحتوي على معلومات حول asynchronous inserts (بما في ذلك نتائج الاستعلامات في وضع fire-and-forget (مع wait_for_async_insert=0)) لتحسين إمكانية الفحص الداخلي. #42040 (Anton Popov).
  • إضافة دعم للطرق lz4, bz2, snappy في Accept-Encoding الخاص بـ HTTP، وهو امتداد غير قياسي لـ HTTP protocol. #42071 (Nikolay Degterinsky).
  • تمت إضافة دوال ترميز/فك ترميز Morton Coding (ZCurve). #41753 (Constantine Peresypkin).
  • إضافة دعم لعبارة SET setting_name = DEFAULT. #42187 (Filatenkov Artur).

ميزة تجريبية

  • تمت إضافة بنية تحتية جديدة لتحليل الاستعلام وتخطيطه ضمن الإعداد allow_experimental_analyzer. #31796 (Maksim Kita).
  • التنفيذ الأولي للغة Kusto Query Language. يُرجى عدم استخدامها. #37961 (Yong Wang).

تحسين الأداء

  • تخفيف حدّ “Too many parts”. يُغلق هذا #6551. يتيح ClickHouse الآن عددًا أكبر من الأجزاء في partition إذا كان متوسط part size كبيرًا بما يكفي (10 GiB على الأقل). ويجعل ذلك من الممكن الوصول إلى ما يصل إلى petabytes من البيانات ضمن partition واحد في table واحدة على server واحد، وهو ما يمكن تحقيقه باستخدام رفوف الأقراص أو object storage. #42002 (Alexey Milovidov).
  • تنفيذ parser لعناصر أسبقية operator لتقليل حجم stack المطلوب. #34892 (Nikolay Degterinsky).
  • يستفيد تحسين DISTINCT in order من خصائص فرز streams البيانات. يتيح هذا التحسين القراءة بالترتيب لـ DISTINCT عند انطباق ذلك (إذ كان من الضروري سابقًا توفير ORDER BY للأعمدة الموجودة في DISTINCT). #41014 (Igor Nikonov).
  • ColumnVector: تحسين فهرس UInt8 باستخدام AVX512VBMI. #41247 (Guo Wangyang).
  • تحسين التنافس على الأقفال الخاصة بـ ThreadGroupStatus::mutex. تُظهر تجارب الأداء الخاصة بـ SSB (Star Schema Benchmark) على جهاز ICX ‏(Intel Xeon Platinum 8380 CPU، ‏80 نواة، ‏160 thread) أن هذا التغيير يمكن أن يحقق تحسنًا بمقدار 2.95x في المتوسط الهندسي لـ QPS عبر جميع الحالات الفرعية. #41675 (Zhiguo Zhou).
  • إضافة capabilities ‏ldapr إلى builds الخاصة بـ AArch64. هذا مدعوم على Graviton 2+، وفي instances ‏Azure وGCP. ولم يظهر ذلك إلا في clang-15 منذ وقت ليس ببعيد. #41778 (Daniel Kutenin).
  • تحسين الأداء عند مقارنة strings عندما يكون أحد argument عبارة عن string constant فارغ. #41870 (Jiebin Sun).
  • تحسين insertFrom في ColumnAggregateFunction لمشاركة aggregate state في بعض الحالات. #41960 (flynn).
  • جعل الكتابة إلى disks ‏azure_blob_storage أسرع (مع مراعاة max_single_part_upload_size بدلًا من كتابة block لكل حجم buffer). ذُكر هذا القصور في #41754. #42041 (Kseniia Sumarokova).
  • جعل معرّفات thread في قائمة العمليات وquery_log فريدة لتجنّب الهدر. #42180 (Alexey Milovidov).
  • دعم تجاوز cache بالكامل (سواء التنزيل إلى cache أو قراءة البيانات المخزنة مؤقتًا) إذا تجاوز نطاق القراءة المطلوب threshold المحددة في إعداد cache ‏bypass_cache_threashold، ويتطلب ذلك تفعيله عبر enable_bypass_cache_with_threshold. #42418 (Han Shukai). يساعد هذا مع الأقراص المحلية البطيئة.

تحسينات

  • إضافة الإعداد allow_implicit_no_password: بالاقتران مع allow_no_password، يمنع إنشاء مستخدم من دون كلمة مرور ما لم يُحدَّد IDENTIFIED WITH no_password صراحةً. #41341 (Nikolay Degterinsky).
  • سيبدأ Embedded Keeper دائمًا في الخلفية، مما يتيح لـ ClickHouse البدء من دون تحقيق quorum. #40991 (Antonio Andelic).
  • جُعلت إعادة إنشاء connection جديدة إلى ZooKeeper أكثر سرعة في الاستجابة عند انتهاء صلاحية الاتصال السابق. في السابق، كانت هناك مهمة تُشغَّل افتراضيًا كل دقيقة، ولذلك كان يمكن أن يبقى table في حالة readonly لهذه المدة تقريبًا. #41092 (Nikita Mikhaylov).
  • يمكن الآن استخدام projections مع zero copy replication (تُعد zero-copy replication ميزة غير مخصصة لبيئات production). #41147 (alesapin).
  • دعم expression ‏(EXPLAIN SELECT ...) داخل subquery. وأصبحت queries مثل SELECT * FROM (EXPLAIN PIPELINE SELECT col FROM TABLE ORDER BY col) صالحة الآن. #40630 (Vladimir C).
  • السماح بتغيير async_insert_max_data_size أو async_insert_busy_timeout_ms ضمن نطاق query. على سبيل المثال، قد ترغب مستخدمة في insert data على فترات متباعدة، لكنها لا تملك صلاحية الوصول إلى config الخاص بـ server لضبط الإعدادات الافتراضية. #40668 (Nikita Mikhaylov).
  • تحسينات على القراءة من remote filesystems، مع إتاحة تهيئة حجم threadpool لعمليات reads/writes. يُغلق #41070. #41011 (Kseniia Sumarokova).
  • دعم جميع تركيبات combinators في versioning الخاصة بـ WindowTransform/arratReduce*/initializeAggregation/aggregate functions. سابقًا، لم تكن combinators مثل ForEach/Resample/Map تعمل في هذه المواضع، وكان استخدامها يؤدي إلى exception مثل State function ... inserts results into non-state column. #41107 (Kruglov Pavel).
  • إضافة الدالة tryDecrypt التي تُرجع NULL عند فشل فك التشفير (مثلًا عند فك التشفير بمفتاح غير صحيح) بدلًا من إطلاق استثناء. #41206 (Duc Canh Le).
  • إضافة العمود unreserved_space إلى table ‏system.disks للتحقق من مقدار المساحة غير المشغولة بالحجوزات على كل disk. #41254 (filimonov).
  • دعم headers الخاصة بالتفويض في s3 ضمن arguments الخاصة بـ table function. #41261 (Kseniia Sumarokova).
  • إضافة دعم MultiRead في Keeper وclient الداخلي لـ ZooKeeper (وهذا extension لبروتوكول ZooKeeper، ومتاح فقط في ClickHouse Keeper). #41410 (Antonio Andelic).
  • إضافة دعم مقارنة النوع Decimal مع قيمة floating point literal في المعامل IN. #41544 (liang.huang).
  • السماح باستخدام values ذات حجم قابل للقراءة (مثل 1TB) في config الخاص بـ cache. #41688 (Kseniia Sumarokova).
  • كان ClickHouse يحتفظ مؤقتًا بإدخالات DNS قديمة لبعض الوقت (15 ثانية افتراضيًا) إلى أن يجري تحديث الذاكرة المؤقتة بشكل غير متزامن. وخلال هذه الفترات، كان بإمكان ClickHouse مع ذلك محاولة إنشاء اتصال والتسبب في أخطاء. تم إصلاح هذا السلوك. #41707 (Nikita Mikhaylov).
  • إضافة بحث تفاعلي في السجل باستخدام أداة شبيهة بـ fzf ‏(fzf/sk) لـ clickhouse-client/clickhouse-local (لاحظ أنه يمكنك استخدام FZF_DEFAULT_OPTS/SKIM_DEFAULT_OPTIONS لتهيئة السلوك بشكل إضافي). #41730 (Azat Khuzhin).
  • لا يُسمح الآن للعملاء الذين يتصلون بخادم آمن بشهادة غير صالحة بالمتابعة إلا باستخدام الخيار --accept-certificate. #41743 (Yakov Olkhovskiy).
  • إضافة الدالة tryBase58Decode، على غرار الدالة الحالية tryBase64Decode. #41824 (Robert Schulze).
  • تحسين الرسائل عند استبدال partition بمفتاح أساسي مختلف. يُصلح #34798. #41838 (Salvatore).
  • إصلاح التحليل المتوازي: إذ يتحقق segmentator الآن من max_block_size. وقد أصلح ذلك التخصيص الزائد للذاكرة في حالة التحليل المتوازي مع LIMIT صغير. #41852 (Vitaly Baranov).
  • لا تُضِف الاستثناء "TABLE_IS_DROPPED" إلى system.errors إذا حدث أثناء تنفيذ SELECT من جدول نظام وتم تجاهله. #41908 (AlfVII).
  • تحسين الخيار enable_extended_results_for_datetime_functions لإرجاع نتائج من النوع DateTime64 للدوال toStartOfDay وtoStartOfHour وtoStartOfFifteenMinutes وtoStartOfTenMinutes وtoStartOfFiveMinutes وtoStartOfMinute وtimeSlot. #41910 (Roman Vasin).
  • تحسين استنتاج النوع DateTime في التنسيقات النصية. فهو الآن يراعي الإعداد date_time_input_format ولا يحاول استنتاج قيم التاريخ والوقت من الأرقام على أنها timestamps. يُغلق #41389 ويُغلق #42206. #41912 (Kruglov Pavel).
  • إزالة التحذير المربك عند الإدراج مع perform_ttl_move_on_insert = false. #41980 (Vitaly Baranov).
  • السماح للمستخدم بكتابة countState(*) على غرار count(*). هذا يُغلق #9338. #41983 (Amos Bird).
  • إصلاح تجاوز السعة في حجم rankCorr. #42020 (Duc Canh Le).
  • أُضيف خيار لتحديد سلسلة نصية عشوائية كاسم للبيئة في إعدادات Sentry لتسهيل التقارير. #42037 (Nikita Mikhaylov).
  • إصلاح تحليل قيم Date الخارجة عن النطاق من CSV. #42044 (Andrey Zvonov).
  • يدعم parseDataTimeBestEffort الآن استخدام الفاصلة بين التاريخ والوقت. يُغلق #42038. #42049 (flynn).
  • تم تحسين آلية استعادة النسخة المتماثلة المتقادمة في ReplicatedMergeTree. إذا كانت النسخة المتماثلة المفقودة تحتوي على بعض الأجزاء غير الموجودة في نسخة متماثلة سليمة، لكن من المفترض أن تظهر هذه الأجزاء لاحقًا وفقًا لطابور النسخ المتماثل للنسخة السليمة، فستحتفظ النسخة المتماثلة المفقودة بهذه الأجزاء بدلًا من فصلها. #42134 (Alexander Tokmakov).
  • أُضيفت إمكانية استخدام معاملات Date32 مع الدالة date_diff. كما أُصلحت مشكلة في الدالة date_diff عند استخدام معاملات DateTime64 مع تاريخ بداية يسبق Unix epoch وتاريخ نهاية يليه. #42308 (Roman Vasin).
  • عند رفع أجزاء كبيرة إلى Minio، قد تستغرق ‘Complete Multipart Upload’ وقتًا طويلًا. يرسل Minio نبضات حياة كل 10 ثوانٍ (انظر https://github.com/minio/minio/pull/7198). لكن ClickHouse تنتهي مهلته قبل ذلك، لأن مهلة الإرسال/الاستقبال الافتراضية مضبوطة على 5 ثوانٍ. #42321 (filimonov).
  • أُصلح خلل نادر في تحويل الأنواع لحالات التجميع عند التعامل مع أنواع معقدة مثل Decimal. وهذا يُصلح #42408. #42417 (Amos Bird).
  • أصبح من الممكن استخدام معاملات Date32 مع الدالة dateName. #42554 (Roman Vasin).
  • ستُستخدم الآن المرشحات التي تحتوي على قيم NULL حرفية أثناء تحليل الفهرس. #34063. #41842 (Amos Bird).
  • تُدمج الأجزاء إذا كان كل جزء ضمن النطاق أقدم من عتبة معينة. ويمكن ضبط هذه العتبة باستخدام min_age_to_force_merge_seconds. هذا يُغلق #35836. #42423 (Antonio Andelic). وهذا استكمال لـ #39550i من @fastio، الذي نفّذ معظم هذا المنطق.
  • أُضيفت بنية تحتية جديدة لتحليل الاستعلامات وتخطيطها ضمن الإعداد allow_experimental_analyzer. #31796 (Maksim Kita).
  • تحسين الوقت اللازم لاستعادة اتصالات Keeper المفقودة. #42541 (Raúl Marín).

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

  • إضافة fuzzer لتعريفات الجداول #40096 (Anton Popov). ويمثل هذا أكبر تقدم في اختبارات ClickHouse خلال هذا العام حتى الآن.
  • إصدار النسخة التجريبية Beta من خدمة ClickHouse Cloud: https://console.clickhouse.cloud/. وهي توفّر أسهل طريقة لاستخدام ClickHouse (بل أسهل قليلًا حتى من التثبيت بأمر واحد).
  • إضافة دعم توليد WHERE clause إلى AST Fuzzer، مع إمكانية إضافة ORDER BY وWHERE clause أو إزالتهما. #38519 (Ilya Yatsishin).
  • أصبحت الملفات التنفيذية لـ Aarch64 تتطلب الآن ARMv8.2 على الأقل، الذي صدر في عام 2016. والأهم من ذلك أن هذا يتيح استخدام ARM LSE، أي العمليات الذرية الأصلية. كذلك أُضيف خيار build في CMake باسم “NO_ARMV81_OR_HIGHER” للسماح بترجمة الملفات التنفيذية للأجهزة الأقدم من ARMv8.0، مثل Raspberry Pi 4. #41610 (Robert Schulze).
  • إتاحة build لـ ClickHouse باستخدام Musl (مع تعديلات طفيفة بعد أن كان مدعومًا بالفعل لكنه كان معطّلًا). #41987 (Alexey Milovidov).
  • إضافة التحقق من الملف $CLICKHOUSE_CRONFILE لتجنّب تشغيل الأمر sed فقط للوصول إلى خطأ يفيد بعدم العثور على الملف أثناء التثبيت. #42081 (Chun-Sheng, Li).
  • تحديث cctz إلى 2022e لدعم تغييرات timezone الجديدة. أصبحت التحولات في فلسطين الآن أيام السبت عند الساعة 02:00. كما جرى دمج المناطق الزمنية الثلاث في أوكرانيا في منطقة واحدة. وانتقلت الأردن وسوريا من +02/+03 مع التوقيت الصيفي إلى +03 على مدار العام. (https://data.iana.org/time-zones/tzdb/NEWS). يغلق هذا #42252. #42327 (Alexey Milovidov). #42273 (Dom Del Nano).
  • إضافة دعم لشفرة Rust في ClickHouse، مع مكتبة دالة التجزئة BLAKE3 كمثال. #33435 (BoloniniD).

إصلاح خلل (سلوك غير صحيح ظاهر للمستخدم في إصدار مستقر رسمي أو إصدار ما قبل الاستقرار رسمي)

  • اختيار طريقة التجميع الصحيحة لـ LowCardinality مع أنواع الأعداد الصحيحة الكبيرة. #42342 (Duc Canh Le).
  • عدة إصلاحات لقرص web. #41652 (Kseniia Sumarokova).
  • إصلاح مشكلة تؤدي إلى فشل docker run إذا لم يكن https_port موجودًا في ملف config. #41693 (Yakov Olkhovskiy).
  • لم يكن إلغاء عمليات mutations يتم على نحو صحيح عند إيقاف الخادم أو عند تنفيذ الاستعلام SYSTEM STOP MERGES، كما كان الإلغاء قد يستغرق وقتًا طويلًا. تم إصلاح ذلك. #41699 (Alexander Tokmakov).
  • إصلاح النتائج الخاطئة للاستعلامات التي تستخدم ORDER BY أو GROUP BY على أعمدة من بادئة مفتاح الفرز، والمغلفة داخل دوال رتيبة، عند تفعيل تحسين “read in order” (الإعدادان optimize_read_in_order و optimize_aggregation_in_order). #41701 (Anton Popov).
  • إصلاح تعطل محتمل في SELECT من جدول Merge عند تفعيل الإعداد optimize_monotonous_functions_in_order_by. يصلح #41269. #41740 (Nikolai Kochetov).
  • إصلاح الخطأ “Part … intersects part …” الذي قد يحدث في حالات نادرة جدًا إذا أُعيد تشغيل النسخة المتماثلة مباشرة بعد فصل part باعتباره تالفًا. #41741 (Alexander Tokmakov).
  • عدم السماح بإنشاء جداول MergeTree أو تعديلها إذا كان اسم أحد الأعمدة _row_exists، لأنه محجوز لميزة lightweight delete. أُصلح #41716. #41763 (Jianmei Zhang).
  • إصلاح خلل يؤدي إلى غياب headers الخاصة بـ CORS في بعض استجابات HTTP. #41792 (Frank Chen).
  • كان الإصدار 22.9 قد يفشل في تشغيل جدول ReplicatedMergeTree إذا كان هذا الجدول قد أُنشئ في الإصدار 20.3 أو إصدار أقدم ولم يُعدّل مطلقًا، وقد تم إصلاح ذلك. يصلح #41742. #41796 (Alexander Tokmakov).
  • عند فشل إرسال الـ Batch لأي سبب، لا يمكن التعافي منه تلقائيًا، وإذا لم يُعالج في الوقت المناسب فسيتسبب ذلك في التراكم، كما ستزداد رسالة الخطأ المطبوعة طولًا باستمرار، مما قد يؤدي إلى حظر thread الخاص بـ HTTP. #41813 (zhongyuankai).
  • إصلاح compact parts مع إعداد العلامات المضغوطة. يصلح #41783 و #41746. #41823 (alesapin).
  • لا تحتوي الإصدارات القديمة من قاعدة البيانات Replicated على علامة خاصة في [Zoo]Keeper. نحتاج فقط إلى التحقق مما إذا كانت العقدة تحتوي على بعض البيانات غير المعتادة بدلًا من علامة خاصة. #41875 (Nikita Mikhaylov).
  • إصلاح Exception محتمل في fs cache. #41884 (Kseniia Sumarokova).
  • إصلاح use_environment_credentials في دالة الجدول S3. #41970 (Kseniia Sumarokova).
  • تم إصلاح الخطأ “الدليل موجود بالفعل وليس فارغًا” عند فصل part تالف، وهو ما كان قد يمنع جدول ReplicatedMergeTree من بدء النسخ المتماثل. يُصلح #40957. #41981 (Alexander Tokmakov).
  • تُرجع toDateTime64 الآن الناتج نفسه عند استخدام argumentات صحيحة وسالبة عائمة. #42025 (Robert Schulze).
  • إصلاح الكتابة إلى azure_blob_storage. يُغلق جزئيًا #41754. #42034 (Kseniia Sumarokova).
  • إصلاح مشكلة فك ترميز bzip2 لبعض ملفات bzip2 المحددة. #42046 (Nikolay Degterinsky).
  • إصلاح دالة SQL ‏toLastDayOfMonth مع الإعداد “enable_extended_results_for_datetime_functions = 1” عند بداية النطاق الموسّع (يناير 1900). - إصلاح دالة SQL ‏“toRelativeWeekNum()” مع الإعداد “enable_extended_results_for_datetime_functions = 1” عند نهاية النطاق الموسّع (ديسمبر 2299). - تحسين أداء دوال SQL ‏“toISOYear()” و”toFirstDayNumOfISOYearIndex()” و”toYearWeekOfNewyearMode()” عبر تجنّب العمليات الحسابية غير الضرورية على الفهرس. #42084 (Roman Vasin).
  • تم عن طريق الخطأ تعيين الحد الأقصى لعمليات fetches لكل table إلى 8، رغم أن حجم pool قد يكون أكبر. الآن أصبح الحد الأقصى لعمليات fetches لكل table مساويًا لحجم pool. #42090 (Nikita Mikhaylov).
  • كان من الممكن إيقاف table وفصل Dictionary قبل التحقق مما إذا كان يمكن إسقاطه من دون كسر dependencies الخاصة بالجدول، وقد تم إصلاح ذلك. يُصلح #41982. #42106 (Alexander Tokmakov).
  • إصلاح ضعف الكفاءة في remote_filesystem_read_method=read مع filesystem cache. يُغلق #42125. #42129 (Kseniia Sumarokova).
  • إصلاح Exception مهلة محتملة في distributed queries مع use_hedged_requests = 0. #42130 (Azat Khuzhin).
  • تم إصلاح خطأ طفيف داخل الدالة runningDifference عند استخدامها مع النوع Date32. كان النوع Date يُستخدم سابقًا، وقد يؤدي ذلك إلى بعض logical errors مثل Bad cast from type DB::ColumnVector<int> to DB::ColumnVector<unsigned short>'. #42143 (Alfred Xu).
  • إصلاح إعادة استخدام الملفات التي يزيد حجمها على 4GB من base backup. #42146 (Azat Khuzhin).
  • يفشل DISTINCT in order مع LOGICAL_ERROR إذا كان العمود الأول في sorting key يحتوي على دالة. #42186 (Igor Nikonov).
  • إصلاح خطأ في projections والإعداد aggregate_functions_null_for_empty. هذا الخطأ نادر جدًا، ولا يظهر إلا عند تفعيل الإعداد aggregate_functions_null_for_empty في config الخاصة بـ server. يغلق هذا #41647. #42198 (Alexey Milovidov).
  • إصلاح القراءة من جداول Buffer عند القراءة بترتيب تنازلي. #42236 (Duc Canh Le).
  • إصلاح خطأ يمنع ClickHouse من البدء عندما يكون background_pool_size setting مضبوطًا في profile الافتراضي، بينما لا يكون background_merges_mutations_concurrency_ratio مضبوطًا. #42315 (nvartolomei).
  • كان ALTER UPDATE لجزء attached (بـ columns تختلف عن schema الخاص بالجدول) قد يؤدي إلى إنشاء metadata غير صالحة في columns.txt على disk. وقد تفشل القراءة من هذا الجزء مع أخطاء أو تُرجع data غير صالحة. يُصلح هذا #42161. #42319 (Nikolai Kochetov).
  • لم يكن الإعداد additional_table_filters يُطبَّق على تخزين Distributed. يُصلح هذا #41692. #42322 (Nikolai Kochetov).
  • إصلاح data race عند إنهاء query أو إلغائها. يغلق هذا #42346. #42362 (Alexey Milovidov).
  • يتراجع هذا عن #40217، الذي تسبب في تراجع في دوال التاريخ/الوقت. #42367 (Alexey Milovidov).
  • إصلاح assert cast في join عند condition غير متحقق. يغلق هذا #42380. #42407 (Vladimir C).
  • إصلاح buffer overflow في معالجة data types من نوع Decimal. يغلق هذا #42451. #42465 (Alexey Milovidov).
  • يعمل AggregateFunctionQuantile الآن بشكل صحيح مع columns من نوع UInt128. سابقًا، كانت حالة quantile تفسّر columns من نوع UInt128 على أنها Int128، ما كان قد يؤدي إلى نتائج غير صحيحة. #42473 (Antonio Andelic).
  • إصلاح assert من نوع bad_cast أثناء INSERT في indexes الخاصة بـ Annoy على columns ليست من نوع Float32. وتُعد indexes الخاصة بـ Annoy ميزة تجريبية. #42485 (Robert Schulze).
  • كان العامل الحسابي مع Date أو DateTime ومع عدد صحيح بعرض 128 أو 256 بت يشير إلى ذاكرة غير مهيأة. #42453. #42573 (Alexey Milovidov).
  • إصلاح خطأ غير متوقع أثناء تحميل الجدول عند احتواء مفتاح التقسيم على أسماء دوال مستعارة أثناء ترقية الخادم. #36379 (Amos Bird).

إصدار ClickHouse 22.9، 2022-09-22. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • يجب تنفيذ الترقية من 20.3 وما قبله إلى 22.9 وما بعده عبر إصدار وسيط إذا كانت هناك أي جداول ReplicatedMergeTree، وإلا فلن يبدأ ClickHouse server بالإصدار الجديد. #40641 (Alexander Tokmakov).
  • إزالة الدالتين accurate_Cast وaccurate_CastOrNull (وهما تختلفان عن accurateCast وaccurateCastOrNull بوجود الشرطة السفلية في الاسم، كما أنهما لا تتأثران بقيمة الإعداد cast_keep_nullable). كانت هاتان الدالتان غير موثقتين وغير مختبرتين وغير مستخدمتين وغير لازمتين. ويبدو أنهما بقيتا موجودتين بسبب تعميم الشيفرة. #40682 (Alexey Milovidov).
  • إضافة اختبار لضمان توثيق كل table function جديدة. انظر #40649. إعادة تسمية table function ‏MeiliSearch إلى meilisearch. #40709 (Alexey Milovidov).
  • إضافة اختبار لضمان توثيق كل دالة جديدة. انظر #40649. كانت الدوال lemmatize وsynonyms وstem غير حساسة لحالة الأحرف عن طريق الخطأ، وهي الآن حساسة لحالة الأحرف. #40711 (Alexey Milovidov).
  • لأسباب تتعلق بالأمان والاستقرار، لم يعد يجري تقييم نماذج catboost داخل ClickHouse server. وبدلاً من ذلك، أصبح التقييم الآن يُجرى في clickhouse-library-bridge، وهي عملية منفصلة تحمّل مكتبة catboost وتتواصل مع server process عبر HTTP. #40897 (Robert Schulze).
  • جعل تفسير إعدادات YAML أكثر توافقًا مع المتعارف عليه. #41044 (Vitaly Baranov).

ميزة جديدة

  • دعم insert_quorum = 'auto' لاستخدام عدد الأغلبية. #39970 (Sachin).
  • إضافة لوحات معلومات مضمّنة إلى ClickHouse server. هذا مشروع تجريبي يوضّح كيفية تحقيق 90% من النتائج ببذل 1% من الجهد باستخدام ميزات ClickHouse. #40461 (Alexey Milovidov).
  • أُضيف نوع جديد لقابلية كتابة قيد الإعدادات changeable_in_readonly. #40631 (Sergei Trifonov).
  • إضافة دعم INTERSECT DISTINCT و EXCEPT DISTINCT. #40792 (Duc Canh Le).
  • إضافة تنسيق إدخال/إخراج جديد JSONObjectEachRow - دعم الاستيراد للتنسيقات JSON/JSONCompact/JSONColumnsWithMetadata. إضافة إعداد جديد input_format_json_validate_types_from_metadata يتحكّم في ما إذا كان ينبغي التحقق من تطابق أنواع البيانات في البيانات الوصفية مع أنواع البيانات في الترويسة. - إضافة إعداد جديد input_format_json_validate_utf8، وعند تمكينه، ستتحقق جميع تنسيقات JSON من تسلسلات UTF-8. وسيكون معطّلاً افتراضياً. لاحظ أن هذا الإعداد لا يؤثر في تنسيقات الإخراج JSON/JSONCompact/JSONColumnsWithMetadata، إذ تتحقق هذه التنسيقات دائماً من تسلسلات UTF-8 (وقد أُجري هذا الاستثناء لأسباب تتعلق بالتوافق). - إضافة إعداد جديد input_format_json_read_numbers_as_strings يتيح تحليل الأرقام في عمود String، ويكون هذا الإعداد معطّلاً افتراضياً. - إضافة إعداد جديد output_format_json_quote_decimals يتيح إخراج القيم العشرية بين علامتَي اقتباس مزدوجتين، وهو معطّل افتراضياً. - السماح بتحليل القيم العشرية بين علامتَي اقتباس مزدوجتين أثناء استيراد البيانات. #40910 (Kruglov Pavel).
  • دعم معلمات الاستعلام في استعلام DESCRIBE TABLE. #40952 (Nikita Taranov).
  • إضافة دعم Parquet Time32/64 عبر تحويله إلى DateTime64. يمثّل Parquet time32/64 الوقت المنقضي منذ منتصف الليل، بينما يمثّل DateTime32/64 طابعاً زمنياً فعلياً من نوع Unix timestamp. ويجري التحويل ببساطة عبر الإزاحة من 0. #41333 (Arthur Passos).
  • تنفيذ عمليات المجموعات على Apache Datasketches. #39919 (Fangyuan Deng). ملاحظة: لا جدوى من استخدام Apache Datasketches، فهي أدنى من ClickHouse ولا يكون لها معنى إلا للتكامل مع أنظمة أخرى.
  • السماح بتسجيل الأخطاء في ملف محدد أثناء قراءة التنسيقات النصية (CSV, TSV). #40516 (zjial).

الميزة التجريبية

  • إضافة فهرس ANN (أقرب جار تقريبي) يستند إلى Annoy. #40818 (Filatenkov Artur). #37215 (VVMak).
  • إضافة محرك تخزين جديد KeeperMap يستخدم ClickHouse Keeper أو ZooKeeper كمخزن مفتاح-قيمة. #39976 (Antonio Andelic). صُمم محرك التخزين هذا لتخزين كمية صغيرة من البيانات الوصفية.
  • تحسين لأجزاء البيانات الموجودة في الذاكرة: إزالة ملفات WAL التي تمت معالجتها بالكامل. #40592 (Azat Khuzhin).

تحسين الأداء

  • تنفيذ ضغط العلامات والمفتاح الأساسي. إغلاق #34437. #37693 (zhongyuankai).
  • السماح بتحميل العلامات مسبقًا باستخدام threadpool. يتحكم في ذلك الإعداد load_marks_asynchronously (الافتراضي: 0). #40821 (Kseniia Sumarokova).
  • سيستخدم نظام الملفات الافتراضي فوق S3 أسماء كائنات عشوائية موزعة على عدة بادئات مسارات لتحسين الأداء على AWS. #40968 (Alexey Milovidov).
  • أخذ قيمة max_block_size في الاعتبار عند إنتاج نتائج التجميع أحادي المستوى. يتيح ذلك تنفيذ خطوات خطة الاستعلام التالية باستخدام عدد أكبر من مؤشرات الترابط. #39138 (Nikita Taranov).
  • يُستخدم الجلب المسبق البرمجي في التجميع لتسريع العمليات على جداول التجزئة. ويتحكم في ذلك الإعداد enable_software_prefetch_in_aggregation، وهو مفعّل افتراضيًا. #39304 (Nikita Taranov).
  • تحسين دعم optimize_read_in_order عندما تكون بعض أعمدة sorting key ثابتة دائمًا بعد تطبيق جملة WHERE. على سبيل المثال، استعلام مثل SELECT ... FROM table WHERE a = 'x' ORDER BY a, b، حيث يملك table تعريف التخزين التالي: MergeTree ORDER BY (a, b). #38715 (Anton Popov).
  • ترشيح streams الموصولة في full_sorting_join بعضها ببعض قبل الفرز. #39418 (Vladimir C).
  • تحسين فك ضغط LZ4 عبر تخطي معالجة القيم الحرفية الفارغة. #40142 (Nikita Taranov).
  • تسريع عملية النسخ الاحتياطي باستخدام copy الأصلي عند الإمكان بدلًا من النسخ عبر ذاكرة clickhouse-server. #40395 (alesapin).
  • عدم الحصول على snapshot للتخزين لكل block من INSERT (مما يحسن الأداء قليلًا). #40638 (Azat Khuzhin).
  • تنفيذ المعالجة الدفعية للدوال التجميعية ذات الوسائط Nullable المتعددة. #41058 (Raúl Marín).
  • تسريع قراءة UniquesHashSet (مثل uniqState من القرص، على سبيل المثال). #41089 (Raúl Marín).
  • إصلاح الارتفاع الكبير في استخدام الذاكرة أثناء تنفيذ mutations للأجزاء compact في الجداول التي تحتوي على عدد هائل من الأعمدة. #41122 (lthaooo).
  • تمكين مكتبة vectorscan على ARM، مما يسرّع تقييم Regexp. #41033 (Robert Schulze).
  • ترقية vectorscan إلى 5.4.8، التي تتضمن العديد من تحسينات الأداء لتسريع تقييم Regexp. #41270 (Robert Schulze).
  • إصلاح fallback غير الصحيح الذي يؤدي إلى تخطي local filesystem cache في VFS (مثل S3)، والذي كان يحدث عند مستويات مرتفعة جدًا من التزامن. #40420 (Kseniia Sumarokova).
  • إذا كان مرشح سياسة الصف دائمًا false، فأعِد نتيجة فارغة فورًا من دون قراءة أي بيانات. ويغلق هذا #24012. #40740 (Amos Bird).
  • قد لا يكون Parallel hash JOIN لأنواع البيانات Float الخيار الأمثل. تحسينه. #41183 (Alexey Milovidov).

تحسين

  • أثناء بدء التشغيل وعند استدعاء ATTACH، ستكون جداول ReplicatedMergeTree للقراءة فقط إلى أن يتم الاتصال بـ ZooKeeper ويكتمل الإعداد. #40148 (Antonio Andelic).
  • إضافة الخيار enable_extended_results_for_datetime_functions لإرجاع نتائج من النوع Date32 للدوال toStartOfYear و toStartOfISOYear و toStartOfQuarter و toStartOfMonth و toStartOfWeek و toMonday و toLastDayOfMonth عندما تكون الوسيطة من النوع Date32 أو DateTime64، وإلا فستُرجع نتائج من النوع Date. ولأسباب التوافق، تكون القيمة الافتراضية هي ‘0’. #41214 (Roman Vasin).
  • لأسباب تتعلق بالأمان والاستقرار، لم تعد نماذج CatBoost تُقيَّم داخل خادم ClickHouse. وبدلًا من ذلك، أصبح التقييم يُجرى الآن في clickhouse-library-bridge، وهي عملية منفصلة تُحمِّل مكتبة catboost وتتواصل مع عملية الخادم عبر HTTP. وقد استُبدلت الدالة modelEvaluate() بـ catboostEvaluate(). #40897 (Robert Schulze). #39629 (Robert Schulze).
  • إضافة المزيد من المقاييس للبيانات المؤقتة المخزنة على القرص، وإغلاق #40206. #40239 (Vladimir C).
  • إضافة خيار config ‏warning_supress_regexp، وإغلاق #40330. #40548 (Vladimir C).
  • إضافة إعداد لتعطيل الحد المفروض على kafka_num_consumers. إغلاق #40331. #40670 (Kruglov Pavel).
  • دعم SETTINGS في استعلام DELETE .... #41533 (Kseniia Sumarokova).
  • إضافة أحداث profile تفصيلية لـ S3 ‏DiskS3*، مقسّمة حسب كل استدعاء لـ API في S3 لـ S3 ObjectStorage. #41532 (Sergei Trifonov).
  • مقياسان جديدان في system.asynchronous_metrics: ‏NumberOfDetachedParts و NumberOfDetachedByUserParts. #40779 (Sema Checherinda).
  • السماح باستخدام CONSTRAINTs مع جداول ODBC و JDBC. #34551 (Alexey Milovidov).
  • عدم طباعة SETTINGS أكثر من مرة أثناء تنسيق الاستعلام إذا لم يظهر أكثر من مرة في الاستعلام الأصلي. #38900 (Raúl Marín).
  • تحسين تمرير سياق tracing ‏(OpenTelemetry) بين threads. #39010 (Frank Chen).
  • ClickHouse Keeper: إضافة listeners لـ interserver_listen_host في Keeper فقط إذا كان محددًا. #39973 (Antonio Andelic).
  • تحسين recovery لمخزن وصول المستخدم Replicated بعد الأخطاء. #39977 (Vitaly Baranov).
  • إضافة دعم TTL إلى EmbeddedRocksDB. #39986 (Lloyd-Pottiger).
  • إضافة استنتاج المخطط إلى clickhouse-obfuscator، بحيث لم يعد الوسيط --structure مطلوبًا. #40120 (Nikolay Degterinsky).
  • تحسين القواميس وإصلاحها في تنسيق Arrow. #40173 (Kruglov Pavel).
  • تحويل أكثر سلاسة من Date32 وDateTime64 وDate إلى الأنواع الأضيق: تؤخذ القيمة الطبيعية العليا أو الدنيا في الاعتبار عند الخروج عن النطاق الطبيعي. #40217 (Andrey Zvonov).
  • إصلاح الحالة التي يتعذر فيها على جدول Merge المبني على View استخدام الفهرس. #40233 (Duc Canh Le).
  • أسماء مفاتيح مخصّصة لسجلات JSON الخاصة بالخادم. #40251 (Mallik Hassan).
  • أصبح من الممكن الآن تعيين رمز خطأ مخصّص للاستثناء الذي تطرحه الدالة throwIf. #40319 (Robert Schulze).
  • تحسين ذاكرة التخزين المؤقت لاستنتاج المخطط، مع مراعاة إعدادات التنسيق التي يمكن أن تغيّر المخطط. #40414 (Kruglov Pavel).
  • السماح بتحليل Date باعتباره DateTime وDateTime64. ينفّذ هذا التحسين المقترح في #36949. #40474 (Alexey Milovidov).
  • السماح بالتحويل من String مع DateTime64 مثل 2022-08-22 01:02:03.456 إلى Date وDate32. كما يُسمح بالتحويل من String مع DateTime مثل 2022-08-22 01:02:03 إلى Date32. ويغلق هذا #39598. #40475 (Alexey Milovidov).
  • دعم أفضل لهياكل البيانات المتداخلة في تنسيق Parquet. #40485 (Arthur Passos).
  • دعم قراءة Array(Record) إلى جدول Nested مسطّح في Avro. #40534 (Kruglov Pavel).
  • إضافة دعم وضع القراءة فقط إلى EmbeddedRocksDB. #40543 (Lloyd-Pottiger).
  • التحقق من صحة معامل أسلوب الضغط لمحرك الجدول URL. #40600 (Frank Chen).
  • تحسين اكتشاف التنسيق لوظيفة/محرك الجدول URL عند وجود سلسلة استعلام بعد اسم ملف. ويغلق هذا #40315. #40636 (Kruglov Pavel).
  • تعطيل الإسقاط عند استخدام مجموعة التجميع، إذ كان يولّد نتيجة خاطئة. ويصلح هذا #40635. #40726 (Amos Bird).
  • إصلاح التنسيق غير الصحيح لمحوّل الأعمدة APPLY، والذي قد يؤدي إلى إتلاف البيانات الوصفية إذا استُخدم في تعريف الجدول. يُصلح هذا #37590. #40727 (Amos Bird).
  • دعم الواصف %z لتنسيق إزاحة المنطقة الزمنية في formatDateTime. #40736 (Cory Levy).
  • أصبح الوضع التفاعلي في clickhouse-client يفسّر الآن . و/ على أنهما “تشغيل الأمر الأخير”. #40750 (Robert Schulze).
  • إصلاح مشكلة في تمرير مهلات MySQL إلى محرك قاعدة بيانات MySQL ودالة جدول MySQL. يُغلق هذا #34168. #40751 (Kseniia Sumarokova).
  • إنشاء ملف status لدليل filesystem cache للتأكد من عدم مشاركة أدلة cache بين خوادم أو caches مختلفة. #40820 (Kseniia Sumarokova).
  • إضافة دعم DELETE وUPDATE إلى التخزين EmbeddedRocksDB. #40853 (Antonio Andelic).
  • ClickHouse Keeper: إصلاح الإيقاف أثناء commit طويل وزيادة الحجم المسموح به للطلبات. #40941 (Antonio Andelic).
  • إصلاح حالة تسابق في WriteBufferFromS3، وإضافة annotations الخاصة بـ TSA. #40950 (Kseniia Sumarokova).
  • يجب أن تحوّل مجموعات التجميع مع group_by_use_nulls الأعمدة المفتاحية فقط إلى Nullable. #40997 (Duc Canh Le).
  • تحسين قابلية الرصد لعمليات INSERT على distributed table. #41034 (Frank Chen).
  • المزيد من المقاييس منخفضة المستوى للتفاعل مع S3. #41039 (mateng915).
  • دعم المسار النسبي في ترويسة Location بعد إعادة توجيه HTTP. يُغلق هذا #40985. #41162 (Kruglov Pavel).
  • تطبيق التغييرات على معالجات HTTP مباشرةً دون إعادة تشغيل الخادم. #41177 (Azat Khuzhin).
  • ClickHouse Keeper: إغلاق الجلسات النشطة بشكل صحيح أثناء الإيقاف. #41215 (Antonio Andelic). يقلّل هذا من مدة أخطاء “الجدول للقراءة فقط”.
  • إضافة إمكانية التعليق التلقائي على استعلامات SQL في clickhouse-client/local (باستخدام Alt-#، كما في readline). #41224 (Azat Khuzhin).
  • إصلاح عدم توافق cache بعد تبديل الإعداد do_no_evict_index_and_mark_files من 1 إلى 0 أو من 0 إلى 1. #41330 (Kseniia Sumarokova).
  • أُضيف الإعداد allow_suspicious_fixed_string_types لمنع المستخدمين من إنشاء أعمدة من النوع FixedString بحجم يزيد على 256. #41495 (Duc Canh Le).
  • أُضيف has_lightweight_delete إلى system.parts. #41564 (Kseniia Sumarokova).

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

  • فرض توثيق لكل إعداد. #40644 (Alexey Milovidov).
  • فرض توثيق لكل مقياس حالي. #40645 (Alexey Milovidov).
  • فرض توثيق لكل عدّاد أحداث profile، وكتابة التوثيق حيثما كان مفقودًا. #40646 (Alexey Milovidov).
  • إتاحة إنشاء بنية مصغّرة من clickhouse-local عبر تصحيح بعض الاعتماديات. #40460 (Alexey Milovidov). ويبلغ حجمها أقل من 50 MiB.
  • حساب تغطية دوال SQL في الاختبارات والإبلاغ عنها. #40593. #40647 (Alexey Milovidov).
  • فرض توثيق لكل إعداد من إعدادات MergeTree. #40648 (Alexey Milovidov).
  • نموذج أولي لتوثيق مرجعي مضمّن لمكوّنات الخادم عالية المستوى والموحّدة. #40649 (Alexey Milovidov).
  • سنتحقق من جميع الاستعلامات في اختبارات الأداء المعدّلة لضمان اختبار جميع الاستعلامات التي تغيّرت. #40322 (Nikita Taranov).
  • إصلاح حزم TGZ. #40681 (Mikhail f. Shiryaev).
  • إصلاح رموز التنقيح. #40873 (Azat Khuzhin).
  • توسيع إعدادات CI لإنشاء بنية x86 تدعم SSE2 فقط. وهذا مفيد للأجهزة القديمة أو المضمّنة. #40999 (Robert Schulze).
  • التحويل إلى llvm/clang 15. #41046 (Azat Khuzhin).
  • استكمال لـ #40938. إصلاح انتهاك ODR للفئة Loggers. ويعالج #40398، #40937. #41060 (Dmitry Novik).
  • إضافة الملفات التنفيذية الخاصة بـ macOS إلى أصول إصدار GitHub، ما يُصلح #37718. #41088 (Mikhail f. Shiryaev).
  • أصبحت مكتبة c-ares الآن مضمّنة في نظام بناء ClickHouse. #41239 (Robert Schulze).
  • التخلّص من dlopen في الشيفرة الرئيسية لـ ClickHouse. ولا يزال موجودًا في library-bridge و odbc-bridge. #41428 (Alexey Milovidov).
  • عدم السماح باستخدام dlopen في الملف التنفيذي الرئيسي لـ ClickHouse، لأنه مضر وغير آمن. نحن لا نستخدمه. لكن قد تستخدمه بعض المكتبات لتنفيذ “الإضافات”. ونحن نثني بشدة عن الأسلوب القديم المتمثل في تحميل مكتبات خطِرة وغير خاضعة للرقابة من جهات خارجية إلى مساحة عناوين العملية، لأن ذلك تصرّف غير معقول. #41429 (Alexey Milovidov).
  • إضافة الحقل source إلى حزم deb، وتحديث nfpm. #41531 (Mikhail f. Shiryaev).
  • دعم DWARF-5 في محلل DWARF الداخلي. #40710 (Azat Khuzhin).
  • إضافة حقن الأعطال إلى عميل ZooKeeper لأغراض الاختبار #30498 (Alexander Tokmakov).
  • إضافة اختبارات عديمة الحالة مع تخزين S3 باستخدام debug و tsan #35262 (Kseniia Sumarokova).
  • تجربة اختبارات الضغط على S3 #36837 (alesapin).
  • تفعيل concurrency-mt-unsafe في clang-tidy #40224 (Alexey Milovidov).

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

  • إصلاح احتمال فقدان البيانات بسبب خلل في AWS SDK. لا يظهر هذا الخلل إلا عند استخدام ClickHouse عبر S3. #40506 (alesapin). ظل هذا الخلل مفتوحًا لمدة 5 سنوات في AWS SDK، وأُغلق بعد بلاغنا.
  • قد تتسبب البيانات الخبيثة بتنسيق Native في حدوث تعطل. #41441 (Alexey Milovidov).
  • كانت خصائص الدالة التجميعية categorialInformationValue معرّفة على نحو غير صحيح، ما قد يؤدي إلى فكّ إشارة مؤشر فارغ وقت التشغيل. ويغلق هذا #41443. #41449 (Alexey Milovidov).
  • قد تؤدي كتابة البيانات بتنسيق Apache ORC إلى تجاوز سعة المخزن المؤقت. #41458 (Alexey Milovidov).
  • إصلاح مشكلات سلامة الذاكرة في الدالتين encrypt وcontingency عند استخدام Array من Nullable كوسيطة. ويصلح هذا #41004. #40195 (Alexey Milovidov).
  • إصلاح أخطاء في MergeJoin عندما لا تكون ‘not_processed’ بقيمة NULL. #40335 (liql2007).
  • إصلاح النتائج غير الصحيحة في حالة فقدان الدقة العشرية في المعامل IN، راجع #41125. #41130 (Vladimir C).
  • إصلاح ملء أعمدة Nested المفقودة ذات المستويات المتعددة. #37152 (Anton Popov).
  • إصلاح الاستعلام SYSTEM UNFREEZE لقاعدة البيانات Ordinary (Deprecated). إصلاح لـ https://github.com/ClickHouse/ClickHouse/pull/36424. #38262 (Vadim Volodin).
  • إصلاح الأعمدة المجهولة غير المستخدمة التي أدخلتها عبارة WITH. ويصلح هذا #37812 . #39131 (Amos Bird).
  • إصلاح تحليل الاستعلام لعبارة ORDER BY عند وجود دوال النوافذ. يصلح #38741 ويصلح #24892. #39354 (Dmitry Novik).
  • إصلاح استثناء Unknown identifier (aggregate-function) الذي يظهر عندما يحاول المستخدم حساب تعبيرات WINDOW ORDER BY/PARTITION BY على الدوال التجميعية. #39762 (Vladimir Chebotaryov).
  • تقييد عدد مرات التحليل للاستعلام الواحد باستخدام الإعداد max_analyze_depth. يمنع ذلك التضخم الأسي في وقت التحليل للاستعلامات التي تحتوي على عدد هائل من الاستعلامات الفرعية. #40334 (Vladimir C).
  • إصلاح خلل نادر في TTL الأعمدة لعائلة محركات MergeTree: في حال تكرار vertical merge، قد يظهر الخطأ Cannot unlink file ColumnName.bin ... No such file or directory.. #40346 (alesapin).
  • استخدم سجلات DNS لكلٍّ من IPv4 وIPv6 إذا كانت موجودة. #40353 (Maksim Kita).
  • السماح بقراءة الملفات المضغوطة بـ snappy من Hadoop. #40482 (Kruglov Pavel).
  • إصلاح تعطل أثناء تحليل قيم من النوع Object (ميزة تجريبية) تحتوي على مصفوفات ذات أبعاد متغيرة. #40483 (Duc Canh Le).
  • إصلاح الإعداد input_format_tsv_skip_first_lines. #40491 (mini4).
  • إصلاح خطأ (حالة سباق) عند بدء تشغيل محرك قاعدة البيانات/الجدول MaterializedPostgreSQL. #40262. وإصلاح خطأ عند بلوغ الحد الأقصى لفتحات relcache_callback_list. #40511 (Maksim Buren).
  • إصلاح الخطأ المحتمل ‘Decimal math overflow’ أثناء تحليل DateTime64. #40546 (Kruglov Pavel).
  • إصلاح الدمج العمودي للأجزاء التي تحتوي على صفوف محذوفة بحذف خفيف. #40559 (Alexander Gololobov).
  • إصلاح خطأ segmentation fault عند كتابة البيانات إلى محرك الجدول URL إذا كان الضغط مفعّلًا. #40565 (Frank Chen).
  • إصلاح الخطأ المنطقي المحتمل 'Invalid Field get from type UInt64 to type String' في الدالة arrayElement مع Map. #40572 (Kruglov Pavel).
  • إصلاح حالة سباق محتملة في filesystem cache. #40586 (Kseniia Sumarokova).
  • إزالة تخطي الـ mutations في الأقسام غير المتأثرة من جداول MergeTree، لأن هذه الميزة لم تعمل قط بشكل صحيح وقد تتسبب في إحياء mutations المكتملة من جديد. #40589 (Alexander Tokmakov).
  • سيتعطل خادم ClickHouse إذا أضفنا أثناء وقت التشغيل منفذ GRPC مشغولًا بالفعل إلى الإعداد. #40597 (何李夫).
  • إصلاح تعامل base58Encode / base58Decode مع الصفر البادئ / ‘1’. #40620 (Andrey Zvonov).
  • keeper-fix: إصلاح حالة سباق عند الوصول إلى السجلات أثناء تثبيت snapshot. #40627 (Antonio Andelic).
  • إصلاح التنفيذ قصير المسار للدالة toFixedString. يحلّ هذا (جزئيًا) #40622. #40628 (Kruglov Pavel).
  • إصلاح تحويل عمود SQLite من int8 إلى عمود int64 في ClickHouse. يعالج #40639. #40642 (Barum Rho).
  • إصلاح تجاوز سعة المكدس في جداول Buffer التكرارية. هذا يغلق #40637. #40643 (Alexey Milovidov).
  • أثناء إدراج استعلام جديد في ProcessList تحدث عمليات تخصيص للذاكرة. وإذا وصلنا إلى حد الذاكرة أثناء هذه العمليات، فلا يمكن استخدام OvercommitTracker لأن ProcessList::mutex يكون قد تم الاستحواذ عليه بالفعل. يُصلح #40611. #40677 (Dmitry Novik).
  • إصلاح LOGICAL_ERROR مع max_read_buffer_size=0 أثناء قراءة marks. #40705 (Azat Khuzhin).
  • إصلاح تسرّب للذاكرة أثناء الدفع إلى MVs بدون سياق استعلام (من Kafka/…). #40732 (Azat Khuzhin).
  • إصلاح الخطأ المحتمل Attempt to read after eof أثناء schema inference في CSV. #40746 (Kruglov Pavel).
  • إصلاح خطأ منطقي في write-through cache: “File segment completion can be done only by downloader”. يُغلق #40748. #40759 (Kseniia Sumarokova).
  • جعل نتيجة الدالة GROUPING مطابقة لما هي عليه في SQL وأنظمة إدارة قواعد البيانات الأخرى. #40762 (Dmitry Novik).
  • في #40595، تم الإبلاغ عن أن وظيفة host_regexp لم تكن تعمل بشكل صحيح مع تحليل الاسم إلى عنوان في /etc/hosts. وقد تم إصلاح ذلك. #40769 (Arthur Passos).
  • إصلاح النسخ الاحتياطية التزايدية لعائلة Log. #40827 (Vitaly Baranov).
  • إصلاح خلل نادر للغاية قد يؤدي إلى فقدان محتمل للبيانات في zero-copy replication. #40844 (alesapin).
  • إصلاح أعطال تحليل شرط المفتاح عند إنشاء تعبير set نفسه من عمود أو أعمدة مختلفة. #40850 (Duc Canh Le).
  • إصلاح schema inference لكائنات JSON المتداخلة. #40851 (Kruglov Pavel).
  • إصلاح عدم حذف الدليل ذي البادئة المكوّنة من 3 أرقام لملفات filesystem cache إذا كان فارغًا. يُغلق #40797. #40867 (Kseniia Sumarokova).
  • إصلاح DNS_ERROR غير المُعالَج عند فشل الاتصال بالنسخ المتماثلة. #40881 (Robert Coelho).
  • إصلاح خلل عند إزالة الأعمدة غير اللازمة في استعلام فرعي. #40884 (luocongkai).
  • إصلاح تخصيص إضافي للذاكرة لمخازن القراءة المؤقتة البعيدة. #40896 (Kseniia Sumarokova).
  • تم إصلاح سلوك كان يسمح لمستخدم سُحبت منه صلاحية حذف قواعد البيانات صراحةً بأن يظل قادرًا على حذفها. #40906 (Nikita Mikhaylov).
  • إصلاح لـ ClickHouse Keeper: مقارنة المسارات بشكل صحيح في write requests مع مسارات عُقد النظام الداخلية في Keeper. #40918 (Antonio Andelic).
  • إصلاح حالة deadlock في WriteBufferFromS3. #40943 (Kseniia Sumarokova).
  • إصلاح access rights لـ DESCRIBE TABLE url() وبعض حالات DESCRIBE TABLE <table_function>() الأخرى. #40975 (Vitaly Baranov).
  • إزالة منطق parser خاطئ لـ WITH GROUPING SETS قد يؤدي إلى dereference لمؤشر nullptr. #41049 (Duc Canh Le).
  • إصلاح لـ ClickHouse Keeper: إصلاح segfault محتمل أثناء إيقاف Keeper. #41075 (Antonio Andelic).
  • إصلاح حالات segfault محتملة، واستخدام الذاكرة بعد تحريرها، وتسرّب الذاكرة في aggregate function combinators. يُغلق #40848. #41083 (Kruglov Pavel).
  • إصلاح query_views_log مع Window views. #41132 (Raúl Marín).
  • تعطيل optimize_monotonous_functions_in_order_by افتراضيًا، للتخفيف من: #40094. #41136 (Denny Crane).
  • إصلاح الخطأ “possible deadlock avoided” عند التحويل التلقائي لـ database engine من Ordinary إلى Atomic. #41146 (Alexander Tokmakov).
  • إصلاح SIGSEGV في SortedBlocksWriter عند وجود block فارغة (وقد يحدث ذلك مع optimize_aggregation_in_order و join_algorithm=auto). #41154 (Azat Khuzhin).
  • إصلاح نتيجة query غير صحيحة عندما يكون تحسين العدّ البسيط مفعّلًا مع ARRAY JOIN. هذا يصلح #39431. #41158 (Denny Crane).
  • إصلاح stack-use-after-return في GetPriorityForLoadBalancing::getPriorityFunc(). #41159 (Azat Khuzhin).
  • إصلاح استثناء positional arguments ‏Positional argument out of bounds. يُغلق #40634. #41189 (Kseniia Sumarokova).
  • إصلاح التنظيف في الخلفية لـ broken detached parts. #41190 (Kseniia Sumarokova).
  • إصلاح query rewrite الأسي في حالة وجود عدد كبير من CROSS JOIN مع where، وإغلاق #21557. #41223 (Vladimir C).
  • إصلاح خطأ منطقي محتمل في write-through cache، وكان يحدث لأن بعض أنواع الاستثناءات لم تكن تُعالَج كما ينبغي. يغلق #41208. #41232 (Kseniia Sumarokova).
  • إصلاح Log entry من نوع String في system.filesystem&#95;cache&#95;log. #41233 (jmimbrero).
  • قد تُرجِع الاستعلامات التي تتضمن عبارة OFFSET في استعلام فرعي وعبارة WHERE في الاستعلام الخارجي نتائج غير صحيحة، وقد تم إصلاح ذلك. يُصلح #40416. #41280 (Alexander Tokmakov).
  • إصلاح احتمال إرجاع نتيجة استعلام غير صحيحة عند تمكين query_plan_optimize_primary_key. يُصلح #40599. #41281 (Nikolai Kochetov).
  • منع التسلسلات غير الصالحة من التأثير في الصفوف الأخرى في lowerUTF8/upperUTF8. #41286 (Azat Khuzhin).
  • إصلاح استعلامات ALTER <table> ADD COLUMN مع الأعمدة من النوع Object. #41290 (Anton Popov).
  • إصلاح الخطأ “No node” عند التحديد من system.distributed_ddl_queue في حال عدم وجود distributed_ddl.path في config. يُصلح #41096. #41296 (young scott).
  • إصلاح الخطأ المنطقي غير الصحيح Expected relative path في disk object storage. ذو صلة بـ #41246. #41297 (Kseniia Sumarokova).
  • إضافة تحقّق من نوع العمود قبل إدراج UUID بتنسيق MsgPack. #41309 (Kruglov Pavel).
  • إصلاح تعطل محتمل بعد الإدراج غير المتزامن (مع تمكين الإعداد async_insert) لبيانات غير سليمة إلى أعمدة من النوع Object. وكان يمكن أن يحدث ذلك إذا كانت ملفات JSON في جميع دفعات async inserts غير صالحة وتعذّر parse لها. #41336 (Anton Popov).
  • إصلاح حالة توقف متبادل محتملة مع async&#95;socket&#95;for&#95;remote/use&#95;hedged&#95;requests وKILL المتوازي. #41343 (Azat Khuzhin).
  • تعطيل optimize&#95;rewrite&#95;sum&#95;if&#95;to&#95;count&#95;if افتراضيًا للتخفيف من: #38605 #38683. #41388 (Denny Crane).
  • منذ الإصدار 22.8، يتم تجاهل العبارة ON CLUSTER إذا كانت قاعدة البيانات من نوع Replicated وكان اسم العنقود واسم قاعدة البيانات متطابقين. وبسبب ذلك، كانت DROP PARTITION ON CLUSTER تعمل بطريقة غير متوقعة مع Replicated. وقد أُصلح هذا الأمر، وأصبحت العبارة ON CLUSTER الآن تُتجاهل فقط للاستعلامات التي يجري تكرارها على مستوى قاعدة البيانات. يُصلح #41299. #41390 (Alexander Tokmakov).
  • إصلاح احتمال حدوث تعليق أو توقف متبادل عند إلغاء الاستعلام (KILL QUERY أو إيقاف الخادم). #41467 (Azat Khuzhin).
  • إصلاح احتمال تعطل الخادم عند استخدام ميزة JBOD. وهذا يُصلح #41365. #41483 (Amos Bird).
  • إصلاح التحويل من fixed string قابل للقيم NULL إلى string. #41541 (Duc Canh Le).
  • منع التعطل عند تمرير حالات aggregation غير صحيحة إلى groupBitmap*. #41563 (Raúl Marín).
  • كان يمكن أن تُرجع الاستعلامات التي تحتوي على ORDER BY و 1500 <= LIMIT <= max_block_size نتائج غير صحيحة مع فقدان بعض الصفوف من البداية. يُصلح #41182. #41576 (Nikolai Kochetov).
  • إصلاح عدد البايتات/الصفوف المقروءة في X-ClickHouse-Summary مع العروض المادية. #41586 (Raúl Marín).
  • إصلاح احتمال ظهور استثناء pipeline stuck في الاستعلامات التي تحتوي على OFFSET. تم العثور على الخطأ عند استخدام enable_optimize_predicate_expression = 0 مع شرط يكون false دائمًا في WHERE. يُصلح #41383. #41588 (Nikolai Kochetov).

إصدار ClickHouse 22.8، بتاريخ 2022-08-18. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • وُسِّع نطاق Date32 وDateTime64 لدعم التواريخ من عام 1900 إلى 2299. في الإصدارات السابقة، كان النطاق المدعوم يقتصر على الفترة من عام 1925 إلى 2283 فقط. يعتمد التنفيذ على التقويم الغريغوري الممتد (المتوافق مع ISO 8601:2004 (البند 3.2.1: التقويم الغريغوري)) بدلًا من مراعاة التحولات التاريخية من التقويم اليولياني إلى التقويم الغريغوري. يؤثر هذا التغيير في السلوك المرتبط بالتنفيذ للوسائط الخارجة عن النطاق. على سبيل المثال، إذا كانت القيمة 1899-01-01 في الإصدارات السابقة تُثبَّت عند 1925-01-01، ففي الإصدار الجديد ستُثبَّت عند 1900-01-01. كما يغيّر سلوك التقريب باستخدام toStartOfInterval عند تمرير INTERVAL 3 QUARTER بمقدار قد يصل إلى ربع سنة واحد، لأن الفواصل الزمنية تُحتسب انطلاقًا من نقطة زمنية خاصة بالتنفيذ. يغلق #28216، ويحسّن #38393. #39425 (Roman Vasin).
  • الآن، تراعي جميع مصادر القواميس ذات الصلة الإعداد remote_url_allow_hosts. وكان ذلك مطبقًا بالفعل على HTTP وCassandra وRedis. وأُضيف الآن ClickHouse وMongoDB وMySQL وPostgreSQL. ولا يُتحقق من المضيف إلا للقواميس المُنشأة من DDL. #39184 (Nikolai Kochetov).
  • تتطلب الآن ثنائيات ClickHouse الجاهزة مسبقًا لمعمارية x86 دعم تعليمات AVX، أي معالج CPU ليس أقدم من Intel Sandy Bridge / AMD Bulldozer، وكلاهما صدر في عام 2011. #39000 (Robert Schulze).
  • جُعلت ذاكرة التخزين المؤقت لنظام الملفات البعيد قابلة للتركيب، مع السماح بالاحتفاظ ببعض الملفات دون إخلائها (مثل idx وmrk و..)، وحذف الإصدار القديم من ذاكرة التخزين المؤقت. وأصبح من الممكن الآن تهيئة ذاكرة تخزين مؤقت فوق قرص Azure blob storage، أو فوق قرص محلي، أو فوق قرص StaticWeb، وغير ذلك. وصُنّف هذا PR بأنه غير متوافق مع الإصدارات السابقة لأن تهيئة ذاكرة التخزين المؤقت تغيّرت، ولا بد من تحديث ملف الإعدادات لكي تعمل. وستظل ذاكرة التخزين المؤقت القديمة مستخدمة مع التهيئة الجديدة. كما سيبدأ الخادم بصورة سليمة باستخدام تهيئة ذاكرة التخزين المؤقت القديمة. يغلق https://github.com/ClickHouse/ClickHouse/issues/36140. يغلق https://github.com/ClickHouse/ClickHouse/issues/37889. (Kseniia Sumarokova). #36171)

ميزة جديدة

  • دعم صياغة SQL القياسية DELETE FROM على جداول MergeTree، وتنفيذ الحذف خفيف الوزن لعائلة MergeTree. #37893 (Jianmei Zhang) (Alexander Gololobov). ملاحظة: هذه الميزة الجديدة لا تجعل ClickHouse نظام HTAP DBMS.
  • يمكن تعيين معاملات الاستعلام في الوضع التفاعلي بصيغة SET param_abc = 'def' ونقلها عبر البروتوكول الأصلي على هيئة إعدادات. #39906 (Nikita Taranov).
  • يمكن تعيين مفتاح الحصة عبر البروتوكول الأصلي (Yakov Olkhovsky).
  • أُضيف الإعداد exact_rows_before_limit ‏(0/1). عند تمكينه، سيوفّر ClickHouse قيمة دقيقة للإحصائية rows_before_limit_at_least، لكن مقابل الحاجة إلى قراءة البيانات السابقة للحد بالكامل. هذا يُغلق #6613. #25333 (kevin wan).
  • أُضيف دعم لعمليات insert select الموزعة والمتوازية باستخدام table function ‏s3Cluster إلى الجداول التي تستخدم المحركين Distributed وReplicated #34670. #39107 (Nikita Mikhaylov).
  • أُضيفت إعدادات جديدة للتحكم في استنتاج المخطط من التنسيقات النصية: - input_format_try_infer_dates - محاولة استنتاج التواريخ من السلاسل النصية. - input_format_try_infer_datetimes - محاولة استنتاج قيم DateTime من السلاسل النصية. - input_format_try_infer_integers - محاولة استنتاج Int64 بدلًا من Float64. - input_format_json_try_infer_numbers_from_strings - محاولة استنتاج الأرقام من سلاسل JSON النصية في JSON formats. #39186 (Kruglov Pavel).
  • خيار لتوفير مخرجات السجل بتنسيق JSON. والغرض منه تسهيل إدخال البيانات والاستعلام عنها في أدوات تحليل السجلات. #39277 (Mallik Hassan).
  • أُضيفت الدالة nowInBlock التي تتيح الحصول على الوقت الحالي أثناء الاستعلامات الطويلة والمستمرة. يُغلق هذا #39522. ملاحظات: لا توجد دالتا now64InBlock وtodayInBlock. #39533 (Alexey Milovidov).
  • أُضيفت إمكانية تحديد الإعدادات لـ table function ‏executable(). #39681 (Constantine Peresypkin).
  • نُفِّذ التحويل التلقائي لمحرك قاعدة البيانات من Ordinary إلى Atomic. أنشئ ملفًا فارغًا باسم convert_ordinary_to_atomic في الدليل flags، وستُحوَّل جميع قواعد بيانات Ordinary تلقائيًا عند بدء تشغيل الخادم في المرة التالية. يحل هذا #39546. #39933 (Alexander Tokmakov).
  • دعم SELECT ... INTO OUTFILE '...' AND STDOUT. #37490. #39054 (SmitaRKulkarni).
  • أُضيفت التنسيقات PrettyMonoBlock, PrettyNoEscapesMonoBlock, PrettyCompactNoEscapes, PrettyCompactNoEscapesMonoBlock, PrettySpaceNoEscapes, PrettySpaceMonoBlock, PrettySpaceNoEscapesMonoBlock. #39646 (Kruglov Pavel).

تحسين الأداء

  • تحسين استهلاك الذاكرة أثناء الدمج الموفّر للذاكرة لنتائج التجميع. #39429 (Nikita Taranov).
  • أُضيف منطق للتحكم في التزامن للحد من العدد الإجمالي لخيوط التنفيذ المتزامنة التي تنشئها الاستعلامات. #37558 (Sergei Trifonov). أُضيف المعامل concurrent_threads_soft_limit parameter لزيادة الأداء عند ارتفاع QPS من خلال تقييد العدد الإجمالي لخيوط التنفيذ لجميع الاستعلامات. #37285 (Roman Vasin).
  • أُضيفت سياسة cache SLRU إلى uncompressed cache وmarks cache. (Kseniia Sumarokova). #34651 (alexX512). فُصلت وظيفة cache المحلية عن خوارزمية cache #38048 (Han Shukai).
  • Intel® In-Memory Analytics Accelerator (Intel® IAA) هو مسرّع عتادي متاح في الجيل القادم من معالجات Intel® Xeon® Scalable (“Sapphire Rapids”). يهدف إلى تسريع العمليات الشائعة في analytics، مثل ضغط البيانات وفك ضغطها والتصفية. حصل ClickHouse على compression codec جديد باسم “DeflateQpl” يستخدم تقنية الإسناد إلى Intel® IAA لتوفير تنفيذ DEFLATE عالي الأداء. ويستخدم هذا codec مكتبة Intel® Query Processing Library (QPL) التي تجرّد الوصول إلى المسرّع العتادي، أو إلى بديل برمجي عند عدم توفر المسرّع العتادي. ويوفر DEFLATE عموماً معدلات ضغط أعلى من codec ‏LZ4 الافتراضي في ClickHouse، ونتيجة لذلك يقلل disk I/O واستهلاك الذاكرة الرئيسية. #36654 (jasperzhu). #39494 (Robert Schulze).
  • DISTINCT مع ORDER BY: استنتاج طريقة الفرز استناداً إلى وصف فرز stream الإدخال. تخطَّ الفرز إذا كان stream الإدخال مفروزاً بالفعل. #38719 (Igor Nikonov). تحسين استهلاك الذاكرة (بشكل ملحوظ) ووقت تنفيذ الاستعلام + استخدام DistinctSortedChunkTransform لإجراء distinct النهائي عندما تتطابق أعمدة DISTINCT مع أعمدة ORDER BY، مع إعادة تسميته إلى DistinctSortedStreamTransform في EXPLAIN PIPELINE → ما يحسّن استهلاك الذاكرة بشكل كبير + إزالة allocations غير الضرورية في الحلقة الساخنة في DistinctSortedChunkTransform. #39432 (Igor Nikonov). استخدام DistinctSortedTransform فقط عندما يكون وصف الفرز قابلاً للتطبيق على أعمدة DISTINCT، وإلا فارجع إلى تنفيذ DISTINCT العادي + ما يتيح إجراء عدد أقل من checks أثناء تنفيذ DistinctSortedTransform. #39528 (Igor Nikonov). إصلاح: لم يكن DistinctSortedTransform يستفيد من الفرز. ولم يكن يمسح HashSet أبداً لأن clearing_columns كُشف عنها بشكل غير صحيح (فارغة دائماً). لذلك كان يعمل عملياً مثل DISTINCT العادي (DistinctTransform). ويقلل هذا الإصلاح استهلاك الذاكرة بشكل كبير. #39538 (Igor Nikonov).
  • استخدام العقدة المحلية كأولوية أولى للحصول على structure الجدول البعيد عند تنفيذ cluster وtable functions المماثلة. #39440 (Mingliang Pan).
  • تحسين التصفية حسب الأعمدة الرقمية باستخدام AVX512VBMI2 compress store. #39633 (Guo Wangyang). بالنسبة للأنظمة التي تدعم AVX512 VBMI2، يحسّن هذا PR الأداء بنحو 6% لاستعلامات اختبار الأداء SSB‏ 3.1 و3.2 و3.3 ‏(SF=100). اختُبر على Intel Icelake Xeon 8380 ‏* 2 socket. #40033 (Robert Schulze).
  • تحسين تحليل الفهارس باستخدام التعبيرات الدالية في سيناريو متعدد الخيوط. #39812 (Guo Wangyang).
  • تحسينات للاستعلامات المعقدة: عدم زيارة AST الخاصة بـ UDFs إذا لم يكن أيٌّ منها مسجّلًا. #40069 (Raúl Marín). تحسين عمليات alloc وfree في CurrentMemoryTracker. #40078 (Raúl Marín).
  • تحسين ترميز/فك ترميز Base58. #39292 (Andrey Zvonov).
  • تحسين تحويل قناع bytes إلى bits لـ SSE/AVX/AVX512. #39586 (Guo Wangyang).

تحسين

  • طَبِّع أنواع AggregateFunction وتمثيلات الحالة، لأن تحسينات مثل #35788 ستتعامل مع count(not null columns) على أنه count()، ما قد يربك Interpreters الموزعة ويؤدي إلى الخطأ التالي: Conversion from AggregateFunction(count) to AggregateFunction(count, Int64) is not supported. #39420 (Amos Bird). ويمكن استخدام الدوال ذات الحالات المتطابقة بالتبادل في materialized views.
  • أُعيدت هيكلة جدول system.backups وتبسيطه، مع إزالة العمود internal، وإتاحة تعيين معرّف العملية للمستخدم، وإضافة الأعمدة num_files وuncompressed_size وcompressed_size وstart_time وend_time. #39503 (Vitaly Baranov).
  • تحسين بنية result table الخاصة بـ DDL query لقاعدة البيانات Replicated (فصل الأعمدة الخاصة باسم shard واسم replica، وتوضيح الحالة بشكل أفضل) - يمكن أولًا تطبيع استعلامات CREATE TABLE ... ON CLUSTER على initiator إذا كانت distributed_ddl_entry_format_version مضبوطة على 3 (default value). وهذا يعني أن استعلامات ON CLUSTER قد لا تعمل إذا كان initiator لا ينتمي إلى cluster المحدد في الاستعلام. إصلاح #37318، #39500 - تجاهل عبارة ON CLUSTER إذا كانت قاعدة البيانات Replicated وكان اسم cluster مساويًا لاسم قاعدة البيانات. ذو صلة بـ #35570 - إصلاحات طفيفة متنوعة لمحرك قاعدة البيانات Replicated - التحقق من اتساق metadata عند بدء تشغيل قاعدة البيانات Replicated، وبدء recovery للـ replica عند عدم تطابق metadata المحلية مع metadata الموجودة في Keeper. يحل #24880. #37198 (Alexander Tokmakov).
  • إضافة result_rows وresult_bytes إلى تقارير التقدّم (X-ClickHouse-Summary). #39567 (Raúl Marín).
  • تحسين تحليل primary key في MergeTree. #25563 (Nikolai Kochetov).
  • أصبحت timeSlots تعمل الآن مع DateTime64؛ كما أصبح كل من المدة دون الثانية وحجم الفتحة الزمنية متاحين عند العمل مع DateTime64. #37951 (Andrey Zvonov).
  • إضافة دعم LEFT SEMI وLEFT ANTI لـ direct join مع جداول EmbeddedRocksDB. #38956 (Vladimir C).
  • إضافة profile events لعمليات fsync. #39179 (Azat Khuzhin).
  • إضافة الوسيط الثاني إلى الدالة العادية file(path[, default])، وهو القيمة التي تُرجعها الدالة إذا لم يكن الملف موجودًا. #39218 (Nikolay Degterinsky).
  • بعض الإصلاحات الصغيرة للقراءة عبر http، مع السماح بإعادة محاولة المحتوى الجزئي في حالة 200 OK. #39244 (Kseniia Sumarokova).
  • دعم الاستعلامات CREATE TEMPORARY TABLE ... (<list of columns>) AS .... #39462 (Kruglov Pavel).
  • إضافة دعم !/* (علامة التعجب/النجمة) في نطاقات TLD المخصصة (cutToFirstSignificantSubdomainCustom()/cutToFirstSignificantSubdomainCustomWithWWW()/firstSignificantSubdomainCustom()). #39496 (Azat Khuzhin).
  • إضافة دعم اتصالات TLS مع NATS. ينفّذ #39525. #39527 (Constantine Peresypkin).
  • أصبح clickhouse-obfuscator (أداة لتعمية قاعدة البيانات لأغراض الاختبار وتوليد الحمل) يدعم الآن المعلَمين الجديدين --save و--load للعمل مع النماذج المدرَّبة مسبقًا. يغلق هذا #39534. #39541 (Alexey Milovidov).
  • إصلاح السلوك غير الصحيح لتدوير السجلات أثناء إعادة التشغيل. #39558 (Nikolay Degterinsky).
  • إصلاح إنشاء projections التجميعية عند تفعيل external aggregation. وجرى تصنيف ذلك كتحسين لأن هذه الحالة نادرة ويوجد حل بديل سهل لها عبر تغيير الإعدادات. يصلح هذا #39667 . #39671 (Amos Bird).
  • السماح بتنفيذ دوال hash باستخدام معاملات من النوع Map. #39685 (Anton Popov).
  • إضافة معلمة configuration لإخفاء العناوين في stack traces. قد يحسّن ذلك الأمان قليلًا، لكنه عمومًا مضرّ ولا ينبغي استخدامه. #39690 (Alexey Milovidov).
  • تغيير حجم البادئة لـ AggregateFunctionDistinct لضمان محاذاة مقطع ذاكرة بيانات الدالة المتداخلة. #39696 (Pxl).
  • إجراء escape بشكل صحيح لبيانات الاعتماد الممرّرة إلى أداة clickhouse-diagnostic. #39707 (Dale McDiarmid).
  • تحسين ClickHouse Keeper: إنشاء snapshot عند الخروج. يمكن التحكم في ذلك باستخدام config ‏keeper_server.create_snapshot_on_exit، والقيمة الافتراضية هي true. #39755 (Antonio Andelic).
  • دعم تحليل primary key لكل من row_policy_filter وadditional_filter. ويساعد ذلك أيضًا في إصلاح مشكلات مثل #37454 . #39826 (Amos Bird).
  • إصلاح مشكلتين في سهولة الاستخدام في Play UI: - لم تكن الواجهة متقنة على مستوى البكسل على iPad بسبب نصف قطر حدود وهوامش غير مرغوب فيها؛ - ولم يكن مؤشر التقدم يظهر بعد أول query. يغلق هذا #39957. ويغلق هذا #39960. #39961 (Alexey Milovidov).
  • Play UI: إضافة أرقام الصفوف؛ وإضافة تحديد الخلايا عند النقر؛ وإضافة hysteresis لخلايا الجدول. #39962 (Alexey Milovidov).
  • Play UI: التعرّف على مفتاح tab في textarea، ولكن دون الإخلال في الوقت نفسه بالتنقل باستخدام tab. #40053 (Alexey Milovidov).
  • سيعرض العميل الوقت المنقضي من جهة الخادم. وهذا مهم لمقارنة أداء خدمات ClickHouse في مراكز البيانات البعيدة. وبذلك يُغلق #38070. راجع أيضًا هذا للاطلاع على الدافع. #39968 (Alexey Milovidov).
  • إضافة الدوال parseDateTime64BestEffortUS وparseDateTime64BestEffortUSOrNull وparseDateTime64BestEffortUSOrZero، مع إغلاق #37492. #40015 (Tanya Bragin).
  • توسيع system.processors_profile_log بمزيد من المعلومات، مثل صفوف الإدخال. #40121 (Amos Bird).
  • عرض الوقت من جهة الخادم في clickhouse-benchmark افتراضيًا إذا كان متاحًا (بدءًا من إصدار ClickHouse 22.8). وهذا ضروري لمقارنة أداء البيئات السحابية بشكل صحيح. ويمكن تغيير هذا السلوك باستخدام خيار سطر الأوامر الجديد --client-side-time. كما تغيّر خيار سطر الأوامر --randomize من --randomize 1 إلى صيغة بدون وسيطة. #40193 (Alexey Milovidov).
  • إضافة عدادات (ProfileEvents) للحالات التي جرى فيها تعيين حد لتعقيد الاستعلام وتم بلوغه (مع عداد منفصل لكل من overflow_mode = break وthrow). على سبيل المثال، إذا كنت قد ضبطت max_rows_to_read مع read_overflow_mode = 'break'، فإن النظر إلى قيمة العداد OverflowBreak يتيح التمييز بين النتائج غير المكتملة. #40205 (Alexey Milovidov).
  • إصلاح احتساب الذاكرة في حالة أخطاء “Memory limit exceeded” (إذ كان استخدام الذاكرة [الأقصى] سابقًا يحتسب التخصيصات الفاشلة أيضًا). #40249 (Azat Khuzhin).
  • إضافة metrics لذاكرة التخزين المؤقت لنظام الملفات: FilesystemCacheSize وFilesystemCacheElements. #40260 (Kseniia Sumarokova).
  • دعم نقل RPC الآمن في Hadoop ‏(hadoop.rpc.protection=privacy وhadoop.rpc.protection=integrity). #39411 (michael1589).
  • تجنب الزيادة المستمرة في استهلاك الذاكرة في ذاكرة التخزين المؤقت للأنماط عند استخدام الدوال multi(Fuzzy)Match(Any|AllIndices|AnyIndex)(). #40264 (Robert Schulze).

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

  • ClickFiddle: أداة جديدة لاختبار إصدارات ClickHouse في وضع القراءة والكتابة (Igor Baliuk).
  • أصبح ملف ClickHouse التنفيذي ذاتي الاستخراج #35775 (Yakov Olkhovskiy, Arthur Filatenkov).
  • تحديث tzdata إلى 2022b لدعم تغييرات timezone الجديدة. راجع https://github.com/google/cctz/pull/226. تم تأجيل بدء التوقيت الصيفي لعام 2022 في تشيلي من 4 سبتمبر إلى 11 سبتمبر. كما تخطط إيران للتوقف عن العمل بالتوقيت الصيفي نهائيًا بعد العودة إلى التوقيت القياسي في 2022-09-21. وهناك تصحيحات تتعلق بالمنطقة الزمنية التاريخية لـ Asia/Tehran في عام 1977: اعتمدت إيران التوقيت القياسي في 1935 وليس 1946. وفي عام 1977 طُبّق التوقيت الصيفي من 03-21 23:00 إلى 10-20 24:00؛ وكانت انتقالات عام 1978 في 03-24 و08-05، وليس 03-20 و10-20؛ وكان انتقال ربيع 1979 في 05-27، وليس 03-21 (https://data.iana.org/time-zones/tzdb/NEWS). (Alexey Milovidov).
  • كانت الحزم السابقة تثبّت ملف systemd.service في /etc. وتُعلَّم الملفات هناك على أنها conf، لذلك لا تُزال ولا تُحدَّث تلقائيًا. يقوم طلب الدمج هذا بتنظيفها. #39323 (Mikhail f. Shiryaev).
  • ضمان فعالية LSan. #39430 (Azat Khuzhin).
  • توجد مشكلات في TSAN مع clang-14 (https://github.com/google/sanitizers/issues/1552, https://github.com/google/sanitizers/issues/1540)، لذا تُبنى هنا binaries الخاصة بـ TSAN باستخدام clang-15. #39450 (Mikhail f. Shiryaev).
  • إزالة خيار بناء أدوات ClickHouse كبرامج executable منفصلة. هذا يُصلح #37847. #39520 (Alexey Milovidov).
  • تحضيرات بسيطة للبناء على s390x (وهي معمارية big-endian). #39627 (Harry Lee). #39656 (Harry Lee). إصلاح مشكلة Endian في BitHelpers على s390x. #39656 (Harry Lee). تنفيذ جزء من الشيفرة المتعلق بـ SipHash لمعمارية s390x (غير المدعومة في ClickHouse). #39732 (Harry Lee). إصلاح مشكلة Endian في شيفرة snapshot الخاصة بـ Coordination لمعمارية s390x (غير المدعومة في ClickHouse). #39931 (Harry Lee). إصلاح مشكلات Endian في شيفرة Codec لمعمارية s390x (غير المدعومة في ClickHouse). #40008 (Harry Lee). إصلاح مشكلات Endian في قراءة وكتابة البيانات الثنائية BigEndian في شيفرة ReadHelpers وWriteHelpers لمعمارية s390x (غير المدعومة في ClickHouse). #40179 (Harry Lee).
  • إضافة دعم للبناء باستخدام clang-16 ‏(trunk). وبذلك يُغلَق #39949. #40181 (Alexey Milovidov).
  • تهيئة بناء RISC-V 64 للتشغيل ضمن CI. وهذا من أجل #40141. #40197 (Alexey Milovidov).
  • تبسيط واجهة ماكرو تسجيل الدوال (FUNCTION_REGISTER*) لإلغاء خطوة إضافة دالة extern واستدعائها في registerFunctions.cpp، كما يجعل البناءات التزايدية للدوال الجديدة أسرع. #38615 (Li Yin).
  • Docker: أصبح entrypoint.sh الآن في صورة Docker ينشئ أمر chown وينفّذه على جميع المجلدات التي يعثر عليها في config لإعداد الأقراص المتعددة #17717. #39121 (Nikita Mikhaylov).

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

  • إصلاح احتمال حدوث segfault في تنسيق الإدخال CapnProto. اكتُشف هذا الخطأ وأُبلغ عنه عبر program مكافآت الثغرات في ClickHouse بواسطة kiojj. #40241 (Kruglov Pavel).
  • إصلاح حالة نادرة جدًا من السلوك غير الصحيح لمعامل الفهرسة في المصفوفات. هذا يُغلق #28720. #40185 (Alexey Milovidov).
  • إصلاح التحقق غير الكافي من الوسائط في دوال التشفير (اكتشفه query fuzzer). هذا يُغلق #39987. #40194 (Alexey Milovidov).
  • إصلاح الحالة التي قد يصبح فيها ترتيب الأعمدة غير صحيح إذا استُخدم العامل IN مع جدول ذي ENGINE = Set يحتوي على عدة أعمدة. هذا يصلح #13014. #40225 (Alexey Milovidov).
  • إصلاح عملية seek أثناء القراءة من disk مشفّر. يُصلح طلب السحب هذا #38381. #39687 (Vitaly Baranov).
  • إصلاح الأعمدة المكررة في خطة join. وأخيرًا، حل #26809. #40009 (Vladimir C).
  • إصلاح تعليق query عند تنفيذ SELECT مع ORDER BY WITH FILL لأنواع تاريخ/وقت مختلفة. #37849 (Yakov Olkhovskiy).
  • إصلاح ORDER BY الذي يطابق ORDER BY الخاص بـ projections (إذ كان يعيد سابقًا نتيجة غير مرتبة). #38725 (Azat Khuzhin).
  • عدم تحسين الدوال في عبارات GROUP BY إذا كانت تحجب أحد أعمدة الجدول أو التعبيرات. يُصلح #37032. #39103 (Anton Kozlov).
  • إصلاح اسم الجدول الخاطئ في السجلات بعد RENAME TABLE. هذا يُصلح #38018. #39227 (Amos Bird).
  • إصلاح الوسائط الموضعية في حالة pruning الأعمدة عند تحسين query. يُغلق #38433. #39293 (Kseniia Sumarokova).
  • إصلاح خطأ في schema inference في حالة الرسائل الفارغة في تنسيقات Protobuf/CapnProto، كان يسمح بإنشاء عمود بنوع Tuple فارغ. يُغلق #39051 تمت إضافة إعدادين جديدين input_format_{protobuf/capnproto}_skip_fields_with_unsupported_types_in_schema_inference يتيحان تخطي الحقول ذات الأنواع غير المدعومة أثناء schema inference لتنسيقَي Protobuf وCapnProto. #39357 (Kruglov Pavel).
  • (Window View ميزة تجريبية) إصلاح segmentation fault عند CREATE WINDOW VIEW .. ON CLUSTER ... INNER. يُغلق #39363. #39384 (Kseniia Sumarokova).
  • إصلاح إنهاء WriteBuffer عند إلغاء insert into function (في الإصدارات السابقة، كان ذلك قد يؤدي إلى std::terminate). #39458 (Kruglov Pavel).
  • إصلاح تخزين الأعمدة من النوع Object في التسلسل المتناثر. #39464 (Anton Popov).
  • إصلاح استثناء محتمل بعنوان “Not found column in block” عند استخدام projections. هذا يُغلق #39469. #39470 (小路).
  • إصلاح استثناء ناتج عن تسابق بين DROP و INSERT مع العروض المادية. #39477 (Azat Khuzhin).
  • خطأ في مكتبة Apache Avro: إصلاح data race واحتمال heap-buffer-overflow في تنسيق Avro. يُغلق #39094 ويُغلق #33652. #39498 (Kruglov Pavel).
  • إصلاح خطأ نادر في القراءة غير المتزامنة (مع الإعداد local_filesystem_read_method='pread_threadpool') عند تفعيل O_DIRECT (عبر الإعداد min_bytes_to_use_direct_io). #39506 (Anton Popov).
  • (على FreeBSD فقط) إصلاح الخطأ “Code: 49. DB::Exception: FunctionFactory: the function name ” is not unique. (LOGICAL_ERROR)” الذي لوحظ على FreeBSD عند بدء تشغيل ClickHouse. #39551 (Alexander Gololobov).
  • إصلاح خطأ في الوسيطة “maxsplit” التي أُضيفت مؤخرًا إلى splitByChar، إذ لم تكن تعمل بشكل صحيح. #39552 (filimonov).
  • إصلاح خطأ في ASOF JOIN مع enable_optimize_predicate_expression، ويُغلق #37813. #39556 (Vladimir C).
  • إصلاح استعلام CREATE/DROP INDEX مع ON CLUSTER أو قاعدة بيانات Replicated و ReplicatedMergeTree. كان يُنفَّذ سابقًا على جميع replicas (مما يسبب خطأ أو يؤدي إلى تعليق DDL queue). يُصلح #39511. #39565 (Alexander Tokmakov).
  • إصلاح خطأ “column not found” في push down مع join، ويُغلق #39505. #39575 (Vladimir C).
  • إصلاح الاسم المستعار الخاطئ لـ REGEXP_REPLACE. هذا يُصلح https://github.com/ClickHouse/ClickBench/issues/9. #39592 (Alexey Milovidov).
  • تم إصلاح نقطة origin في window functions الخاصة بالتناقص الأسي لتكون القيمة الأخيرة في window. سابقًا، كان التناقص يُحسب بالصيغة exp((t - curr_row_t) / decay_length)، وهذا غير صحيح عندما لا يكون الحد الأيمن للنافذة هو CURRENT ROW. وقد تغيّرت إلى: exp((t - last_row_t) / decay_length). لا يوجد تغيير في النتائج للنوافذ التي تحتوي على ROWS BETWEEN (smth) AND CURRENT ROW. #39593 (Vladimir Chebotaryov).
  • إصلاح تجاوز السعة في قسمة Decimal، والذي يمكن اكتشافه استنادًا إلى scale الخاصة بالمعاملات. #39600 (Andrey Zvonov).
  • إصلاح عمل الإعدادين output_format_arrow_string_as_string وoutput_format_arrow_low_cardinality_as_dictionary معًا بشكل صحيح. يغلق #39624. #39647 (Kruglov Pavel).
  • إصلاح خلل في تحديد قاعدة البيانات default في قراءات distributed table. #39674 (Anton Kozlov).
  • (فقط مع Ordinary databases المتقادمة) كان من الممكن أن يقرأ Select بيانات table محذوف إذا استُخدمت cache الخاصة بـ mmap IO وكان database engine هو Ordinary وأُنشئت tables جديدة بالاسم نفسه الذي كان يحمله الجدول المحذوف. تم إصلاح ذلك. #39708 (Alexander Tokmakov).
  • إصلاح error محتمل: Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got ColumnLowCardinality إصلاح #38460. #39716 (Arthur Passos).
  • كانت أسماء الحقول في قسم meta من format ‏JSON تُهرَّب مرتين عن طريق الخطأ. هذا يغلق #39693. #39747 (Alexey Milovidov).
  • إصلاح index analysis غير صحيح مع tuples والعامل IN، والذي كان يمكن أن يؤدي إلى نتيجة query خاطئة. #39752 (Anton Popov).
  • إصلاح Filtering لجداول EmbeddedRocksDB حسب key باستخدام params. #39757 (Antonio Andelic).
  • إصلاح الخطأ Invalid number of columns in chunk pushed to OutputPort الناتج عن تحسين ARRAY JOIN. إصلاح #39164. #39799 (Nikolai Kochetov).
  • حل بديل لخلل في Linux kernel. إصلاح الاستثناء CANNOT_READ_ALL_DATA مع local_filesystem_read_method=pread_threadpool. وقد أثّر هذا الخلل فقط على إصداري Linux kernel ‏5.9 و5.10 وفقًا لـ man. #39800 (Anton Popov).
  • (على NFS فقط) إصلاح تعطل mkdir في NFS لوحدات التخزين root-squashed. #39898 (Constantine Peresypkin).
  • إزالة Dictionaries من metrics الخاصة بـ prometheus عند DETACH/DROP. #39926 (Azat Khuzhin).
  • إصلاح read data لـ StorageFile مع virtual columns. يغلق #39907. #39943 (flynn).
  • إصلاح memory usage مرتفع أثناء fetches. إصلاح #39915. #39990 (Nikolai Kochetov).
  • (ميزة تجريبية) إصلاح تعطل hashId وعدم استخدام المعلَمة salt. #40002 (Raúl Marín).
  • قد يؤدي العاملان EXCEPT و INTERSECT إلى حدوث تعطل عند استخدام تركيبة معيّنة من الأعمدة الثابتة وغير الثابتة. #40020 (Duc Canh Le).
  • تم إصلاح الخطأين “Part directory doesn’t exist” و “tmp_<part_name> … No such file or directory” أثناء تنفيذ INSERT ببطء شديد أو أثناء عمليات merge/mutation الطويلة جدًا. كما تم إصلاح مشكلة قد تؤدي إلى تعليق بعض إدخالات replication queue من دون أي أخطاء أو تحذيرات في السجلات إذا فشلت محاولة سابقة لجلب part، لكن لم يُنظَّف الدليل tmp-fetch_<part_name>. #40031 (Alexander Tokmakov).
  • إصلاح حالات نادرة في parsing لمصفوفات من Tuples بالتنسيق Values. #40034 (Anton Popov).
  • إصلاح تحويل تنسيق ArrowColumn من Dictionary(X) و Dictionary(Nullable(X)) إلى ClickHouse LowCardinality(X) و LowCardinality(Nullable(X)) على الترتيب. #40037 (Arthur Passos).
  • إصلاح حالة توقف متبادل محتملة أثناء الكتابة إلى S3 عند فشل scheduling للمهام. #40070 (Maksim Kita).
  • إصلاح خطأ في collectFilesToSkip() عبر إضافة امتداد الملف الصحيح (.idx أو idx2) إلى indexes التي ستُعاد إعادة حسابها، لتجنّب hard links الخاطئة. أُغلقت المشكلة #39896. #40095 (Jianmei Zhang).
  • إصلاح لـ DNS resolution العكسي. #40134 (Arthur Passos).
  • إصلاح النتيجة غير المتوقعة للدالة arrayDifference مع `Array(UInt32). #40211 (Duc Canh Le).

إصدار ClickHouse 22.7، بتاريخ 2022-07-21. العرض التقديمي, الفيديو

ملاحظات الترقية

  • فُعِّل الإعداد enable_positional_arguments افتراضيًا. يتيح ذلك استعلامات مثل SELECT ... ORDER BY 1, 2 حيث يشير 1 و2 إلى مراجع في عبارة SELECT. إذا كنت بحاجة إلى استعادة السلوك القديم، فعطّل هذا الإعداد. #38204 (Alexey Milovidov).
  • عُطِّل format_csv_allow_single_quotes افتراضيًا. راجع #37096. (Kruglov Pavel).
  • أُهمِل database engine ‏Ordinary وصياغة تعريف التخزين القديمة لجداول *MergeTree. افتراضيًا، لم يعد ممكنًا إنشاء database جديدة باستخدام engine ‏Ordinary. وإذا كانت database ‏system تستخدم engine ‏Ordinary، فستُحوَّل تلقائيًا إلى Atomic عند بدء تشغيل server. توجد إعدادات للإبقاء على السلوك القديم (allow_deprecated_database_ordinary وallow_deprecated_syntax_for_merge_tree)، لكن قد تُزال هذه الإعدادات في إصدارات لاحقة. #38335 (Alexander Tokmakov).
  • فُرضت إعادة كتابة comma join إلى inner افتراضيًا (بضبط default value ‏cross_to_inner_join_rewrite = 2). وللحصول على السلوك القديم، اضبط cross_to_inner_join_rewrite = 1. #39326 (Vladimir C). وإذا واجهت أي حالات عدم توافق، يمكنك إعادة هذا الإعداد إلى وضعه السابق.

ميزة جديدة

  • دعم expressions مع دوال window functions. يغلق #19857. #37848 (Dmitry Novik).
  • إضافة خوارزمية join جديدة باسم direct لجداول EmbeddedRocksDB، انظر #33582. #35363 (Vladimir C).
  • إضافة خوارزمية full sorting merge join. #35796 (Vladimir C).
  • تنفيذ table engine لـ NATS، بما يتيح النشر/الاشتراك عبر NATS. يغلق #32388. #37171 (tchepavel). (Kseniia Sumarokova)
  • تنفيذ table function mongodb. مع السماح بالكتابة إلى تخزين MongoDB / table function الخاصة به. #37213 (aaapetrenko). (Kseniia Sumarokova)
  • إضافة output format SQLInsert. يغلق #38441. #38477 (Kruglov Pavel).
  • تقديم الإعداد additional_table_filters. باستخدام هذا الإعداد، يمكنك تحديد شرط تصفية إضافي لجدول يُطبَّق مباشرةً بعد القراءة. مثال: select number, x, y from (select number from system.numbers limit 5) f any left join (select x, y from table_1) s on f.number = s.x settings additional_table_filters={'system.numbers : 'number != 3', 'table_1' : 'x != 2'}. كما تم تقديم الإعداد additional_result_filter الذي يحدد شرط تصفية إضافيًا لنتيجة query. يغلق #37918. #38475 (Nikolai Kochetov).
  • إضافة الإعداد compatibility وsystem table system.settings_changes الذي يحتوي على معلومات حول التغييرات في الإعدادات عبر إصدارات ClickHouse. يغلق #35972. #38957 (Kruglov Pavel).
  • إضافة الدالتين translate(string, from_string, to_string) وtranslateUTF8(string, from_string, to_string). تقومان باستبدال بعض المحارف بمحارف أخرى. #38935 (Nikolay Degterinsky).
  • دعم الدالة parseTimeDelta. ويمكن استخدامها على النحو التالي: يمكن استخدام ;-+,: كفواصل، مثل 1yr-2mo و2m:6s: SELECT parseTimeDelta('1yr-2mo-4w + 12 days, 3 hours : 1 minute ; 33 seconds'). #39071 (jiahui-97).
  • إضافة query ‏CREATE TABLE ... EMPTY AS SELECT. وهي تستنتج تلقائيًا بنية الجدول من query ‏SELECT، لكنها لا تملأ الجدول بعد إنشائه. يحل #38049. #38272 (Alexander Tokmakov).
  • إضافة خيارات لتقييد عمليات IO مع التخزين البعيد: max_remote_read_network_bandwidth_for_server وmax_remote_write_network_bandwidth_for_server. #39095 (Sergei Trifonov).
  • أُضيف الإعداد group_by_use_nulls لجعل أعمدة مفاتيح التجميع قابلة لأن تكون NULL في حالات ROLLUP و CUBE و GROUPING SETS. يُغلق #37359. #38642 (Dmitry Novik).
  • أُضيفت إمكانية تحديد مستوى الضغط أثناء تصدير البيانات. #38907 (Nikolay Degterinsky).
  • أُضيف خيار لطلب grants صريحة لتنفيذ SELECT من قاعدة البيانات system. التفاصيل: #38970 (Vitaly Baranov).
  • أصبحت الدوال multiMatchAny و multiMatchAnyIndex و multiMatchAllIndices ومتغيراتها التقريبية تقبل الآن وسيطة مصفوفة pattern غير ثابتة. #38485 (Robert Schulze). كما أصبحت دالة SQL ‏multiSearchAllPositions تقبل الآن وسائط needle غير ثابتة. #39167 (Robert Schulze).
  • أُضيف الإعداد zstd_window_log_max لضبط الحد الأقصى لاستخدام الذاكرة عند فك ترميز zstd أثناء استيراد الملفات الخارجية. يُغلق #35693. #37015 (wuxiaobai24).
  • أُضيف الإعداد send_logs_source_regexp. يرسل سجلات server النصية باستخدام regexp المحدد لمطابقة اسم مصدر السجل. وتعني القيمة الفارغة جميع المصادر. #39161 (Amos Bird).
  • تمت إضافة دعم ALTER لجداول Hive. #38214 (lgbo).
  • تمت إضافة دعم الدالة isNullable. تتحقق هذه الدالة مما إذا كانت وسيطتها قابلة لأن تكون NULL وتُرجع 1 أو 0. يُغلق #38611. #38841 (lokax).
  • أُضيفت دوال لترميز وفك ترميز base58. #38159 (Andrey Zvonov).
  • أُضيف تصور مخطط إلى واجهة Play UI. #38197 (Alexey Milovidov).
  • أُضيفت دوال لمسافة L2 Squared وnorm لكل من المصفوفات وTuples. #38545 (Julian Gilyadov).
  • أُضيفت إمكانية تمرير HTTP headers إلى table function ‏url / التخزين عبر SQL. يُغلق #37897. #38176 (Kseniia Sumarokova).
  • أُضيف الملف التنفيذي clickhouse-diagnostics إلى الحزم. #38647 (Mikhail f. Shiryaev).

الميزة التجريبية

  • يضيف الإعداد الجديد implicit_transaction لتشغيل الاستعلامات المستقلة ضمن معاملة. ويتولى تلقائيًا فتح المعاملة وإغلاقها (باستخدام COMMIT إذا نجح الاستعلام أو ROLLBACK إذا لم ينجح). #38344 (Raúl Marín).

تحسين الأداء

  • تحسين Distinct للأعمدة المرتبة. يُستخدم تحويل distinct متخصص عندما يكون دفق الإدخال مرتبًا حسب العمود أو الأعمدة في distinct. ويمكن تطبيق هذا التحسين على pre-distinct أو final distinct أو كليهما. التنفيذ الأولي من @dimarub2000. #37803 (Igor Nikonov).
  • تحسين أداء ORDER BY وعمليات الدمج في MergeTree وwindow functions باستخدام إصدار batch من BinaryHeap. #38022 (Maksim Kita).
  • تنفيذ أكثر توازيًا للاستعلامات التي تستخدم FINAL #36396 (Nikita Taranov).
  • إصلاح تراجع كبير في أداء join أُدخل في #35616. والمثير للاهتمام أن استعلامات join الشائعة، مثل استعلامات ssb، كانت أبطأ بعشر مرات لما يقرب من 3 أشهر من دون أن يشتكي أحد. #38052 (Amos Bird).
  • الانتقال من مكتبة Intel hyperscan إلى vectorscan، ما يسرّع العديد من عمليات مطابقة السلاسل النصية على المنصات غير x86. #38171 (Robert Schulze).
  • زيادة التوازي في خطوات خطة الاستعلام التي تُنفَّذ بعد aggregation. #38295 (Nikita Taranov).
  • تحسين أداء الإدراج في الأعمدة من النوع JSON. #38320 (Anton Popov).
  • تحسين الإدراج وعمليات البحث في HashTable. #38413 (Nikita Taranov).
  • إصلاح تدهور الأداء الناتج عن #32493. #38417 (Alexey Milovidov).
  • تحسين أداء joining باستخدام الأعمدة الرقمية عبر تعليمات SIMD. #37235 (zzachimed). #38565 (Maksim Kita).
  • تسريع دوال Norm وDistance للمصفوفات بمقدار يتراوح بين 1.2 و2 مرة. #38740 (Alexander Gololobov).
  • إضافة copyOverlap32Shuffle محسّنة باستخدام AVX-512 VBMI لفك ضغط LZ4. وبعبارة أخرى، جرى تحسين أداء فك ضغط LZ4. #37891 (Guo Wangyang).
  • سيستفيد ORDER BY (a, b) من جميع المزايا نفسها التي يوفرها ORDER BY a, b. #38873 (Igor Nikonov).
  • محاذاة التفرعات ضمن حد 32B لجعل benchmark أكثر استقرارًا. #38988 (Guo Wangyang). وهذا يحسّن الأداء بمتوسط 1..2% على Intel.
  • ستتجنب Executable UDF وexecutable dictionaries وExecutable tables إهدار ثانية واحدة أثناء انتظار انتهاء العملية الفرعية. #38929 (Constantine Peresypkin).
  • تحسين الوصول إلى جدول system.stack_trace إذا لم تُحدَّد جميع الأعمدة. #39177 (Azat Khuzhin).
  • تحسين أداء isNullable/isConstant/isNull/isNotNull لوسيطة LowCardinality. #39192 (Kruglov Pavel).
  • تحسين معالجة ORDER BY في window functions. #34632 (Vladimir Chebotarev).
  • جرى تحسين الجدول system.asynchronous_metric_log بشكل أكبر من حيث مساحة التخزين. هذا يُغلق #38134. راجع فيديو YouTube. #38428 (Alexey Milovidov).

تحسين

  • دعم صيغة CREATE INDEX وDROP INDEX القياسية في SQL. #35166 (Jianmei Zhang).
  • إرسال أحداث profile لاستعلامات INSERT (إذ كان الدعم سابقًا مقتصرًا على SELECT فقط). #37391 (Azat Khuzhin).
  • تنفيذ التجميع بأسلوب in order (optimize_aggregation_in_order) للإسقاطات المُجسَّدة بالكامل. #37469 (Azat Khuzhin).
  • إزالة استخدام عملية فرعية لتهيئة Kerberos. أُضيف اختبار تكاملي جديد. يُغلق #27651. #38105 (Roman Vasin).
    • إضافة الإعداد multiple_joins_try_to_keep_original_names لتجنّب إعادة كتابة اسم المعرّف عند إعادة كتابة عدة عمليات JOIN، وإغلاق #34697. #38149 (Vladimir C).
  • تحسين تجربة المستخدم في trace-visualizer. #38169 (Sergei Trifonov).
  • تمكين جمع تتبعات المكدس وquery profiler لمعمارية AArch64. #38181 (Maksim Kita).
  • عدم تخطي الروابط الرمزية في الدليل user_defined أثناء تحميل دوال SQL المعرفة من قبل المستخدم. يُغلق #38042. #38184 (Maksim Kita).
  • إضافة تنظيفٍ في الخلفية للدلائل الفرعية في store/. في بعض الحالات، قد يترك clickhouse-server دلائل فرعية غير مرغوب فيها في store/ (على سبيل المثال، عند فشل إنشاء جدول)، ولم تكن هذه الدلائل تُزال مطلقًا. يُصلح #33710. #38265 (Alexander Tokmakov).
  • إضافة استعلام DESCRIBE CACHE لعرض إعدادات cache من config. وإضافة استعلام SHOW CACHES لعرض قائمة filesystem cache المتاحة. #38279 (Kseniia Sumarokova).
  • إضافة تحقّق من صلاحية الوصول إلى system drop filesystem cache. ودعم ON CLUSTER. #38319 (Kseniia Sumarokova).
  • إصلاح عدم توافق محرك قاعدة بيانات PostgreSQL عند الترقية من 21.3 إلى 22.3. يُغلق #36659. #38369 (Kseniia Sumarokova).
  • تعمل الآن الدالة filesystemAvailable والدوال المشابهة في clickhouse-local. هذا يُغلق #38423. #38424 (Alexey Milovidov).
  • إضافة الدالة revision. #38555 (Azat Khuzhin).
  • إصلاح استخدام GCS عبر نفق proxy. #38726 (Azat Khuzhin).
  • دعم \i file في clickhouse client / local (على غرار \i في psql). #38813 (Kseniia Sumarokova).
  • خيار جديد optimize = 1 في EXPLAIN AST. إذا كان مفعّلًا، فسيعرض AST بعد إعادة كتابته، وإلا فسيعرض AST الخاص بالاستعلام الأصلي. وهو معطّل افتراضيًا. #38910 (Igor Nikonov).
  • السماح بوجود فاصلة زائدة في قائمة الأعمدة. يُغلق #38425. #38440 (chen).
  • إصلاحات وتحسينات في الأداء لطريقة JOIN parallel_hash. #37648 (Vladimir C).
  • دعم نقل RPC الآمن في hadoop ‏(hadoop.rpc.protection=privacy و hadoop.rpc.protection=integrity). #37852 (Peng Liu).
  • إضافة دعم النوع struct في StorageHive. #38118 (lgbo).
  • تُزال الآن الكائنات المفردة في S3 باستخدام RemoveObjectRequest. وقد أُضيف التوافق مع GCP، الذي لم يكن يسمح باستخدام removeFileIfExists، ما كان يعطّل فعليًا نحو نصف وظائف remove. كما أُضيف الاكتشاف التلقائي لواجهة برمجة تطبيقات S3 DeleteObjects غير المدعومة في GCS. يتيح ذلك استخدام GCS من دون الحاجة إلى تعيين support_batch_delete=0 صراحةً في الإعدادات. #37882 (Vladimir Chebotarev).
  • إتاحة بيانات monitoring أساسية متعلقة بـ ClickHouse Keeper (عبر ProfileEvents وCurrentMetrics). #38072 (lingpeng0314).
  • دعم الخيار auto_close لاتصال محرك PostgreSQL. يُغلق #31486. #38363 (Kseniia Sumarokova).
  • السماح باستخدام المعدِّل NULL في تعريف الأعمدة ضمن table functions. #38816 (Kruglov Pavel).
  • تعطيل mutations_finalizing_task قبل الإيقاف لتجنّب أخطاء TABLE_IS_READ_ONLY غير الضارة أثناء الإيقاف. #38851 (Raúl Marín).
  • إزالة الانتظار غير الضروري لاستعلامات SELECT بعد استعلامات ALTER عند وجود استعلامات INSERT إذا كنت تستخدم قواعد البيانات Ordinary المهجورة. #38864 (Azat Khuzhin).
  • خيار جديد rewrite في EXPLAIN AST. عند تفعيله، يعرض AST بعد إعادة كتابته، وإلا فيعرض AST للاستعلام الأصلي. وهو معطّل افتراضيًا. #38910 (Igor Nikonov).
  • إيقاف الإبلاغ عن استثناءات Zookeeper “Node exists” في system.errors عندما تكون متوقعة. #38961 (Raúl Marín).
  • clickhouse-keeper: إضافة دعم لحساب digest والتحقق منه آنيًا. وهو معطّل افتراضيًا. #37555 (Antonio Andelic).
  • السماح بتحديد globs * or {expr1, expr2, expr3} داخل مفتاح لأداة clickhouse-extract-from-config. #38966 (Nikita Mikhaylov).
  • clearOldLogs: عدم الإبلاغ عن KEEPER_EXCEPTION عند عمليات الحذف المتزامنة. #39016 (Raúl Marín).
  • تحسين في clickhouse-keeper: حفظ البيانات الوصفية المتعلقة بخوادم Keeper على القرص. #39069 (Antonio Andelic). سيجعل ذلك التشغيل أسهل إذا أوقفت جميع عقد keeper أو أعدت تشغيلها في الوقت نفسه.
  • المتابعة دون استثناء عند نفاد مساحة القرص عند استخدام filesystem cache. #39106 (Kseniia Sumarokova).
  • التعامل مع إشارات SIGTERM من k8s. #39130 (Timur Solodovnikov).
  • إضافة العمود merge_algorithm ‏(Undecided, Horizontal, Vertical) إلى system.part_log. #39181 (Azat Khuzhin).
  • لا تزِد أي عدّاد في system.errors عندما لا يكون القرص دوّارًا. #39216 (Raúl Marín).
  • يُظهر المقياس result_bytes لاستعلامات INSERT في system.query_log عدد البايتات المُدرجة. في السابق، كانت هذه القيمة غير صحيحة، إذ كانت تُخزَّن بالقيمة نفسها الخاصة بـ result_rows. #39225 (Ilya Yatsishin).
  • سيُعرَض مقياس استخدام CPU في clickhouse-client بطريقة أفضل. يُصلح #38756. #39280 (Sergei Trifonov).
  • أعِد رمي الاستثناء عند تهيئة filesystem cache أثناء بدء تشغيل الخادم، مع رسالة خطأ أفضل. #39386 (Kseniia Sumarokova).
  • يجمع OpenTelemetry الآن traces من دون spans الخاصة بـ Processors افتراضيًا (لأن عددها كبير جدًا). ولتمكين جمع spans الخاصة بـ Processors، استخدم الإعداد opentelemetry_trace_processors. #39170 (Ilya Yatsishin).
  • الدوال multiMatch[Fuzzy](AllIndices/Any/AnyIndex) — لا تُطلق logical error إذا كانت قيمة الوسيط needle فارغة. #39012 (Robert Schulze).
  • السماح بتعريف queue لـ RabbitMQ من دون الوسيطات الافتراضية x-max-length وx-overflow. #39259 (rnbondarenko).

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

  • تطبيق annotations لتحليل أمان الخيوط (TSA) في Clang على ClickHouse. #38068 (Robert Schulze).
  • تكييف برنامج التثبيت النصي العام ليتوافق مع FreeBSD. #39302 (Alexey Milovidov).
  • تحضير البناء على منصة s390x. #39193 (Harry Lee).
  • إصلاح خطأ في مكتبة jemalloc. #38757 (Azat Khuzhin).
  • أصبح اختبار الأداء على الأجهزة يدعم الآن رفع النتائج تلقائيًا. #38427 (Alexey Milovidov).
  • أصبح جدول النظام “system.licenses” يُملأ بشكل صحيح على Mac (Darwin). #38294 (Robert Schulze).
  • تغيير حزم all|noarch إلى حزم معتمدة على المعمارية - إصلاح بعض الوثائق المتعلقة بذلك - دفع حزم aarch64|arm64 إلى Artifactory وأصول الإصدار - إصلاح #36443. #38580 (Mikhail f. Shiryaev).

إصلاح خطأ (سلوك غير صحيح ظاهر للمستخدم في إصدار رسمي مستقر أو ما قبل مستقر)

  • إصلاح التقريب في Decimal128/Decimal256 عند استخدام scale يزيد طوله على 19 رقمًا. #38027 (Igor Nikonov).
  • إصلاح تعطل ناتج عن data race في التخزين Hive (محرك جدول التكامل). #38887 (lgbo).
  • إصلاح التعطل عند تنفيذ GRANT ALL ON . مع ON CLUSTER. كان هذا معطّلًا بسبب https://github.com/ClickHouse/ClickHouse/pull/35767. وهذا يغلق #38618. #38674 (Vitaly Baranov).
  • تصحيح توسيع glob في حالة الصيغ {0..10}. يُصلح #38498. التنفيذ الحالي مشابه لما تفعله shell، كما ذكر @rschu1ze هنا. #38502 (Heena Bansal).
  • إصلاح التعطل في الدالتين mapUpdate وmapFilter عند استخدام وسيطة map ثابتة. يغلق #38547. #38553 (hexiaoting).
  • إصلاح معلومات الرتابة للدالة toHour في query optimization، والتي قد تؤدي إلى نتائج query غير صحيحة (index analysis غير صحيح). وهذا يُصلح #38333. #38675 (Amos Bird).
  • إصلاح التحقق مما إذا كانت S3 storage تدعم الكتابات المتوازية. وكان ذلك يؤدي إلى عدم عمل الكتابات المتوازية إلى S3. #38792 (chen).
  • إصلاح reads القابلة للـ seek في S3 مع read buffer المتوازي. (وقد أثّر ذلك في memory usage أثناء query). يغلق #38258. #38802 (Kseniia Sumarokova).
  • تحديث simdjson. يُصلح هذا #38621 — وهو overflow في buffer على الأجهزة التي تستخدم أحدث معالجات Intel مع AVX-512 VBMI. #38838 (Alexey Milovidov).
  • إصلاح logical error محتمل في عمليات Vertical merges. #38859 (Maksim Kita).
  • إصلاح settings profile مع وحدة Seconds. #38896 (Raúl Marín).
  • إصلاح partition pruning غير الصحيح عند وجود partition key من نوع Nullable. ملاحظة: على الأرجح أنك لا تستخدم مفاتيح partition من نوع Nullable — فهذه ميزة نادرة لا ينبغي استخدامها. مفاتيح Nullable غير منطقية، وهذه الميزة مطلوبة فقط لبعض حالات الاستخدام الغريبة جدًا. وهذا يُصلح #38941. #38946 (Amos Bird).
  • تحسين fsync_part_directory لعمليات fetches. #38993 (Azat Khuzhin).
  • إصلاح حالة deadlock محتملة داخل OvercommitTracker. يُصلح #37794. #39030 (Dmitry Novik).
  • إصلاح خطأ في filesystem cache كان يمكن أن يحدث في بعض الحالات النادرة عند وصول سعة ذاكرة التخزين المؤقت إلى الحد الأقصى. يغلق #39066. #39070 (Kseniia Sumarokova).
  • إصلاح بعض الحالات النادرة في تفسير الوسيطات الخاصة بتعبيرات window. ويصلح هذا #38538، كما يسمح باستخدام الدوال عالية الرتبة في تعبيرات window. #39112 (Dmitry Novik).
  • الإبقاء على النوع LowCardinality في الدالة tuple. سابقًا، كان النوع LowCardinality يُزال، وكانت عناصر tuple المُنشأ تأخذ النوع الأساسي لـ LowCardinality. #39113 (Anton Popov).
  • إصلاح الخطأ Block structure mismatch الذي كان يمكن أن يحدث عند تنفيذ INSERT في table تحتوي على MATERIALIZED VIEW مرفقة وكان الإعداد extremes = 1 ممكّنًا. يغلق #29759 و#38729. #39125 (Nikolai Kochetov).
  • إصلاح نتيجة query غير متوقعة عندما يكون كل من optimize_trivial_count_query و empty_result_for_aggregation_by_empty_set مضبوطًا على true. ويصلح هذا #39140. #39155 (Amos Bird).
  • إصلاح الخطأ Not found column Type in block في عمليات SELECT التي تستخدم PREWHERE وتحسينات القراءة بالترتيب. #39157 (Yakov Olkhovskiy).
  • إصلاح race condition نادرة للغاية أثناء إنشاء hardlinks في remote filesystem. والطريقة الوحيدة لإعادة إنتاجها هي التشغيل المتزامن لعمليات النسخ الاحتياطي. #39190 (alesapin).
  • (zero-copy replication ميزة تجريبية ويجب عدم استخدامها في بيئة production) إصلاح fetch لجزء موجود في الذاكرة مع allow_remote_fs_zero_copy_replication. #39214 (Azat Khuzhin).
  • (MaterializedPostgreSQL - ميزة تجريبية). إصلاح خطأ segmentation fault في database engine ‏MaterializedPostgreSQL، والذي كان يمكن أن يحدث عند وقوع استثناء أثناء تهيئة replication. يغلق #36939. #39272 (Kseniia Sumarokova).
  • إصلاح fetch غير الصحيح للبيانات الوصفية للجدول من database engine ‏PostgreSQL. يغلق #33502. #39283 (Kseniia Sumarokova).
  • إصلاح استثناء projection عندما تكون مفاتيح aggregation مغلّفة داخل دوال أخرى. ويصلح هذا #37151. #37155 (Amos Bird).
  • إصلاح logical error محتمل ... with argument with type Nothing and default implementation for Nothing is expected to return result with type Nothing, got ... في بعض الدوال. يغلق: #37610 يغلق: #37741. #37759 (Kruglov Pavel).
  • إصلاح الترتيب غير الصحيح للأعمدة في الاستعلامات الفرعية ضمن UNION (إذ قد تؤدي الأعمدة المكررة في الاستعلامات الفرعية إلى نتائج غير صحيحة). #37887 (Azat Khuzhin).
  • إصلاح السلوك غير الصحيح لأمر MODIFY ALTER Column مع أسماء الأعمدة التي تحتوي على نقاط. يغلق #37907. #37971 (Kruglov Pavel).
  • إصلاح قراءة الأعمدة sparse من جداول MergeTree التي تخزّن بياناتها في S3. #37978 (Anton Popov).
  • إصلاح احتمال حدوث crash في async insert لمحرك Distributed عند إزالة replica من config. #38029 (Nikolai Kochetov).
  • إصلاح خطأ “Missing columns” في GLOBAL JOIN مع CTE من دون alias. #38056 (Azat Khuzhin).
  • إعادة كتابة دوال tuple كقيم حرفية في وضع التوافق مع الإصدارات السابقة. #38096 (Anton Kozlov).
  • إصلاح الحجز الزائد للذاكرة لكتلة الإخراج أثناء ORDER BY. #38127 (iyupeng).
  • إصلاح احتمال حدوث logical error Bad cast from type DB::IColumn* to DB::ColumnNullable* في الدوال المطبَّقة على Array. يغلق #38006. #38132 (Kruglov Pavel).
  • إصلاح تعارض مؤقت في الأسماء في partial merge join، يغلق #37928. #38135 (Vladimir C).
  • إصلاح مشكلة بسيطة في استعلامات مثل CREATE TABLE nested_name_tuples (a Tuple(x String, y Tuple(i Int32, j String))) ENGINE = Memory; #38136 (lgbo).
  • إصلاح خطأ في دوال الاختصار الشرطي المتداخلة كان يؤدي إلى تنفيذ الوسائط حتى عندما يكون الشرط false. يغلق #38040. #38173 (Kruglov Pavel).
  • (Window View ميزة تجريبية) إصلاح LOGICAL_ERROR في WINDOW VIEW عند وجود structure غير صحيحة. #38205 (Azat Khuzhin).
  • تحديث librdkafka submodule لإصلاح crash عند تعيين callback لتحديث OAUTHBEARER. #38225 (Rafael Acevedo).
  • إصلاح تعليق INSERT إلى Distributed بسبب ProfileEvents. #38307 (Azat Khuzhin).
  • إصلاح retries في engine الخاص بـ PostgreSQL. #38310 (Kseniia Sumarokova).
  • إصلاح التحسين في PartialSortingTransform (SIGSEGV واحتمال ظهور نتائج غير صحيحة). #38324 (Azat Khuzhin).
  • إصلاح مشكلة في RabbitMQ مع التنسيقات المعتمدة على PeekableReadBuffer. يُغلق #38061. #38356 (Kseniia Sumarokova).
  • MaterializedPostgreSQL - ميزة تجريبية. إصلاح احتمال ظهور الخطأ Invalid number of rows in Chunk في MaterializedPostgreSQL. يُغلق #37323. #38360 (Kseniia Sumarokova).
  • إصلاح إعداد RabbitMQ عند استخدام إعداد سلسلة الاتصال. يُغلق #36531. #38365 (Kseniia Sumarokova).
  • إصلاح محرك PostgreSQL الذي لا يستخدم مخطط PostgreSQL عند استرجاع حجم بُعد المصفوفة. يُغلق #36755. يُغلق #36772. #38366 (Kseniia Sumarokova).
  • إصلاح احتمال ظهور نتائج غير صحيحة في الاستعلامات الموزعة مع DISTINCT و LIMIT. يُصلح #38282. #38371 (Anton Popov).
  • إصلاح النتائج الخاطئة للدالتين countSubstrings() و position() في الأنماط التي تحتوي على بايتات صفرية. #38589 (Robert Schulze).
  • أصبح من الممكن الآن تشغيل clickhouse-server وإرفاق/فصل الجداول حتى للجداول التي تحتوي على قيم غير صحيحة لتمثيل IPv4/IPv6. إصلاح مناسب للمشكلة #35156. #38590 (alesapin).
  • ستعمل الدالة rankCorr بشكل صحيح إذا كانت بعض الوسيطات NaN. هذا يُغلق #38396. #38722 (Alexey Milovidov).
  • إصلاح parallel_view_processing=1 مع optimize_trivial_insert_select=1. إصلاح max_insert_threads أثناء الدفع إلى طرق العرض. #38731 (Azat Khuzhin).
  • إصلاح مشكلة use-after-free في الدوال التجميعية مع المُركِّب Map، والتي تؤدي إلى نتائج غير صحيحة. #38748 (Azat Khuzhin).

إصدار ClickHouse 22.6، 2022-06-16. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • إزالة دعم صيغ الأعداد الثمانية في SQL. في الإصدارات السابقة، كان يجري تحليلها على أنها Float64. #37765 (Yakov Olkhovskiy).
  • تغيّرت طريقة تحليل الإعدادات التي تستخدم seconds كنوع، وذلك لدعم القيم ذات الفاصلة العائمة (على سبيل المثال: max_execution_time=0.5). وستؤدي قيم Infinity أو NaN إلى طرح استثناء. #37187 (Raúl Marín).
  • تم تغيير تنسيق التسلسل الثنائي لأعمدة النوع التجريبي Object. وأصبح التنسيق الجديد أسهل في التنفيذ من قِبل clients من جهات خارجية. #37482 (Anton Popov).
  • تم تفعيل الإعداد output_format_json_named_tuples_as_objects افتراضيًا. ويتيح ذلك إجراء serialize لـ named tuples على هيئة JSON objects ضمن JSON formats. #37756 (Anton Popov).
  • لم يعد مسموحًا الآن باستخدام patterns الخاصة بـ LIKE التي تنتهي برمز escape (’\’)، وذلك وفقًا لما يفرضه معيار SQL. #37764 (Robert Schulze).
  • إذا كنت تشغّل إصدارات مختلفة من ClickHouse على cluster بمعالج AArch64 CPU، أو تمزج بين AArch64 و amd64 داخل cluster، وتستخدم distributed queries مع GROUP BY على عدة مفاتيح من نوع ثابت الحجم يتسع ضمن 256 bit ولكنه لا يتسع ضمن 64 bit، وكان حجم النتيجة ضخمًا، فلن تُجمَّع البيانات بالكامل في نتيجة هذه queries أثناء الترقية. الحل البديل: نفّذ الترقية مع downtime بدلًا من rolling upgrade.

ميزة جديدة

  • إضافة الدالة GROUPING. تتيح هذه الدالة إزالة الالتباس عن السجلات في الاستعلامات التي تستخدم ROLLUP أو CUBE أو GROUPING SETS. يُغلق #19426. #37163 (Dmitry Novik).
  • إضافة خوارزمية codec جديدة FPC لضغط البيانات ذات الفاصلة العائمة. #37553 (Mikhail Guzov).
  • إضافة تنسيقات JSON عمودية جديدة: JSONColumns وJSONCompactColumns وJSONColumnsWithMetadata. يُغلق #36338 يُغلق #34509. #36975 (Kruglov Pavel).
  • أُضيفت أداة لتصوّر traces في OpenTelemetry بالاعتماد على d3js. #37810 (Sergei Trifonov).
  • دعم عمليات INSERT إلى table ‏system.zookeeper. يُغلق #22130. #37596 (Han Fei).
  • دعم argument ‏pattern غير الثابتة للدوال LIKE وILIKE وmatch. #37251 (Robert Schulze).
  • أصبحت Executable User Defined Functions تدعم الآن parameters. مثال: SELECT test_function(parameters)(arguments). يُغلق #37578. #37720 (Maksim Kita).
  • إضافة column ‏merge_reason إلى table ‏system.part&#95;log. #36912 (Sema Checherinda).
  • إضافة دعم maps وrecords في تنسيق Avro. وإضافة setting جديدة input_format_avro_null_as_default تتيح إدراج null كقيمة default في تنسيق Avro. يُغلق #18925 يُغلق #37378 يُغلق #32899. #37525 (Kruglov Pavel).
  • إضافة أداة clickhouse-disks لفحص أنظمة الملفات الافتراضية المهيأة لـ ClickHouse وإجراء العمليات عليها. #36060 (Artyom Yurkov).
  • إضافة دوال H3 للحواف أحادية الاتجاه. #36843 (Bharat Nallan).
  • إضافة دعم لحساب hashids من الأعداد الصحيحة غير الموقعة. #37013 (Michael Nutt).
  • يُسمح بتحديد SALT صراحةً مع CREATE USER <user> IDENTIFIED WITH sha256_hash. #37377 (Yakov Olkhovskiy).
  • إضافة settingين جديدتين input_format_csv_skip_first_lines/input_format_tsv_skip_first_lines للسماح بتخطي عدد محدد من الأسطر في بداية الملف في تنسيقات CSV/TSV. #37537 (Kruglov Pavel).
  • تعرض الدالة showCertificate شهادة SSL الحالية الخاصة بالخادم. #37540 (Yakov Olkhovskiy).
  • تمت إضافة دعم مصدر HTTP لـ Data Dictionaries ضمن المجموعات المسماة. #37581 (Yakov Olkhovskiy).
  • أُضيفت دالة نافذة جديدة nonNegativeDerivative(metric_column, timestamp_column[, INTERVAL x SECOND]). #37628 (Andrey Zvonov).
  • تم تنفيذ إمكانية تغيير التعليق لجداول ReplicatedMergeTree. #37416 (Vasily Nemkov).
  • أُضيف استعلام SYSTEM UNFREEZE الذي يحذف النسخة الاحتياطية بالكامل بغض النظر عمّا إذا كان الجدول المقابل محذوفًا أم لا. #36424 (Vadim Volodin).

ميزة تجريبية

  • يتيح استخدام POPULATE في WINDOW VIEW. #36945 (vxider).
  • دعم ALTER TABLE ... MODIFY QUERY في WINDOW VIEW. #37188 (vxider).
  • يغيّر طلب السحب هذا سلوك صياغة ENGINE في WINDOW VIEW ليصبح مماثلًا لما هو عليه في MATERIALIZED VIEW. #37214 (vxider).

تحسين الأداء

  • أُضيفت تحسينات عديدة لـ ARM NEON #38093(Daniel Kutenin), (Alexandra Pilipyuk) ملاحظة: إذا كنت تشغّل إصدارات مختلفة من ClickHouse على عنقود يحتوي على معالج ARM وتستخدم الاستعلامات الموزعة مع GROUP BY على عدة مفاتيح من نوع ثابت الحجم يتّسع لـ 256 بت لكنه لا يتّسع لـ 64 بت، فستكون نتيجة استعلام التجميع غير صحيحة أثناء الترقية. الحل البديل: أجرِ الترقية مع فترة توقّف بدلًا من الترقية المتدرجة.
  • تحسين الأداء واستهلاك الذاكرة عند اختيار مجموعة فرعية من الأعمدة من التنسيقات Native وProtobuf وCapnProto وJSONEachRow وTSKV، وجميع التنسيقات ذات اللواحق WithNames/WithNamesAndTypes. سابقًا، عند اختيار مجموعة فرعية فقط من الأعمدة من الملفات بهذه التنسيقات، كانت جميع الأعمدة تُقرأ وتُخزَّن في الذاكرة. الآن لا تُقرأ إلا الأعمدة المطلوبة. يفعّل هذا الـ PR الإعداد input_format_skip_unknown_fields افتراضيًا، لأنه بخلاف ذلك سيُطرَح استثناء عند اختيار مجموعة فرعية من الأعمدة. #37192 (Kruglov Pavel).
  • أصبح الآن بالإمكان دفع المزيد من عوامل التصفية إلى مستوى أدنى في join. #37472 (Amos Bird).
  • تحميل العلامات للأعمدة الضرورية فقط عند قراءة الأجزاء العريضة. #36879 (Anton Kozlov).
  • تحسين أداء التجميع عندما تُستخدَم الأعمدة المتفرقة (يمكن تفعيلها عبر الإعداد التجريبي ratio_of_defaults_for_sparse_serialization في جداول MergeTree) كوسيطات في الدوال التجميعية. #37617 (Anton Popov).
  • تحسين الدالة COALESCE عند استخدام وسيطتين. #37666 (Anton Popov).
  • استبدال multiIf بـ if عندما تحتوي multiIf على شرط واحد فقط، لأن الدالة if أعلى أداءً. #37695 (Anton Popov).
  • تحسين أداء الدالتين dictGetDescendants وdictGetChildren عبر إنشاء فهرس هرمي مؤقت من الأصل إلى الأبناء لكل استعلام بدلًا من إنشائه عند كل استدعاء للدالة أثناء الاستعلام. كما أصبح بالإمكان تحديد BIDIRECTIONAL لسمات HIERARHICAL، وعندها سيحتفظ القاموس بفهرس من الأصل إلى الأبناء في الذاكرة، وبذلك لن تُنشئ الدالتان dictGetDescendants وdictGetChildren فهرسًا مؤقتًا لكل استعلام. يغلق #32481. #37148 (Maksim Kita).
  • قد يُحال الآن التخلص من حالات التجميع إلى مجمّع مؤشرات ترابط. وبالنسبة إلى الاستعلامات التي تحتوي على LIMIT وحالة كبيرة، يوفّر ذلك تسريعًا ملحوظًا؛ فعلى سبيل المثال، أصبح select uniq(number) from numbers_mt(1e7) group by number limit 100 أسرع بنحو 2.5 مرة. #37855 (Nikita Taranov).
  • تحسين أداء الفرز حسب عمود واحد. #37195 (Maksim Kita).
  • تحسين أداء فرز عمود واحد باستخدام تخصيصات طابور الفرز. #37990 (Maksim Kita).
  • تحسين أداء دوال معيار Array ودوال المسافة بمقدار يتراوح بين 2x و4x. #37394 (Alexander Gololobov).
  • تحسين أداء دوال مقارنة الأرقام باستخدام الإرسال الديناميكي. #37399 (Maksim Kita).
  • تحسين أداء ORDER BY مع LIMIT. #37481 (Maksim Kita).
  • تحسين أداء الدالة hasAll باستخدام البنية التحتية للتوزيع الديناميكي. #37484 (Maksim Kita).
  • تحسين أداء الدوال greatCircleAngle وgreatCircleDistance وgeoDistance. #37524 (Maksim Kita).
  • تحسين أداء الإدراج في MergeTree عند وجود أعمدة متعددة في ORDER BY. #35762 (Maksim Kita).
  • إصلاح الاستهلاك المفرط لـ CPU في الخلفية عند وجود عدد كبير من الجداول. #38028 (Maksim Kita).
  • تحسين أداء الدالة not باستخدام التوزيع الديناميكي. #38058 (Maksim Kita).
  • تحسين التخزين المؤقت الداخلي لأنماط re2 التي تظهر مثلًا في الدالتين LIKE وMATCH. #37544 (Robert Schulze).
  • تحسين دالة مولّد قناع البتات للمرشّح بالكامل باستخدام تعليمات AVX-512. #37588 (yaqi-zhao).
  • تطبيق أسلوب القراءة threadpool على محرك التكامل Hive. سيؤدي ذلك إلى تسريع القراءة بشكل ملحوظ. #36328 (李扬).
  • عندما تكون جميع الأعمدة المطلوب قراءتها هي مفاتيح partition، تُنشأ الأعمدة استنادًا إلى رقم الصف في الملف من دون قراءة ملف Hive فعليًا. #37103 (lgbo).
  • دعم استخدام عدة أقراص للتخزين المؤقت لملفات Hive. #37279 (lgbo).
  • يمكن أن يمنع تقييد الحد الأقصى لاستخدام cache لكل query تلوّث مجموعة cache بفعالية. المشكلات ذات الصلة. #37859 (Han Shukai).
  • يقوم ClickHouse حاليًا بتنزيل جميع الملفات البعيدة مباشرةً إلى cache المحلي (حتى إن لم تُقرأ سوى مرة واحدة)، ما يتسبب كثيرًا في عمليات IO على القرص المحلي. وفي بعض السيناريوهات، قد لا تكون عمليات IO هذه ضرورية، وقد تؤدي بسهولة إلى تراجع الأداء بدلًا من تحسينه. كما هو موضح في الشكل أدناه، عند تشغيل SSB Q1-Q4، تسبّب أداء cache في تراجع الأداء. #37516 (Han Shukai).
  • السماح بتقليص قائمة الملفات عبر الأعمدة الافتراضية مثل _file و_path عند القراءة من S3. وهذا مرتبط بـ #37174 , #23494. #37356 (Amos Bird).
  • في الدالة: CompressedWriteBuffer::nextImpl()، توجد خطوة نسخ عند الكتابة غير ضرورية تحدث كثيرًا أثناء إدراج البيانات. يوضّح ما يلي الفرق مع هذا التصحيح: - قبل: 1. ضغط “working_buffer” إلى “compressed_buffer” 2. نسخ الناتج إلى “out” عند الكتابة - بعد: ضغط “working_buffer” مباشرةً إلى “out”. #37242 (jasperzhu).

تحسين

  • دعم الأنواع ذات القيم الافتراضية غير القياسية في ROLLUP وCUBE وGROUPING SETS. يُغلق #37360. #37667 (Dmitry Novik).
  • إصلاح جمع stack traces على ARM. يُغلق #37044. يُغلق #15638. #37797 (Maksim Kita).
  • سيحاول Client كل عنوان IP تُرجعه DNS resolution حتى ينجح الاتصال. #37273 (Yakov Olkhovskiy).
  • السماح باستخدام النوع String بدلًا من Binary في formats Arrow/Parquet/ORC. يضيف طلب السحب هذا 3 settings جديدة لهذا الغرض: output_format_arrow_string_as_string وoutput_format_parquet_string_as_string وoutput_format_orc_string_as_string. default value لجميع settings هي false. #37327 (Kruglov Pavel).
  • تطبيق الإعداد input_format_max_rows_to_read_for_schema_inference على إجمالي الصفوف المقروءة من جميع الملفات في globs. في السابق، كان الإعداد input_format_max_rows_to_read_for_schema_inference يُطبَّق على كل ملف في glob على حدة، وفي حال وجود عدد كبير جدًا من nulls، كان يمكن قراءة أول input_format_max_rows_to_read_for_schema_inference صفًا من كل ملف من دون الوصول إلى أي نتيجة. كما زِيدت default value لهذا الإعداد إلى 25000. #37332 (Kruglov Pavel).
  • إضافة grant منفصل لـ CLUSTER (إلى جانب توجيه configuration باسم access_control_improvements.on_cluster_queries_require_cluster_grant للحفاظ على backward compatibility، وتكون قيمته الافتراضية false). #35767 (Azat Khuzhin).
  • إضافة دعم schema inference لـ hdfsCluster. #35812 (Nikita Mikhaylov).
  • تنفيذ خوارزمية load balancing ‏least_used للأقراص داخل volume (disk configuration متعدد الأقراص). #36686 (Azat Khuzhin).
  • تعديل HTTP Endpoint بحيث يعيد الإحصاءات الكاملة ضمن header ‏X-ClickHouse-Summary عندما تكون send_progress_in_http_headers=0 (إذ كان يعيد سابقًا أصفارًا فقط). - تعديل HTTP Endpoint بحيث يعيد header ‏X-ClickHouse-Exception-Code عندما يكون Progress قد أُرسل مسبقًا (send_progress_in_http_headers=1) - تعديل HTTP Endpoint بحيث يعيد HTTP_REQUEST_TIMEOUT (408) بدلًا من HTTP_INTERNAL_SERVER_ERROR (500) عند أخطاء TIMEOUT_EXCEEDED. #36884 (Raúl Marín).
  • السماح للمستخدم بمعاينة grants الخاصة بـ granted roles. #36941 (nvartolomei).
  • عدم حساب التكامل عدديًا، واستخدام دوال CDF بدلًا من ذلك. يسرّع هذا التنفيذ ويزيد precision. يُصلح هذا #36714. #36953 (Nikita Mikhaylov).
  • أُضيف تنفيذ افتراضي للنوع Nothing في الدوال. الآن ستُرجِع معظم الدوال عمودًا من النوع Nothing إذا كانت إحدى وسيطاتها من النوع Nothing. ويحلّ هذا أيضًا مشكلة الدوال مثل arrayMap/arrayFilter وما شابهها عندما تكون إحدى الوسيطات مصفوفة فارغة. سابقًا كانت الاستعلامات مثل select arrayMap(x -> 2 * x, []); تفشل لأن الدالة داخل lambda لا يمكنها العمل مع النوع Nothing، أما الآن فتعيد هذه الاستعلامات مصفوفة فارغة من النوع Array(Nothing). كما أُضيف دعم لمصفوفات الأنواع Nullable في دوال مثل arrayFilter/arrayFill. سابقًا كانت الاستعلامات مثل select arrayFilter(x -> x % 2, [1, NULL]) تفشل، أما الآن فهي تعمل (إذا كانت نتيجة lambda هي NULL، فلن تُضمَّن هذه القيمة في النتيجة). يُغلق #37000. #37048 (Kruglov Pavel).
  • الآن، إذا كان لدى shard نسخة متماثلة محلية، فإننا ننشئ خطة محلية وخطة للقراءة من جميع النسخ المتماثلة البعيدة. ولهما initiator مشترك ينسّق عملية القراءة. #37204 (Nikita Mikhaylov).
  • لم نعد نوقف بدء تشغيل الخادم إذا لم يُضبط خيار الإعداد “mark_cache_size” صراحةً. #37326 (Robert Schulze).
  • يتيح تحديد NULL/NOT NULL مباشرةً بعد النوع في تعريف العمود. #37337 (Igor Nikonov).
  • تحسين read buffer لمقطع الملف PARTIALLY_DOWNLOADED. #37338 (xiedeyantu).
  • محاولة تحسين معالجة الدوال ذات short circuit لإصلاح المشكلات في اختبارات stress. #37384 (Kruglov Pavel).
  • يُغلق #37395. #37415 (Memo).
  • إصلاح حالة توقف متبادل نادرة جدًا أثناء fetch لـ part في zero-copy replication. إصلاح #37423. #37424 (metahys).
  • عدم السماح بإنشاء storage بتنسيق data غير معروف. #37450 (Kruglov Pavel).
  • تعيين القيمة الافتراضية للإعداد global_memory_usage_overcommit_max_wait_microseconds إلى 5 ثوانٍ. وإضافة معلومات عن OvercommitTracker إلى رسالة استثناء OOM. وإضافة حدث profile باسم MemoryOvercommitWaitTimeMicroseconds. #37460 (Dmitry Novik).
  • عدم عرض -0.0 كزمن CPU في clickhouse-client. قد يظهر ذلك بسبب أخطاء التقريب. هذا يُغلق #38003. وهذا يُغلق #38038. #38064 (Alexey Milovidov).
  • واجهة Play: الإبقاء على عناصر التحكم في مكانها عند تمرير الصفحة أفقيًا. وهذا يجعل التعديلات مريحة حتى إذا كان الجدول عريضًا وتم تمريره كثيرًا إلى اليمين. وقد اقترح هذه الميزة Maksym Tereshchenko من CaspianDB. #37470 (Alexey Milovidov).
  • تعديل query div في play.html بحيث يمكن توسيعه إلى أكثر من 20% من الارتفاع. عند وجود استعلامات طويلة جدًا، يكون من المفيد توسيع عنصر textarea، لكن حاليًا، وبسبب الارتفاع الثابت لـ div، فإن textarea الموسّع يحجب data div الموجود أسفله. مع هذا الإصلاح، سيؤدي توسيع عنصر textarea إلى دفع data div إلى الأسفل/الأعلى بحيث لا يعود textarea الموسّع يحجبه. كما يحافظ أيضًا على عرض مربع الاستعلام بنسبة 100% حتى عندما يعدّل المستخدم حجم query textarea. #37488 (guyco87).
  • تمت إضافة ProfileEvents لفحص نوع الأجزاء المكتوبة (inserted أو merged) (Inserted{Wide/Compact/InMemory}Parts, MergedInto{Wide/Compact/InMemory}Parts). وأُضيف العمود part_type إلى system.part_log. يحل #37495. #37536 (Anton Popov).
  • تحسين في clickhouse-keeper: نقل السجلات التالفة إلى مجلد يحمل طابعًا زمنيًا. #37565 (Antonio Andelic).
  • عدم كتابة الأعمدة المنتهية الصلاحية بواسطة TTL بعد عمليات الدمج اللاحقة (في السابق، كان الدمج/التحسين الأول فقط للجزء لا يكتب الأعمدة المنتهية الصلاحية بواسطة TTL، بينما كانت جميع العمليات الأخرى تكتبها). #37570 (Azat Khuzhin).
  • نتيجة أكثر دقة للدالة المتنوعة dumpColumnStructure عند وجود أعمدة LowCardinality أو Sparse. في الإصدارات السابقة، كانت هذه الدوال تحوّل الوسيطة إلى full column قبل إعادة النتيجة. هذا مطلوب لتقديم إجابة في #6935. #37633 (Alexey Milovidov).
  • clickhouse-keeper: تخزين معرّفات الجلسات الفريدة فقط من أجل watches. #37641 (Azat Khuzhin).
  • إصلاح الخطأ المحتمل “Cannot write to finalized buffer”. #37645 (Azat Khuzhin).
  • إضافة الإعداد support_batch_delete لـ DiskS3 لتعطيل استدعاءات حذف كائنات متعددة، وهي غير مدعومة في Google Cloud Storage. #37659 (Fred Wulff).
  • إضافة خيار لتعطيل connection pooling في ODBC bridge. #37705 (Anton Kozlov).
  • أضيف دعم الخاصية HIERARCHICAL القابلة لأن تكون nullable في Dictionaries إلى الدوال dictGetHierarchy, dictIsIn, dictGetChildren, dictGetDescendants. يغلق #35521. #37805 (Maksim Kita).
  • إظهار معلومات مرتبطة بإصدار BoringSSL في الجدول system.build_options. #37850 (Bharat Nallan).
  • الآن يقوم clickhouse-server بإزالة أدلة delete_tmp عند بدء تشغيل الخادم. يصلح #26503. #37906 (alesapin).
  • تنظيف broken detached parts بعد انتهاء المهلة. يغلق #25195. #37975 (Kseniia Sumarokova).
  • الآن، في عائلة محركات الجداول MergeTree، ستُزال فورًا الأجزاء التي تعذّر نقلها. #37994 (alesapin).
  • الآن، إذا كان الإعداد always_fetch_merged_part مُمكّنًا، فستحاول عمليات الدمج في ReplicatedMergeTree العثور على الأجزاء على النسخ المتماثلة الأخرى بوتيرة أقل، مما يخفف الحمل على [Zoo]Keeper. #37995 (alesapin).
  • أُضيفت أيضًا امتيازات ضمنية مع خيار المنح. على سبيل المثال، يتيح GRANT CREATE TABLE ON test.* TO A WITH GRANT OPTION الآن للمستخدم A تنفيذ GRANT CREATE VIEW ON test.* TO B. #38017 (Vitaly Baranov).

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

  • استخدام clang-14 والإصدار 14 من بنية LLVM الأساسية في عمليات البناء. ويغلق هذا #34681. #34754 (Alexey Milovidov). ملاحظة: يحتوي clang-14 على خلل في ThreadSanitizer، مما يؤثر سلبًا في عمل CI لدينا.
  • السماح بالتخلي عن الامتيازات عند بدء التشغيل. يبسّط هذا صور Docker. يغلق #36293. #36341 (Alexey Milovidov).
  • إضافة التدقيق الإملائي للوثائق إلى CI. #37790 (Vladimir C).
  • إصلاح التجريد المفرط الذي أزال قيمة hash المضمّنة المطلوبة للتحقق من اتساق الملف التنفيذي. #37993 (Robert Schulze).

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

  • إصلاح عبارتي SELECT ... INTERSECT وEXCEPT SELECT مع أنواع السلاسل النصية الثابتة. #37738 (Antonio Andelic).
  • إصلاح GROUP BY مع AggregateFunction (أي عند استخدام GROUP BY على عمود من النوع AggregateFunction). #37093 (Azat Khuzhin).
  • (WINDOW VIEW تجريبية) إصلاح addDependency في WindowView. يمكن إعادة إنتاج هذا الخطأ كما في #37237. #37224 (vxider).
  • إصلاح عدم الاتساق في ميزة ORDER BY … WITH FILL. فقد يمكن للاستعلام الذي يحتوي على ORDER BY … WITH FILL أن يُنتج صفوفًا إضافية عند وجود عدة أعمدة WITH FILL. #38074 (Yakov Olkhovskiy).
  • ينقل طلب السحب هذا addDependency من المُنشئ إلى startup() لتجنّب إضافة تبعية إلى جدول محذوف، مع إصلاح #37237. #37243 (vxider).
  • إصلاح إدراج القيم الافتراضية للقيم المفقودة في التنسيقات العمودية. سابقًا، كانت الأعمدة المفقودة تُملأ بالقيم الافتراضية الخاصة بالأنواع لا بالأعمدة. #37253 (Kruglov Pavel).
  • (نوع Object تجريبي) إصلاح بعض حالات إدراج المصفوفات المتداخلة في أعمدة من النوع Object. #37305 (Anton Popov).
  • إصلاح أخطاء غير متوقعة ناتجة عن تعارض السلاسل النصية الثابتة في aggregate function وprewhere وjoin. إغلاق #36891. #37336 (Vladimir C).
  • إصلاح projections مع GROUP/ORDER BY في query وoptimize_aggregation_in_order (إذ كانت النتيجة سابقًا غير صحيحة لأنه لم يكن يُنفَّذ سوى الفرز النهائي). #37342 (Azat Khuzhin).
  • إصلاح الخطأ المتعلق بالرموز في اسم المفتاح في S3. إصلاح #33009. #37344 (Vladimir Chebotarev).
  • إطلاق استثناء عند استخدام GROUPING SETS مع ROLLUP أو CUBE. #37367 (Dmitry Novik).
  • إصلاح LOGICAL_ERROR في getMaxSourcePartsSizeForMerge أثناء merges (في حال تم تحديد قيم غير قياسية وأكبر لكل من background_pool_size/background_merges_mutations_concurrency_ratio في config.xml (الطريقة الجديدة) وليس في users.xml (الطريقة المهجورة)). #37413 (Azat Khuzhin).
  • التوقف عن إزالة UTF-8 BOM في RowBinary format. #37428 (Paul Loyd). #37428 (Paul Loyd).
  • إصلاح خطأ في clickhouse-keeper: إصلاح الاسترداد القسري لعنقود أحادي العقدة. #37440 (Antonio Andelic).
  • إصلاح خطأ منطقي في دوال normalizeUTF8. يُغلق #37298. #37443 (Maksim Kita).
  • إصلاح تحويل cast لـ lowcard الخاص بـ Nullable في JoinSwitcher، وإغلاق #37385. #37453 (Vladimir C).
  • إصلاح إخراج Tuples المسمّاة في تنسيقات ORC/Arrow/Parquet. #37458 (Kruglov Pavel).
  • إصلاح تحسين الدوال الأحادية في عبارة ORDER BY عند وجود GROUPING SETS. يُصلح #37401. #37493 (Dmitry Novik).
  • إصلاح خطأ عند تنفيذ join مع Dictionary في بعض الحالات. إغلاق #37386. #37530 (Vladimir C).
  • حظر optimize_aggregation_in_order مع GROUPING SETS (يصلح LOGICAL_ERROR). #37542 (Azat Khuzhin).
  • إصلاح معلومات dump غير الصحيحة لـ ActionsDAG. #37587 (zhanglistar).
  • إصلاح تحويل الأنواع في استعلامات UNION (قد يؤدي إلى LOGICAL_ERROR). #37593 (Azat Khuzhin).
  • إصلاح المُعدِّل WITH FILL مع intervals سالبة في عبارة STEP. يُصلح #37514. #37600 (Anton Popov).
  • إصلاح الاستخدام غير الصحيح لـ Array في joinGet عندما تكون join_use_nulls = 1. يُصلح هذا #37562. #37650 (Amos Bird).
  • إصلاح عدم تطابق عدد columns في CROSS JOIN، وإغلاق #37561. #37653 (Vladimir C).
  • إصلاح خطأ تجزئة في show create table من MySQL database عند تهيئته باستخدام named collections. يُغلق #37683. #37690 (Kseniia Sumarokova).
  • إصلاح تعذّر بدء RabbitMQ Storage عند إعادة تشغيل server إذا كان التخزين قد أُنشئ بدون SETTINGS clause. يُغلق #37463. #37691 (Kseniia Sumarokova).
  • دوال SQL user defined functions تعطل أوامر CREATE/DROP في وضع readonly. يُغلق #37280. #37699 (Maksim Kita).
  • إصلاح formatting لـ arguments من نوع Nullable في executable user defined functions. يُغلق #35897. #37711 (Maksim Kita).
  • إصلاح التحسين المفعّل عبر الإعداد optimize_monotonous_functions_in_order_by في الاستعلامات الموزعة. يُصلح #36037. #37724 (Anton Popov).
  • إصلاح احتمال حدوث logical error: Invalid Field get from type UInt64 to type Float64 في table function ‏values. يُغلق #37602. #37754 (Kruglov Pavel).
  • إصلاح احتمال حدوث segfault أثناء schema inference في حال وقوع استثناء في باني SchemaReader. يُغلق #37680. #37760 (Kruglov Pavel).
  • إصلاح الإعداد cast&#95;ipv4&#95;ipv6&#95;default&#95;on&#95;conversion&#95;error لدالة cast الداخلية. يُغلق #35156. #37761 (Maksim Kita).
  • إصلاح خطأ toString في DatatypeDate32. #37775 (LiuNeng).
  • جرى تحويل إعداد clickhouse-keeperdead_session_check_period_ms إلى ميكروثانية (بضربه في 1000)، ما أدى إلى تنظيف sessions الميتة بعد عدة دقائق فقط (بدلاً من 500 مللي ثانية). #37824 (Michael Lex).
  • إصلاح احتمال ظهور “No more packets are available” في الاستعلامات الموزعة (عندما يكون async_socket_for_remote/use_hedged_requests معطّلاً). #37826 (Azat Khuzhin).
  • (WINDOW VIEW تجريبية) عدم تنفيذ drop للـ target table الداخلي عند تنفيذ ALTER TABLE ... MODIFY QUERY في WindowView. #37879 (vxider).
  • إصلاح ملكية directory لدليل coordination في Docker image الخاص بـ clickhouse-keeper. يُصلح #37914. #37915 (James Maidment).
  • إصلاح في Dictionaries للاستعلام المخصّص مع حقل التحديث و {condition}. يُغلق #33746. #37947 (Maksim Kita).
  • إصلاح احتمال ظهور نتيجة غير صحيحة لـ SELECT ... WITH FILL عندما يجب تطبيق ORDER BY بعد ناتج WITH FILL (على سبيل المثال، في الاستعلام الخارجي). كانت النتيجة غير الصحيحة ناتجة عن تحسين لتعبيرات ORDER BY (#35623). يُغلق #37904. #37959 (Yakov Olkhovskiy).
  • (WINDOW VIEW تجريبية) إضافة columns الافتراضية المفقودة عند الدفع إلى target table في WindowView، إصلاح #37815. #37965 (vxider).
  • إصلاح stack frame كبير جداً كان سيتسبب في فشل الترجمة البرمجية. #37996 (Han Shukai).
  • عند تفعيل enable_filesystem_query_cache_limit، يظهر الخطأ Reserved cache size exceeds the remaining cache size. #38004 (xiedeyantu).
  • إصلاح تحويل الأنواع في استعلامات UNION (قد يؤدي إلى LOGICAL_ERROR). #34775 (Azat Khuzhin).
  • قد لا تتم إعادة جدولة merge الخاصة بـ TTL إذا كان BackgroundExecutor مشغولًا. تتم زيادة —merges_with_ttl_counter في selectPartsToMerge() —سيتم تجاهل مهمة —merge إذا كان BackgroundExecutor مشغولًا —ولن يتم تقليل —merges_with_ttl_counter. #36387 (lthaooo).
  • إصلاح قيمة Settings المتجاوزة لـ normalize_function_names. #36937 (李扬).
  • إصلاح window functions ذات التناقص الأُسّي مع الزمن. وأصبحت الآن تراعي حدود window. #36944 (Vladimir Chebotarev).
  • إصلاح خطأ محتمل من نوع heap-use-after-free عند قراءة system.projection_parts و system.projection_parts_columns. يُصلح هذا #37184. #37185 (Amos Bird).
  • تم إصلاح سلوك الثواني الكسرية في DateTime64 قبل Unix epoch. #37697 (Andrey Zvonov). #37039 (李扬).

إصدار ClickHouse 22.5، 2022-05-19. العرض التقديمي، الفيديو

ملاحظات الترقية

  • الآن، لن تؤدي عمليات الدمج في الخلفية وعمليات التعديل وOPTIMIZE إلى زيادة مقاييس SelectedRows وSelectedBytes. لكنها (ما تزال) ستزيد MergedRows وMergedUncompressedBytes كما كان الحال سابقًا. يؤثر هذا التغيير في قيم المقاييس فقط، ويجعلها أدق. ولا يسبب أي عدم توافق، لكن قد تلاحظ تغيّرًا في المقاييس، لذا أدرجناه ضمن هذه الفئة. #37040 (Nikolai Kochetov).
  • جرى تحديث وحدة BoringSSL إلى الإصدار الرسمي المتوافق مع FIPS، ما يجعل ClickHouse متوافقًا مع FIPS. #35914 (Meena-Renganathan). وقد أُزيلت الشيفرتان aes-192-cfb128 وaes-256-cfb128 لأنهما غير مضمنتين في إصدار BoringSSL المعتمد من FIPS.
  • أُزيل الإعداد max_memory_usage من ملف تعريف المستخدم default في users.xml. ويتيح ذلك حدود ذاكرة مرنة للاستعلامات بدلًا من الحد القديم الصارم البالغ 10 جيجابايت.
  • عُطِّل الإعداد log_query_threads افتراضيًا. وهو يتحكم في تسجيل الإحصاءات الخاصة بكل خيط تنفيذ يشارك في تنفيذ الاستعلام. وبعد دعم القراءات غير المتزامنة، أصبح العدد الإجمالي لمعرّفات خيوط التنفيذ المميزة كبيرًا جدًا، وأصبح التسجيل في query_thread_log مكلفًا جدًا. #37077 (Alexey Milovidov).
  • أُزيلت الدالة groupArraySorted لاحتوائها على خطأ. #36822 (Alexey Milovidov).

ميزة جديدة

  • تمكين التخصيص الزائد للذاكرة افتراضيًا. #35921 (Dmitry Novik).
  • إضافة دعم لـ GROUPING SETS في عبارة GROUP BY. ويدعم هذا التنفيذ معالجة مجموعات التجميع بالتوازي. #33631 (Dmitry Novik).
  • تمت إضافة الجدول system.certificates. #37142 (Yakov Olkhovskiy).
  • إضافة الدوال h3Line وh3Distance وh3HexRing. #37030 (Bharat Nallan).
  • أداة تشخيص جديدة تعتمد على ملف تنفيذي واحد (clickhouse-diagnostics). #36705 (Dale McDiarmid).
  • إضافة تنسيق الإخراج Prometheus #36051. #36206 (Vladimir C).
  • إضافة تنسيق الإدخال MySQLDump. يقرأ جميع البيانات من استعلامات INSERT الخاصة بجدول واحد في ملف dump. وإذا كان هناك أكثر من جدول، فسيقرأ البيانات من الجدول الأول افتراضيًا. #36667 (Kruglov Pavel).
  • عرض الحقلين total_rows وtotal_bytes في system.tables للجداول المؤقتة. #36401. #36439 (xiedeyantu).
  • السماح بتجاوز parts_to_delay_insert وparts_to_throw_insert باستخدام إعدادات على مستوى الاستعلام. وإذا كانت هذه الإعدادات معرّفة، فستتقدّم على إعدادات مستوى الجدول. #36371 (Memo).

ميزة تجريبية

  • تم تنفيذ دوال المسافة L1 وL2 وLinf وCosine للمصفوفات، ودوال المعيار L1 وL2 وLinf للمصفوفات. #37033 (qieqieplus). ملاحظة: ستُعاد تسمية هذه الدوال.
  • تحسين استعلام WATCH في WindowView: 1. تقليل زمن الوصول عند إتاحة نتائج الاستعلام عبر استدعاء الإشارة fire_condition. 2. تسريع عملية إلغاء الاستعلام (ctrl-c) عبر التحقق من isCancelled() بوتيرة أعلى. #37226 (vxider).
  • إضافة إمكانات introspection لإزالة filesystem cache. #36802 (Han Shukai).
  • أُضيفت دالة hash جديدة باسم wyHash64 في SQL. #36467 (olevino).
  • تحسين لقواعد بيانات Replicated: أُضيف استعلام SYSTEM SYNC DATABASE REPLICA الذي يتيح مزامنة البيانات الوصفية للجداول داخل قاعدة بيانات Replicated، لأن المزامنة حاليًا غير متزامنة. #35944 (Nikita Mikhaylov).
  • تحسين لـ remote filesystem cache: تحسين القراءة من cache. #37054 (Kseniia Sumarokova). تحسين استعلام SYSTEM DROP FILESYSTEM CACHE: الخيار <path> والخيار FORCE. #36639 (Kseniia Sumarokova).
  • تحسين للبيانات شبه المهيكلة: السماح بتحويل الأعمدة من النوع Object(...) إلى Object(Nullable(...)). #36564 (awakeljw).
  • تحسين للنسخ المتماثلة المتوازية: ننشئ مفسرًا محليًا إذا أردنا تنفيذ استعلام على replica ‏localhost. ولكن عند تنفيذ استعلام على عدة replicas، فإننا نعتمد على وجود connection حتى تتمكن replicas من التواصل مع coordinator. وقد تحسن هذا الآن، وأصبحت replica ‏localhost قادرة على التواصل مع coordinator مباشرةً ضمن العملية نفسها. #36281 (Nikita Mikhaylov).

تحسين الأداء

  • تحسين أداء الدالتين التجميعيتين avg وsum عند استخدامهما بدون تعبير GROUP BY. #37257 (Maksim Kita).
  • تحسين أداء الدوال الحسابية أحادية المعامل (bitCount, bitNot, abs, intExp2, intExp10, negate, roundAge, roundDuration, roundToExp2, sign) باستخدام الإرسال الديناميكي. #37289 (Maksim Kita).
  • تحسين أداء ORDER BY وMergeJoin وإدراج البيانات في MergeTree باستخدام ترجمة JIT لمقارن أعمدة الفرز. #34469 (Maksim Kita).
  • تغيير بنية system.asynchronous_metric_log. سيستهلك هذا مساحة أقل بحوالي 10 مرات. ويُغلق هذا #36357. أُزيل الحقل event_time_microseconds لأنه غير مفيد. #36360 (Alexey Milovidov).
  • تحميل العلامات للأعمدة المطلوبة فقط عند قراءة wide parts. #36879 (Anton Kozlov).
  • تحسين أداء ذاكرة التخزين المؤقت لأوصاف الملفات عبر تضييق نطاقات mutex. #36682 (Anton Kozlov).
  • تحسين أداء القراءة من التخزين File ومن table functions file عندما يحتوي المسار على globs ويحتوي الدليل المطابِق على عدد كبير من الملفات. #36647 (Anton Popov).
  • تطبيق parsing متوازي على input format HiveText، ما قد يسرّع parsing لـ HiveText بمقدار الضعف عند قراءة ملف محلي. #36650 (李扬).
  • إن HashJoin الافتراضي غير آمن على مستوى thread عند إدراج صفوف الجدول الأيمن، ولذلك يعمل في thread واحدة. وعندما يكون الجدول الأيمن كبيرًا، تصبح عملية join بطيئة جدًا مع انخفاض استخدام CPU. #36415 (lgbo).
  • السماح بإعادة كتابة select countDistinct(a) from t إلى select count(1) from (select a from t groupBy a). #35993 (zhanglistar).
  • تحويل سلسلة OR LIKE إلى multiMatchAny. وسيُفعَّل هذا عندما تتوفر ثقة أكبر في أنه يعمل كما ينبغي. #34932 (Daniel Kutenin).
  • تحسين أداء بعض الدوال باستخدام التضمين. #34544 (Daniel Kutenin).
  • إضافة تفرّع لتجنب memcpy غير الضروري في readBig. ويحسّن ذلك الأداء إلى حدّ ما. #36095 (jasperzhu).
  • تنفيذ مفتاح GROUP BY جزئي لأجل optimize_aggregation_in_order. #35111 (Azat Khuzhin).

تحسين

  • عرض أسماء الملفات المسببة للخطأ عند حدوث أخطاء في التحليل أثناء تنفيذ دوال الجداول file وs3 وurl. #36314 (Anton Popov).
  • أصبح من الممكن زيادة عدد الخيوط المستخدمة لتنفيذ العمليات الخلفية (عمليات الدمج، والـmutations، وعمليات النقل، وعمليات الجلب) في وقت التشغيل إذا كانت محددة في ملف config على المستوى الأعلى. #36425 (Nikita Mikhaylov).
  • ستُثبَّت الآن وظائف تحويل التاريخ والوقت التي تُنتج وقتًا يسبق 1970-01-01 00:00:00 مع مناطق زمنية ذات ساعات/دقائق جزئية عند الصفر بدلًا من تجاوز السعة. وهذا امتداد لـ https://github.com/ClickHouse/ClickHouse/pull/29953 الذي يعالج https://github.com/ClickHouse/ClickHouse/pull/29953#discussion&#95;r800550280 . وقد صُنِّف ذلك كتحسين لأنه سلوك تحدده آلية التنفيذ (وحالة نادرة جدًا)، ويُسمح لنا بتغييره على نحو غير متوافق. #36656 (Amos Bird).
  • إضافة تحذير إذا كان أحدهم يشغّل clickhouse-server بمستوى السجل “test”. أُضيف مستوى السجل “test” مؤخرًا، ولا يمكن استخدامه في بيئة الإنتاج بسبب التدهور الحتمي وغير القابل للتجنب والقاتل والمهدِّد للحياة في الأداء. #36824 (Alexey Milovidov).
  • تحليل قواعد الترتيب في CREATE TABLE، مع طرح استثناء أو تجاهلها. يغلق #35892. #36271 (yuuch).
  • يتيح الخيار compatibility_ignore_auto_increment_in_create_table تجاهل الكلمة المفتاحية AUTO_INCREMENT في تعريف عمود لتبسيط الترحيل من MySQL. #37178 (Igor Nikonov).
  • إضافة الأسماء المستعارة JSONLines وNDJSON لـ JSONEachRow. يغلق #36303. #36327 (flynn).
  • تقييد الحد الأقصى لعدد الأقسام التي يمكن الاستعلام عنها لكل جدول Hive، لتجنب الاستهلاك المفرط للموارد. #37281 (lgbo).
  • أُضيف تحويل نوع ضمني للوسيطة الثانية في الدالة h3kRing لتحسين سهولة الاستخدام. يغلق #35432. #37189 (Maksim Kita).
  • إصلاح مؤشر التقدم لـ INSERT SELECT في clickhouse-local لأي استعلام، وكذلك تقدم الملفات في العميل، ليصبح أكثر دقة. #37075 (Kseniia Sumarokova).
  • إصلاح خلل قد يؤدي إلى بقاء الأجزاء القديمة منسية في عائلة محركات الجداول MergeTree عند حدوث أعطال في filesystem أثناء إزالة الأجزاء. قبل هذا الإصلاح، لم تكن تُزال إلا بعد أول إعادة تشغيل للخادم. #37014 (alesapin).
  • تنفيذ وضع جديد للتعامل مع سياسات الصفوف يمكن تمكينه في ملف configuration الرئيسي، ويتيح للمستخدمين الذين ليست لديهم سياسات صفوف متساهلة قراءة الصفوف. #36997 (Vitaly Baranov).
  • واجهة Play: ستُحاذى الأرقام من النوع Nullable إلى اليمين في خلايا الجدول. هذا يغلق #36982. #36988 (Alexey Milovidov).
  • واجهة Play UI: إذا كانت هناك صف واحد في النتيجة وأكثر من بضعة أعمدة، فاعرض النتيجة عموديًا. استكمال لـ #36811. #36842 (Alexey Milovidov).
  • تنظيف CSS في Play UI. أصبحت البكسلات موزعة بشكل أكثر توازنًا. وتحسّنت سهولة الاستخدام للمحتوى الطويل في خلايا الجدول. #36569 (Alexey Milovidov).
  • إنهاء مخازن الكتابة المؤقتة في حال حدوث استثناء لتجنب تنفيذ ذلك داخل الـ destructors. نأمل أن يؤدي هذا إلى إصلاح: #36907. #36979 (Kruglov Pavel).
  • بعد #36425 أصبحت إعدادات مثل background_fetches_pool_size متقادمة ويمكن أن تظهر في config ذي المستوى الأعلى، لكن ClickHouse كان يطرح استثناءً مثل Error updating configuration from '/etc/clickhouse-server/config.xml' config.: Code: 137. DB::Exception: A setting 'background_fetches_pool_size' appeared at top level in config /etc/clickhouse-server/config.xml. تم إصلاح ذلك. #36917 (Nikita Mikhaylov).
  • إضافة معلومات تشخيصية إضافية (عند الاقتضاء) عند إرسال الاستثناء إلى خادم آخر. #36872 (tavplubix).
  • السماح بتنفيذ دوال hash باستخدام arguments من النوع Array(Tuple(..)). #36812 (Anton Popov).
  • تمت إضافة إعداد user_defined_path في config. #36753 (Maksim Kita).
  • السماح باستخدام macro الخاص بـ cluster في table function ‏s3Cluster. #36726 (Vadim Volodin).
  • إلغاء استعلامات INSERT بشكل صحيح في clickhouse-client/clickhouse-local. #36710 (Azat Khuzhin).
  • السماح بإلغاء استعلام مع الاحتفاظ في الوقت نفسه بـ Query id مناسب في MySQLHandler. #36699 (Amos Bird).
  • إضافة العمود is_all_data_sent إلى system.processes، وتحسين فحص التقوية في الاختبارات الداخلية بالاعتماد عليه. #36649 (Azat Khuzhin).
  • أصبحت المقاييس المتعلقة بالوقت المستغرَق في القراءة من S3 تُحتسب الآن بشكل صحيح. إغلاق #35483. #36572 (Alexey Milovidov).
  • السماح باستخدام file descriptors في table function ‏file إذا كان يعمل في clickhouse-local. #36562 (wuxiaobai24).
  • السماح بأسماء عناصر tuple التي تبدأ بأرقام. #36544 (Anton Popov).
  • يمكن الآن لـ clickhouse-benchmark قراءة معلومات authentication من متغيرات البيئة. #36497 (Anton Kozlov).
  • تحسين في clickhouse-keeper: إضافة دعم للاسترداد القسري، ما يتيح لك إعادة تهيئة cluster دون quorum. #36258 (Antonio Andelic).
  • تحسين استدلال المخطط لكائنات JSON. #36207 (Kruglov Pavel).
  • إعادة هيكلة الشيفرة المتعلقة باستدلال المخطط باستخدام globs. لا يُجرَّب الملف التالي من glob إلا إذا كان ذلك منطقيًا (في السابق، كنا نجرّب الملف التالي عند حدوث أي error). كما يُصلح ذلك أيضًا #36317. #36205 (Kruglov Pavel).
  • إضافة grant منفصل باسم CLUSTER (وتوجيه إعداد access_control_improvements.on_cluster_queries_require_cluster_grant الذي تكون قيمته الافتراضية false حفاظًا على backward compatibility). #35767 (Azat Khuzhin).
  • إذا أصبحت كمية الذاكرة المطلوبة متاحة قبل إيقاف query المحدد، فستواصل جميع queries المنتظرة التنفيذ. والآن لا نوقف أي query إذا تحررت الذاكرة قبل اللحظة التي يعلم فيها query المحدد بالإلغاء. #35637 (Dmitry Novik).
  • اكتشاف قيم Nullable في Protobuf. في proto3، لا تُرسَل القيم الافتراضية عبر wire. وهذا يجعل التمييز بين القيم NULL والقيم الافتراضية في أعمدة Nullable أمرًا غير مباشر. والطريقة القياسية للتعامل مع هذه المشكلة هي استخدام Google wrappers لتغليف target value داخل رسالة داخلية (انظر https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto). في هذه الحالة، يُفسَّر الحقل المفقود على أنه قيمة NULL، ويُفسَّر الحقل الذي يفتقد قيمةً على أنه قيمة افتراضية، ويُفسَّر الحقل ذو القيمة العادية على أنه قيمة عادية. ومع ذلك، يفسّر ClickHouse Google wrappers على أنها أعمدة Nested. ونقترح إدخال سلوك خاص لاكتشاف Google wrappers وتفسيرها كما هو موضح أعلاه. على سبيل المثال، من أجل serialize القيم للعمود Nullable test، سنستخدم google.protobuf.StringValue test في schema ‏.proto الخاصة بنا. لاحظ أن هذه الأنواع تُعرف باسم “well-known types” في Protobuf، وهي مُنفَّذة داخل المكتبة نفسها. #35149 (Jakub Kuklis).
  • إضافة دعم لتحديد content_type في إعدادات HTTP handler المعرّفة مسبقًا والثابتة. #34916 (Roman Nikonov).
  • عرض تحذير بشكل صحيح عند استخدام clickhouse-client —file بدون —external يسبقه. يُغلق #34747. #34765 (李扬).
  • تحسين محرك قاعدة بيانات MySQL ليتوافق مع نوع البيانات binary(0). #37232 (zzsmdfj).
  • تحسين تقرير JSON الخاص بـ clickhouse-benchmark. #36473 (Tian Xinhui).
  • قد يرفض server البدء إذا تعذر عليه resolve hostname الخاص بـ Dictionary خارجي في ClickHouse. تم إصلاح ذلك. يُصلح #36451. #36463 (tavplubix).

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

  • أصبح clickhouse-keeper لمعمارية x86_64 مرتبطًا ربطًا ثابتًا مع musl ولم يعد يعتمد على أي مكتبات نظام. #31833 (Alexey Milovidov).
  • أصبحت إصدارات ClickHouse لمعمارية PowerPC64LE متاحة الآن عبر البرنامج النصي العام للتثبيت curl https://clickhouse.com/ | sh وعبر الرابط المباشر https://builds.clickhouse.com/master/powerpc64le/clickhouse. #37095 (Alexey Milovidov).
  • قصر توليد الشيفرة الخاصة بـ PowerPC على Power8 لتحسين التوافق. يُغلق هذا #36025. #36529 (Alexey Milovidov).
  • تبسيط اختبار الأداء. سيمنحنا ذلك فرصة لاستخدامه. #36769 (Alexey Milovidov).
  • جعل مقارنة الأداء تفشل عند وجود أخطاء في التقرير. #34797 (Mikhail f. Shiryaev).
  • إضافة دعم ZSTD إلى Arrow. يعالج هذا #35283. #35486 (Sean Lafferty).

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

  • يستخرج Version ID من URI إذا كان موجودًا، ويضيف طلبًا إلى AWS HTTP URI. يغلق #31221. - [x] استخراج Version ID من URI إذا كان موجودًا وإعادة تركيبه من دونه. - [x] تهيئة كائن AWS HTTP URI بالطلب. - [x] اختبارات الوحدة: gtest_s3_uri - [x] إزالة commit الخاص بـ instrumentation. #34571 (Saad Ur Rahman).
  • إصلاح alias الخاص بـ attribute.values في system.opentelemetry_span_log ليصبح values بدلًا من keys. #37275 (Aleksandr Razumov).
  • إصلاح التحويل من Nullable(String) إلى Nullable(Bool/IPv4/IPv6). يغلق #37221. #37270 (Kruglov Pavel).
  • ميزة Experimental: إصلاح تنفيذ mutations في الجداول التي تحتوي على columns من النوع Object. أصبح استخدام subcolumns من النوع Object في expression الخاصة بـ WHERE ضمن queries من نوع UPDATE أو DELETE مسموحًا الآن أيضًا، وكذلك إجراء (DROP, MODIFY) على subcolumns المنفصلة. يعالج #37205. #37266 (Anton Popov).
  • لا يحتاج Kafka إلى group.id في مرحلة المنتج. ويمكنك العثور في سجل Console على تحذير يصف هذه المشكلة: 2022.05.15 17:59:13.270227 [ 137 ] {} <Warning> StorageKafka (topic-name): [rdk:CONFWARN] [thrd:app]: Configuration property group.id is a consumer property and will be ignored by this producer instance. #37228 (Mark Andreev).
  • ميزة Experimental (WindowView): تحديث max_fired_watermark بعد إطلاق blocks فعليًا، في حال حذف بيانات لم تُطلق بعد. #37225 (vxider).
  • إصلاح “Cannot create column of type Set” في distributed queries مع LIMIT BY. #37193 (Azat Khuzhin).
  • ميزة Experimental: الآن لن يتم إنهاء query ‏WATCH EVENTS في WindowView بسبب Chunk غير فارغ أُنشئ في WindowViewSource.h:58. #37182 (vxider).
  • تفعيل enable_global_with_statement من أجل subqueries، يغلق #37141. #37166 (Vladimir C).
  • إصلاح التحويل الضمني لـ optimize_skip_unused_shards_rewrite_in. #37153 (Azat Khuzhin).
  • كان يمكن أن تُرجع الدالة ILIKE على columns من النوع FixedString نتائج غير صحيحة (أي تطابقًا أقل مما ينبغي). #37117 (Robert Schulze).
  • إصلاح GROUP BY مع AggregateFunction (أي عند استخدام GROUP BY على column من النوع AggregateFunction). #37093 (Azat Khuzhin).
  • ميزة تجريبية: إصلاح optimize_aggregation_in_order مع GROUP BY ذي البادئة ودوال التجميع *Array. #37050 (Azat Khuzhin).
  • تم إصلاح تراجع الأداء في بعض استعلامات INSERT SELECT مع التجميع الضمني. يُصلح #36792. #37047 (tavplubix).
  • ميزة تجريبية: إصلاح GROUP BY بالترتيب (optimize_aggregation_in_order=1) مع دوال التجميع *Array (groupArrayArray/…). #37046 (Azat Khuzhin).
  • إصلاح مخرجات LowCardinality->ArrowDictionary غير الصالحة عندما لا يكون نوع الفهارس UInt8. يُغلق #36832. #37043 (Kruglov Pavel).
  • تم إصلاح مشكلة القيم اللانهائية في quantileTDigest. يُصلح #32107. #37021 (Vladimir Chebotarev).
  • إصلاح إرسال بيانات الجداول الخارجية في HedgedConnections عندما تكون قيمة max_parallel_replicas != 1. #36981 (Kruglov Pavel).
  • تم إصلاح خطأ منطقي في استعلام TRUNCATE في قاعدة البيانات Replicated. يُصلح #33747. #36976 (tavplubix).
  • ميزة تجريبية: إصلاح التعليق عند حذف الجدول المصدر في WindowView. يُغلق #35678. #36967 (vxider).
  • ميزة تجريبية (rocksdb cache): إصلاح المشكلة: #36671. #36929 (李扬).
  • ميزة تجريبية: إصلاح الأخطاء عند استخدام عدة أعمدة في WindowView عبر إضافة إجراءات تحويل تتيح استدعاء writeIntoWindowView مع مخطط مختلف قليلًا. #36928 (vxider).
  • إصلاح خطأ في clickhouse-keeper قد يؤدي إلى تلف ملفات السجل المضغوطة عند انخفاض الحمل ومع إعادة التشغيل. #36910 (alesapin).
  • إصلاح نتيجة استعلام غير صحيحة عند إجراء تجميع ثابت. هذا يُصلح #36728 . #36888 (Amos Bird).
  • ميزة تجريبية: إصلاح عدد current_size في الذاكرة المؤقتة. #36887 (Kseniia Sumarokova).
  • ميزة تجريبية: إصلاح إطلاق النتائج في window view مع hop window #34044. #36861 (vxider).
  • ميزة تجريبية: إصلاح CAST غير الصحيح في المخزن المؤقت المخبأ من remote fs. #36809 (Kseniia Sumarokova).
  • إصلاح إنشاء الجداول مع flatten_nested = 0. سابقًا، كان يمكن تسطيح أعمدة Nested غير المسطّحة بعد إعادة تشغيل الخادم. #36803 (Anton Popov).
  • إصلاح بعض المشكلات في عمليات reads غير المتزامنة من remote filesystem التي كانت تحدث عند قراءة بيانات low cardinality. #36763 (Kseniia Sumarokova).
  • ميزة تجريبية: إصلاح الإدراج في الأعمدة من النوع Object من عدة ملفات، مثلًا عبر table function ‏file مع globs. #36762 (Anton Popov).
  • إصلاح حالات timeout في طلبات Hedged. إذ كان تعليق الاتصال مباشرة بعد إرسال query بعيدة قد يؤدي إلى انتظار بلا نهاية. #36749 (Kruglov Pavel).
  • ميزة تجريبية: إصلاح خطأ في groupBitmapAndState/groupBitmapOrState/groupBitmapXorState على distributed table. #36739 (Zhang Yifan).
  • ميزة تجريبية: أثناء الاختبار في PR، تبيّن أن فئة cache واحدة جرى تهيئتها مرتين، ما يؤدي إلى إطلاق استثناء. ورغم أن سبب هذه المشكلة غير واضح، يبدو أن هناك منطقًا برمجيًا لتحميل القرص بشكل متكرر في ClickHouse، لذلك نحتاج إلى معالجة خاصة لهذه الحالة. #36737 (Han Shukai).
  • إصلاح vertical merges في wide parts. سابقًا، كان يمكن إطلاق الاستثناء There is no column أثناء الدمج. #36707 (Anton Popov).
  • إصلاح إعادة تحميل الخادم عند تغيير المنفذ (من دون انتظار الاتصالات الحالية من Context الاستعلام). #36700 (Azat Khuzhin).
  • ميزة تجريبية: في PR السابق، تبيّن أن الاختبارات (stateless tests وflaky check ‏(address, actions)) تنتهي بحالة timeout. إضافةً إلى ذلك، قد يؤدي الاختبار محليًا أيضًا إلى trigger لحالات deadlocks غير مستقرة في النظام. وما تزال هذه المشكلة قائمة عند استخدام أحدث Source Code من master. #36697 (Han Shukai).
  • ميزة تجريبية: إصلاح إعادة تشغيل الخادم إذا تغيّرت cache configuration. #36685 (Kseniia Sumarokova).
  • إصلاح احتمال حدوث heap-use-after-free في schema inference. يغلق #36661. #36679 (Kruglov Pavel).
  • إصلاح parsing لإعدادات query في استعلام CREATE عندما لا يكون engine محددًا. يصلح https://github.com/ClickHouse/ClickHouse/pull/34187#issuecomment-1103812419. #36642 (tavplubix).
  • ميزة تجريبية: إصلاح merges للـ wide parts من النوع Object. #36637 (Anton Popov).
  • إصلاح تعطل format عندما يأتي تعبير default بعد EPHEMERAL وليس قيمة literal. يغلق #36618. #36633 (flynn).
  • إصلاح استثناء Missing column الذي قد يحدث عند استخدام INTERPOLATE مع جدول ENGINE = MergeTree. #36549 (Yakov Olkhovskiy).
  • إصلاح خطأ محتمل في القيم الحرفية داخل WHERE في استعلامات join. إغلاق #36279. #36542 (Vladimir C).
  • إصلاح تحديث الإزاحة في ReadBufferFromEncryptedFile، والذي قد يتسبب في سلوك غير معرّف. #36493 (Kseniia Sumarokova).
  • إصلاح فحوصات سلامة اسم المضيف في إعدادات عنقود Keeper. وإضافة الإعداد keeper_server.host_checks_enabled لتمكين هذه الفحوصات أو تعطيلها. #36492 (Antonio Andelic).
  • إصلاح استخدام الدوال المعرفة من قبل المستخدم القابلة للتنفيذ في GROUP BY. إذ لم يكن من الممكن سابقًا استخدام الدوال المعرفة من قبل المستخدم القابلة للتنفيذ كتعبيرات في GROUP BY. إغلاق #36448. #36486 (Maksim Kita).
  • إصلاح استثناء محتمل يتعلق بحزمة غير معروفة من الخادم في العميل. #36481 (Kseniia Sumarokova).
  • ميزة تجريبية (يرجى عدم استخدام system.session_log مطلقًا، لأنه سيُزال): إضافة قيم enum المفقودة إلى جدول system.session_log. إغلاق #36474. #36480 (Memo).
  • إصلاح خلل في استدلال المخطط في s3Cluster كان يؤدي إلى عدم قراءة جميع البيانات عند تنفيذ select من s3Cluster. ظهر هذا الخلل في https://github.com/ClickHouse/ClickHouse/pull/35544. #36434 (Kruglov Pavel).
  • إصلاح إلغاء مرجع nullptr في JOIN ومطابق COLUMNS. ويعالج هذا #36416. وهذا متعلق بـ https://github.com/ClickHouse/ClickHouse/pull/36417. #36430 (Amos Bird).
  • إصلاح إعادة تحميل القاموس في ClickHouseDictionarySource إذا كان يحتوي على استعلامات فرعية scalar. #36390 (lthaooo).
  • إصلاح خطأ assertion في JOIN، إغلاق #36199. #36201 (Vladimir C).
  • كانت الاستعلامات التي تتضمن أسماء مستعارة داخل المعاملات الخاصة تُرجع parsing error (وكان ذلك معطّلًا في 22.1). مثال: SELECT substring('test' AS t, 1, 1). #36167 (Maksim Kita).
  • ميزة تجريبية: إصلاح إدراج ملفات JSON المعقدة ذات المصفوفات المتداخلة في أعمدة من النوع Object. #36077 (Anton Popov).
  • إصلاح ALTER DROP COLUMN لعمود متداخل مع compact parts (أي ALTER TABLE x DROP COLUMN n عندما يكون هناك عمود n.d). #35797 (Azat Khuzhin).
  • إصلاح خطأ طول النطاق في الدالة substring عندما تكون offset و length ثابتين سالبين، وs ليس ثابتًا. #33861 (RogerYK).

إصدار ClickHouse 22.4، بتاريخ 2022-04-19. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • لم يعد مسموحًا باستخدام SETTINGS بعد FORMAT في استعلامات INSERT (يوجد إعداد توافق allow_settings_after_format_in_insert لقبول مثل هذه الاستعلامات، لكنه يكون مضبوطًا على OFF افتراضيًا). #35883 (Azat Khuzhin).
  • أُعيدت تسمية الدالة yandexConsistentHash (خوارزمية التجزئة المتسقة التي وضعها Konstantin “kostik” Oblakov) إلى kostikConsistentHash. وقد أُبقي الاسم القديم كاسم مستعار حفاظًا على التوافق. ومع أن هذا التغيير متوافق مع الإصدارات السابقة، فقد نزيل هذا الاسم المستعار في الإصدارات اللاحقة، لذلك يُنصح بتحديث استخدامات هذه الدالة في تطبيقاتكم. #35553 (Alexey Milovidov).

ميزة جديدة

  • تمت إضافة الامتداد INTERPOLATE إلى ORDER BY … WITH FILL. يحل #34903. #35349 (Yakov Olkhovskiy).
  • تمت إضافة جمع بيانات profiling على مستوى processors (ضمن الإعداد log_processors_profiles، سيكتب ClickHouse الزمن الذي قضاه كل processor أثناء التنفيذ/انتظار البيانات في جدول system.processors_profile_log). #34355 (Azat Khuzhin).
  • تمت إضافة الدالتين makeDate(year, month, day) و makeDate32(year, month, day). #35628 (Alexander Gololobov). كما أُضيف تنفيذ makeDateTime() و makeDateTIme64(). #35934 (Alexander Gololobov).
  • دعم نوع جديد من الحصص WRITTEN BYTES لتقييد كمية البايتات المكتوبة أثناء استعلامات insert. #35736 (Anton Popov).
  • تمت إضافة الدالة flattenTuple. تستقبل Tuple مسمّى ومتداخلًا كـ argument وتُرجع Tuple مسطّحًا تكون عناصره هي المسارات من Tuple الأصلي. مثال: Tuple(a Int, Tuple(b Int, c Int)) -> Tuple(a Int, b Int, c Int). ويمكن استخدام flattenTuple لاختيار جميع المسارات من النوع Object كأعمدة منفصلة. #35690 (Anton Popov).
  • تمت إضافة الدالتين arrayFirstOrNull و arrayLastOrNull. يحل #35238. #35414 (Maksim Kita).
  • تمت إضافة الدالتين minSampleSizeContinous و minSampleSizeConversion. المؤلف achimbab. #35360 (Maksim Kita).
  • دالتان جديدتان: minSampleSizeContinous و minSampleSizeConversion. #34354 (achimbab).
  • تقديم التنسيق ProtobufList (جميع السجلات تكون رسائل متكررة في مخرجات Protobuf). يحل #16436. #35152 (Nikolai Kochetov).
  • تمت إضافة الدوال h3PointDistM و h3PointDistKm و h3PointDistRads و h3GetRes0Indexes و h3GetPentagonIndexes. #34568 (Bharat Nallan).
  • تمت إضافة الدالة toLastDayOfMonth التي تقرّب تاريخًا أو تاريخًا مع وقت إلى آخر يوم من الشهر. #33501. #34394 (Habibullah Oladepo).
  • تمت إضافة إعداد load balancing لعميل [Zoo]Keeper. يحل #29617. #30325 (小路).
  • أُضيف نوع جديد من سياسات الصفوف باسم simple. قبل هذا الـ PR، كان لدينا نوعان من سياسات الصفوف: permissive وrestrictive. تضيف سياسة الصفوف simple عامل تصفية جديدًا إلى جدول من دون أي آثار جانبية، بخلاف ما كان عليه الحال مع سياسات permissive وrestrictive. #35345 (Vitaly Baranov).
  • أُضيفت إمكانية تحديد سرّ العنقود في قاعدة بيانات Replicated. #35333 (Nikita Mikhaylov).
  • أُضيفت عمليات تحقق أساسية عند بدء تشغيل الخادم (الذاكرة المتاحة، ومساحة القرص، والحد الأقصى لعدد الخيوط، إلخ). #34566 (Sergei Trifonov).
  • تحسين على INTERVAL — يمكن استخدامه مع [MILLI|MICRO|NANO]SECOND. أُضيفت الدوال toStartOf[Milli|Micro|Nano]second(). وأُضيفت الدوال [add|subtract][Milli|Micro|Nano]seconds(). #34353 (Andrey Zvonov).

ميزة تجريبية

  • أُضيف دعم المعاملات إلى جداول MergeTree البسيطة. هذه الميزة تجريبية للغاية ولا يُنصح باستخدامها في بيئات الإنتاج. جزء من #22086. #24258 (tavplubix).
  • دعم استنتاج المخطط للنوع Object في التنسيق JSONEachRow. كما يتيح تحويل الأعمدة من النوع Map إلى أعمدة من النوع Object. #35629 (Anton Popov).
  • إتاحة الكتابة إلى ذاكرة التخزين المؤقت لنظام الملفات البعيد في جميع عمليات الكتابة. إضافة جدول system.remote_filesystem_cache. إضافة الاستعلام drop remote filesystem cache. إضافة إمكانات الاستبطان لبيانات S3 الوصفية باستخدام جدول system.remote_data_paths. يُغلق #34021. إضافة خيار لذاكرة التخزين المؤقت لعمليات الدمج عبر إضافة الوضع read_from_filesystem_cache_if_exists_otherwise_bypass_cache (ويكون مفعّلًا افتراضيًا لعمليات الدمج، ويمكن أيضًا تفعيله عبر إعداد الاستعلام بالاسم نفسه). إعادة تسمية الإعدادات المرتبطة بذاكرة التخزين المؤقت (remote_fs_enable_cache -> enable_filesystem_cache، إلخ). #35475 (Kseniia Sumarokova).
  • خيار لتخزين البيانات الوصفية للأجزاء في RocksDB. يسرّع هذا عملية تحميل الأجزاء في MergeTree لتقليل زمن بدء تشغيل clickhouse-server. مع هذا التحسين، تمكّن clickhouse-server من خفض وقت بدء التشغيل من 75 دقيقة إلى 20 ثانية، مع 700 ألف جزء من MergeTree. #32928 (李扬).

تحسين الأداء

  • تحسين جديد في خطة الاستعلام. تُقيَّم الدوال بعد ORDER BY متى أمكن ذلك. على سبيل المثال، في الاستعلام SELECT sipHash64(number) FROM numbers(1e8) ORDER BY number LIMIT 5، ستُقيَّم الدالة sipHash64 بعد ORDER BY وLIMIT، مما يحقق تسريعًا بنحو ~20x. #35623 (Nikita Taranov).
  • أصبحت أحجام جداول التجزئة المستخدمة أثناء التجميع تُجمع الآن وتُستخدم في الاستعلامات اللاحقة لتجنّب إعادة تحجيم جداول التجزئة. #33439 (Nikita Taranov).
  • تحسين للدالة hasAll باستخدام تعليمات SIMD ‏(SSE وAVX2). #27653 (youennL-cs). #35723 (Maksim Kita).
  • عدة تغييرات لتحسين أداء ASOF JOIN ‏(أسرع بمقدار 1.2 إلى 1.6 مرة). كما يضيف ذلك دعمًا لاستخدام الأعداد الصحيحة الكبيرة. #34733 (Raúl Marín).
  • تحسين أداء ASOF JOIN إذا كان المفتاح عددًا صحيحًا أصليًا. #35525 (Maksim Kita).
  • تنفيذ multipart upload إلى S3 storage بالتوازي. #35343 (Sergei Trifonov).
  • أصبح محرك URL storage ينزّل الآن عدة أجزاء بالتوازي إذا كانت نقطة النهاية تدعم HTTP Range. وأُضيف إعدادان إضافيان، max_download_threads وmax_download_buffer_size، للتحكم في الحد الأقصى لعدد الخيوط التي يمكن أن يستخدمها استعلام واحد لتنزيل الملف، والحد الأقصى لعدد البايتات التي يمكن لكل خيط معالجتها. #35150 (Antonio Andelic).
  • استخدام عدة خيوط لتنزيل الكائنات من S3. ويمكن التحكم في التنزيل باستخدام الإعدادين max_download_threads وmax_download_buffer_size. #35571 (Antonio Andelic).
  • تضييق نطاق mutex عند التفاعل مع HDFS. مرتبط بـ #35292. #35646 (shuchaome).
  • لا تصبح mutations مطلوبة لـ table TTL على مستوى الجدول إلا عند تغييره. #35953 (Azat Khuzhin).

تحسين

  • تحسينات متعددة على استدلال المخطط. استخدام بعض التحسينات والاستدلالات لتحديد الأرقام والسلاسل النصية والمصفوفات وTuples وMaps في تنسيقات البيانات CSV وTSV وTSVRaw. إضافة الإعداد input_format_csv_use_best_effort_in_schema_inference لتنسيق CSV لتمكين/تعطيل استخدام هذه الاستدلالات؛ وإذا كان معطّلًا، فستُعامل جميع القيم على أنها String. إضافة إعداد مماثل input_format_tsv_use_best_effort_in_schema_inference لتنسيق TSV/TSVRaw. هذه الإعدادات مُمكّنة افتراضيًا. - إضافة دعم Maps إلى استدلال المخطط في Values format. - إصلاح احتمال حدوث segfault في استدلال المخطط في Values format. - السماح بتخطي الأعمدة ذات الأنواع غير المدعومة في تنسيقات Arrow/ORC/Parquet. وإضافة الإعدادات المقابلة لذلك: input_format_{parquet|orc|arrow}_skip_columns_with_unsupported_types_in_schema_inference. هذه الإعدادات معطّلة افتراضيًا. - السماح بتحويل عمود من النوع Null إلى عمود Nullable يحتوي بالكامل على قيم NULL في تنسيقات Arrow/Parquet. - السماح بتحديد أسماء الأعمدة في استدلال المخطط عبر الإعداد column_names_for_schema_inference للتنسيقات التي لا تتضمن أسماء أعمدة (مثل CSV وTSV وJSONCompactEachRow وغيرها) - إصلاح استدلال المخطط في تنسيقات ORC/Arrow/Parquet فيما يخص التعامل مع الأعمدة Nullable. في السابق، كانت جميع الأنواع المستدل عليها غير Nullable، ما كان يمنع قراءة الأعمدة Nullable من البيانات. وقد أُصلح ذلك الآن، وأصبحت جميع الأنواع المستدل عليها Nullable دائمًا (لأنه لا يمكن تحديد ما إذا كان العمود Nullable أم لا بمجرد قراءة المخطط). - إصلاح استدلال المخطط في Template format مع قواعد الهروب الخاصة بـCSV. #35582 (Kruglov Pavel).
  • إضافة التحليل المتوازي واستدلال المخطط للتنسيق JSONAsObject. #35592 (Anton Popov).
  • تمت إضافة دعم الاستدلال التلقائي للمخطط إلى الدالة الجدولية s3Cluster. وتمت مزامنة تواقيع s3 وs3Cluster. #35544 (Nikita Mikhaylov).
  • تمت إضافة دعم استدلال المخطط لـ hdfsCluster. #35602 (Nikita Mikhaylov).
  • إضافة إعداد جديد input_format_json_read_bools_as_numbers يتيح استدلال القيم المنطقية وتحليلها كأرقام في JSON input formats. وهو مُمكّن افتراضيًا. باقتراح من @alexey-milovidov. #35735 (Kruglov Pavel).
  • تحسين ترتيب الأعمدة في استدلال المخطط للتنسيقين TSKV وJSONEachRow، وإغلاق #35640. وعدم إيقاف استدلال المخطط عند قراءة صف فارغ أثناء استدلال المخطط للتنسيقين TSKV وJSONEachRow. #35724 (Kruglov Pavel).
  • إضافة الإعدادات input_format_orc_case_insensitive_column_matching وinput_format_arrow_case_insensitive_column_matching وinput_format_parquet_case_insensitive_column_matching، التي تتيح لـ ClickHouse استخدام مطابقة الأعمدة دون حساسية لحالة الأحرف عند قراءة البيانات من ملفات ORC أو Arrow أو Parquet. #35459 (Antonio Andelic).
  • تمت إضافة العمود is_secure إلى system.query_log، وهو يوضح ما إذا كان العميل يستخدم اتصالًا آمنًا عبر TCP أو HTTP. #35705 (Antonio Andelic).
  • يمكن الآن أن تكون قيمة kafka_num_consumers أكبر من عدد الأنوية المادية في الأجهزة منخفضة الموارد (أقل من 16 نواة). #35926 (alesapin).
  • إضافة بعض المقاييس الأساسية لمراقبة الجداول ذات engine=Kafka. #35916 (filimonov).
  • لم يعد مسموحًا الآن بتنفيذ ALTER TABLE ... RESET SETTING للإعدادات غير الموجودة ضمن عائلة محركات MergeTree. يُصلح هذا #35816. #35884 (alesapin).
  • أصبح بالإمكان الآن تنفيذ بعض استعلامات ALTER MODIFY COLUMN لأنواع Arrays وNullable على مستوى البيانات الوصفية من دون mutations. على سبيل المثال، التعديل من Array(Enum8('Option1'=1)) إلى Array(Enum8('Option1'=1, 'Option2'=2)). #35882 (alesapin).
  • أُضيفت حركة إلى أيقونة الساعة الرملية لإظهار أن الاستعلام قيد التشغيل. #35860 (peledni).
  • دعم ALTER TABLE t DETACH PARTITION (ALL). #35794 (awakeljw).
  • تحسين تحليل الإسقاطات لتحسين الاستعلامات البسيطة مثل count(). #35788 (Amos Bird).
  • دعم استدلال المخطط لعملية insert select عند استخدام table function input. يُؤخذ المخطط من جدول الإدراج بدلًا من استنتاجه من البيانات في حالة insert select من table functions التي تدعم استدلال المخطط. يُغلق هذا #35639. #35760 (Kruglov Pavel).
  • تطبيق remote_url_allow_hosts على جداول Hive. #35743 (李扬).
  • تنفيذ send_logs_level في clickhouse-local. يُغلق هذا #35653. #35716 (Kseniia Sumarokova).
  • يُغلق هذا #35641: السماح بأعمدة EPHEMERAL من دون تعبير افتراضي صريح. #35706 (Yakov Olkhovskiy).
  • إضافة عدّاد لأحداث profile باسم AsyncInsertBytes لقياس حجم عمليات INSERT غير المتزامنة. #35644 (Alexey Milovidov).
  • تحسين وصف pipeline لـ JOIN. #35612 (何李夫).
  • استنتاج المسار المطلق لـ config الخاص بـ hdfs. #35572 (李扬).
  • تحسين أداء اللصق والتوافق في clickhouse-client. يساعد هذا في #35501. #35541 (Amos Bird).
  • كان من الممكن حدوث stack overflow في distributed queries إذا كان أحد الإعدادين async_socket_for_remote وuse_hedged_requests مُمكّنًا أثناء parsing نوع بيانات متداخل بعمق شديد (على الأقل في build التنقيح). يُغلق هذا #35509. #35524 (Kruglov Pavel).
  • إضافة أحجام subcolumns إلى جدول system.parts_columns. #35488 (Anton Popov).
  • أضِف معلومات صريحة عن الجدول إلى عقدة المسح في خطة الاستعلام وخط الأنابيب. #35460 (何李夫).
  • اسمح للخادم بإجراء bind على المنافذ ذات الأرقام المنخفضة (مثل 443). سيضبط نص تثبيت ClickHouse البرمجي cap_net_bind_service على الملف الثنائي. #35451 (Alexey Milovidov).
  • أصلِح INSERT INTO table FROM INFILE: إذ لم يكن يعرض شريط التقدّم. #35429 (xiedeyantu).
  • أضِف الوسيطات --user و--password و--host و--port إلى أداة clickhouse-diagnostics. #35422 (李扬).
  • ادعم uuid لمحركات Postgres. يُغلق #35384. #35403 (Kseniia Sumarokova).
  • بالنسبة إلى table function ‏s3cluster أو HDFSCluster أو hive، لا يمكن الحصول على AccessType الصحيح عبر StorageFactory::instance().getSourceAccessType(getStorageTypeName()). يُصلح هذا الطلب المشكلة. #35365 (李扬).
  • أزل الخيار --testmode من clickhouse-client، وفعِّله دائمًا. #35354 (Kseniia Sumarokova).
  • لا تسمح بعملية wchc (أمر من أربعة أحرف) في clickhouse-keeper. #35320 (zhangyuli1).
  • أضِف الدالة getTypeSerializationStreams. بالنسبة إلى نوع محدد (يُكتشف من column)، تُرجع Array تحتوي على جميع مسارات التدفقات الفرعية الخاصة بالتسلسل. هذه الدالة مفيدة أساسًا للمطورين. #35290 (李扬).
  • إذا لم يُحدَّد port في تهيئة cluster، فسيُستخدم منفذ server الافتراضي. يُغلق هذا #34769. #34772 (Alexey Milovidov).
  • استخدم فهرس minmax لملف orc/parquet في Hive engine. طلب السحب ذي الصلة: https://github.com/ClickHouse/arrow/pull/10. #34631 (李扬).
  • تسمح log tables الخاصة بالنظام الآن بتحديد COMMENT في تصريح ENGINE. يُغلق #33768. #34536 (Maksim Kita).
  • دعم صحيح للإعداد max_rows_to_read عند القراءة وفق sorting key مع تحديد limit. سابقًا، كان يمكن طرح الاستثناء Limit for rows or bytes to read exceeded حتى إذا كان الـ query يتطلب فعليًا قراءة عدد أقل من rows. #33230 (Anton Popov).
  • راعِ فقط quota وperiod من cgroups، وتجاهل shares (إذ إنها لا تحد فعليًا من عدد الأنوية التي يمكن استخدامها). #35815 (filimonov).

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

  • إضافة الدفعة التالية من إعدادات العشوائية في الاختبارات الوظيفية. #35047 (Kruglov Pavel).
  • إضافة فحص للتوافق مع الإصدارات السابقة في اختبار الضغط. يُغلق #25088. #27928 (Kruglov Pavel).
  • ترحيل بناء الحزم إلى nfpm - إيقاف استخدام سكربت release لصالح packages/build - بناء كل شيء داخل صورة clickhouse/binary-builder (تنظيف: clickhouse/deb-builder) - إضافة تجريد الرموز إلى cmake (todo: use prefix/lib/prefix/lib/bin_dir/clickhouse/$binary.debug) - إصلاح مشكلة في رموز DWARF - إضافة حزم Alpine APK - إعادة تسمية alien إلى additional_pkgs. #33664 (Mikhail f. Shiryaev).
  • إضافة فحص ليلي ورفع نتائجه إلى Coverity. #34895 (Boris Kuschel).
  • حزمة صغيرة مخصصة لـ clickhouse-keeper. #35308 (Mikhail f. Shiryaev).
  • كان التشغيل باستخدام podman يفشل، إذ كان يشتكي من تحديد نفس وحدة التخزين مرتين. #35978 (Roman Nikonov).
  • تحسين طفيف في إعدادات بناء contrib/krb5. #35832 (Anton Kozlov).
  • إضافة تسمية للتعرّف على مهمة بناء لكل image. #35583 (Mikhail f. Shiryaev).
  • تطبيق المنسّق black على شيفرة بايثون وإضافة فحص لكل commit. #35466 (Mikhail f. Shiryaev).
  • إعادة إعداد صورة alpine لاستخدام Dockerfile نظيف. إنشاء سكربت في tests/ci لبناء صورتي ubuntu وalpine. إضافة صورة clickhouse-keeper (cc @nikitamikhaylov). إضافة فحص بناء إلى PullRequestCI. إضافة job إلى ReleaseCI. إضافة job إلى MasterCI لبناء ودفع الصورتين clickhouse/clickhouse-server:head و clickhouse/clickhouse-keeper:head لكل PR مدمج. #35211 (Mikhail f. Shiryaev).
  • إصلاح تقرير stress-test في CI، إذ نرفع الآن runlog الذي يتضمن معلومات عن اختبارات الضغط التي بدأت مرة واحدة فقط. #35093 (Mikhail f. Shiryaev).
  • التحول إلى libcxx / libcxxabi من LLVM 14. #34906 (Raúl Marín).
  • تحديث unixodbc للتخفيف من CVE-2018-7485. ملاحظة: هذا CVE غير ذي صلة بـ ClickHouse لأنه يطبق طبقة عزل خاصة به لـ ODBC. #35943 (Mikhail f. Shiryaev).

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

  • تمت إضافة الإعدادات input_format_ipv4_default_on_conversion_error وinput_format_ipv6_default_on_conversion_error للسماح بإدراج قيم عناوين IP غير الصالحة كقيم افتراضية في الجداول. يغلق #35726. #35733 (Maksim Kita).
  • تجنب حذف الأعمدة من block إذا كانت غير موجودة أثناء قراءة البيانات من Hive. #35393 (lgbo).
  • إضافة التحقق من الأنواع عند إنشاء عرض مادي. إغلاق: #23684. #24896 (hexiaoting).
  • إصلاح تنسيق استعلامات INSERT INFILE (علامات اقتباس مفقودة). #35886 (Azat Khuzhin).
  • تعطيل session_log بعد اكتشاف مشكلة تتعلق بسلامة الذاكرة عبر fuzzing. راجع #35714. #35873 (Alexey Milovidov).
  • تجنب معالجة TTL على مستوى كل عمود عدة مرات. #35820 (Azat Khuzhin).
  • إصلاح عمليات الإدراج في الأعمدة من النوع Object عندما يحتوي استعلام الإدراج على بيانات مرتبطة بعدة أقسام. #35806 (Anton Popov).
  • إصلاح خطأ في فهارس الأعمدة غير الموجودة في تنسيقات -WithNames، كان يؤدي إلى الخطأ INCORRECT_NUMBER_OF_COLUMNS عندما يتجاوز عدد الأعمدة 256. يغلق #35793. #35803 (Kruglov Pavel).
  • إصلاح #35751. #35799 (Nikolay Degterinsky).
  • إصلاح قراءة البيانات من HDFS بتنسيق Snappy. #35771 (shuchaome).
  • إصلاح خطأ في التحويل من الأنواع المخصصة إلى سلسلة نصية، كان يمكن أن يؤدي إلى segfault أو إلى رسائل خطأ غير متوقعة. يغلق #35752. #35755 (Kruglov Pavel).
  • إصلاح تنفيذ any/all (استعلام فرعي). يغلق #35489. #35727 (Kseniia Sumarokova).
  • إصلاح حذف قاعدة بيانات غير فارغة في clickhouse-local. يغلق #35692. #35711 (Kseniia Sumarokova).
  • إصلاح خطأ عند إنشاء عرض مادي يتضمن استعلامًا فرعيًا بعد إعادة تشغيل الخادم. إذ لم يكن العرض المادي يتحدّث بعد عمليات الإدراج في الجدول الأساسي عقب إعادة تشغيل الخادم. يغلق #35511. #35691 (Kruglov Pavel).
  • إصلاح احتمال حدوث الاستثناء Can't adjust last granule أثناء قراءة الأعمدة الفرعية من النوع التجريبي Object. #35687 (Anton Popov).
  • تفعيل build مع ترجمة JIT البرمجية افتراضيًا. #35683 (Maksim Kita).
  • إصلاح الفقدان المحتمل للأعمدة الفرعية في النوع التجريبي Object. #35682 (Anton Popov).
  • إصلاح التحقق من قابلية مفتاح ASOF JOIN لأن يكون NULL، وإغلاق #35565. #35674 (Vladimir C).
  • إصلاح منطق التحقق من parts التي تحتوي على projections. كان الخطأ يحدث عندما تكون أنواع projection وpart الرئيسي مختلفة. وهذا مشابه لـ https://github.com/ClickHouse/ClickHouse/pull/33774 . وقد عالج @caoyang10 هذا الخلل. #35667 (Amos Bird).
  • إصلاح تعطل server عند تمرير عدد كبير من الوسيطات إلى الدالة format. يُرجى الرجوع إلى ملف الاختبار لمعرفة كيفية إعادة إنتاج التعطل. #35651 (Amos Bird).
  • إصلاح استخدام quotas مع asynchronous inserts. #35645 (Anton Popov).
  • إصلاح الوسيطات الموضعية مع الأسماء المستعارة. يغلق #35600. #35620 (Kseniia Sumarokova).
  • التحقق من remote_url_allow_hosts قبل schema inference في URL engine. يغلق #35064. #35619 (Kruglov Pavel).
  • إصلاح HashJoin عند استخدام أعمدة من النوع LowCardinality. هذا يغلق #35548. #35616 (Antonio Andelic).
  • إصلاح segfault محتمل في MaterializedPostgreSQL كان يحدث عند وقوع استثناء أثناء مزامنة البيانات المجمعة في الذاكرة إلى underlying tables. يغلق #35611. #35614 (Kseniia Sumarokova).
  • كان الإعداد database_atomic_wait_for_drop_and_detach_synchronously يعمل بشكل غير صحيح مع query ‏ATTACH TABLE عندما يكون الجدول الذي فُصل سابقًا لا يزال قيد الاستخدام، وقد أُصلح ذلك. #35594 (tavplubix).
  • إصلاح HTTP headers مع named collections، وإضافة compression_method. يغلق #35273. يغلق #35269. #35593 (Kseniia Sumarokova).
  • إصلاح حصول محرك S3 على virtual columns. يغلق #35411. #35586 (Kseniia Sumarokova).
  • إصلاح استنتاج return type للدالة caseWithExpression. وأصبح نوع فرع ELSE يؤخذ الآن في الحسبان بشكل صحيح. #35576 (Antonio Andelic).
  • إصلاح تحليل عناوين IPv6 التي يزيد طولها على 39 حرفًا. يُغلق #34022. #35539 (Maksim Kita).
  • إصلاح التحويل إلى عنوانَي IPv4 وIPv6 في قسم IN. يُصلح #35528. #35534 (Maksim Kita).
  • إصلاح تعطل أثناء التقييم المختصر للدوال عندما تكون إحدى الوسيطات ثابتًا من النوع Nullable. يُغلق #35497. يُغلق #35496. #35502 (Maksim Kita).
  • إصلاح تعطل الدالة throwIf عند استخدام وسائط ثابتة. #35500 (Maksim Kita).
  • إصلاح خلل في Keeper قد يؤدي إلى عدم استقرار اتصالات العميل. أُدخل في #35031. #35498 (alesapin).
  • إصلاح خلل في الدالة if عندما يختلف نوع العمود الناتج عن نوع البيانات الناتج، ما كان يؤدي إلى أخطاء منطقية مثل Logical error: 'Bad cast from type DB::ColumnVector<int> to DB::ColumnVector<long>'.. يُغلق #35367. #35476 (Kruglov Pavel).
  • إصلاح التسجيل المفرط عند استخدام S3 كواجهة خلفية لـ MergeTree أو كمحرك جدول/دالة مستقلّين. يُصلح #30559. #35434 (alesapin).
  • الآن لن تُغرق عمليات الدمج المنفذة باستخدام zero copy replication (تجريبي) السجلات بالرسالة Found parts with the same min block and with the same max block as the missing part _ on replica _. Hoping that it will eventually appear as a result of a merge.. #35430 (alesapin).
  • تجنب استثناء محتمل إذا ظهرت chunks فارغة في GroupingAggregatedTransform. #35417 (Nikita Taranov).
  • إصلاح التعامل مع الأعمدة غير المطلوبة في الاستعلام ضمن تنسيقات Arrow/Parquet/ORC، ما يمنع أخطاء محتملة مثل Unsupported <format> type <type> of an input column <column_name> عندما يحتوي الملف على عمود ذي نوع غير مدعوم ولا يُستخدم في الاستعلام. #35406 (Kruglov Pavel).
  • إصلاح الذاكرة المؤقتة المحلية لنظام الملفات البعيد (ميزة تجريبية) في بعض الحالات الطرفية عند التزامن العالي. #35381 (Kseniia Sumarokova). إصلاح احتمال حدوث توقف متبادل في الذاكرة المؤقتة. #35378 (Kseniia Sumarokova).
  • إصلاح تقليص الأقسام في حالة المقارنة مع ثابت في WHERE. إذا كان للعمود والثابت نوعان مختلفان، فقد يحدث فيض. وقد يعيد الاستعلام نتيجة فارغة غير صحيحة. هذا يُصلح #35304. #35334 (Amos Bird).
  • إصلاح استنتاج المخطط لتنسيق TSKV عند استخدام قيمة صغيرة لـ max_read_buffer_size. #35332 (Kruglov Pavel).
  • إصلاح mutations في الجداول ذات الأعمدة المتناثرة المفعّلة. #35284 (Anton Popov).
  • عدم تأخير كتابة الجزء النهائي افتراضيًا (يُصلح حالات محتملة لظهور Memory limit exceeded أثناء INSERT عبر إضافة max_insert_delayed_streams_for_parallel_write بقيمة افتراضية مقدارها 1000 لعمليات الكتابة إلى S3، مع إبقائه معطّلًا كما كان سابقًا في غير ذلك). #34780 (Azat Khuzhin).

إصدار ClickHouse v22.3-lts، 2022-03-17. العرض التقديمي، الفيديو

تغيير غير متوافق مع الإصدارات السابقة

  • اجعل الدالة arrayCompact تتصرف مثل الدوال الأعلى رتبة الأخرى: بحيث تُجرى عملية التقليص على المصفوفة الأصلية لا على نتائج دالة lambda. إذا كنت تستخدم دوال lambda غير بسيطة في arrayCompact، فيمكنك استعادة السلوك القديم عبر تغليف معاملات arrayCompact داخل arrayMap. يُغلق #34010 #18535 #14778. #34795 (Alexandre Snarskii).
  • تغيير سلوك التنفيذ الخاص عند تجاوز السعة في الدالة toDatetime. ستُشبَع القيمة إلى أقرب لحظة دنيا/قصوى يدعمها datetime بدلًا من الالتفاف. وجرى تمييز هذا التغيير بأنه “غير متوافق مع الإصدارات السابقة” لأن البعض قد يعتمد على السلوك القديم دون قصد. #32898 (HaiBo Li).
  • اجعل الدالتين cast(value, 'IPv4') وcast(value, 'IPv6') تتصرفان بالطريقة نفسها التي تتصرف بها الدالتان toIPv4 وtoIPv6. تم تغيير سلوك تمرير عنوان IP غير صالح إلى الدالتين toIPv4, toIPv6؛ إذ سيُرفَع الآن استثناء إذا تم تمرير عنوان IP غير صالح إلى هاتين الدالتين، بينما كانت هذه الدوال تُرجِع القيمة الافتراضية سابقًا. أُضيفت الدوال IPv4StringToNumOrDefault, IPv4StringToNumOrNull, IPv6StringToNumOrDefault, IPv6StringOrNull toIPv4OrDefault, toIPv4OrNull, toIPv6OrDefault, toIPv6OrNull. ينبغي استخدام الدوال IPv4StringToNumOrDefault وtoIPv4OrDefault وtoIPv6OrDefault إذا كان المنطق السابق يعتمد على أن IPv4StringToNum, toIPv4, toIPv6 تُرجِع القيمة الافتراضية للعناوين غير الصالحة. أُضيف أيضًا الإعداد cast_ipv4_ipv6_default_on_conversion_error، وإذا كان هذا الإعداد مُمكّنًا، فستتصرف دوال تحويل عناوين IP كما كانت من قبل. يُغلق #22825. يُغلق #5799. يُغلق #35156. #35240 (Maksim Kita).

ميزة جديدة

  • دعم التخزين المؤقت للبيانات محليًا لأنظمة الملفات البعيدة. يمكن تمكينه لأقراص s3. يُغلق #28961. #33717 (Kseniia Sumarokova). وفي الوقت نفسه، فعّلنا مجموعة الاختبارات على نظام ملفات S3، ولم تعد هناك أي مشكلات معروفة، لذا فقد بدأ يقترب من الجاهزية لبيئات الإنتاج.
  • إضافة table function جديدة باسم hive. يمكن استخدامها كما يلي hive('<hive metastore url>', '<hive database>', '<hive table name>', '<columns definition>', '<partition columns>')، على سبيل المثال SELECT * FROM hive('thrift://hivetest:9083', 'test', 'demo', 'id Nullable(String), score Nullable(Int32), day Nullable(String)', 'day'). #34946 (lgbo).
  • دعم مصادقة المستخدمين المتصلين عبر SSL باستخدام شهادة X.509 الخاصة بهم. #31484 (eungenue).
  • دعم schema inference عند insert إلى table functions file/hdfs/s3/url. #34732 (Kruglov Pavel).
  • يمكنك الآن قراءة جدول system.zookeeper بدون قيود على path أو باستخدام expression like. قد تؤدي هذه القراءات إلى حمل كبير نسبيًا على ZooKeeper، لذا لتمكين هذه الإمكانية عليك تفعيل setting ‏allow_unrestricted_reads_from_keeper. #34609 (Sergei Trifonov).
  • عرض metrics الخاصة بـ CPU وmemory في clickhouse-local. يُغلق #34545. #34605 (李扬).
  • تنفيذ الدالتين startsWith وendsWith للمصفوفات، يُغلق #33982. #34368 (usurai).
  • إضافة ثلاث دوال لنوع البيانات Map: 1. mapReplace(map1, map2) - تستبدل قيم المفاتيح في map1 بقيم المفاتيح المناظرة في map2، وتضيف المفاتيح من map2 غير الموجودة في map1. 2. mapFilter 3. mapMap. الدالتان mapFilter وmapMap هما دالتان من الرتبة العليا، وتقبلان argumentين: الأول lambda function تأخذ الزوج k, v كـ argumentين، والثاني column من النوع Map. #33698 (hexiaoting).
  • السماح بالحصول على default user وpassword لـ clickhouse-client من متغيرَي البيئة CLICKHOUSE_USER وCLICKHOUSE_PASSWORD. يُغلق #34538. #34947 (DR).

ميزة تجريبية

  • نوع بيانات جديد Object(<schema_format>) يدعم تخزين البيانات شبه المهيكلة (حاليًا JSON فقط). تُكتب البيانات في هذه الأنواع كسلسلة نصية. ثم تُستخرج جميع المسارات وفقًا لتنسيق البيانات شبه المهيكلة وتُكتب كأعمدة منفصلة باستخدام أكثر الأنواع ملاءمةً لتخزين جميع قيمها. ويمكن الاستعلام عن هذه الأعمدة بأسماء تطابق المسارات في البيانات المصدر. مثلًا data.key1.key2 أو باستخدام عامل cast ‏data.key1.key2::Int64.
  • تمت إضافة الإعداد database_replicated_allow_only_replicated_engine. عند تمكينه، لا يُسمح إلا بإنشاء جداول Replicated أو جداول بمحركات عديمة الحالة في قواعد البيانات Replicated. #35214 (Nikolai Kochetov). لاحظ أن قاعدة البيانات Replicated لا تزال ميزة تجريبية.

تحسين الأداء

  • تحسين أداء الإدراج في جداول MergeTree عبر تحسين الفرز. وقد لوحظ تحسن يصل إلى الضعف في اختبارات قياس أداء واقعية. #34750 (Maksim Kita).
  • استبعاد الأعمدة غير اللازمة عند قراءة ملفات Parquet وORC وArrow من URL وS3. إغلاق #34163. #34849 (Kseniia Sumarokova).
  • استبعاد الأعمدة غير اللازمة عند قراءة ملفات Parquet وORC وArrow من Hive. #34954 (lgbo).
  • مجموعة من تحسينات الأداء من خبير أداء متميّز. تحسين أداء معالجة الاستعلامات التي تحتوي على قسم IN كبير. تحسين أداء قاموس direct إذا كان مصدره ClickHouse. تحسين أداء الدالتين detectCharset وdetectLanguageUnknown . #34888 (Maksim Kita).
  • تحسين أداء دالة التجميع any عبر زيادة المعالجة على دفعات. #34760 (Raúl Marín).
  • تحسينات متعددة على أداء clickhouse-keeper: تقليل الإقفال #35010 (zhanglistar)، وخفض استخدام الذاكرة عبر القراءة والكتابة المتدفقتين لـ snapshot بدلاً من النسخ الكامل. #34584 (zhanglistar)، وتحسين compaction لمخزن السجل في تنفيذ RAFT. #34534 (zhanglistar)، وإضافة إصدار لبنية البيانات الداخلية #34486 (zhanglistar).

تحسينات

  • السماح بعمليات الإدراج غير المتزامنة في دوال الجداول. يُصلح #34864. #34866 (Anton Popov).
  • تحويل نوع ضمني لوسيطة المفتاح في الدوال dictGetHierarchy وdictIsIn وdictGetChildren وdictGetDescendants. يُغلق #34970. #35027 (Maksim Kita).
  • يمكن للاستعلام EXPLAIN AST إخراج AST على شكل رسم بياني بتنسيق Graphviz: EXPLAIN AST graph = 1 SELECT * FROM system.parts. #35173 (李扬).
  • عند كتابة ملفات كبيرة باستخدام دالة الجدول أو محرك الجدول s3، كان نوع المحتوى للملفات يُضبط بالخطأ على application/xml بسبب خلل في AWS SDK. يُغلق هذا #33964. #34433 (Alexey Milovidov).
  • تعديل سياسات الصفوف التقييدية قليلًا لجعلها بديلًا أسهل من السياسات التساهلية في الحالات البسيطة. إذا كانت هناك لجدول معيّن سياسات تقييدية فقط (من دون سياسات تساهلية)، فسيتمكن المستخدمون من رؤية بعض الصفوف. كذلك، سيعرض SHOW CREATE ROW POLICY دائمًا AS permissive أو AS restrictive في تعريف سياسة الصفوف. #34596 (Vitaly Baranov).
  • تحسين استنتاج المخطط باستخدام globs في محركات File/S3/HDFS/URL. ومحاولة استخدام المسار التالي لاستنتاج المخطط عند حدوث خطأ. #34465 (Kruglov Pavel).
  • أصبحت واجهة Play تكتشف الآن بشكل صحيح النمط الفاتح/الداكن المفضل من نظام التشغيل. #35068 (peledni).
  • تمت إضافة date_time_input_format = 'best_effort_us'. يُغلق #34799. #34982 (WenYao).
  • أُضيف إعدادان جديدان هما allow_plaintext_password وallow_no_password إلى تهيئة الخادم، لتفعيل/تعطيل أنواع المصادقة التي قد تكون غير آمنة في بعض البيئات. وهما مفعّلان افتراضيًا. #34738 (Heena Bansal).
  • دعم نوع البيانات DateTime64 في التنسيق Arrow، يُغلق #8280 ويُغلق #28574. #34561 (李扬).
  • إعادة تحميل remote_url_allow_hosts (تصفية الاتصالات الصادرة) عند تحديث config. #35294 (Nikolai Kochetov).
  • دعم المعامل --testmode في clickhouse-local. يتيح هذا المعامل تفسير تلميحات الاختبار التي نستخدمها في الاختبارات الوظيفية. #35264 (Kseniia Sumarokova).
  • إضافة distributed_depth إلى سجل الاستعلامات. وهو أشبه بنسخة أكثر تفصيلًا من is_initial_query #35207 (李扬).
  • مراعاة remote_url_allow_hosts لدوال الجداول MySQL وPostgreSQL. #35191 (Heena Bansal).
  • أُضيف الحقل disk_name إلى system.part_log. #35178 (Artyom Yurkov).
  • عدم إعادة المحاولة عند حدوث أخطاء غير قابلة لإعادة المحاولة أثناء الاستعلام عن عناوين URL البعيدة. يُغلق هذا #35161. #35172 (Kseniia Sumarokova).
  • دعم استعلامات INSERT SELECT الموزعة (الإعداد parallel_distributed_insert_select) في دالة الجدول view(). #35132 (Azat Khuzhin).
  • تتبّع أدق للذاكرة أثناء INSERT إلى Buffer مع AggregateFunction. #35072 (Azat Khuzhin).
  • تجنّب القسمة على الصفر في Query Profiler إذا كانت نواة Linux تحتوي على خلل. يُغلق هذا #34787. #35032 (Alexey Milovidov).
  • إضافة المزيد من فحوصات السلامة إلى إعداد Keeper: لم يعد مسموحًا الآن بالجمع بين localhost وخوادم غير محلية، كما أُضيفت فحوصات للتحقق من تطابق قيمة منفذ raft الداخلي ومنفذ عميل Keeper. #35004 (alesapin).
  • حاليًا، إذا غيّر المستخدم إعدادات جداول النظام، فسيؤدي ذلك إلى ظهور كمّ كبير من السجلات وسيُعيد ClickHouse تسمية الجداول كل دقيقة. يُصلح هذا #34929. #34949 (Nikita Mikhaylov).
  • استخدام connection pool لعميل Hive metastore. #34940 (lgbo).
  • تجاهل TTL على مستوى كل عمود في CREATE TABLE AS إذا كان محرك الجدول الجديد لا يدعمه (أي إذا لم يكن المحرك من عائلة MergeTree). #34938 (Azat Khuzhin).
  • السماح بسلاسل LowCardinality للفهارس ngrambf_v1/tokenbf_v1. يُغلق هذا #21865. #34911 (Lars Hiller Eidnes).
  • السماح بفتح قاعدة بيانات sqlite فارغة إذا لم يكن الملف موجودًا. يُغلق هذا #33367. #34907 (Kseniia Sumarokova).
  • تنفيذ إحصاءات للذاكرة في FreeBSD — وهذا مطلوب لكي يعمل max_server_memory_usage بشكل صحيح. #34902 (Alexandre Snarskii).
  • في الإصدارات السابقة، كان شريط التقدّم في clickhouse-client قد يقفز إلى الأمام قرب 50% دون سبب واضح. يُغلق هذا #34324. #34801 (Alexey Milovidov).
  • أصبحت استعلامات ALTER TABLE DROP COLUMN columnX لمحركات الجداول MergeTree تعمل فورًا عندما يكون columnX عمودًا من نوع ALIAS. يُصلح #34660. #34786 (alesapin).
  • عرض تلميحات عندما يخطئ المستخدم في كتابة اسم data skipping index. يُغلق #29698. #34764 (flynn).
  • دعم table functions ‏remote()/cluster()‎ لـ parallel_distributed_insert_select. #34728 (Azat Khuzhin).
  • عدم إعادة ضبط التسجيل الذي جرى إعداده عبر خياري سطر الأوامر --log-file/--errorlog-file في حال كانت التهيئة في ملف الإعدادات فارغة. #34718 (Amos Bird).
  • استخراج المخطط مرة واحدة فقط عند إنشاء الجدول، ومنع القراءة من الملفات المحلية/المصادر الخارجية لاستخراج المخطط عند كل بدء تشغيل للخادم. #34684 (Kruglov Pavel).
  • السماح بتحديد أسماء الوسائط لـ UDFs التنفيذية. وهذا ضروري للتنسيقات التي يكون فيها اسم الوسيط جزءًا من serialization، مثل Native وJSONEachRow. يُغلق #34604. #34653 (Maksim Kita).
  • أصبح MaterializedMySQL (ميزة تجريبية) يدعم الآن materialized_mysql_tables_list (قائمة مفصولة بفواصل لجداول قاعدة بيانات MySQL، ستُنسخ باستخدام محرك قاعدة البيانات MaterializedMySQL. القيمة الافتراضية: قائمة فارغة — ما يعني أنه ستُنسخ جميع الجداول)، كما ورد في #32977. #34487 (zzsmdfj).
  • تحسين سجلات span في OpenTelemetry لعملية INSERT على distributed table. #34480 (Frank Chen).
  • جعل ctime وmtime الخاصين بـ znode متسقين بين الخوادم في ClickHouse Keeper. #33441 (小路).

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

  • تم ترحيل مستودع الحزم إلى JFrog Artifactory (Mikhail f. Shiryaev).
  • جرى جعل بعض الإعدادات عشوائية في الاختبارات الوظيفية، بحيث يجري اختبار عدد أكبر من التركيبات الممكنة للإعدادات. وهذه طريقة إضافية من أساليب الاختبار بالتشويش لضمان تغطية اختبارية أفضل. ويغلق هذا #32268. #34092 (Kruglov Pavel).
  • إزالة PVS-Studio من CI لدينا. #34680 (Mikhail f. Shiryaev).
  • إضافة إمكانية بناء ملفات تنفيذية منزوعٍ منها الرموز باستخدام CMake. في الإصدارات السابقة، كانت هذه العملية تُنفَّذ بواسطة dh-tools. #35196 (alesapin).
  • إصدار build أصغر “fat-free” لـ clickhouse-keeper. #35031 (alesapin).
  • استخدام @robot-clickhouse بصفته author وcommitter لطلبات السحب مثل https://github.com/ClickHouse/ClickHouse/pull/34685. #34793 (Mikhail f. Shiryaev).
  • تقييد إصدار DWARF المستخدم لمعلومات Debug بحد أقصى 4، لأن محلل رموز المكدس الداخلي لدينا لا يستطيع parse لإصدار DWARF 5. ويكون هذا منطقيًا إذا كنت تقوم compile لـ ClickHouse باستخدام clang-15. #34777 (Alexey Milovidov).
  • إزالة حزمة Debian clickhouse-test لأنها تضيف تعقيدًا غير ضروري. يستخدم CI الاختبارات من repository، ولم يعد الاختبار المستقل عبر حزمة deb مدعومًا. #34606 (Ilya Yatsishin).

إصلاح خطأ (خلل يلاحظه المستخدم في إصدار مستقر رسمي أو إصدار رسمي ما قبل الاستقرار)

  • إصلاح لتكامل HDFS: عندما يكون حجم المخزن المؤقت الداخلي صغيرًا جدًا، فإن NEED_MORE_INPUT في HadoopSnappyDecoder قد يعمل عدة مرات (>=3) لكتلة مضغوطة واحدة. يؤدي ذلك إلى نسخ بيانات الإدخال إلى موضع غير صحيح في HadoopSnappyDecoder::buffer. #35116 (lgbo).
  • تجاهل امتيازات GRANT المتقادمة في عبارات ATTACH GRANT. يعالج طلب السحب هذا #34815. #34855 (Vitaly Baranov).
  • إصلاح segfault في قاعدة بيانات Postgres عند الحصول على استعلام إنشاء الجدول إذا كانت قاعدة البيانات قد أُنشئت باستخدام named collections. يغلق #35312. #35313 (Kseniia Sumarokova).
  • إصلاح خطأ تكرار الصفوف في partial merge join، يغلق #31009. #35311 (Vladimir C).
  • إصلاح احتمال حدوث Assertion 'position() != working_buffer.end()' failed أثناء استخدام ضغط bzip2 مع قيمة صغيرة للإعداد max_read_buffer_size. اكتُشف هذا الخطأ في https://github.com/ClickHouse/ClickHouse/pull/35047. #35300 (Kruglov Pavel). وأثناء استخدام ضغط lz4 مع قيمة صغيرة للإعداد max_read_buffer_size. #35296 (Kruglov Pavel). وأثناء استخدام ضغط lzma مع قيمة صغيرة للإعداد max_read_buffer_size. #35295 (Kruglov Pavel). وأثناء استخدام ضغط brotli مع قيمة صغيرة للإعداد max_read_buffer_size. اكتُشف هذا الخطأ في https://github.com/ClickHouse/ClickHouse/pull/35047. #35281 (Kruglov Pavel).
  • إصلاح احتمال حدوث segfault في استدلال المخطط لـ JSONEachRow. #35291 (Kruglov Pavel).
  • إصلاح استعلام CHECK TABLE في حال كانت الأعمدة المتفرقة مُمكّنة في الجدول. #35274 (Anton Popov).
  • تجنب std::terminate في حال حدوث استثناء أثناء القراءة من VFS البعيد. #35257 (Azat Khuzhin).
  • إصلاح قراءة المنفذ من ملف الإعدادات، يغلق #34776. #35193 (Vladimir C).
  • إصلاح خطأ في استعلام يحتوي على WITH TOTALS في حال أعاد HAVING نتيجة فارغة. يعالج هذا #33711. #35186 (Amos Bird).
  • إصلاح حالة حدية في replaceRegexpAll، يغلق #35117. #35182 (Vladimir C).
  • لم يعمل استدلال المخطط بشكل صحيح في حالة INSERT INTO FUNCTION s3(...) FROM ...، إذ حاول قراءة المخطط من ملف s3 بدلاً من استعلام select. #35176 (Kruglov Pavel).
  • إصلاح table overrides في MaterializedPostgreSQL (ميزة تجريبية) لـ partition by وما شابه. يغلق #35048. #35162 (Kseniia Sumarokova).
  • إصلاح إضافة table جديدة إلى replication في MaterializedPostgreSQL (ميزة تجريبية) باستخدام ‏(ATTACH TABLE) بعد إزالتها يدويًا باستخدام ‏(DETACH TABLE). يغلق #33800. يغلق #34922. يغلق #34315. #35158 (Kseniia Sumarokova).
  • إصلاح خطأ تقليم الأقسام عند استخدام دالة غير رتيبة مع العامل IN. هذا يصلح #35136. #35146 (Amos Bird).
  • إصلاح عدم الدقة البسيطة في تحويل إعدادات YAML إلى XML. #35135 (Miel Donkers).
  • إصلاح optimize_skip_unused_shards_rewrite_in للأعمدة الموقعة والقيم السالبة. #35134 (Azat Khuzhin).
  • كان خيار إعداد update_lag في تهيئة القاموس الخارجي غير قابل للاستخدام، إذ كان يعرض رسالة الخطأ Unexpected key `update_lag` in dictionary source configuration. #35089 (Jason Chu).
  • تجنب احتمال حدوث توقف متبادل عند إيقاف server. #35081 (Azat Khuzhin).
  • إصلاح alias المفقود بعد تحسين الدالة إلى subcolumn عند تمكين الإعداد optimize_functions_to_subcolumns. يغلق #33798. #35079 (qieqieplus).
  • إصلاح القراءة من table ‏system.asynchronous_inserts إذا وُجد insert غير متزامن إلى table function. #35050 (Anton Popov).
  • إصلاح الاستثناء المحتمل Reading for MergeTree family tables must be done with last position boundary (وهو مرتبط بالعمليات على VFS البعيد). يغلق #34979. #35001 (Kseniia Sumarokova).
  • إصلاح النتيجة غير المتوقعة عند استخدام دالة aggregate من النوع -State ضمن إطار window. #34999 (metahys).
  • إصلاح احتمال حدوث segfault في FileLog (ميزة تجريبية). يغلق #30749. #34996 (Kseniia Sumarokova).
  • إصلاح الخطأ النادر المحتمل Cannot push block to port which already has data. #34993 (Nikolai Kochetov).
  • إصلاح استنتاج المخطط الخاطئ للتواريخ غير المحاطة بعلامتَي اقتباس في CSV. يُغلق #34768. #34961 (Kruglov Pavel).
  • التكامل مع Hive: إصلاح النتيجة غير المتوقعة عند استخدام in في where داخل استعلام Hive. #34945 (lgbo).
  • تجنّب الـpolling المشغول في ClickHouse Keeper أثناء البحث عن ملفات changelog المطلوب حذفها. #34931 (Azat Khuzhin).
  • إصلاح تحويل DateTime64 من PostgreSQL. يُغلق #33364. #34910 (Kseniia Sumarokova).
  • إصلاح احتمال ظهور الخطأ “Part directory doesn’t exist” أثناء INSERT إلى جدول MergeTree يعتمد على VFS فوق S3. #34876 (Azat Khuzhin).
  • دعم تنفيذ عبارات DDLs مثل CREATE USER على cluster متماثل النسخ المتقاطع. #34860 (Jianmei Zhang).
  • إصلاح أخطاء GROUP BY على عدة أعمدة في WindowView (ميزة تجريبية). #34859 (vxider).
  • إصلاح حالات الفشل المحتملة في دوال S2 عندما تحتوي الاستعلامات على أعمدة ثابتة. #34745 (Bharat Nallan).
  • إصلاح خطأ في دوال H3 التي تحتوي على أعمدة ثابتة ويتسبب في فشل الاستعلامات. #34743 (Bharat Nallan).
  • إصلاح الخطأ No such file or directory عند تفعيل fsync_part_directory وvertical merge. #34739 (Azat Khuzhin).
  • إصلاح التسلسل/الطباعة لاستعلامات النظام RELOAD MODEL, RELOAD FUNCTION, RESTART DISK عند استخدام ON CLUSTER. يُغلق #34514. #34696 (Maksim Kita).
  • إصلاح allow_experimental_projection_optimization مع enable_global_with_statement (إذ كان قد يؤدي سابقًا إلى الخطأ Stack size too large عند وجود عدة expressions في عبارة WITH، كما كان يعيد تنفيذ الاستعلامات الفرعية scalar مرارًا، لذا سيصبح الآن أكثر كفاءة). #34650 (Azat Khuzhin).
  • التوقف عن اختيار part لإجراء mutate عليه عندما تكون replica الأخرى قد حدّثت بالفعل سجل المعاملات لمحرك ReplatedMergeTree. #34633 (Jianmei Zhang).
  • إصلاح النتيجة غير الصحيحة لاستعلام count بسيط عند استخدام ميزة نقل part #34089. #34385 (nvartolomei).
  • إصلاح عدم اتساق قيد max_query_size في الاستعلامات الفرعية الموزعة. #34078 (Chao Ma).

إصدار ClickHouse v22.2، 2022-02-17. العرض التقديمي، الفيديو

ملاحظات الترقية

  • قد يؤدي تطبيق فهارس تخطي البيانات على الاستعلامات التي تتضمن FINAL إلى نتائج غير صحيحة. في هذا الإصدار، عطّلنا فهارس تخطي البيانات افتراضيًا للاستعلامات التي تتضمن FINAL (أُضيف إعداد جديد use_skip_indexes_if_final وهو معطّل افتراضيًا). #34243 (Azat Khuzhin).

ميزة جديدة

  • أصبحت projections جاهزة لبيئات production. تم تفعيل allow_experimental_projection_optimization افتراضيًا مع إهمال هذا الإعداد. #34456 (Nikolai Kochetov).
  • إضافة خيار لإنشاء ملفات جديدة عند insert لمحركات File/S3/HDFS. كما أصبح مسموحًا بالكتابة فوق ملف في HDFS. وبشكل افتراضي، سيجري طرح استثناء عند محاولة الكتابة فوق ملف في S3. كذلك سيجري طرح استثناء عند محاولة إلحاق بيانات بملف في formats التي لها suffix (ولذلك لا تدعم الإلحاق)، مثل Parquet وORC. يغلق #31640 يغلق #31622 يغلق #23862 يغلق #15022 يغلق #16674. #33302 (Kruglov Pavel).
  • إضافة إعداد يتيح للمستخدم تحديد دلالات deduplication الخاصة به في MergeTree/ReplicatedMergeTree. وعند توفيره، يُستخدم بدلًا من بصمة البيانات لتوليد معرّف block. لذلك، على سبيل المثال، يمكن للمستخدم، عبر تمرير قيمة فريدة لهذا الإعداد في كل statement من نوع INSERT، تجنب اعتبار البيانات inserted نفسها مكررة ومن ثم deduplicated. هذا يغلق: #7461. #32304 (Igor Nikonov).
  • إضافة دعم الكلمة المفتاحية DEFAULT لعبارات INSERT. يغلق #6331. #33141 (Andrii Buriachevskyi).
  • تمت إضافة محدد column ‏EPHEMERAL إلى query ‏CREATE TABLE. يغلق #9436. #34424 (yakov-olkhovskiy).
  • إضافة دعم clause ‏IF EXISTS للميزة TTL expr TO [DISK|VOLUME] [IF EXISTS] 'xxx'. لن تُنقل parts إلى disk أو volume إلا إذا كان موجودًا على replica، ما يتيح لقواعد MOVE TTL أن تتصرف بشكل مختلف بين replicas وفقًا لـ policies التخزين الموجودة. يعالج #34455. #34504 (Anton Popov).
  • السماح بتعيين table engine افتراضي وإنشاء جداول من دون تحديد ENGINE. #34187 (Ilya Yatsishin).
  • إضافة table function ‏format(format_name, data). #34125 (Kruglov Pavel).
  • اكتشاف format في clickhouse-local من اسم الملف حتى عند تمريره عبر stdin. #33829 (Kruglov Pavel).
  • إضافة schema inference إلى table function ‏values. يغلق #33811. #34017 (Kruglov Pavel).
  • إعادة التحميل الديناميكي لشهادات TLS الخاصة بالخادم عند إعادة تحميل الإعدادات. يُغلق #15764. #15765 (johnskopis). #31257 (Filatenkov Artur).
  • يمكن لـ ReplicatedMergeTree الآن استعادة البيانات عند تعطل بعض الأقراص لديه. #13544 (Amos Bird).
  • اتصالات متحمّلة للأعطال في clickhouse-client: clickhouse-client ... --host host1 --host host2 --port port2 --host host3 --port port --host host4. #34490 (Kruglov Pavel). #33824 (Filippov Denis).
  • إضافة الدالتين DEGREES وRADIANS للتوافق مع MySQL. #33769 (Bharat Nallan).
  • إضافة الدالة h3ToCenterChild. #33313 (Bharat Nallan). وإضافة دوال h3 متنوعة جديدة: edgeLengthKm,exactEdgeLengthKm,exactEdgeLengthM,exactEdgeLengthRads,numHexagons. #33621 (Bharat Nallan).
  • إضافة الدالة bitSlice لاستخراج تتابعات bit الفرعية من String/FixedString. #33360 (RogerYK).
  • تنفيذ الدالة التجميعية meanZTest. #33354 (achimbab).
  • إضافة فترات الثقة إلى الدوال التجميعية لاختبارات T. #33260 (achimbab).
  • إضافة الدالة addressToLineWithInlines. يُغلق #26211. #33467 (SuperDJY).
  • تمت إضافة #! و# كبداية معترف بها للتعليق أحادي السطر. يُغلق #34138. #34230 (Aaron Katz).

ميزة تجريبية

  • دوال لتصنيف النصوص: اكتشاف اللغة وترميز المحارف. انظر #23271. #33314 (Nikolay Degterinsky).
  • إضافة ميزة memory overcommit إلى MemoryTracker. أُضيفت إعدادات guaranteed لحدود الذاكرة، وتمثل حدودًا مرنة للذاكرة. وعند الوصول إلى الحد الصارم للذاكرة، يحاول MemoryTracker إلغاء الاستعلام الأكثر تجاوزًا للتخصيص. ويحدد الإعداد الجديد memory_usage_overcommit_max_wait_microseconds المدة التي يمكن أن تنتظر خلالها الاستعلامات حتى يتوقف استعلام آخر. يغلق #28375. #31182 (Dmitry Novik).
  • تمكين join بين التدفق والجدول في WindowView. #33729 (vxider).
  • دعم أنواع البيانات SET وYEAR وTIME وGEOMETRY في MaterializedMySQL (ميزة تجريبية). يعالج #18091، #21536، #26361. #33429 (zzsmdfj).
  • إصلاح مشكلات متعددة عندما يكون projection مفعّلًا افتراضيًا. وُصفت كل مشكلة في commit منفصل. هذا مرتبط بـ #33678. ويعالج هذا #34273. #34305 (Amos Bird).

تحسين الأداء

  • دعم optimize_read_in_order إذا كانت بادئة مفتاح الترتيب مرتبة بالفعل. على سبيل المثال، إذا كان لدينا مفتاح ترتيب ORDER BY (a, b) في جدول، واستعلام يتضمن WHERE a = const ORDER BY b، فستُنفَّذ القراءة الآن وفق ترتيب مفتاح الترتيب بدلًا من الفرز الكامل. #32748 (Anton Popov).
  • تحسين أداء insert المقسّم إلى partitionات ضمن table functions ‏URL وS3 وFile وHDFS. يُغلق #34348. #34510 (Maksim Kita).
  • عدة تحسينات في أداء clickhouse-keeper. #34484 #34587 (zhanglistar).
  • تحسين أداء FlatDictionary عند تحميل بيانات القاموس. #33871 (Maksim Kita).
  • تحسين أداء الدالة mapPopulateSeries. يُغلق #33944. #34318 (Maksim Kita).
  • جُعل العمودان الافتراضيان _file و_path (في table engines الشبيهة بالملفات) من النوع LowCardinality، ما سيجعل queries على ملفات متعددة أسرع. يُغلق #34300. #34317 (flynn).
  • تسريع تحميل data parts. لم يكن ذلك يُنفَّذ بالتوازي سابقًا، إذ لم يكن للإعداد part_loading_threads أي تأثير. انظر #4699. #34310 (alexey-milovidov).
  • تحسين أداء format ‏LineAsString. هذا يُغلق #34303. #34306 (alexey-milovidov).
  • تحسين quantilesExact{Low,High} لاستخدام nth_element بدلًا من sort. #34287 (Danila Kutenin).
  • تحسين طفيف في أداء format ‏Regexp. #34202 (alexey-milovidov).
  • تحسين بسيط لتحليل الاستعلامات الفرعية القيَمية. #34128 (Federico Rodriguez).
  • جعل ORDER BY على tuple يكاد يكون بنفس سرعة ORDER BY على الأعمدة. لدينا تحسينات خاصة لـ ORDER BY متعدد الأعمدة: https://github.com/ClickHouse/ClickHouse/pull/10831 . ومن المفيد أيضًا تطبيقها على أعمدة tuple. #34060 (Amos Bird).
  • إعادة العمل على cache الخاصة بالاستعلامات الفرعية القيَمية وإعادتها إلى تنفيذ materialized views. #33958 (Raúl Marín).
  • تحسين طفيف في أداء ORDER BY عبر إضافة دعم x86-64 AVX-512 إلى دوال memcmpSmall لتسريع مقارنة الذاكرة. لا يعمل ذلك إلا إذا قمتَ بتجميع ClickHouse بنفسك. #33706 (hanqf-git).
  • تحسين أداء القاموس range_hashed عندما يكون هناك عدد كبير من الفترات للمفتاح. يُصلح #23821. #33516 (Maksim Kita).
  • في عمليات insert وmerge إلى S3، تُكتب الملفات بالتوازي كلما أمكن ذلك (TODO: تحقّق مما إذا كان قد تم دمجه). #33291 (Nikolai Kochetov).
  • تحسين أداء clickhouse-keeper وإصلاح عدة تسرّبات للذاكرة في مكتبة NuRaft. #33329 (alesapin).

تحسين

  • دعم الإدراجات غير المتزامنة في clickhouse-client للاستعلامات التي تتضمن بيانات مضمنة. #34267 (Anton Popov).
  • تقوم الدالتان dictGet وdictHas بتحويل وسيطة المفتاح ضمنيًا إلى بنية مفتاح القاموس إذا اختلفا. #33672 (Maksim Kita).
  • تحسينات على قواميس range_hashed. تحسين أداء وقت التحميل عند وجود سمات متعددة. والسماح بإنشاء قاموس بلا سمات. وأُضيف خيار لتحديد الاستراتيجية عندما يكون الفاصلان start وend من النوع Nullable، وتكون القيمة الافتراضية لـ convert_null_range_bound_to_open هي true. يُغلق #29791. كما أصبح بالإمكان تحديد Float وDecimal وDateTime64 وInt128 وInt256 وUInt128 وUInt256 كأنواع للنطاق. وأُضيف في RangeHashedDictionary دعم لقيم النطاق التي تتجاوز النوع Int64. يُغلق #28322. وأُضيف الخيار range_lookup_strategy لتحديد نوع البحث في النطاق min أو max، وتكون القيمة الافتراضية min. يُغلق #21647. وتم إصلاح حسابات البايتات المخصصة. كما تم إصلاح اسم النوع في system.dictionaries في حالة ComplexKeyHashedDictionary. #33927 (Maksim Kita).
  • تدعم قواميس flat وhashed وhashed_array الآن الإنشاء بسمات فارغة، مع دعم قراءة المفاتيح واستخدام dictHas. يُصلح #33820. #33918 (Maksim Kita).
  • أُضيف دعم نوع البيانات DateTime64 في القواميس. #33914 (Maksim Kita).
  • أصبح بالإمكان كتابة s3(url, access_key_id, secret_access_key) (مع الاكتشاف التلقائي لتنسيق البيانات وبنية الجدول، ولكن باستخدام بيانات اعتماد صريحة). #34503 (Kruglov Pavel).
  • أُضيف إرسال تنسيق الإخراج مرة أخرى إلى العميل، كما هو الحال في HTTP protocol، وفقًا لما اقتُرح في #34362. يُغلق #34362. #34499 (Vitaly Baranov).
  • إرسال إحصاءات ProfileEvents في حالة استعلام INSERT SELECT (لعرض مقاييس الاستعلام في clickhouse-client لهذا النوع من الاستعلامات). #34498 (Dmitry Novik).
  • التعرّف على الامتداد .jsonl لتنسيق JSONEachRow. #34496 (Kruglov Pavel).
  • تحسين استنتاج المخطط في clickhouse-local. أصبح بالإمكان الاكتفاء بكتابة clickhouse-local -q "select * from table" < data.format. #34495 (Kruglov Pavel).
  • يمكن الآن منح امتيازات CREATE/ALTER/DROP ROW POLICY على جدول، أو على database.*، وكذلك على مستوى عام *.*. #34489 (Vitaly Baranov).
  • السماح بتصدير ملفات كبيرة بأي حجم إلى s3. تمت إضافة إعدادين جديدين: s3_upload_part_size_multiply_factor و s3_upload_part_size_multiply_parts_count_threshold. والآن، في كل مرة يصل فيها عدد الأجزاء المرفوعة إلى S3 من استعلام واحد إلى s3_upload_part_size_multiply_parts_count_threshold، يُضرَب s3_min_upload_part_size في s3_upload_part_size_multiply_factor. يعالج #34244. #34422 (alesapin).
  • السماح بتخطي عناوين URL غير الموجودة (404) للأنماط العامة عند استخدام تخزين URL / دالة الجدول. ويغلق أيضًا #34359. #34392 (Kseniia Sumarokova).
  • تنسيقات الإدخال والإخراج الافتراضية لـ clickhouse-local، ويمكن تجاوزها باستخدام —input-format و —output-format. يغلق #30631. #34352 (李扬).
  • إضافة خيارات إلى clickhouse-format، وهي: max_query_size و max_parser_depth. ما يغلق #30528. #34349 (李扬).
  • تحسين التعامل مع المدخلات المسبقة قبل بدء العميل. هذا لأجل #34308. #34336 (Amos Bird).
  • إضافة أسماء بديلة للدالتين REGEXP_MATCHES و REGEXP_REPLACE للتوافق مع PostgreSQL. يغلق #30885. #34334 (李扬).
  • تتوقع بعض الخوادم وجود ترويسة User-Agent في طلبات HTTP الخاصة بها. تمت إضافة ترويسة User-Agent إلى طلبات HTTP بالشكل التالي: User-Agent: ClickHouse/VERSION_STRING. #34330 (Saad Ur Rahman).
  • إلغاء عمليات الدمج قبل الحصول على قفل الجدول لاستعلام TRUNCATE لتجنب الخطأ DEADLOCK_AVOIDED في بعض الحالات. يعالج #34302. #34304 (tavplubix).
  • تغيير مستوى الشدة للرسالة “Cancelled merging parts” في السجلات، لأنها ليست خطأ. هذا يغلق #34148. #34232 (alexey-milovidov).
  • إضافة إمكانية تركيب عامل التحويل بأسلوب PostgreSQL :: مع التعبيرات التي تستخدم العاملين [] و . (فهرسة المصفوفات وTuple). #34229 (Nikolay Degterinsky).
  • التعرّف على التنسيق YYYYMMDD-hhmmss في الدالة parseDateTimeBestEffort. هذا يغلق #34206. #34208 (alexey-milovidov).
  • السماح باستخدام محرف إرجاع العربة في وسط السطر أثناء التحليل بواسطة التنسيق Regexp. هذا يغلق #34200. #34205 (alexey-milovidov).
  • السماح بتحليل PRIMARY KEY الخاص بالقاموس بالصيغة PRIMARY KEY (id, value)؛ إذ كان المدعوم سابقًا فقط PRIMARY KEY id, value. يُغلق #34135. #34141 (Maksim Kita).
  • إضافة وسيطة اختيارية إلى splitByChar لتقييد عدد العناصر الناتجة. يُغلق #34081. #34140 (李扬).
  • تحسين تجربة تحرير الأسطر المتعددة في clickhouse-client. وهذا استكمال لـ #31123. #34114 (Amos Bird).
  • إضافة دعم UUID في format الإدخال/الإخراج MsgPack. #34065 (Kruglov Pavel).
  • أصبح سياق التتبّع (لـ OpenTelemetry) يُمرَّر الآن من metadata عميل GRPC (وهذا التغيير مرتبط ببروتوكول GRPC بين العميل والخادم). #34064 (andremarianiello).
  • دعم جميع أنواع استعلامات SYSTEM مع clause ‏ON CLUSTER. #34005 (小路).
  • تحسين احتساب الذاكرة للاستعلامات التي تستخدم أقل من max_untracker_memory. #34001 (Azat Khuzhin).
  • إصلاح البحث غير الحساس لحالة الأحرف في UTF-8 string عندما تُمثَّل الأحرف الصغيرة والكبيرة بعدد مختلف من البايتات. ومن الأمثلة على ذلك وß. يُغلق هذا #7334. #33992 (Harry Lee).
  • اكتشاف format وschema من stdin في clickhouse-local. #33960 (Kruglov Pavel).
  • التعامل بشكل صحيح مع حالة سوء configuration عندما تستخدم عدة disks المسار نفسه على filesystem. #29072. #33905 (zhongyuankai).
  • تجربة كل عنوان IP تم تحليله عند الحصول على S3 proxy. نادرًا ما تُستخدم وسطاء S3، وغالبًا ما يكون ذلك في Yandex Cloud. #33862 (Nikolai Kochetov).
  • دعم استعلام EXPLAIN AST CREATE FUNCTION؛ إذ إن EXPLAIN AST CREATE FUNCTION mycast AS (n) -> cast(n as String) سيُرجع EXPLAIN AST CREATE FUNCTION mycast AS n -> CAST(n, 'String'). #33819 (李扬).
  • إضافة دعم للتحويل من Map(Key, Value) إلى Array(Tuple(Key, Value)). #33794 (Maksim Kita).
  • إضافة بعض التحسينات والإصلاحات إلى نوع البيانات Bool. يُصلح #33244. #33737 (Kruglov Pavel).
  • تحليل trace-id الخاص بـ OpenTelemetry وتخزينه بترتيب big-endian. #33723 (Frank Chen).
  • تحسين وظائف عائلة fromUnixTimestamp64.. إذ أصبحت الآن تقبل أي قيمة صحيحة يمكن تحويلها إلى Int64. وهذا يُغلق: #14648. #33505 (Andrey Zvonov).
  • إعادة تنفيذ _shard_num من الثوابت (انظر #7624) باستخدام الدالة shardNum() (انظر #27020)، لتجنّب المشكلات المحتملة (مثل تلك التي اكتُشفت في #16947). #33392 (Azat Khuzhin).
  • تمكين العمليات الحسابية الثنائية (الجمع والطرح والضرب والقسمة و least و greatest) بين Decimal و Float. #33355 (flynn).
  • مراعاة حدود cgroups عند الاكتشاف التلقائي لـ max_threads. #33342 (JaySon).
  • إضافة إعداد جديد min_session_timeout_ms إلى clickhouse-keeper. سيحدّد clickhouse-keeper الآن مهلة session الخاصة بالعميل وفقًا للإعدادين min_session_timeout_ms و session_timeout_ms. #33288 (JackyWoo).
  • أُضيف دعم Data type UUID للدالتين hex و bin. #32170 (Frank Chen).
  • إصلاح قراءة subcolumns التي تحتوي أسماؤها على نقاط. وعلى وجه الخصوص، أُصلحت قراءة أعمدة Nested إذا كانت أسماء عناصرها تحتوي على نقاط (مثلًا Nested(`keys.name` String, `keys.id` UInt64, values UInt64)). #34228 (Anton Popov).
  • إصلاح عدم عمل parallel_view_processing = 0 عند insert إلى table باستخدام VALUES. - إصلاح عدم ضبط view_duration_ms في query_views_log بشكل صحيح بالنسبة إلى materialized views. #34067 (Raúl Marín).
  • إصلاح parsing لبنية table من ZooKeeper: تُقارَن metadata من ZooKeeper الآن مع metadata المحلية بصيغتها canonical. وهذا يفيد عندما يمكن أن تتغير أسماء الدوال canonical بين إصدارات ClickHouse. #33933 (sunny).
  • إجراء تهريب صحيح لبعض المحارف عند التعامل مع LDAP. #33401 (IlyaTsoi).

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

  • إزالة دعم البناء غير المجمّع. #33690 (Azat Khuzhin).
  • التأكد من أن الاختبارات لا تعتمد على نتيجة الفرز غير المستقر للعناصر المتساوية. أُضيفت عشوائية نطاقات العناصر المتساوية في وضع Debug بعد الفرز لمنع المشكلات عند الاعتماد على ترتيب فرز العناصر المتساوية. #34393 (Maksim Kita).
  • إضافة مزيد من التفصيل إلى فحص Style check. #34289 (Mikhail f. Shiryaev).
  • إزالة حزمة Debian ‏clickhouse-test لأنها متقادمة. #33948 (Ilya Yatsishin).
  • تحسينات متعددة على نظام البناء لإزالة احتمال استخدام حزم من نظام التشغيل أحيانًا، ولفرض عمليات بناء محكمة العزل. #33695 (Amos Bird).

إصلاح خطأ (سلوك غير صحيح ملحوظ للمستخدم في إصدار مستقر رسمي أو إصدار ما قبل الاستقرار)

  • تم إصلاح التحقق assertion عند استخدام allow_experimental_parallel_reading_from_replicas مع max_parallel_replicas عندما تكون قيمته 1. هذا يُصلح #34525. #34613 (Nikita Mikhaylov).
  • إصلاح خطأ نادر عند قراءة المصفوفات الفارغة، كان قد يؤدي إلى الخطأ Data compressed with different methods. يمكن إعادة إنتاجه إذا كانت لديك مصفوفات فارغة في معظمها، ولكن ليس دائمًا. ويحدث ذلك عند القراءة بالاتجاه العكسي مع ORDER BY … DESC. واحتمال حدوث هذا الخطأ ضئيل جدًا. #34327 (Anton Popov).
  • إصلاح النتيجة الخاطئة للدالتين round/roundBankers عند تقريب قيم صحيحة من أنواع صغيرة. يُغلق #33267. #34562 (李扬).
  • أحيانًا لم يكن إلغاء الاستعلام يعمل فورًا عند قراءة عدة ملفات من S3 أو HDFS. يُصلح #34301 ويرتبط بـ #34397. #34539 (Dmitry Novik).
  • إصلاح الاستثناء Chunk should have AggregatedChunkInfo in MergingAggregatedTransform (في حالة optimize_aggregation_in_order = 1 و distributed_aggregation_memory_efficient = 0). يُصلح #34526. #34532 (Anton Popov).
  • إصلاح المقارنة بين الأعداد الصحيحة والأعداد العائمة في تحليل الفهرس. سابقًا، كان هذا قد يؤدي إلى تخطي بعض الـ granules أثناء القراءة عن طريق الخطأ. يُصلح #34493. #34528 (Anton Popov).
  • إصلاح دعم الضغط في URL engine. #34524 (Frank Chen).
  • إصلاح الخطأ المحتمل ‘file_size: Operation not supported’ في الاكتشاف التلقائي لمخطط الملفات. #34479 (Kruglov Pavel).
  • يُصلح حالة تسابق محتملة مع حذف جدول. #34416 (Kseniia Sumarokova).
  • إصلاح الخطأ المحتمل Cannot convert column Function to mask في التقييم المختصر للدوال. يُغلق #34171. #34415 (Kruglov Pavel).
  • إصلاح تعطل محتمل عند استدلال المخطط من مصدر URL. يُغلق #34147. #34405 (Kruglov Pavel).
  • بالنسبة إلى UDFs، كان يجري التحقق من أذونات الوصول على مستوى قاعدة البيانات بدلًا من المستوى العام كما ينبغي. يُغلق #34281. #34404 (Maksim Kita).
  • إصلاح صياغة المحرك غير الصحيحة في ناتج استعلام SHOW CREATE DATABASE لقواعد البيانات التي تستخدم المحرك Memory. يُغلق هذا #34335. #34345 (alexey-milovidov).
  • تم إصلاح حالتي تسابق نادرتين للغاية كانتا قد تؤديان إلى تلف حالة replication queue وظهور الخطأ “intersecting parts”. #34297 (tavplubix).
  • إصلاح عرض شريط التقدم؛ إذ كان يُقرَّب خطأً إلى عدد صحيح من الأحرف. #34275 (alexey-milovidov).
  • إصلاح حقول معلومات العميل current_user/current_address للاتصال بين الخوادم (قبل هذا التصحيح، كانت قيمتا current_user/current_address تُحفَظان من الاستعلام السابق). #34263 (Azat Khuzhin).
  • إصلاح تسرّب في الذاكرة عند حدوث بعض حالات Exception أثناء query processing مع optimize_aggregation_in_order=1. #34234 (Azat Khuzhin).
  • إصلاح المقياس Query الذي يعرض عدد الاستعلامات الجاري تنفيذها. ففي الإصدارات الأخيرة المتعددة كان يساوي 0 دائمًا. #34224 (Anton Popov).
  • إصلاح schema inference لدالة الجدول s3. #34186 (Kruglov Pavel).
  • إصلاح حالة تسابق نادرة وغير ضارة في محركات التخزين HDFS وS3 وURL قد تؤدي إلى اتصالات إضافية. #34172 (alesapin).
  • إصلاح خلل قد يؤدي، في حالات نادرة، إلى الخطأ “Cannot read all data” أثناء قراءة أعمدة LowCardinality في عائلة محركات جداول MergeTree التي تخزن البيانات على نظام ملفات بعيد مثل S3 (نظام الملفات الافتراضي فوق S3 ميزة تجريبية غير جاهزة لبيئات production). #34139 (alesapin).
  • إصلاح عمليات insert إلى distributed tables عند حدوث تغيير في native protocol. كان آخر تغيير في الإصدار 22.1، لذا قد تحدث بعض حالات فشل insert إلى distributed tables بعد الترقية إلى ذلك الإصدار. #34132 (Anton Popov).
  • إصلاح data race محتمل في محرك الجدول File أُدخل في #33960. يُغلق #34111. #34113 (Kruglov Pavel).
  • تم إصلاح حالة تسابق طفيفة قد تتسبب، في حالات نادرة للغاية، في الخطأ “intersecting parts” بعد فقدان الاتصال بـ ZooKeeper. #34096 (tavplubix).
  • إصلاح asynchronous inserts مع التنسيق Native. #34068 (Anton Popov).
  • إصلاح خلل كان يؤدي إلى تعذر بدء الخادم عند استخدام كلٍّ من replicated access storage وKeeper (المضمَّن في clickhouse-server). كما أُضيف إعدادان لمهلة Keeper socket بدلًا من إعدادات default user: keeper_server.socket_receive_timeout_sec و keeper_server.socket_send_timeout_sec. يُصلح #33973. #33988 (alesapin).
  • إصلاح segfault أثناء parsing لملف ORC ذي footer تالف. يُغلق #33797. #33984 (Kruglov Pavel).
  • إصلاح تحليل IPv6 من query parameter ‏(prepared statements) وإصلاح تحويل IPv6 إلى سلسلة نصية. يُغلق #33928. #33971 (Kruglov Pavel).
  • إصلاح تعطل أثناء قراءة Tuples المتداخلة. يُصلح #33838. #33956 (Anton Popov).
  • إصلاح استخدام الدالتين array وtuple مع وسيطات حرفية في distributed queries. وكان هذا قد يؤدي سابقًا إلى الاستثناء Not found columns. #33938 (Anton Popov).
  • لم يكن aggregate function combinator ‏-If يعالج وسيطة التصفية Nullable على نحو صحيح. هذا يُغلق #27073. #33920 (alexey-milovidov).
  • إصلاح race condition محتمل عند القراءة من قرص بعيد (تُعد virtual filesystem فوق s3 feature تجريبية غير جاهزة لـproduction). #33912 (Amos Bird).
  • إصلاح تعطل يحدث إذا أُنشئت SQL UDF مع lambda ذات وسيطات ليست معرّفات. يُغلق #33866. #33868 (Maksim Kita).
  • إصلاح استخدام columns sparse ‏(التي يمكن تمكينها عبر setting التجريبي ratio_of_defaults_for_sparse_serialization). #33849 (Anton Popov).
  • إصلاح الخطأ المنطقي replica is not readonly في query ‏SYSTEM RESTORE REPLICA عندما تكون replica في الواقع readonly. يُصلح #33806. #33847 (tavplubix).
  • إصلاح تسرّب للذاكرة في clickhouse-keeper عند استخدام الضغط (Compression) ‏(الافتراضي). #33840 (Azat Khuzhin).
  • إصلاح index analysis عند عدم توفر أي types مشتركة. #33833 (Amos Bird).
  • إصلاح schema inference لكل من JSONEachRow وJSONCompactEachRow. #33830 (Kruglov Pavel).
  • إصلاح استخدام external dictionaries مع source ‏redis وعند وجود عدد كبير من المفاتيح. #33804 (Anton Popov).
  • إصلاح خطأ في client كان يؤدي إلى ‘Connection reset by peer’ في server. يُغلق #33309. #33790 (Kruglov Pavel).
  • إصلاح parsing للاستعلام INSERT INTO … VALUES SETTINGS … (…), … #33776 (Kruglov Pavel).
  • إصلاح خطأ في فحص table عند إنشاء data part بتنسيق wide format وprojection. #33774 (李扬).
  • إصلاح حالة تسابق طفيفة بين count() وINSERT/merges/… في MergeTree (إذ قد يُعاد عدد غير صحيح من الصفوف في SELECT مع optimize_trivial_count_query). #33753 (Azat Khuzhin).
  • طرح استثناء عند فشل طلب سرد الدليل في تخزين HDFS. #33724 (LiuNeng).
  • إصلاح mutation عندما يحتوي الجدول على projections. يُصلح هذا #33010. ويُصلح هذا #33275. #33679 (Amos Bird).
  • تحديد قاعدة البيانات الحالية بشكل صحيح إذا نُفِّذ CREATE TEMPORARY TABLE AS SELECT داخل session HTTP مسماة. هذه حالة استخدام نادرة جدًا. يُغلق هذا #8340. #33676 (alexey-milovidov).
  • السماح ببعض queries التي تتضمن الفرز وLIMIT BY وARRAY JOIN ودوال lambda. يُغلق هذا #7462. #33675 (alexey-milovidov).
  • إصلاح خلل في “zero copy replication” (وهي ميزة لا تزال قيد التطوير ويجب عدم استخدامها في بيئة production) كان يؤدي إلى تكرار البيانات في حالة TTL move. يُصلح هذا #33643. #33642 (alesapin).
  • إصلاح Chunk should have AggregatedChunkInfo in GroupingAggregatedTransform (في حالة optimize_aggregation_in_order = 1). #33637 (Azat Khuzhin).
  • إصلاح الخطأ Bad cast from type ... to DB::DataTypeArray الذي قد يحدث عندما يحتوي الجدول على عمود Nested يتضمن اسمه نقاطًا، وتُولَّد له قيمة افتراضية (على سبيل المثال أثناء insert، عندما لا يكون العمود مُدرجًا). استكمالًا لـ #28762. #33588 (Alexey Pavlenko).
  • تم إصلاح التصدير إلى ملفات lz4. يُغلق هذا #31421. #31862 (Kruglov Pavel).
  • إصلاح احتمال حدوث crash إذا كان group_by_overflow_mode مضبوطًا على any (‏GROUP BY تقريبي) وكانت aggregation تُجرى على عمود واحد من النوع LowCardinality. #34506 (DR).
  • إصلاح insert في temporary tables عبر بروتوكول gRPC بين العميل والخادم. يُصلح هذا #34347، issue #2. #34364 (Vitaly Baranov).
  • إصلاح issue #19429. #34225 (Vitaly Baranov).
  • إصلاح issue #18206. #33977 (Vitaly Baranov).
  • يتيح طلب السحب هذا استخدام عدة مخازن LDAP في قائمة أدلة المستخدمين نفسها. كان ذلك يعمل سابقًا، لكنه تعطّل لأن اختبارات LDAP معطّلة (وهي جزء من اختبارات testflows). #33574 (Vitaly Baranov).

إصدار ClickHouse v22.1، بتاريخ 2022-01-18. العرض التقديمي، الفيديو

ملاحظات الترقية

  • كانت الدالتان left وright تُنفَّذان سابقًا في المحلل، أما الآن فأصبحتا كاملتي الوظائف. قد ترفع الاستعلامات الموزعة التي تستخدم الدالتين left أو right بدون أسماء مستعارة استثناءً إذا كان العنقود يحتوي على إصدارات مختلفة من clickhouse-server. إذا كنت تُجري ترقية لعنقودك وواجهت هذا الخطأ، فعليك إكمال الترقية لضمان أن جميع العُقد تعمل بالإصدار نفسه. ويمكنك أيضًا إضافة أسماء مستعارة (AS something) إلى الأعمدة في استعلاماتك لتجنّب هذه المشكلة. #33407 (alexey-milovidov).
  • أصبح استخدام الموارد في الاستعلامات الفرعية القيَمية مُحتسبًا بالكامل اعتبارًا من هذا الإصدار. ومع هذا التغيير، باتت الصفوف المقروءة في الاستعلامات الفرعية القيَمية تُسجَّل الآن في query_log. وإذا كان الاستعلام الفرعي القيَمي مخزّنًا مؤقتًا (مكررًا أو يُستدعى لعدة صفوف)، فلا تُحتسب الصفوف المقروءة إلا مرة واحدة فقط. يتيح هذا التغيير تنفيذ KILL للاستعلامات والإبلاغ عن التقدم أثناء تنفيذ الاستعلامات الفرعية القيَمية. #32271 (Raúl Marín).

ميزة جديدة

  • تنفيذ استدلال مخطط البيانات لتنسيقات الإدخال. والسماح بتخطي البنية (أو الاكتفاء بكتابة auto) في دوال الجداول file, url, s3, hdfs وفي معاملات clickhouse-local. وكذلك السماح بتخطي البنية في استعلامات CREATE لمحركات الجداول File, HDFS, S3, URL, Merge, Buffer, Distributed وReplicatedMergeTree (عند إضافة نسخ متماثلة جديدة). #32455 (Kruglov Pavel).
  • اكتشاف التنسيق من امتداد الملف في دوال الجداول file/hdfs/s3/url ومحركات الجداول HDFS/S3/URL، وكذلك في SELECT INTO OUTFILE وINSERT FROM INFILE #33565 (Kruglov Pavel). يغلق #30918. #33443 (OnePiece).
  • أداة لجمع البيانات التشخيصية عند الحاجة إلى الدعم. #33175 (Alexander Burmak).
  • الاكتشاف التلقائي للعناقيد عبر Zoo/Keeper. يتيح ذلك إضافة نسخ متماثلة إلى العنقود دون تغيير التكوين على كل خادم. #31442 (vdimir).
  • تنفيذ محرك جدول Hive للوصول إلى Apache Hive من ClickHouse. يحقق هذا: #29245. #31104 (taiyang-li).
  • إضافة الدوال التجميعية cramersV, cramersVBiasCorrected, theilsU وcontingency. تحسب هذه الدوال الاعتمادية (كمقياس للارتباط) بين القيم الفئوية. وتستخدم جميعها الجداول التقاطعية (مدرجًا تكراريًا للأزواج) في التنفيذ. ويمكن اعتبارها شبيهة بمعامل الارتباط، ولكن لأي قيم منفصلة، وليس بالضرورة أرقامًا. #33366 (alexey-milovidov). التنفيذ الأولي بواسطة Vanyok-All-is-OK وantikvist.
  • تمت إضافة دالة الجدول hdfsCluster، التي تتيح معالجة الملفات من HDFS بالتوازي من عدة عقد في عنقود محدد، على نحو مماثل لـ s3Cluster. #32400 (Zhichang Yu).
  • إضافة دعم للأقراص المستندة إلى Azure Blob Storage، بطريقة مماثلة لما هو متاح للأقراص المستندة إلى AWS S3. #31505 (Jakub Kuklis).
  • السماح باستخدام COMMENT في CREATE VIEW (لجميع أنواع VIEW). #31062 (Vasily Nemkov).
  • إعادة تهيئة منافذ الاستماع والبروتوكولات ديناميكيًا عند تغيّر التكوين. #30549 (Kevin Michel).
  • تمت إضافة الدوال left, right, leftUTF8, rightUTF8. وإصلاح خطأ في تنفيذ الدالة substringUTF8 مع OFFSET سالب (إزاحة من نهاية السلسلة). #33407 (alexey-milovidov).
  • إضافة دوال جديدة لنظام الإحداثيات H3: h3HexAreaKm2, h3CellAreaM2, h3CellAreaRads2. #33479 (Bharat Nallan).
  • إضافة الدالة MONTHNAME. #33436 (usurai).
  • أُضيفت الدالة arrayLast. يغلق #33390. #33415 أُضيفت الدالة arrayLastIndex. #33465 (Maksim Kita).
  • إضافة الدالة decodeURLFormComponent، وهي تختلف قليلًا عن decodeURLComponent. إغلاق #10298. #33451 (SuperDJY).
  • السماح بتقسيم قواعد التجميع المرحلي في GraphiteMergeTree للمقاييس العادية/الموسومة (حقل rule_type اختياري). #33494 (Michail Safronov).

تحسين الأداء

  • دعم نقل الشروط إلى PREWHERE (الإعداد optimize_move_to_prewhere) للجداول التي تستخدم المحرك Merge إذا كانت جميع الجداول الأساسية التابعة لها تدعم PREWHERE. #33300 (Anton Popov).
  • معالجة أكثر كفاءة لأنماط globs في تخزين URL. يمكنك الآن بسهولة تنفيذ استعلام على مليون URL بالتوازي مع إعادة المحاولة. يغلق هذا #32866. #32907 (Kseniia Sumarokova).
  • تجنّب التتبّع التراجعي الأسي في المحلل. يغلق هذا #20158. #33481 (alexey-milovidov).
  • كان سوء استخدام الدالة untuple يؤدي إلى تعقيد أسي في تحليل الاستعلام (اكتشفه fuzzer). يغلق هذا #33297. #33445 (alexey-milovidov).
  • تقليل الذاكرة المخصصة للقواميس ذات السمات النصية. #33466 (Maksim Kita).
  • تحسين طفيف في أداء الدالة reinterpret. #32587 (alexey-milovidov).
  • تغيير غير مهم. في حالات نادرة للغاية، عندما يُفقَد جزء بيانات على كل نسخة متماثلة، قد تتخطى الاستعلامات اللاحقة، بعد دمج بعض أجزاء البيانات، عددًا أقل من الأقسام عند استبعاد الأقسام. وهذا بالكاد يؤثر في أي شيء. #32220 (Azat Khuzhin).
  • تحسين أداء الكتابة في clickhouse-keeper عبر تحسين منطق حساب الحجم. #32366 (zhanglistar).
  • تحسين إنشاء projection المادي لـ projection أحادية الجزء. يغلق هذا #31669. #31885 (Amos Bird).
  • تحسين أداء الاستعلامات على جداول النظام. #33312 (OnePiece).
  • تحسين اختيار أجزاء MergeTree التي يمكن نقلها بين وحدات التخزين. #33225 (OnePiece).
  • إصلاح أداء القاموس sparse_hashed مع المفاتيح sequential (دالة hash غير صحيحة). #32536 (Azat Khuzhin).

ميزة تجريبية

  • القراءة المتوازية من عدة نسخ متماثلة ضمن shard أثناء تنفيذ distributed query من دون استخدام sample key. لتمكين ذلك، اضبط allow_experimental_parallel_reading_from_replicas = 1 وmax_parallel_replicas على أي قيمة رقمية. يُغلق هذا #26748. #29279 (Nikita Mikhaylov).
  • تنفيذ sparse serialization. يمكن أن يقلل ذلك من استهلاك مساحة disk ويحسّن أداء بعض queries للأعمدة التي تحتوي على عدد كبير من القيم الافتراضية (الصفرية). ويمكن تمكينه عبر تعيين ratio_for_sparse_serialization. وسيُختار sparse serialization ديناميكيًا للـ column إذا تجاوزت نسبة عدد القيم الافتراضية إلى إجمالي عدد القيم تلك العتبة. وسيُثبَّت نوع الـ serialization (الافتراضي أو sparse) لكل column في part، لكنه قد يختلف بين parts. #22535 (Anton Popov).
  • إضافة الميزة “TABLE OVERRIDE” لتخصيص schemas لجداول MaterializedMySQL. #32325 (Stig Bakken).
  • إضافة query ‏EXPLAIN TABLE OVERRIDE. #32836 (Stig Bakken).
  • دعم clause ‏TABLE OVERRIDE في MaterializedPostgreSQL. RFC: #31480. #32749 (Kseniia Sumarokova).
  • تغيير ZooKeeper path لعلامات zero-copy الخاصة بـ shared data. لاحظ أن “zero-copy replication” ميزة غير production (ولا تزال في المراحل المبكرة من development)، لذا لا يُنصح باستخدامها أصلًا. ولكن إذا كنت قد استخدمتها، فضع هذا التغيير في الحسبان. #32061 (ianton-ru).
  • دعم clause ‏Events في استعلام watch الخاص بـ WINDOW VIEW. #32607 (vxider).
  • إصلاح ACL مع hash رقمي صريح في clickhouse-keeper: أصبح السلوك الآن متسقًا مع ZooKeeper، وبات الـ digest المُولَّد مقبولًا دائمًا. #33249 (小路). #33246.
  • إصلاح إزالة projection غير المتوقعة عند detach للـ parts. #32067 (Amos Bird).

تحسين

  • أصبحت دوال تحويل التاريخ والوقت التي تُنتج وقتًا يسبق 1970-01-01 00:00:00 تُشبَع الآن إلى الصفر بدلًا من حدوث overflow. #29953 (Amos Bird). ويُصلح هذا أيضًا خطأً في تحليل الفهرس إذا كانت دالة اقتطاع التاريخ تُنتج نتيجة تسبق Unix epoch.
  • اعرض دائمًا استخدام الموارد (إجمالي استخدام CPU، وإجمالي استخدام RAM، وأقصى استخدام RAM لكل مضيف) في العميل. #33271 (alexey-milovidov).
  • تحسين serialization وdeserialization للنوع Bool، مع التحقق من نطاق القيم. #32984 (Kruglov Pavel).
  • إذا جرى تعريف setting غير صالح باستخدام الاستعلام SET أو باستخدام query parameters في HTTP request، فستتضمن رسالة الخطأ اقتراحات مشابهة لسلسلة setting غير الصالحة (إن وُجدت). #32946 (Antonio Andelic).
  • دعم التلميحات لأسماء settings المكتوبة بشكل خاطئ في clickhouse-client وclickhouse-local. يُغلق #32237. #32841 (凌涛).
  • السماح باستخدام virtual columns في materialized views. يُغلق #11210. #33482 (OnePiece).
  • إضافة config لتعطيل IPv6 في clickhouse-keeper عند الحاجة. هذا يُغلق #33381. #33450 (Wu Xueyang).
  • إضافة مزيد من المعلومات إلى system.build_options حول revision الحالية لـ git. #33431 (taiyang-li).
  • clickhouse-local: تتبّع الذاكرة ضمن الخيار --max_memory_usage_in_client. #33341 (Azat Khuzhin).
  • السماح باستخدام intervals سالبة في الدالة intervalLengthSum. وسيُضاف طولها أيضًا. هذا يُغلق #33323. #33335 (alexey-milovidov).
  • يمكن استخدام LineAsString كـ output format. هذا يُغلق #30919. #33331 (Sergei Trifonov).
  • دعم <secure/> في configuration الخاصة بالعنقود، كصيغة بديلة عن <secure>1</secure>. يُغلق #33270. #33330 (SuperDJY).
  • سيؤدي الضغط على Ctrl+C مرتين إلى إنهاء clickhouse-benchmark فورًا من دون انتظار queries قيد التنفيذ. هذا يُغلق #32586. #33303 (alexey-milovidov).
  • دعم Unix timestamp مع Milliseconds في الدالة parseDateTimeBestEffort. #33276 (Ben).
  • السماح بإلغاء الاستعلام أثناء قراءة البيانات من الجدول الخارجي بالتنسيقات: Arrow / Parquet / ORC — إذ كان يتعذر إلغاؤه في حالة الملفات الكبيرة عند ضبط input&#95;format&#95;allow&#95;seeks على false. يغلق #29678. #33238 (Kseniia Sumarokova).
  • إذا كان محرك الجدول يدعم العبارة SETTINGS، فاسمح بتمرير الإعدادات كأزواج مفتاح-قيمة أو عبر config. أُضيف هذا الدعم إلى MySQL. #33231 (Kseniia Sumarokova).
  • منع المفاتيح الأساسية من النوع Nullable بشكل صحيح عند الحاجة. هذا مرتبط بـ #32780. #33218 (Amos Bird).
  • إضافة retry لاتصالات PostgreSQL إذا لم يتم fetch لأي شيء بعد. يغلق #33199. #33209 (Kseniia Sumarokova).
  • التحقق من مفاتيح config الخاصة بالقواميس الخارجية. #33095. #33130 (Kseniia Sumarokova).
  • إرسال معلومات profile ضمن clickhouse-local. يغلق #33093. #33097 (Kseniia Sumarokova).
  • التقييم المختصر: دعم الدالة throwIf. يغلق #32969. #32973 (Maksim Kita).
  • (يحدث هذا فقط في الإصدارات غير الرسمية). أُصلح خطأ segfault عند إدراج البيانات في أعمدة Decimal وString وFixedString وArray المضغوطة. هذا يغلق #32939. #32940 (N. Kolotov).
  • أُضيف دعم لتحديد استعلام فرعي كدالة SQL معرّفة من قبل المستخدم. مثال: CREATE FUNCTION test AS () -> (SELECT 1). يغلق #30755. #32758 (Maksim Kita).
  • تحسين دعم ضغط gRPC بخصوص #28671. #32747 (Vitaly Baranov).
  • تفريغ جميع data parts الموجودة في الذاكرة عند عدم تمكين WAL أثناء إيقاف الخادم أو فصل الجدول. #32742 (nauta).
  • السماح بالتحكم في مهلات الاتصال لـ MySQL (كان ذلك مدعومًا سابقًا فقط لمصدر القاموس). يغلق #16669. كانت قيمة connect&#95;timeout الافتراضية صغيرة نسبيًا، وأصبحت الآن قابلة للتهيئة. #32734 (Kseniia Sumarokova).
  • دعم الخيار authSource لتخزين MongoDB. يغلق #32594. #32702 (Kseniia Sumarokova).
  • دعم النوع Date32 في دالة الجدول genarateRandom. #32643 (nauta).
  • إضافة الإعدادين max_concurrent_select_queries وmax_concurrent_insert_queries للتحكم في الاستعلامات المتزامنة بحسب نوع الاستعلام. إغلاق #3575. #32609 (SuperDJY).
  • تحسين التعامل مع البُنى Nested التي تحتوي على أعمدة مفقودة عند قراءة البيانات بتنسيق Protobuf. متابعة لـ https://github.com/ClickHouse/ClickHouse/pull/31988. #32531 (Vitaly Baranov).
  • السماح ببيانات اعتماد فارغة لمحرك MongoDB. إغلاق #26267. #32460 (Kseniia Sumarokova).
  • تعطيل بعض التحسينات الخاصة بدوال النوافذ التي قد تؤدي إلى استثناءات. إغلاق #31535. إغلاق #31620. #32453 (Kseniia Sumarokova).
  • يتيح الاتصال بـ MongoDB 5.0. إغلاق #31483,. #32416 (Kseniia Sumarokova).
  • تمكين المقارنة بين Decimal وFloat. إغلاق #22626. #31966 (flynn).
  • تمت إضافة الإعدادات command_read_timeout وcommand_write_timeout لكل من StorageExecutable وStorageExecutablePool وExecutableDictionary وExecutablePoolDictionary وExecutableUserDefinedFunctions. يتحكم الإعداد command_read_timeout في مهلة قراءة البيانات من stdout الخاص بالأمر بالمللي ثانية. ويتحكم الإعداد command_write_timeout في مهلة كتابة البيانات إلى stdin الخاص بالأمر بالمللي ثانية. كما تمت إضافة الإعداد command_termination_timeout لكل من ExecutableUserDefinedFunction وExecutableDictionary وStorageExecutable. وتمت إضافة الإعداد execute_direct إلى ExecutableUserDefinedFunction، وتكون قيمته true افتراضيًا. وتمت إضافة الإعداد execute_direct إلى ExecutableDictionary وExecutablePoolDictionary، وتكون قيمته false افتراضيًا. #30957 (Maksim Kita).
  • ستُرجع الدوال التجميعية Bitmap النتيجة الصحيحة عند تمرير وسيط خارج النطاق بدلًا من الالتفاف. #33127 (DR).
  • إصلاح تحليل الاستعلامات غير الصحيحة مع عبارة FROM INFILE. #33521 (Kruglov Pavel).
  • عدم السماح بالكتابة إلى S3 إذا كان المسار يحتوي على globs. #33142 (Kruglov Pavel).
  • لم يكن الخيار --echo مستخدمًا بواسطة clickhouse-client في وضع الدُفعات مع استعلام واحد. #32843 (N. Kolotov).
  • استخدام الخيار --database مع clickhouse-local. #32797 (Kseniia Sumarokova).
  • إصلاح شيفرة سيئة على نحو مفاجئ في دالة SQL العادية file. وهي الآن تدعم الروابط الرمزية. #32640 (alexey-milovidov).
  • تحديث modification_time لجزء البيانات في system.parts بعد نقل الجزء #32964. #32965 (save-my-heart).
  • مشكلة محتملة، لكن لا يمكن استغلالها: قد يحدث تجاوز عددي عند تغيير حجم المصفوفة. #33024 (varadarajkumar).

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

  • إضافة حزم واختبارات وظيفية ونسخ Docker مبنية لإصدار ClickHouse بمعمارية AArch64 ‏(ARM). #32911 (Mikhail f. Shiryaev). #32415
  • تهيئة ClickHouse لكي يُبنى باستخدام musl-libc. وهو غير مفعّل افتراضيًا. #33134 (alexey-milovidov).
  • جعل برنامج التثبيت النصي يعمل على FreeBSD. هذا يُغلق #33384. #33418 (alexey-milovidov).
  • إضافة actionlint لسير عمل GitHub Actions، والتحقق من ملفات سير العمل عبر act --list لفحص صحة صياغة سير العمل. #33612 (Mikhail f. Shiryaev).
  • إضافة المزيد من الاختبارات لميزة المفتاح الأساسي القابل لأن يكون NULL. وإضافة المزيد من الاختبارات مع أنواع مختلفة وأنواع مختلفة من merge tree، إلى جانب بيانات مُولَّدة عشوائيًا. #33228 (Amos Bird).
  • إضافة أداة بسيطة لعرض الاختبارات غير المستقرة بصريًا في متصفح الويب. #33185 (alexey-milovidov).
  • تمكين البناء المحكم للإصدارات المشتركة. وهذا مخصص أساسًا للمطورين. #32968 (Amos Bird).
  • تحديث libc++ و libc++abi إلى أحدث إصدار. #32484 (Raúl Marín).
  • إضافة اختبار تكامل لعميل .NET خارجي (ClickHouse.Client). #23230 (Oleg V. Kozlyuk).
  • تضمين معلومات git في الملف التنفيذي clickhouse. وبذلك يمكن الحصول بسهولة على مراجعة الشفرة المصدرية من الملف التنفيذي clickhouse. #33124 (taiyang-li).
  • إزالة الشفرة المتقادمة من ConfigProcessor. لم تعد الشفرة الخاصة بـ Yandex مستخدمة. وقد احتوت هذه الشفرة على عيب طفيف. أبلغ عن هذا العيب Mallik Hassan في #33032. هذا يُغلق #33032. #33026 (alexey-milovidov).

إصلاح خطأ (سلوك غير صحيح يمكن للمستخدم ملاحظته في إصدار رسمي مستقر أو ما قبل المستقر)

  • عدة إصلاحات لتحليل التنسيقات. وهذا مهم إذا كان clickhouse-server مفتوحًا لوصول كتابة من جهة معادية. فقد تؤدي بيانات إدخال مُعدّة خصيصًا لتنسيق Native إلى قراءة ذاكرة غير مهيأة أو إلى تعطل. وهذا مهم إذا كان clickhouse-server مفتوحًا لوصول كتابة من جهة معادية. #33050 (Heena Bansal). كما أُصلحت مشكلة تجاوز حدود فهرس نوع Union في Apache Avro ضمن التنسيق الثنائي لـ Apache Avro. #33022 (Harry Lee). وأُصلح إلغاء مرجعية مؤشر NULL في بيانات LowCardinality عند إلغاء تسلسل بيانات LowCardinality في التنسيق Native. #33021 (Harry Lee).
  • سيزيل handler الخاص بـ ClickHouse Keeper العملية بشكل صحيح عند إرسال الاستجابة. #32988 (JackyWoo).
  • احتمال حدوث خطأ حسابي بمقدار واحد في quotas: لم يكن قد تم بلوغ حد quota، لكن جرى تجاوز الحد. يُصلح هذا #31174. #31656 (sunny).
  • تم إصلاح CAST من String إلى IPv4 أو IPv6 ثم العودة. كما تم إصلاح رسالة الخطأ في حالة فشل التحويل. #29224 (Dmitry Novik) #27914 (Vasily Nemkov).
  • تم إصلاح استثناء مثل Unknown aggregate function nothing أثناء التنفيذ على server بعيد. يُصلح هذا #16689. #26074 (hexiaoting).
  • إصلاح database غير الصحيحة في JOIN من دون database صريحة في distributed queries (إصلاح: #10471). #33611 (Azat Khuzhin).
  • إصلاح segfault في تنسيق Apache Avro الذي يظهر بعد عملية insert الثانية إلى file. #33566 (Kruglov Pavel).
  • إصلاح segfault في تنسيق Apache Arrow إذا كان schema يحتوي على النوع Dictionary. يُغلق #33507. #33529 (Kruglov Pavel).
  • قد تُطبَّق إعدادات offset وlimit خارج النطاق بشكل غير صحيح على views. إغلاق #33289 #33518 (hexiaoting).
  • إصلاح الاستثناء Block structure mismatch الذي قد يحدث أثناء Insertion إلى table مع column LowCardinality nested افتراضي. إصلاح #33028. #33504 (Nikolai Kochetov).
  • إصلاح dictionary expressions لسمات الحد الأدنى والحد الأقصى للنطاق في range_hashed عند إنشائها باستخدام DDL. يُغلق #30809. #33478 (Maksim Kita).
  • إصلاح احتمال use-after-free في INSERT إلى materialized view مع DROP متزامن (Azat Khuzhin).
  • لا تحاول القراءة بعد EOF (كحلّ بديل لخلل في نواة Linux)؛ إذ يمكن إعادة إنتاج هذا الخلل على النوى (3.14..5.9)، ويتطلب index_granularity_bytes=0 (أي تعطيل index granularity التكيفية). #33372 (Azat Khuzhin).
  • كانت الأوامر SYSTEM SUSPEND وSYSTEM ... THREAD FUZZER تفتقر إلى التحكم في الوصول. تم إصلاح ذلك. المؤلف: Kevin Michel. #33333 (alexey-milovidov).
  • إصلاح مشكلة عدم ظهور COMMENT الخاصة بالقواميس في system.tables وsystem.dictionaries. كما أصبح تعديل التعليق لمحرك Dictionary مسموحًا. يغلق #33251. #33261 (Maksim Kita).
  • إضافة عمليات الإدراج غير المتزامنة، مع تمكين الإعداد async_insert، إلى سجل الاستعلامات. في السابق، لم تكن مثل هذه الاستعلامات تظهر في سجل الاستعلامات. #33239 (Anton Popov).
  • إصلاح مشكلة إرسال تعبيرات WHERE 1 = 0 في استعلامات قواعد البيانات الخارجية. يغلق #33152. #33214 (Kseniia Sumarokova).
  • إصلاح التحقق من صحة DDL لـ MaterializedPostgreSQL. وإصلاح الإعداد materialized_postgresql_allow_automatic_update. يغلق #29535. #33200 (Kseniia Sumarokova). التأكد من إزالة فتحات النسخ المتماثل غير المستخدمة دائمًا. وُجد في #26952. #33187 (Kseniia Sumarokova). إصلاح عمليات detach/attach في MaterializedPostreSQL (إزالة الجداول من النسخ المتماثل / إضافتها إليه) للجداول ذات المخطط غير الافتراضي. وُجد في #29535. #33179 (Kseniia Sumarokova). إصلاح DROP لقاعدة بيانات MaterializedPostgreSQL. #33468 (Kseniia Sumarokova).
  • كان المقياس StorageBufferBytes يُحتسب بشكل غير صحيح أحيانًا. #33159 (xuyatian).
  • إصلاح الخطأ Invalid version for SerializationLowCardinality key column عند القراءة من عمود LowCardinality مع تمكين local_filesystem_read_prefetch أو remote_filesystem_read_prefetch. #33046 (Nikolai Kochetov).
  • إصلاح مشكلة قراءة ملف فارغ عبر table function ‏s3. يغلق #33008. #33037 (Kseniia Sumarokova).
  • إصلاح تسرّب Context في حالة cancel_http_readonly_queries_on_client_close (أي تسرّب الجداول الخارجية التي رُفعت إلى الخادم وموارد أخرى). #32982 (Azat Khuzhin).
  • إصلاح إخراج Tuple الخاطئ في تنسيق CSV عند استخدام فاصل CSV مخصص. #32981 (Kruglov Pavel).
  • إصلاح التحقق من عنوان URL لـ HDFS الذي لم يكن يسمح باستخدام عنوان namenode عالي التوافر (HA). أُدخل هذا الخلل في https://github.com/ClickHouse/ClickHouse/pull/31042. #32976 (Kruglov Pavel).
  • إصلاح إطلاق استثناء من نوع positional argument out of bounds مع الوسيطات غير الموضعية. يُغلق #31173#event-5789668239. #32961 (Kseniia Sumarokova).
  • إصلاح سلوك غير معرّف (UB) عند حدوث EOF غير متوقع أثناء ملء مجموعة من استعلام HTTP (أي إذا قاطع العميل العملية في المنتصف، مثل timeout 0.15s curl -Ss -F 's=@t.csv;' 'http://127.0.0.1:8123/?s_structure=key+Int&query=SELECT+dummy+IN+s' ومع t.csv كبيرًا بما يكفي). #32955 (Azat Khuzhin).
  • إصلاح تراجع في الدالة replaceRegexpAll. كانت الدالة تعمل بشكل غير صحيح عندما تكون السلسلة الفرعية المطابِقة فارغة. يُغلق هذا #32777. ويُغلق أيضًا #30245. #32945 (alexey-milovidov).
  • إصلاح قراءة stripe في تنسيق ORC. #32929 (kreuzerkrieg).
  • فشلت topKWeightedState مع بعض أنواع الإدخال. #32487. #32914 (vdimir).
  • إصلاح الاستثناء Single chunk is expected from view inner query (LOGICAL_ERROR) في materialized view. يُصلح #31419. #32862 (Nikolai Kochetov).
  • إصلاح التحسين المرتبط بـ lazy seek في القراءات غير المتزامنة من أنظمة الملفات البعيدة. يُغلق #32803. #32835 (Kseniia Sumarokova).
  • قد يتخطى محرك الجدول MergeTree بعض عمليات mutation بصمت إذا كان هناك عدد كبير جدًا من عمليات mutation الجارية أو عند ارتفاع استهلاك الذاكرة، وقد أُصلح ذلك. يُصلح #17882. #32814 (tavplubix).
  • تجنب إعادة استخدام query cache الخاصة بالاستعلامات الفرعية scalar عند معالجة كتل MV. يُصلح هذا خللًا يحدث عندما يشير الاستعلام scalar إلى الجدول المصدر، لكن هذا يعني أيضًا أن جميع الاستعلامات الفرعية scalar في تعريف MV ستُحسب لكل كتلة. #32811 (Raúl Marín).
  • قد يفشل server في البدء إذا تعذر على database تستخدم المحرك MySQL الاتصال بـ MySQL server، وقد أُصلح ذلك. يُصلح #14441. #32802 (tavplubix).
  • إصلاح تعطل عند استخدام الدالة fuzzBits، وإغلاق #32737. #32755 (SuperDJY).
  • إصلاح الخطأ Column is not under aggregate function في حالة وجود MV مع GROUP BY (list of columns) (التي تُحلَّل على أنها GROUP BY tuple(...)) فوق Kafka/RabbitMQ. يُصلح #32668 و#32744. #32751 (Nikolai Kochetov).
  • إصلاح الاستعلام ALTER TABLE ... MATERIALIZE TTL مع نمطي TTL ... DELETE WHERE ... وTTL ... GROUP BY .... #32695 (Anton Popov).
  • إصلاح تحسين optimize_read_in_order في الحالة التي يكون فيها محرك الجدول Distributed أو Merge، وكانت جداول MergeTree الأساسية التابعة له تحتوي على دالة رتيبة في بادئة مفتاح الفرز. #32670 (Anton Popov).
  • إصلاح استثناء LOGICAL_ERROR عندما يكون هدف materialized view عبارة عن جدول JOIN أو SET. #32669 (Raúl Marín).
  • قد يؤدي الإدراج في S3 باستخدام multipart upload إلى Google Cloud Storage إلى تشغيل عملية الإلغاء. #32504. #32649 (vdimir).
  • إصلاح استثناء محتمل عند بدء تشغيل تخزين RabbitMQ عبر تأخير إنشاء القناة. #32584 (Kseniia Sumarokova).
  • إصلاح دورة حياة الجدول (أي احتمال use-after-free) في حالة تنفيذ DROP TABLE وINSERT بالتوازي. #32572 (Azat Khuzhin).
  • إصلاح async inserts مع التنسيقات CustomSeparated وTemplate وRegexp وMsgPack وJSONAsString. سابقًا، لم تكن async inserts مع هذه التنسيقات تقرأ أي بيانات. #32530 (Kruglov Pavel).
  • إصلاح الدالة groupBitmapAnd على distributed table. #32529 (minhthucdao).
  • إصلاح تعطل في JOIN اكتشفه fuzzer، وإغلاق #32458. #32508 (vdimir).
  • معالجة صحيحة لحالة تكرار column في Apache Arrow. #32507 (Dmitriy Mokhnatkin).
  • إصلاح مشكلة تتعلق بـ formatting ملتبس للاستعلامات في distributed queries، وكانت تؤدي إلى أخطاء عندما تكون بعض columns الجدول مُسمّاة ALL أو DISTINCT. هذا يُغلق #32391. #32490 (alexey-milovidov).
  • إصلاح حالات فشل في queries تحاول استخدام skipping indices التي لم تتم materialize لها بعد. يُصلح #32292 و#30343. #32359 (Anton Popov).
  • إصلاح خلل في استعلام SELECT عند وجود أكثر من سياستَي صفوف على العمود نفسه، ابتداءً من الاستعلام الثاني ضمن الجلسة نفسها. #31606. #32291 (SuperDJY).
  • إصلاح تحويل طابع Unix الزمني الكسري إلى DateTime64، إذ كان الجزء الكسري معكوسًا في طوابع Unix الزمنية السالبة (قبل 1970-01-01). #32240 (Ben).
  • قد تبقى بعض عناصر قائمة انتظار النسخ المتماثل عالقة لمدة temporary_directories_lifetime (يوم واحد افتراضيًا) مع الخطأ Directory tmp_merge_<part_name> أو Part ... (state Deleting) already exists, but it will be deleted soon أو خطأ مشابه. تم إصلاح ذلك. يُصلح #29616. #32201 (tavplubix).
  • إصلاح تحليل مُحوِّل العمود APPLY lambda الذي كان قد يؤدي إلى تعطل العميل أو الخادم. #32138 (Kruglov Pavel).
  • إصلاح base64Encode الذي كان يضيف بايتات زائدة في نهاية السلاسل الصغيرة. #31797 (Kevin Michel).
  • إصلاح تعطل محتمل (أو نتيجة غير صحيحة) عند استخدام وسائط من LowCardinality مع دالة نافذة. يُصلح #31114. #31888 (Nikolai Kochetov).
  • إصلاح تعليق عند تنفيذ الأمر DROP TABLE system.query_log sync. #33293 (zhanghuajie).
آخر تعديل في ٢٥ يونيو ٢٠٢٦