الانتقال إلى المحتوى الرئيسي
التغييرات ذات الصلة بخدمات ClickHouse Cloud في إصدار v24.12.

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

  • أصبحت الدالتان greatest وleast تتجاهلان الآن قيم الإدخال NULL، بينما كانتا تعيدان NULL سابقًا إذا كانت إحدى الوسيطات NULL. على سبيل المثال، يعيد SELECT greatest(1, 2, NULL) الآن القيمة 2. وهذا يجعل السلوك متوافقًا مع PostgreSQL. #65519 (kevinyhzou).
  • لم يعد يُسمح افتراضيًا باستخدام النوعين Variant/Dynamic في ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY لأن ذلك قد يؤدي إلى نتائج غير متوقعة. #69731 (Pavel Kruglov).
  • أزل جداول النظام generate_series وgenerateSeries. فقد أُضيفتا هنا عن طريق الخطأ: #59390. #71091 (Alexey Milovidov).
  • أزل StorageExternalDistributed. يُغلق هذا #70600. #71176 (flynn).
  • أصبحت إعدادات config الخادم (users.xml) تُطبَّق الآن على client أيضًا. وهذا مفيد لإعدادات format، مثل date_time_output_format. #71178 (Michael Kolupaev).
  • أصلح الخطأ المحتمل No such file or directory الناتج عن عدم تهريب الرموز الخاصة في الملفات الخاصة بـ JSON subcolumns. #71182 (Pavel Kruglov).
  • أصبحت table engines‏ Kafka وNATS وRabbitMQ مشمولة الآن ضمن grants الخاصة بها في التسلسل الهرمي SOURCES. أضف grants إلى أي database users غير افتراضيين ينشئون جداول بهذه الأنواع من المحركات. #71250 (Christoph Wurm).
  • تحقّق من query الكامل لـ mutation قبل تنفيذه (بما في ذلك subqueries). يمنع ذلك تشغيل query غير صالح عن طريق الخطأ وتراكم mutations غير مستخدمة تعيق mutations الصالحة. #71300 (Christoph Wurm).
  • أعد تسمية setting الخاص بـ filesystem cache من skip_download_if_exceeds_query_cache إلى filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova).
  • امنع النوعين Dynamic/Variant في دوال min/max لتجنب الالتباس. #71761 (Pavel Kruglov).
  • أزل دعم Enum وكذلك وسيطات UInt128 وUInt256 في deltaSumTimestamp. وأزل أيضًا دعم Int8 وUInt8 وInt16 وUInt16 للوسيطة الثانية (“timestamp”) في deltaSumTimestamp. #71790 (Alexey Milovidov).
  • أُضيف التحقق من صحة source query عند استخدام ClickHouse كمصدر لـ dictionary. #72548 (Alexey Katsman).

الميزات الجديدة

  • تنفيذ الأمر SYSTEM LOAD PRIMARY KEY لتحميل الفهارس الأساسية لجميع الأجزاء في جدول محدد، أو لجميع الجداول إذا لم يُحدَّد جدول. سيكون ذلك مفيدًا لاختبارات الأداء ولتجنّب زمن انتقال إضافي أثناء تنفيذ الاستعلام. #66252 (ZAWA_ll).
  • تمت إضافة العبارة SYSTEM LOAD PRIMARY KEY لتحميل الفهارس الأساسية لجميع الأجزاء في جدول محدد، أو لجميع الجداول إذا لم يُحدَّد جدول. وقد يفيد ذلك في اختبارات الأداء ولتجنّب زمن انتقال إضافي أثناء تنفيذ الاستعلام. #67733 (ZAWA_ll).
  • إضافة استعلام CHECK GRANT للتحقق مما إذا كان المستخدم/الدور الحالي قد مُنح الامتياز المحدد، وما إذا كان الجدول/العمود المقابل موجودًا في الذاكرة. #68885 (Unalian).
  • تمت إضافة صياغة SQL لوصف أعباء العمل وإدارة الموارد. راجع الوثائق. #69187 (Sergei Trifonov).
  • يوفّر تنسيق تخزين البيانات Iceberg للمستخدم خيارات واسعة لتعديل مخطط جدوله. وفي طلب السحب هذا، جرى تنفيذ قراءة جدول بتنسيق Iceberg حتى عند تغيير ترتيب الأعمدة وأسماء الأعمدة وامتدادات الأنواع البسيطة. #69445 (Daniil Ivanik).
  • السماح بأن يكون لكل طريقة مصادقة تاريخ انتهاء صلاحية خاص بها، مع إزالته من كيان المستخدم. #70090 (Arthur Passos).
  • تمرير أدوار المستخدم الخارجية من مُنشئ الاستعلام إلى العقد الأخرى في العنقود. يفيد ذلك عندما يكون مُنشئ الاستعلام وحده من يملك حق الوصول إلى جهة المصادقة الخارجية (مثل LDAP). #70332 (Andrey Zvonov).
  • دعم التعديل من String إلى JSON. ويغيّر طلب السحب هذا أيضًا تسلسل نوعَي JSON وDynamic إلى الإصدار الجديد V2. ولا يزال بالإمكان استخدام الإصدار القديم V1 عبر تمكين الإعداد merge_tree_use_v1_object_and_dynamic_serialization (يمكن استخدامه أثناء الترقية لإتاحة التراجع عن الإصدار دون مشكلات). #70442 (Pavel Kruglov).
  • إضافة الدالة toUnixTimestamp64Second التي تحوّل DateTime64 إلى قيمة Int64 بدقة ثوانٍ ثابتة، بما يتيح دعم إرجاع قيمة سالبة إذا كان التاريخ قبل 00:00:00 UTC يوم الخميس 1 يناير 1970. #70597 (zhanglistar).
  • إضافة إعداد جديد enforce_index_structure_match_on_partition_manipulation للسماح بعملية attach عندما تكون الإسقاطات والفهارس الثانوية في جدول المصدر مجموعة فرعية من الموجودة في الجدول الهدف. إغلاق #70602. #70603 (zwy991114).
  • يختلف خرج الدالة cast عن Apache Spark، مما يسبب اختلافًا في مشروع gluten، راجع https://github.com/apache/incubator-gluten/issues/7602. يضيف طلب السحب هذا ميزة دعم تنسيق الإخراج النصي لـ Spark، وهي معطّلة افتراضيًا. #70957 (zhanglistar).
  • تمت إضافة نوع header جديد إلى S3 endpoints لمصادقة المستخدم (access_header). يتيح ذلك الحصول على access header بأدنى أولوية، على أن يُستبدل بـ access_key_id من أي مصدر آخر (على سبيل المثال، مخطط جدول أو named collection). #71011 (MikhailBurdukov).
  • التنفيذ الأولي لمستويات الإعدادات. #71145 (Raúl Marín).
  • إضافة دعم لعبارة staleness في المعامل ORDER BY WITH FILL. #71151 (Mikhail Artemenko).
  • تنفيذ CAST بسيط من Map/Tuple/Object إلى JSON الجديد عبر التسلسل/إلغاء التسلسل انطلاقًا من JSON string. #71320 (Pavel Kruglov).
  • أُضيفت الأسماء البديلة anyRespectNulls وfirstValueRespectNulls وanyValueRespectNulls لدالة التجميع any. كما أُضيفت الأسماء البديلة anyLastRespectNulls وlastValueRespectNulls لدالة التجميع anyLast. يتيح ذلك استخدام صياغة camelCase فقط بصورة أكثر طبيعية بدلًا من الصياغة المختلطة بين camelCase والشرطة السفلية، على سبيل المثال: SELECT anyLastRespectNullsStateIf بدلًا من anyLast_respect_nullsStateIf. #71403 (Peter Nguyen).
  • أُضيف المعامل date_time_utc إلى configuration، مما يتيح لتنسيق سجلات JSON دعم التاريخ والوقت بتوقيت UTC بصيغة RFC 3339/ISO8601. #71560 (Ali).
  • أُضيف خيار لتحديد جانب الـ join الذي سيعمل كجدول داخلي (build) في query plan. ويجري التحكم في ذلك عبر query_plan_join_swap_table، الذي يمكن ضبطه على auto. في هذا الوضع، سيحاول ClickHouse اختيار الجدول الذي يحتوي على أقل عدد من الصفوف. #71577 (Vladimir Cherkasov).
  • جرى تحسين استخدام الذاكرة لقيم index granularity إذا كانت granularity ثابتة في الـ part. وأُضيفت إمكانية اختيار granularity ثابتة دائمًا للـ part (الإعداد use_const_adaptive_granularity)، مما يساعد على ضمان تحسينها دائمًا في الذاكرة. ويفيد ذلك في أعباء العمل الكبيرة (تريليونات الصفوف في التخزين المشترك) لتجنب الزيادة المستمرة في استخدام الذاكرة بسبب metadata (قيم index granularity) الخاصة بـ data parts. #71786 (Anton Popov).
  • تنفيذ allowed_feature_tier كمفتاح عام لتعطيل جميع الميزات التجريبية وميزات Beta. #71841 (Raúl Marín).
  • إضافة table functions ‏iceberg[S3;HDFS;Azure]Cluster وdeltaLakeCluster وhudiCluster. #72045 (Mikhail Artemenko).
  • إضافة الصياغة ALTER USER {ADD|MODIFY|DROP SETTING} وALTER USER {ADD|DROP PROFILE}، وكذلك الأمر بالنسبة إلى ALTER ROLE وALTER PROFILE. #72050 (pufit).
  • أُضيفت الدالة arrayPrAUC، التي تحسب AUC ‏(Area Under the Curve) لمنحنى Precision-Recall. #72073 (Emmanuel).
  • أُضيفت cache للفهرس الأساسي لجداول MergeTree (يمكن تفعيلها عبر إعداد الجدول use_primary_key_cache). وإذا كان التحميل الكسول والـ cache مفعّلين للفهرس الأساسي، فسيُحمَّل إلى الـ cache عند الطلب (على غرار mark cache) بدلًا من الاحتفاظ به في الذاكرة بشكل دائم. كما أُضيف prewarm للفهرس الأساسي عند inserts/merges/fetches الخاصة بـ data parts وعند إعادة تشغيل الجدول (يمكن تفعيله عبر الإعداد prewarm_primary_key_cache). #72102 (Anton Popov).
  • إضافة الدالة indexOfAssumeSorted لأنواع Array. وتُحسِّن البحث عندما تكون المصفوفة مرتبة ترتيبًا غير تنازلي. #72517 (Eric Kurbanov).
  • يتيح استخدام فاصل كوسيط ثانٍ اختياري لدالة التجميع groupConcat. #72540 (Yarik Briukhovetskyi).
  • إعداد جديد، http_response_headers، يتيح لك تخصيص رؤوس استجابة HTTP. على سبيل المثال، يمكنك توجيه المتصفح إلى عرض صورة مخزّنة في قاعدة البيانات. ويغلق هذا #59620. #72656 (Alexey Milovidov).
  • إضافة الدالة fromUnixTimestamp64Second التي تحوّل قيمة Unix timestamp من نوع Int64 إلى DateTime64. #73146 (Robert Schulze).

تحسينات الأداء

  • أُضيف إعدادان جديدان short_circuit_function_evaluation_for_nulls وshort_circuit_function_evaluation_for_nulls_threshold يتيحان تنفيذ الدوال على الأعمدة من النوع Nullable بأسلوب التقييم المختصر عندما تتجاوز نسبة قيم NULL في كتلة البيانات العتبة المحددة. وهذا يعني أن الدالة لن تُنفَّذ إلا على الصفوف التي تحتوي على قيم غير NULL. وينطبق ذلك فقط على الدوال التي تُرجع قيمة NULL للصفوف التي تكون فيها وسيطة واحدة على الأقل NULL. #60129 (李扬).
  • تم تقليل استخدام الذاكرة للأمر clickhouse disks remove --recursive مع أقراص object storage. #67323 (Kirill).
  • الآن لن ننسخ أعمدة كتل الإدخال لـ join_algorithm='parallel_hash' عند توزيعها بين الخيوط للمعالجة المتوازية. #67782 (Nikita Taranov).
  • تم تمكين ترجمة JIT البرمجية لمزيد من التعبيرات: ‏abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*، ودوال المقارنة (=, <, >, >=, <=)، والدوال المنطقية (and, or). #70598 (李扬).
  • الآن ستُستخدم خوارزمية parallel_hash (عند انطباقها) عندما يكون الإعداد join_algorithm مضبوطًا على default. ولا يزال البديلان السابقان (direct وhash) قيد النظر عندما يتعذر استخدام parallel_hash. #70788 (Nikita Taranov).
  • جرى تحسين خوارزمية الدمج Replacing للأجزاء غير المتقاطعة. #70977 (Anton Popov).
  • لا تُدرج detached parts من الأقراص readonly وwrite-once ضمن metrics وsystem.detached_parts. #71086 (Alexey Milovidov).
  • لا تُحسب heavy asynchronous metrics افتراضيًا. أُضيفت هذه الميزة في #40332، لكن ليس من المناسب وجود مهمة background ثقيلة لا يحتاج إليها سوى عميل واحد. #71087 (Alexey Milovidov).
  • تحسين أداء ودقة فترة تجميع system.query_metric_log عبر تقليل المنطقة الحرجة. #71473 (Pablo Marcos).
  • إضافة خيار لاستخراج التعبيرات المشتركة من تعبيري WHERE وON من أجل تقليل عدد جداول hash المستخدمة أثناء عمليات join. ويمكن تمكينه عبر optimize_extract_common_expressions = 1. #71537 (János Benjamin Antal).
  • يتيح استخدام indexes في SELECT مع LowCardinality(String). #71598 (Yarik Briukhovetskyi).
  • أثناء تنفيذ query باستخدام parallel replicas مع تمكين الخطة المحلية، يتم تخطي index analysis على workers. وسيختار coordinator النطاقات التي سيقرأها workers استنادًا إلى index analysis على جانبه (على initiator الخاص بالـ query). #72109 (Igor Nikonov).
  • استعادة التحسين الخاص بقراءة subcolumns لعمود واحد في Compact parts من https://github.com/ClickHouse/ClickHouse/pull/57631. فقد حُذف بالخطأ. #72285 (Pavel Kruglov).
  • تسريع فرز الأعمدة LowCardinality(String) عبر إلغاء الافتراضية من الاستدعاءات في المُقارِن. #72337 (Alexander Gololobov).
  • تحسين الدالة argMin/Max لبعض أنواع البيانات البسيطة. #72350 (alesapin).
  • تحسين آلية القفل باستخدام الأقفال المشتركة في متعقّب الذاكرة لتقليل التزاحم على الأقفال. #72375 (Jiebin Sun).
  • إضافة إعداد جديد، use_async_executor_for_materialized_views. يتيح تنفيذ استعلام العرض المادي بصورة غير متزامنة، وربما متعددة الخيوط، ما قد يسرّع معالجة العروض أثناء INSERT، لكنه قد يستهلك أيضًا مزيدًا من الذاكرة. #72497 (alesapin).
  • رُفعت القيم الافتراضية للإعدادين max_size_to_preallocate_for_aggregation وmax_size_to_preallocate_for_joins مرة أخرى إلى 10^12، لذا سيُطبَّق هذا التحسين في حالات أكثر. #72555 (Nikita Taranov).
  • تحسين أداء إلغاء تسلسل حالات الدوال التجميعية (في نوع البيانات AggregateFunction وفي الاستعلامات الموزعة). كما تحسّن قليلًا أداء تحليل التنسيق RowBinary. #72818 (Anton Popov).

تحسينات

  • ستُرجِع الدوال عالية الرتبة ذات المصفوفات الثابتة والوسائط الملتقطة الثابتة قيمًا ثابتة. #58400 (Alexey Milovidov).
  • تحسين القراءة بالترتيب عبر توليد صفوف افتراضية، بحيث تُقرأ بيانات أقل أثناء الفرز بالدمج، وهو ما يفيد بشكل خاص عند وجود أجزاء متعددة. #62125 (Shichao Jin).
  • أصبحت أسماء خطوات خطة الاستعلام (EXPLAIN PLAN json=1) وأسماء معالجات المسار (EXPLAIN PIPELINE compact=0,graph=1) تتضمن الآن معرّفًا فريدًا كلاحقة. يتيح ذلك مطابقة مخرجات Profiler للمعالجات وآثار OpenTelemetry مع مخرجات explain. #63518 (qhsong).
  • أُضيف خيار للتحقق من وجود الكائن بعد الكتابة إلى Azure Blob Storage، ويُتحكَّم في ذلك عبر الإعداد check_objects_after_upload. #64847 (Smita Kulkarni).
  • إصلاح منطق use-after-dtor في HashTable::destroyElements. #65279 (cangyin).
  • استخدام قاعدة البيانات Atomic افتراضيًا في clickhouse-local. يعالج البندين 1 و5 من #50647. ويغلق #44817. #68024 (Alexey Milovidov).
  • يجب إلغاء write buffer أو إنهاؤه صراحةً. وتؤدي الاستثناءات إلى قطع بروتوكول HTTP لتنبيه العميل إلى الخطأ. #68800 (Sema Checherinda).
  • الإبلاغ عن مضيفات DDLWorker العاملة عبر إنشاء replica_dir ووضع علامة على النسخ المتماثلة على أنها نشطة في DDLWorker. #69658 (Tuan Pham Anh).
    1. إعادة هيكلة DDLQueryStatusSource: - إعادة تسمية DDLQueryStatusSource إلى DistributedQueryStatusSource وجعلها فئة أساسية - إنشاء فئتين فرعيتين هما DDLOnClusterQueryStatusSource وReplicatedDatabaseQueryStatusSource مشتقتين من DDLQueryStatusSource للاستعلام عن حالة مهام DDL من DDL On Cluster وReplicated databases على التوالي. 2. دعم إيقاف انتظار المضيفين غير المتصلين في DDLOnClusterQueryStatusSource. #69660 (Tuan Pham Anh).
  • إضافة منطق إلغاء جديد: يتحقق CancellationChecker من مهلات query لكل استعلام بدأ تنفيذه، ويوقفه بمجرد بلوغ المهلة. #69880 (Yarik Briukhovetskyi).
  • إزالة الإعداد allow_experimental_join_condition، مع السماح افتراضيًا بالشروط غير القائمة على المساواة. #69910 (Vladimir Cherkasov).
  • تفعيل parallel_replicas_local_plan افتراضيًا. يساهم إنشاء plan محلي متكامل على initiator الخاص بالـ query في تحسين أداء parallel replicas مع استهلاك أقل للموارد، كما يتيح فرصًا لتطبيق المزيد من تحسينات query. #70171 (Igor Nikonov).
  • إضافة إمكانية تعيين المستخدم/كلمة المرور في http_handlers (لـ dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin).
  • دعم ALTER TABLE ... MODIFY/RESET SETTING ... لبعض إعدادات S3Queue التخزينية. #70811 (Kseniia Sumarokova).
  • عدم استدعاء واجهة برمجة تطبيقات object storage عند سرد الأدلة، لأن ذلك قد لا يكون فعّالًا من حيث التكلفة. وبدلًا من ذلك، تُخزَّن قائمة أسماء الملفات في Memory. وتتمثل المقايضات هنا في زيادة زمن initial load والذاكرة المطلوبة لتخزين أسماء الملفات. #70823 (Julia Kartseva).
  • إضافة parameter--threads إلى clickhouse-compressor، ما يتيح ضغط البيانات بالتوازي. #70860 (Alexey Milovidov).
  • جعل حجم history لعميل Replxx قابلًا للتهيئة. #71014 (Jiří Kozlovský).
  • إضافة الإعداد prewarm_mark_cache الذي يفعّل loading للـ marks إلى mark cache عند inserts وmerges وfetches الخاصة بالـ parts وعند بدء تشغيل الجدول. #71053 (Anton Popov).
  • دعم Boolean في القارئ native لتنسيق Parquet. #71055 (Arthur Passos).
  • إعادة المحاولة مع مزيد من الأخطاء عند التفاعل مع S3، مثل “Malformed message”. #71088 (Alexey Milovidov).
  • خفض log level لبعض الرسائل المتعلقة بـ S3. #71090 (Alexey Milovidov).
  • دعم كتابة ملفات hdfs التي تحتوي أسماؤها على مسافات. #71105 (exmy).
  • system.session_log مناسب بما يكفي. هذا يُغلق #51760. #71150 (Alexey Milovidov).
  • إصلاح RIGHT / FULL joins في queries التي تستخدم parallel replicas. يمكن الآن تنفيذ RIGHT joins مع parallel replicas (مع توزيع قراءة right table). أما FULL joins فلا يمكن تنفيذها بالتوازي بين العقد، لذا تُنفَّذ محليًا. #71162 (Igor Nikonov).
  • إضافة إعدادات تحدّ من عدد replicated tables وDictionaries وviews. #71179 (Kirill).
  • يُصلح #71227. #71286 (Arthur Passos).
  • تنفيذ GROUP BY/ORDER BY تلقائيًا على القرص استنادًا إلى استخدام الذاكرة على مستوى الخادم/المستخدم. ويمكن التحكم في ذلك عبر إعدادات الاستعلام max_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin).
  • إضافة لوحات معلومات لكل مضيف Overview (host) وCloud overview (host) إلى لوحة المعلومات المتقدمة. #71422 (alesapin).
  • تدعم الدالة translate الآن حذف الأحرف إذا كانت الوسيطة from تحتوي على أحرف أكثر من الوسيطة to. مثال: SELECT translate('clickhouse', 'clickhouse', 'CLICK') تُرجع الآن CLICK. #71441 (shuai.xu).
  • أُضيفت الدوال الجديدة parseDateTime64 وparseDateTime64OrNull وparseDateTime64OrZero. وبالمقارنة مع الدالة الحالية parseDateTime (ومتغيراتها)، فإنها تُرجع قيمة من النوع DateTime64 بدلًا من DateTime. #71581 (kevinyhzou).
  • تقليص مصفوفة index_granularity في الذاكرة لتلائم الحجم المطلوب وتقليل البصمة الذاكرية لعائلة محركات الجداول MergeTree. #71595 (alesapin).
  • ستقوم تطبيقات سطر الأوامر بإبراز البنية حتى في الاستعلامات متعددة العبارات. #71622 (Alexey Milovidov).
  • ستُرجع تطبيقات سطر الأوامر رموز خروج غير صفرية عند حدوث أخطاء. في الإصدارات السابقة، كان تطبيق disks يُرجع صفرًا عند حدوث أخطاء، وكانت التطبيقات الأخرى تُرجع صفرًا للأخطاء 256 (PARTITION_ALREADY_EXISTS) و512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov).
  • حصل التنسيق Vertical (الذي يُفعَّل أيضًا عند إنهاء الاستعلام بـ \G) على ميزات تنسيقات Pretty، مثل: - تمييز مجموعات الآلاف في الأرقام؛ - عرض تلميح رقمي سهل القراءة. #71630 (Alexey Milovidov).
  • إتاحة تعطيل زيادة حجم المخزن المؤقت للذاكرة في filesystem cache عبر الإعداد filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova).
  • إضافة إعداد منفصل background_download_max_file_segment_size للحد الأقصى لحجم file segment في التنزيلات الخلفية ضمن filesystem cache. #71648 (Kseniia Sumarokova).
  • تغيير default value لـ enable_http_compression من 0 إلى 1. يُغلق #71591. #71774 (Peter Nguyen).
  • دعم ALTER من Object إلى JSON. #71784 (Pavel Kruglov).
  • تحسين طفيف في parsing للنوع JSON: إذا كانت الكتلة الحالية لمسار JSON تحتوي على قيم من عدة types، فستُجرى محاولة لاختيار أفضل type عبر تجربة الأنواع بترتيب خاص من best-effort. #71785 (Pavel Kruglov).
  • سابقًا، كانت القراءة من system.asynchronous_metrics تنتظر اكتمال التحديث المتزامن. وقد يستغرق ذلك وقتًا طويلًا إذا كان النظام تحت حملٍ مرتفع. مع هذا التغيير، أصبح بالإمكان دائمًا قراءة القيم التي جُمعت سابقًا. #71798 (Alexander Gololobov).
  • اضبط polling_max_timeout_ms على 10 دقائق، وpolling_backoff_ms على 30 ثانية. #71817 (Kseniia Sumarokova).
  • كانت الاستعلامات مثل ‘SELECT - FROM t LIMIT 1’ تُحمّل indexes الأجزاء رغم أنها لم تكن مستخدمة. #71866 (Alexander Gololobov).
  • أصبح Allow_reorder_prewhere_conditions مفعّلًا افتراضيًا مع إعدادات التوافق القديمة. #71867 (Raúl Marín).
  • لا تتم زيادة عدّاد ILLEGAL_TYPE_OF_ARGUMENT في جدول system.errors عند استخدام الدالة bitmapTransform وكانت أنواع الوسائط صالحة. #71971 (Dmitry Novik).
  • عند استرجاع البيانات مباشرةً من Dictionary باستخدام تخزين Dictionary، أو table function الخاصة بالقاموس، أو عبر SELECT مباشر من القاموس نفسه، أصبح يكفي الآن امتلاك permission ‏SELECT أو permission ‏dictGet للقاموس. وهذا يتماشى مع المحاولات السابقة لمنع تجاوزات ACL: https://github.com/ClickHouse/ClickHouse/pull/57362 و https://github.com/ClickHouse/ClickHouse/pull/65359. كما يجعل الأخيرة متوافقة مع الإصدارات السابقة. #72051 (Nikita Mikhaylov).
  • أُضيف إلى صفحة HTML الخاصة بـ Advanced dashboard محدِّد منسدل لاختيار dashboard من جدول system.dashboards. #72081 (Sergei Trifonov).
  • تمت مراعاة prefer_locahost_replica عند بناء الخطة لعملية INSERT ... SELECT الموزّعة. #72190 (filimonov).
  • المشكلة موضحة هنا. ينشئ Azure Iceberg Writer ملفات Iceberg metadata (وكذلك manifest files) تخالف المواصفات. في طلب السحب هذا، أُضيفت محاولة لقراءة metadata بتنسيق Iceberg v1 باستخدام قارئ v2 (لأنها تُكتب بهذه الطريقة)، كما أُضيف خطأ عند عدم إنشاء الحقول المقابلة في manifest file. #72277 (Daniil Ivanik).
  • نُقلت أنواع JSON/Dynamic/Variant من experimental features إلى beta. #72294 (Pavel Kruglov).
  • أصبح مسموحًا الآن استخدام CREATE MATERIALIZED VIEW مع UNION [ALL] في الاستعلام. والسلوك مماثل لسلوك materialized view مع JOIN: *فقط الجدول الأول في تعبير SELECT سيعمل كمشغّل للإدراج- ، وسيتم تجاهل جميع الجداول الأخرى. #72347 (alesapin).
  • تسريع عمليات insert في MergeTree عند وجود قيمة واحدة فقط لـ partition key داخل الدفعة المُدرجة. #72348 (alesapin).
  • أُضيف المقياس الجديد MergeTreeIndexGranularityInternalArraysTotalSize إلى system.metrics. وهذا المقياس مطلوب لتحديد المثيلات التي تحتوي على datasets ضخمة ومعرّضة لمشكلة الاستهلاك المرتفع للذاكرة. #72490 (Miсhael Stetsyuk).
  • أصبح الآن يتم التعرّف على جميع صيغ كتابة الكلمة Null عندما يستخدم الاستعلام Format Null. سابقًا، لم تكن الصيغ الأخرى (مثل NULL) تؤدي إلى طرح استثناءات، ولكن في الوقت نفسه لم يكن التنسيق Null يُستخدم فعليًا في تلك الحالات. #72658 (Nikita Taranov).
  • السماح بقيم غير معروفة في المجموعة حتى إن لم تكن موجودة في Enum. إصلاح #72662. #72686 (zhanglistar).
  • إضافة total_bytes_with_inactive إلى system.tables لاحتساب إجمالي بايتات الأجزاء غير النشطة. #72690 (Kai Zhu).
  • إضافة MergeTreeSettings إلى system.settings_changes. #72694 (Raúl Marín).
  • دعم معامل البحث في السلاسل النصية (مثل like) لنوع البيانات Enum، مع إصلاح #72661. #72732 (zhanglistar).
  • دعم نوع JSON في الدالة notEmpty. #72741 (Pavel Kruglov).
  • دعم تحليل خطأ GCS S3 ‏AuthenticationRequired. #72753 (Vitaly Baranov).
  • دعم نوع Dynamic في الدالتين ifNull و coalesce. #72772 (Pavel Kruglov).
  • تمت إضافة أحداث profile ‏JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov).
  • دعم Dynamic في الدوال toFloat64/touInt32/etc. #72989 (Pavel Kruglov).

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

  • الأجزاء التي أُزيلت تكراراتها أثناء استعلام ATTACH PART لم تعد تبقى عالقة بالبادئة attaching_. #65636 (Kirill).
  • إصلاح الخلل الذي كان يؤدي إلى فقدان dateTime64 للدقة في الدالة IN. #67230 (Yarik Briukhovetskyi).
  • إصلاح خطأ منطقي محتمل عند استخدام الدوال مع IGNORE/RESPECT NULLS في ORDER BY ... WITH FILL، ويغلق #57609. #68234 (Vladimir Cherkasov).
  • إصلاح أخطاء منطقية نادرة في asynchronous inserts بتنسيق Native عند بلوغ حد الذاكرة. #68965 (Anton Popov).
  • إصلاح COMMENT في CREATE TABLE للعمود EPHEMERAL. #70458 (Yakov Olkhovskiy).
  • إصلاح خطأ منطقي في JSONExtract مع LowCardinality(Nullable). #70549 (Pavel Kruglov).
  • إصلاح السلوك عندما يكون اسم الجدول طويلًا جدًا. #70810 (Yarik Briukhovetskyi).
  • إضافة إمكانية تجاوز Content-Type عبر ترويسات المستخدم في محرك URL. #70859 (Artem Iurin).
  • إصلاح خطأ منطقي في StorageS3Queue “Cannot create a persistent node in /processed since it already exists”. #70984 (Kseniia Sumarokova).
  • إصلاح الخلل الذي لم يكن يراعي العمود _row_exists في خيار إعادة البناء للحذف الخفيف في الإسقاط. #71089 (Shichao Jin).
  • إصلاح قيمة خاطئة في system.query_metric_log بسبب حالة تسابق غير متوقعة. #71124 (Pablo Marcos).
  • إصلاح عدم تطابق اسم دالة التجميع quantileExactWeightedInterpolated. أُدخل هذا الخلل في https://github.com/ClickHouse/ClickHouse/pull/69619. مع الإشارة إلى @Algunenano. #71168 (李扬).
  • إصلاح استثناء bad_weak_ptr مع Dynamic عند مقارنة الدوال. #71183 (Pavel Kruglov).
  • عدم حذف blob عندما تكون هناك عقد تستخدمه في ReplicatedMergeTree مع zero-copy replication. #71186 (Antonio Andelic).
  • إصلاح تجاهل إعدادات format في Native format عبر HTTP وAsync Inserts. #71193 (Pavel Kruglov).
  • لم تعد استعلامات SELECT التي تعمل بالإعداد use_query_cache = 1 تُرفض إذا ظهر اسم جدول نظام كنص حرفي، فعلى سبيل المثال أصبح SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true; يعمل الآن. #71254 (Robert Schulze).
  • إصلاح خطأ يؤدي إلى زيادة استخدام الذاكرة إذا كان enable_filesystem_cache=1، بينما لم يكن القرص في إعدادات التخزين يحتوي على أي إعداد لذاكرة التخزين المؤقت. #71261 (Kseniia Sumarokova).
  • إصلاح الخطأ المحتمل “Cannot read all data” أثناء إلغاء التسلسل لقاموس LowCardinality من عمود Dynamic. #71299 (Pavel Kruglov).
  • إصلاح عدم اكتمال تنظيف output format المتوازي في العميل. #71304 (Raúl Marín).
  • إضافة إلغاء الهروب المفقود في named collections. ومن دون هذا الإصلاح، يتعذر على clickhouse-server بدء التشغيل. #71308 (MikhailBurdukov).
  • إصلاح async inserts مع blocks فارغة عبر native protocol. #71312 (Anton Popov).
  • إصلاح عدم اتساق formatting الخاصة بـ AST عند منح grants خاطئة باستخدام أحرف البدل #71309. #71332 (pufit).
  • التحقق من الأنواع المشبوهة والتجريبية في type hints الخاصة بـ JSON. #71369 (Pavel Kruglov).
  • إصلاح الخطأ Invalid number of rows in Chunk مع عمود Variant. #71388 (Pavel Kruglov).
  • إصلاح التعطل في table function ‏mongodb عند تمرير argument غير صحيحة (مثل NULL). #71426 (Vladimir Cherkasov).
  • إصلاح التعطل المرتبط بـ optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
  • إصلاح خطأ NoSuchKey أثناء rollback للمعاملة عندما يفشل إنشاء directory للقرص palin_rewritable. #71439 (Julia Kartseva).
  • تم إصلاح استخدام الإعداد max_insert_delayed_streams_for_parallel_write في inserts. في السابق، كان يعمل بشكل غير صحيح، ما قد يؤدي إلى ارتفاع استخدام الذاكرة في inserts التي تكتب البيانات إلى عدة partitions. #71474 (Anton Popov).
  • إصلاح الخطأ المحتمل Argument for function must be constant (analyzer القديم) في الحالات التي قد يظهر فيها arrayJoin ظاهريًا داخل شرط WHERE. هذا تراجع نتج بعد https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov).
  • منع التعطل في SortCursor عند وجود 0 columns (analyzer القديم). #71494 (Raúl Marín).
  • إصلاح خروج date32 عن النطاق بسبب بيانات orc غير المهيأة. لمزيد من التفاصيل، راجع https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬).
  • إصلاح احتساب حجم العمود في Wide part لأنواع Dynamic وJSON. #71526 (Pavel Kruglov).
  • إصلاح في المحلل عند استخدام استعلام داخل عرض مادي مع IN وCTE. يغلق #65598. #71538 (Maksim Kita).
  • إرجاع 0 أو المحرف الافتراضي بدلًا من طرح خطأ في دوال bitShift عند تجاوز الحدود. #71580 (Pablo Marcos).
  • إصلاح تعطّل الخادم أثناء استخدام عرض مادي مع بعض المحركات. #71593 (Pervakov Grigorii).
  • كان ARRAY JOIN مع بنية بيانات متداخلة تحتوي على اسم مستعار لمصفوفة ثابتة يؤدي إلى إلغاء مرجع مؤشر NULL. هذا يغلق #71677. #71678 (Alexey Milovidov).
  • إصلاح LOGICAL_ERROR عند تنفيذ ALTER مع Tuple فارغ. هذا يصلح #71647. #71679 (Amos Bird).
  • لا تُحوِّل المجموعة الثابتة في الشروط على أعمدة التقسيم عند استخدام العامل NOT IN. #71695 (Eduard Karacharov).
  • إصلاح CAST من LowCardinality(Nullable) إلى Dynamic. سابقًا، كان ذلك قد يؤدي إلى الخطأ Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov).
  • إصلاح استثناء في toDayOfWeek ضمن شرط WHERE مع مفتاح أساسي من النوع DateTime64. #71849 (Yakov Olkhovskiy).
  • إصلاح تعبئة القيم الافتراضية بعد التحليل إلى الأعمدة المتناثرة. #71854 (Anton Popov).
  • إصلاح خطأ الدالة GROUPING عندما يكون الإدخال ALIAS في جدول موزع، ويغلق #68602. #71855 (Vladimir Cherkasov).
  • إصلاح عبارات select التي تستخدم العبارة WITH TIES وقد لا تُرجع عددًا كافيًا من الصفوف. #71886 (wxybear).
  • إصلاح استثناء TOO_LARGE_ARRAY_SIZE الذي يحدث عندما يُعتقَد خطأً أن عمودًا من ناتج arrayWithConstant يتجاوز حد حجم المصفوفة. #71894 (Udi).
  • كان clickhouse-benchmark يبلّغ عن مقاييس غير صحيحة للاستعلامات التي تستغرق أكثر من ثانية واحدة. #71898 (Alexey Milovidov).
  • إصلاح حالة سباق بيانات بين مؤشر التقدّم وجدول التقدّم في clickhouse-client. تظهر هذه المشكلة عند استخدام FROM INFILE. واعتراض ضغطات المفاتيح أثناء استعلامات INSERT لتبديل عرض جدول التقدّم. #71901 (Julia Kartseva).
  • إصلاح تسلسل قيم Dynamic في تنسيقات Pretty JSON. #71923 (Pavel Kruglov).
  • إصلاح عمود rows_processed في system.s3/azure_queue_log الذي كان معطّلًا في الإصدار 24.6. يُغلق #69975. #71946 (Kseniia Sumarokova).
  • تم إصلاح حالة كانت فيها دالتا s3/s3Cluster قد تُرجعان نتيجة غير مكتملة أو تُطلقان استثناءً. وكان ذلك يحدث عند استخدام glob pattern في s3 uri (مثل pattern/*) مع وجود object فارغ بالمفتاح pattern/ (وتُنشئ S3 Console مثل هذه الكائنات تلقائيًا). كما تغيّرت القيمة الافتراضية للإعداد s3_skip_empty_files من false إلى true. #71947 (Nikita Taranov).
  • إصلاح crash في تمييز الصياغة في clickhouse-client. يُغلق #71864. #71949 (Nikolay Degterinsky).
  • إصلاح الخطأ Illegal type في جداول MergeTree التي تستخدم دالة monotonic ثنائية في ORDER BY عندما تكون argument الأولى ثابتة. يُصلح #71941. #71966 (Nikolai Kochetov).
  • السماح فقط باستعلامات SELECT في EXPLAIN AST المستخدم داخل subquery. تؤدي الأنواع الأخرى من queries إلى logical error: ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ أو Inconsistent AST formatting. #71982 (Pavel Kruglov).
  • عند insert سجل باستخدام clickhouse-client، يقرأ client أوصاف الأعمدة من server. ولكن كان هناك خطأ يؤدي إلى كتابة الأوصاف بترتيب غير صحيح، بينما الترتيب الصحيح هو [statistics, ttl, settings]. #71991 (Han Fei).
  • إصلاح formatting لأوامر alter من النوع MOVE PARTITION ... TO TABLE ... عند تفعيل format_alter_commands_with_parentheses. #72080 (János Benjamin Antal).
  • إضافة اسم format المُستنتَج إلى create query في محركات File/S3/URL/HDFS/Azure. سابقًا، كان يتم infer اسم format في كل مرة يُعاد فيها تشغيل server، وإذا أزيلت data files المحددة، كان ذلك يؤدي إلى أخطاء أثناء بدء تشغيل server. #72108 (Pavel Kruglov).
  • إصلاح خطأ كان يجعل min_age_to_force_merge_on_partition_only عالقًا في محاولة دمج partition نفسها مرارًا رغم أنها كانت قد دُمجت بالفعل في part واحدة، من دون دمج partitions التي تحتوي على parts متعددة. #72209 (Christoph Wurm).
  • تم إصلاح crash في SimpleSquashingChunksTransform كان يحدث في حالات نادرة عند processing الأعمدة sparse. #72226 (Vladimir Cherkasov).
  • تم إصلاح data race في GraceHashJoin، ما كان قد يؤدي إلى فقدان بعض rows من ناتج join. #72233 (Nikita Taranov).
  • تم إصلاح استعلامات ALTER DELETE مع العمود materialized _block_number (إذا كان الإعداد enable_block_number_column مفعّلًا). #72261 (Anton Popov).
  • تم إصلاح data race عند استدعاء ColumnDynamic::dumpStructure() بشكل concurrent، مثلًا في constructor الخاص بـ ConcurrentHashJoin. #72278 (Nikita Taranov).
  • إصلاح احتمال حدوث LOGICAL_ERROR مع الأعمدة المكررة في ORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov).
  • إصلاح عدم تطابق الأنواع في عدة حالات بعد تطبيق optimize_functions_to_subcolumns. #72394 (Anton Popov).
  • إصلاح الفشل عند تحليل استعلامات BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov).
  • عدم السماح بإنشاء Variant فارغ. #72454 (Pavel Kruglov).
  • إصلاح التنسيق غير الصحيح لـ result_part_path في system.merges. #72567 (Konstantin Bogdanov).
  • إصلاح تحليل نمط glob ذي العنصر الواحد. #72572 (Konstantin Bogdanov).
  • إصلاح توليد الاستعلام للخادم التابع في حالة الاستعلام الموزع مع ARRAY JOIN. ويعالج هذا #69276. #72608 (Dmitry Novik).
  • إصلاح خطأ كانت فيه DateTime64 داخل DateTime64 لا يعيد أي شيء. #72640 (Yarik Briukhovetskyi).
  • إصلاح الخطأ “No such key” في وضع S3Queue unordered عندما يكون الإعداد tracked_files_limit أصغر من معدل ظهور ملفات S3. #72738 (Kseniia Sumarokova).
  • قد يستغرق حذف mark cache وقتًا ملحوظًا إذا كان كبيرًا. وإذا احتفظنا بـ context mutex أثناء ذلك، فسيؤدي هذا إلى حظر كثير من الأنشطة الأخرى، بل وقد يتعذر حتى إنشاء client connection جديد إلى أن يتم تحريره. وفي الواقع، لا يلزم الاحتفاظ بهذا mutex للمزامنة، إذ يكفي وجود مرجع محلي إلى cache عبر shared ptr. #72749 (Alexander Gololobov).
  • كانت PK cache تقلل كثيرًا من تقدير حجمها على إحدى بيئات الاختبار. وعلى وجه الخصوص، لم تكن أعمدة LowCardinality تحتسب حجم dictionary. ويتمثل الإصلاح في استخدام column->allocatedBytes() مع بعض تقديرات overhead الإضافية لحجم cache entry. #72750 (Alexander Gololobov).
  • إصلاح الاستثناء المطروح في RemoteQueryExecutor عندما لا يكون المستخدم موجودًا محليًا. #72759 (Andrey Zvonov).
  • إصلاح mutations مع العمود materialized _block_number (إذا كان الإعداد enable_block_number_column مفعّلًا). #72854 (Anton Popov).
  • إصلاح backup/restore مع قرص plain rewritable في حال وجود ملفات فارغة في النسخة الاحتياطية. #72858 (Kseniia Sumarokova).
  • إلغاء inserts بشكل صحيح في DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
  • إصلاح crash أثناء تحليل بيانات غير صحيحة إلى الأعمدة sparse (قد يحدث ذلك عند تفعيل الإعداد enable_parsing_to_custom_serialization). #72891 (Anton Popov).
  • إصلاح تعطل محتمل أثناء استعادة النسخة الاحتياطية. #72947 (Kseniia Sumarokova).
  • إصلاح خلل في طريقة JOIN parallel_hash قد يظهر عندما يحتوي الاستعلام على شرط معقد في البند ON مع عوامل تصفية لعدم المساواة. #72993 (Nikita Taranov).
  • استخدام إعدادات التنسيق الافتراضية أثناء تحليل JSON لتجنب خلل في إلغاء التسلسل. #73043 (Pavel Kruglov).
  • إصلاح تعطل في المعاملات عند استخدام تخزين غير مدعوم. #73045 (Raúl Marín).
  • التحقق من مفاتيح JSON المكررة أثناء تحليل Tuple. وكان هذا قد يؤدي سابقًا إلى الخطأ المنطقي Invalid number of rows in Chunk أثناء التحليل. #73082 (Pavel Kruglov).
آخر تعديل في ٢٩ يونيو ٢٠٢٦