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

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

تغييرات JSON وتنسيقات البيانات

  • تعطيل إحاطة الأعداد الصحيحة ذات 64 بت بعلامات اقتباس في تنسيقات JSON افتراضيًا. #74079 (Pavel Kruglov).
  • استنتاج Array(Dynamic) بدلًا من Tuple غير المسمّى لمصفوفات القيم ذات الأنواع المختلفة في JSON. لاستخدام السلوك السابق، عطّل الإعداد input_format_json_infer_array_of_dynamic_from_array_of_different_types. #80859 (Pavel Kruglov).
  • كتابة القيم من النوع Enum بصيغة BYTE_ARRAY مع النوع المنطقي ENUM في تنسيق الإخراج Parquet افتراضيًا. #84169 (Pavel Kruglov).

التخزين والتقسيم

  • إضافة دعم لعمليات الكتابة بأسلوب تقسيم Hive، مع إعادة هيكلة آلية تنفيذ القراءة (لم تعد أعمدة تقسيم Hive افتراضية). #76802 (Arthur Passos).
  • تفعيل إعداد MergeTree write_marks_for_substreams_in_compact_parts افتراضيًا. يحسّن ذلك بشكل كبير أداء قراءة الأعمدة الفرعية من أجزاء Compact المُنشأة حديثًا. ولن تتمكن الخوادم التي يقل إصدارها عن 25.5 من قراءة أجزاء Compact الجديدة. #84171 (Pavel Kruglov).
  • منع RENAME COLUMN أو DROP COLUMN عند تضمين أعمدة مُدرجة صراحةً للتجميع في SummingMergeTree. يُغلق #81836. #82821 (Alexey Milovidov).

تحسينات الدوال

  • إضافة وسيطة جديدة unexpected_quoting_character_strategy إلى الدالة extractKeyValuePairs للتحكم في ما يحدث عند العثور على quoting_character بشكل غير متوقع. لمزيد من التفاصيل، راجع وثائق الدالة extractKeyValuePairs. #80657 (Arthur Passos).
  • سابقًا، كانت الدالة countMatches تتوقف عن العد عند أول تطابق فارغ، حتى إذا كان النمط يقبله. ولمعالجة هذه المشكلة، تواصل countMatches الآن التنفيذ بالتقدّم حرفًا واحدًا عند حدوث تطابق فارغ. ويمكن للمستخدمين الذين يرغبون في الإبقاء على السلوك القديم تفعيل الإعداد count_matches_stop_at_empty_match. #81676 (Elmi Ahmadov).

تحسينات على نوع البيانات

  • تحسين دقة التحويل من Decimal إلى Float32. وإتاحة التحويل من Decimal إلى BFloat16. يُغلق #82660. #82823 (Alexey Milovidov).

الأداء وإدارة الموارد

  • سابقًا، لم تكن استعلامات BACKUP وعمليات الدمج والتعديلات تستخدم محددات المعدل على مستوى الخادم لحركة المرور المحلية (max_local_read_bandwidth_for_server و max_local_write_bandwidth_for_server) والبعيدة (max_remote_read_network_bandwidth_for_server و max_remote_write_network_bandwidth_for_server)؛ بل كانت تُقيَّد فقط بواسطة إعدادات خادم مخصصة (max_backup_bandwidth_for_server و max_mutations_bandwidth_for_server و max_merges_bandwidth_for_server). أما الآن، فهي تستخدم كلا النوعين من محددات المعدل في الوقت نفسه. #81753 (Sergei Trifonov).
  • أُضيف إعداد جديد cluster_function_process_archive_on_multiple_nodes يزيد أداء معالجة الأرشيفات في دوال العنقود عند ضبطه على true (وهو الإعداد الافتراضي). وينبغي ضبطه على false للتوافق وتجنب الأخطاء أثناء الترقية إلى 25.7+ عند استخدام دوال العنقود مع الأرشيفات في الإصدارات الأقدم. #82355 (Kseniia Sumarokova).
  • كانت القيمة الافتراضية السابقة لـ concurrent_threads_scheduler هي round_robin، وقد تبيّن أنها غير عادلة عند وجود عدد كبير من الاستعلامات أحادية الخيط (مثل INSERT). ويجعل هذا التغيير المجدول fair_round_robin، وهو بديل أكثر أمانًا، الخيار الافتراضي. #84747 (Sergei Trifonov).
  • لا يُفعَّل التجسيد الكسول إلا مع المحلل، لتجنّب الحاجة إلى صيانته من دونه، إذ قد تظهر بعض المشكلات في هذه الحالة (على سبيل المثال، عند استخدام indexHint() في الشروط). #83791 (Igor Nikonov).

المخطط وبنية SQL

  • منع إنشاء جدول من دون أعمدة يمكن الإدراج فيها. #81835 (Pervakov Grigorii).
  • اشتراط وضع backticks حول المعرّفات التي تحتوي على نقاط في التعبيرات الافتراضية، لمنع تفسيرها على أنها معرّفات مركّبة. #83162 (Pervakov Grigorii).
  • دعم صيغة Heredoc على نمط PostgreSQL: $tag$ string contents... $tag$، والمعروفة أيضًا باسم السلاسل النصية المحاطة باقتباسات الدولار. في الإصدارات السابقة، كانت القيود المفروضة على الوسوم أقل: إذ كان يمكن أن تحتوي على محارف عشوائية، بما في ذلك علامات الترقيم والمسافات البيضاء. وهذا يسبب غموضًا في التحليل عند وجود معرّفات يمكن أن تبدأ أيضًا بمحرف الدولار. وفي الوقت نفسه، لا يسمح PostgreSQL في الوسوم إلا بمحارف الكلمات. ولحل هذه المشكلة، نقيّد الآن وسوم Heredoc بحيث تحتوي على محارف الكلمات فقط. إغلاق #84731. #84846 (Alexey Milovidov).

الأمان والصلاحيات

  • سيؤدي الأمر SYSTEM RESTART REPLICAS إلى إعادة تشغيل النسخ المتماثلة فقط في قواعد البيانات التي تملك فيها إذن SHOW TABLES. في السابق، كان هذا الاستعلام يؤدي إلى إيقاظ الجداول في قاعدة بيانات Lazy حتى دون وجود صلاحية للوصول إلى تلك القاعدة، وذلك أثناء حذف هذه الجداول بالتزامن. #83321 (Alexey Milovidov).
  • تم تحديث الدوال azureBlobStorage وdeltaLakeAzure وicebergAzure للتحقق من أذونات AZURE على نحو صحيح. وأصبحت الآن جميع الدوال ذات الصيغة العنقودية (دوال -Cluster) تتحقق من الأذونات بالرجوع إلى نظيراتها غير العنقودية المقابلة. ولتجنّب أخطاء الأذونات، تأكد من أن المستخدمين الذين يستدعون دوال -Cluster لديهم الامتيازات المناسبة (على سبيل المثال: GRANT S3 ON *.* TO user). بالإضافة إلى ذلك، تفرض الدالتان icebergLocal وdeltaLakeLocal الآن أيضًا التحقق من إذن FILE. #84938 ([Nikita Mikhaylov](https://github.com/nikitamikhaylov

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

أنواع البيانات

  • إضافة نوعَي بيانات جديدين: Time ([H]HH:MM:SS) وTime64 ([H]HH:MM:SS[.fractional])، إلى جانب بعض دوال التحويل الأساسية ودوال للتعامل مع أنواع بيانات أخرى. كما أُضيفت إعدادات للتوافق مع الدالة القديمة ToTime. #81217 (Yarik Briukhovetskyi).

الدالة

جداول النظام

Iceberg وDeltaLake

  • دعم الأنواع المعقدة في schema evolution الخاصة بـ Iceberg. #73714 (scanhex12).
  • إضافة دعم الكتابة إلى Iceberg لاستعلامات insert. #82692 (scanhex12).
  • دعم الحذف الموضعي في محرك الجدول Iceberg. #83094 (Daniil Ivanik).
  • قراءة data files الخاصة بـ Iceberg باستخدام معرّفات الحقول. يُغلق #83065. #83653 (scanhex12).
  • دعم الكتابة إلى Iceberg لأوامر CREATE. يُغلق #83927. #83983 (scanhex12).
  • دعم الكتابة إلى Glue catalogs. #84136 (scanhex12).
  • دعم الكتابة إلى Iceberg REST catalogs. #84684 (scanhex12).
  • دمج جميع position delete files في Iceberg ضمن data files. سيؤدي ذلك إلى تقليل عدد ملفات Parquet وأحجامها في تخزين Iceberg. Syntax: OPTIMIZE TABLE table_name. #85250 (scanhex12).
  • دعم DROP TABLE في Iceberg (الإزالة من REST/Glue catalogs مع إزالة metadata الخاصة بالجدول). #85395 (scanhex12).
  • دعم mutations من نوع ALTER DELETE في Iceberg بتنسيق merge-on-read. #85549 (scanhex12).
  • دعم الكتابة إلى DeltaLake. يُغلق #79603. #85564 (Kseniia Sumarokova).
  • كتابة المزيد من إحصاءات Iceberg (أحجام الأعمدة والحدود الدنيا والعليا) في metadata (manifest entries) لتحسين min-max pruning. #85746 (scanhex12).
  • دعم إضافة الأعمدة وحذفها وتعديلها في Iceberg للأنواع البسيطة. #85769 (scanhex12).

MergeTree والتخزين

  • تدعم جميع الجداول الآن العمود الافتراضي _table، وليس جداول النوع Merge فقط. #63665 (Xiaozhe Yu).
  • أُضيف SZ3 كـ codec ضغط فقدي مع حدٍّ أقصى للخطأ، للأعمدة من النوع Float32 وFloat64. #67161 (scanhex12).
  • أُضيف دعم التحديثات خفيفة الوزن لجداول عائلة MergeTree. ويمكن استخدام التحديثات خفيفة الوزن عبر صياغة جديدة: UPDATE <table> SET col1 = val1, col2 = val2, ... WHERE <condition>. كما أُضيف تنفيذ lightweight deletes من خلال التحديثات خفيفة الوزن، ويمكن تمكينه بتعيين lightweight_delete_mode = 'lightweight_update'. #82004 (Anton Popov).
  • دعم العمود الافتراضي _part_granule_offset في جداول عائلة MergeTree. يشير هذا العمود إلى الفهرس الصفري للـ granule/mark الذي ينتمي إليه كل صف داخل data part الخاصة به. يعالج هذا #79572. #82341 (Amos Bird).

دعم البروتوكولات والعملاء

ميزات SQL والاستعلامات

  • دعم الصيغة DESCRIBE SELECT بالإضافة إلى DESCRIBE (SELECT ...). #82947 (Yarik Briukhovetskyi).
  • دعم كتابة USE DATABASE {name}. #81307 (Yarik Briukhovetskyi).
  • أُضيف دعم القراءة من الإسقاطات للنسخ المتماثلة المتوازية. وأُضيف إعداد جديد parallel_replicas_support_projection للتحكم في تفعيل دعم الإسقاطات. ولتبسيط التنفيذ، لا يُفعَّل دعم الإسقاطات إلا عند تفعيل parallel_replicas_local_plan. #82807 (zoomxi).

التنسيقات

  • أُضيف الإعداد format_schema_source الذي يحدّد مصدر format_schema. #80874 (Tuan Pham Anh).
  • أُضيف Hash كتنسيق إخراج جديد. ويحسب قيمة hash واحدة لجميع الأعمدة والصفوف في النتيجة. وهذا مفيد لحساب “بصمة” للنتيجة، على سبيل المثال في حالات الاستخدام التي يشكّل فيها نقل البيانات عنق الزجاجة. مثال: SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hash يُرجع e5f9e676db098fdb9530d2059d8c23ef. #84607 (Robert Schulze).

إعدادات الخادم وإدارة أعباء العمل

  • يُفعّل إعداد الخادم cpu_slot_preemption جدولة CPU الاستباقية لأعباء العمل، ويضمن تخصيصًا عادلًا وفق مبدأ max-min لوقت CPU بين أعباء العمل. كما أُضيفت إعدادات جديدة لعبء العمل للتحكم في استهلاك CPU: max_cpus وmax_cpu_share وmax_burst_cpu_seconds. #80879 (Sergei Trifonov).
  • أصبح إعداد عبء العمل max_waiting_queries مدعومًا. ويمكن استخدامه لتقييد حجم قائمة انتظار الاستعلامات. وإذا جرى بلوغ الحد، فسيتم إنهاء جميع الاستعلامات اللاحقة بخطأ SERVER_OVERLOADED. #81250 (Oleg Doronin).
  • إغلاق اتصال TCP بعد بلوغ العدد المُهيأ من الاستعلامات أو العتبة الزمنية المحددة. يحل #68000. #81472 (Kenny Sun).

التخزين السحابي

  • أضِف extra_credentials إلى AzureBlobStorage للمصادقة باستخدام client_id وtenant_id. #84235 (Pablo Marcos).

Keeper

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

محركات الجداول ودوال الجداول

تحسينات الفهرس النصي

  • إضافة الدالتين searchAny وsearchAll، وهما أداتان للأغراض العامة للبحث في الفهارس النصية. #80641 (Elmi Ahmadov).
  • يدعم الفهرس النصي الآن المُجزِّئ string. #81752 (Elmi Ahmadov).
  • تم تغيير قيمة index granularity الافتراضية لفهارس text إلى 64. وهذا يحسّن الأداء المتوقع لمتوسط query الاختبار في الاختبارات المعيارية الداخلية. #82162 (Jimmy Aguilar Mena).
  • يخزّن bitmap ذو 256 بت labels الصادرة للحالة بترتيب معيّن، لكن تُحفَظ الحالات الصادرة على القرص حسب ترتيب ظهورها في جدول التجزئة. لذلك قد تشير label إلى الحالة التالية الخاطئة عند القراءة من القرص. #82783 (Elmi Ahmadov).
  • حاليًا، تُحفَظ شجرة FST على القرص من دون ضغط. وقد يؤدي ذلك إلى بطء الأداء أو زيادة عرض نطاق I/O أثناء كلٍّ من الكتابة إلى القرص والقراءة منه. #83093 (Elmi Ahmadov).

تحديثات مستوى نضج الميزات

  • نُقل catalog إلى مرحلة Beta. #85848 (Melvyn Peignon).
  • انتقلت التحديثات خفيفة الوزن من مرحلة Experimental إلى مرحلة Beta. #85952 (Anton Popov).

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

تنفيذ الاستعلام والتجميع

  • تحسين بسيط لمُعدِّل الدالة التجميعية -If. #78454 (李扬).
  • أُضيف منطق جديد (يتحكم فيه الإعداد enable_producing_buckets_out_of_order_in_aggregation، وهو مفعّل افتراضيًا) يتيح إرسال بعض الـ buckets خارج الترتيب أثناء التجميع الموفّر للذاكرة. وعندما تستغرق بعض buckets التجميع وقتًا أطول بكثير في الدمج مقارنةً بغيرها، يحسّن ذلك الأداء من خلال السماح للعقدة البادئة بدمج buckets ذات المعرّفات الأعلى في أثناء ذلك. والجانب السلبي هو احتمال زيادة استخدام الذاكرة (ومن المفترض ألا تكون الزيادة كبيرة). #80179 (Nikita Taranov).
  • جعل مسار المعالجة بعد خطوة TOTALS متعدد الخيوط. #80331 (UnamedRus).
  • عندما لا يحتوي استعلام التجميع إلا على دالة COUNT() واحدة على عمود NOT NULL، يُضمَّن منطق التجميع بالكامل أثناء فحص جدول hash. وهذا يتجنب تخصيص أي حالة تجميع أو الاحتفاظ بها، مما يقلل بشكل كبير من استخدام الذاكرة والعبء على CPU. ويعالج هذا جزئيًا #81982. #82104 (Amos Bird).
  • حساب المفتاح المتسلسل على مستوى الأعمدة عند التجميع حسب عدة أعمدة نصية أو رقمية. #83884 (李扬).
  • تنفيذ addManyDefaults لمُعدِّلات -If. #83870 (Raúl Marín).

تحسينات JOIN

  • أُضيف الإعداد الجديد min_joined_block_size_rows (مماثلًا لـ min_joined_block_size_bytes؛ وقيمته الافتراضية 65409) للتحكم في الحد الأدنى لحجم الكتلة (بعدد الصفوف) لكتل الإدخال والإخراج في JOIN (إذا كانت خوارزمية join تدعم ذلك). ستُدمج الكتل الصغيرة. #81886 (Nikita Taranov).
  • جرى تحسين أداء HashJoin عبر إزالة الحلقة الإضافية على hash maps في الحالة الشائعة التي يكون فيها هناك عمود مفتاح واحد فقط، كما أُزيلت أيضًا عمليات التحقق من null_map و join_mask عندما تكون دائمًا true/false. #82308 (Nikita Taranov).
  • طُبِّقت تحسينات null_map و JoinMask من #82308 على حالة JOIN ذات الشروط المنفصلة المتعددة أيضًا. كما جرى تحسين بنية البيانات KnownRowsHolder. #83041 (Nikita Taranov).
  • استُخدم std::vector<std::atomic_bool> مباشرةً لأعلام join لتجنب حساب hash عند كل وصول إلى هذه الأعلام. #83043 (Nikita Taranov).
  • نُقلت معالجة max_joined_block_rows إلى خارج الحلقة الرئيسية لـ hash JOIN. تحسُّن طفيف في الأداء لـ ALL JOIN. #83216 (Nikolai Kochetov).
  • لم يعد يُجرى تخصيص الذاكرة مسبقًا لأعمدة النتائج عندما يستخدم HashJoin وضع الإخراج lazy. فهذا ليس مثاليًا، خاصةً عندما يكون عدد المطابقات منخفضًا. إضافةً إلى ذلك، نعرف العدد الدقيق للمطابقات بعد اكتمال عملية join، لذا يمكن إجراء التخصيص المسبق بدقة أكبر. #83304 (Nikita Taranov).
  • ستُحوَّل جميع عمليات JOIN من نوع LEFT/INNER تلقائيًا إلى RightAny إذا كان الجانب الأيمن يتحدد وظيفيًا بواسطة أعمدة مفتاح join (أي إن جميع الصفوف لها قيم فريدة لمفتاح join). #84010 (Nikita Taranov).
  • تحسين أداء تطبيق patch parts في وضع Join. #85040 (Anton Popov).

تحسينات الاستعلامات الموزعة

  • أُضيف خيار لنقل عمليات الضغط/فك الضغط والتسلسل/إلغاء التسلسل للكتل إلى خيوط مسار المعالجة بدلًا من خيط واحد مرتبط باتصال شبكة. يتحكم في ذلك الإعداد enable_parallel_blocks_marshalling. ومن المفترض أن يسرّع هذا الاستعلامات الموزعة التي تنقل كميات كبيرة من البيانات بين العقدة البادئة والعقد البعيدة. #78694 (Nikita Taranov).
  • أصبح INSERT SELECT الموزع المتوازي مفعّلًا افتراضيًا في الوضع الذي يُنفَّذ فيه INSERT SELECT على كل shard بشكل مستقل؛ راجع الإعداد parallel_distributed_insert_select. #80425 (Igor Nikonov).
  • تم ضغط السجلات وأحداث profile في البروتوكول الأصلي. في clusters التي تضم أكثر من 100 replica، تستهلك أحداث profile غير المضغوطة 1..10 ميغابايت/ثانية، ويصبح شريط التقدم بطيئًا على اتصالات الإنترنت البطيئة. ويغلق هذا #82533. #82535 (Alexey Milovidov).
  • أصبح INSERT SELECT الموزع المتوازي مفعّلًا افتراضيًا في الوضع الذي يُنفَّذ فيه INSERT SELECT على كل shard بشكل مستقل؛ راجع الإعداد parallel_distributed_insert_select. #83040 (Igor Nikonov).
  • تم إصلاح حساب الحد الأدنى لحجم المهمة للـ parallel replicas. #84752 (Nikita Taranov).

تحسينات الفهارس

  • تكتمل استعلامات البحث المتجهي التي تستخدم فهرس تشابه المتجهات بزمن استجابة أقل بفضل تقليل عمليات القراءة من التخزين وخفض استخدام CPU. #79103 (Shankar Iyer).
  • مراعاة merge_tree_min_{rows,bytes}_for_seek في filterPartsByQueryConditionCache لمواءمته مع الطرق الأخرى التي تُجري التصفية باستخدام الفهارس. #80312 (李扬).
  • معالجة فهارس min-max ذات التحبّب الأعلى أولًا. إغلاق #75381. #83798 (Maruth Goyal).
  • يُستخدَم الآن فهرس bloom filter مع شروط مثل has([c1, c2, ...], column)، حيث لا يكون column من النوع Array. وهذا يحسّن أداء مثل هذه الاستعلامات، ويجعلها بالكفاءة نفسها التي يحققها المعامل IN. #83945 (Doron David).
  • تُعالَج الفهارس بترتيب تصاعدي حسب حجم الملف. ويمنح ترتيب الفهارس الناتج الأولوية لفهارس minmax وفهارس المتجهات (نظرًا إلى البساطة والانتقائية على التوالي)، ثم للفهارس الصغيرة بعد ذلك. وضمن فهارس minmax/المتجهات، تُفضَّل أيضًا الفهارس الأصغر. #84094 (Maruth Goyal).
  • سابقًا، كانت بيانات فهرس النص تُقسَّم إلى عدة مقاطع (وكان حجم كل مقطع افتراضيًا 256 MiB). وقد يقلل ذلك من استهلاك الذاكرة أثناء بناء فهرس النص، لكنه يزيد من متطلبات المساحة على القرص ويزيد زمن استجابة الاستعلام. #84590 (Elmi Ahmadov).

تحسينات الاستعلامات الفرعية

  • تحسين الخطة المُولَّدة للاستعلامات الفرعية المترابطة عبر إزالة عمليات JOIN الزائدة باستخدام فئات التكافؤ. وإذا كانت هناك تعبيرات مكافئة لجميع الأعمدة المترابطة، فلن يُنتَج CROSS JOIN عند تمكين الإعداد query_plan_correlated_subqueries_use_substitution. #82435 (Dmitry Novik).
  • قراءة الأعمدة المطلوبة فقط في الاستعلام الفرعي المترابط عندما يظهر كوسيطة للدالة EXISTS. #82443 (Dmitry Novik).

تحسينات Azure Blob Storage

  • أصبح محرك الجدول azureBlobStorage الآن يخزّن مؤقتًا رموز مصادقة الهوية المُدارة ويعيد استخدامها متى أمكن لتجنّب تقييد المعدل. #79860 (Nick Blakely).
  • استُبدل عميل HTTP ‏curl بعميل HTTP ‏poco في Azure Blob Storage. وأُضيفت إعدادات متعددة لهذين العميلين تماثل الإعدادات في S3. كما أُضيفت مهلات اتصال قصيرة جدًا لكلٍّ من Azure وS3. وتحسّنت أيضًا إمكانات الاستبطان لأحداث profile ومقاييس Azure. والعميل الجديد مفعّل افتراضيًا، ويوفّر زمن استجابة أفضل بكثير للاستعلامات الباردة على Azure Blob Storage. ويمكن العودة إلى عميل Curl القديم عبر ضبط azure_sdk_use_native_client=false. #83294 (alesapin).

تحسينات محرك التخزين

  • إصلاح التصفية حسب المفتاح في وحدات تخزين Redis وKeeperMap. #81833 (Pervakov Grigorii).
  • لم يعد ATTACH PARTITION يؤدي إلى إسقاط جميع الذاكرات المؤقتة. #82377 (Alexey Milovidov).
  • تجنّب الاحتفاظ بالقفل أثناء إنشاء بيانات لقطة التخزين، لتقليل التزاحم على القفل عند الأحمال المتزامنة المرتفعة. #83510 (Duc Canh Le).
  • قد تستغرق إزالة الأجزاء المؤقتة بعض الوقت (خصوصًا مع S3)، وننفّذ ذلك حاليًا مع الاحتفاظ بقفل عام في MergeTreeBackgroundExecutor. وعندما نحتاج إلى إعادة تشغيل جميع الجداول بسبب فقدان الاتصال وننتظر انتهاء المهام الخلفية، قد تظل الجداول عالقة لمدة تصل إلى ساعة في وضع readonly. لكن يبدو أننا لا نحتاج إلى هذا القفل لاستدعاء cancel. #84311 (Alexander Tokmakov).

تحسينات التنسيق

  • تنفيذ جديد لقارئ Parquet. وهو أسرع عمومًا ويدعم pushdown لعوامل التصفية على مستوى الصفحة وPREWHERE. وهو تجريبي حاليًا. استخدم الإعداد input_format_parquet_use_native_reader_v3 لتمكينه. #82789 (Michael Kolupaev).
  • تحسين أداء تنسيق الإدخال ProtobufSingle من خلال إعادة استخدام المُسلسِل عند عدم حدوث أخطاء في التحليل. #83613 (Eduard Karacharov).

تحسينات نوع البيانات والتسلسل

  • تحسين أداء قراءة الأعمدة الفرعية JSON من البيانات المشتركة في MergeTree بشكل كبير، وذلك عبر تطبيق عمليات تسلسل جديدة على بيانات JSON المشتركة في MergeTree. #83777 (Pavel Kruglov).
  • تحسين فك تسلسل السلاسل النصية عبر تبسيط الشيفرة. يُغلق #38564. #84561 (Alexey Milovidov).

تحسينات مسار المعالجة والتنفيذ

  • تقليل عمليات نسخ الذاكرة في ترويسات المنافذ أثناء إنشاء مسار المعالجة. PR الأصلي من heymind. #83381 (Raúl Marín).
  • تحسين أداء بناء مسار المعالجة. #83631 (Raúl Marín).
  • تحسين MergeTreeReadersChain::getSampleBlock. #83875 (Raúl Marín).
  • تحسين تجسيد الثوابت في الحالات التي لا يُجرى فيها هذا التجسيد إلا لإرجاع صف واحد. #85071 (Alexey Milovidov).

تحسينات الذاكرة والموارد

  • ضبط بعض إعدادات jemalloc لتحسين الأداء. #81807 (Antonio Andelic).
  • إضافة محاذاة إلى Counter في ProfileEvents للحد من المشاركة الزائفة. #82697 (Jiebin Sun).
  • تقليل عمليات استدعاء memcpy غير الضرورية في CompressedReadBufferBase::readCompressedData. #83986 (Raúl Marín).

تخطيط الاستعلامات وتحليلها

تحسينات في التسجيل

تحسينات الدوال

  • تحسين largestTriangleThreeBuckets بإزالة البيانات المؤقتة. #84479 (Alexey Milovidov).
  • تم تحسين تنفيذ العديد من الدوال الخاصة بمعالجة السلاسل النصية وتبسيطه. كما صُحِّح التوثيق الخاطئ لعدة دوال. ملاحظة: تغيّر ناتج byteSize لأعمدة String والأنواع المعقدة التي تحتوي على أعمدة String من 9 بايتات لكل سلسلة فارغة إلى 8 بايتات لكل سلسلة فارغة، وهذا سلوك متوقع. #85063 (Alexey Milovidov).

تحسينات Keeper

تحسينات بحيرة البيانات

  • تحسين المعالجة المتوازية للملفات باستخدام الواجهة الخلفية لـ delta-kernel-rs. #85642 (Azat Khuzhin).

تحسينات

التحكم في الوصول والأمان

  • أُضيف نوعا وصول جديدان: READ وWRITE للمصادر، وأُوقِفت جميع أنواع الوصول السابقة المرتبطة بالمصادر. سابقًا: GRANT S3 ON *.* TO user، أما الآن: GRANT READ, WRITE ON S3 TO user. ويتيح ذلك أيضًا فصل أذونات READ وWRITE للمصادر، على سبيل المثال: GRANT READ ON * TO user، GRANT WRITE ON S3 TO user. تتحكم في هذه الميزة الإعداد access_control_improvements.enable_read_write_grants، وهي معطّلة افتراضيًا. #73659 (pufit).
  • السماح باستخدام المعلمات في استعلامات CREATE USER لأسماء المستخدمين. #81387 (Diskein).
  • استبعاد البيانات الحساسة من ملفات التفريغ الأساسية. أُضيف مخصّصا ذاكرة: AwsNodumpMemoryManager المتوافق مع مكتبة AWS وJemallocNodumpSTLAllocator المتوافق مع STL. وكلاهما عبارة عن wrapper لمخصّص jemalloc. ويستخدمان امتدادات hooks الخاصة بـ jemalloc وmadvise لوَسم صفحات الذاكرة بأنها “لا تُفرَّغ”. ويُستخدم ذلك مع بيانات اعتماد S3، وبيانات اعتماد المستخدم، وبعض بيانات الاستعلام. #82441 (Miсhael Stetsyuk).
  • ستخزّن العروض التي ينشئها المستخدمون المؤقتون الآن نسخة من المستخدم الفعلي، ولن تعود تُلغى صلاحيتها بعد حذف المستخدم المؤقت. #84763 (pufit).
  • مطابقة forward_headers للمصادقة الخارجية دون حساسية لحالة الأحرف. #84737 (ingodwerust).
  • إضافة عمود parameter إلى system.grants لتحديد نوع المصدر في GRANT READ/WRITE ومحرك الجدول في GRANT TABLE ENGINE. #85643 (MikhailBurdukov).

النسخ الاحتياطي والاستعادة

سلامة البيانات والتحقق

  • تحقّق من أن للجزء ملف checksum.txt متسقًا مباشرةً قبل اعتماده نهائيًا. #76625 (Sema Checherinda).
  • منع بدء mutation من نوع RENAME COLUMN إذا كان سيعيد تسمية عمود متأثر حاليًا بـ mutation بيانات غير مكتملة. #81823 (Mikhail Artemenko).
  • ستُبنى الآن snapshot الخاصة بـ mutations انطلاقًا من snapshot الأجزاء المرئية. كما ستُعاد أيضًا إعادة احتساب counters الخاصة بـ mutations المستخدمة في snapshot من mutations المضمّنة. #82945 (Mikhail Artemenko).
  • إضافة إمكانية تحليل بادئة الجزء ولاحقته، وكذلك التحقق من التغطية للأعمدة غير الثابتة. #83377 (Mikhail Artemenko).

محرك الجدول Iceberg

  • دعم عمليات الحذف الموضعي في محرك الجدول Iceberg. #80237 (YanghongZhong).
  • يدعم ClickHouse الآن ملفات metadata.json المضغوطة في Iceberg. يعالج هذا المشكلة #70874. #81451 (alesapin).
  • إصلاح قراءة Iceberg باستخدام معرّفات الحقول للأنواع المعقّدة. #84821 (scanhex12).
  • دعم كتابة Iceberg بحيث يمكن قراءتها من pyiceberg. #84466 (scanhex12).
  • إضافة snapshot version إلى محركات جداول بحيرة البيانات. #84659 (Pete Hampton).
  • دعم كتابة ملف version-hint مع Iceberg. يغلق هذا #85097. #85130 (scanhex12).
  • دعم ملف .metadata.json المضغوط عبر الإعداد iceberg_metadata_compression_method. وهو يدعم جميع methods الضغط في ClickHouse. يغلق هذا #84895. #85196 (scanhex12).
  • تحسين استخدام الذاكرة لملفات الحذف الموضعي في Iceberg. فبدلاً من تحميل جميع بيانات ملف الحذف إلى الذاكرة، لا يُحتفَظ في RAM إلا بمجموعة الصفوف الحالية من ملفات حذف Parquet. ويؤدي ذلك إلى تقليل استهلاك الذاكرة بشكل ملحوظ عند العمل مع ملفات حذف موضعي كبيرة. #85329 (scanhex12).
  • السماح بالتكرار غير المتزامن على الكائنات من جدول Iceberg من دون تخزين الكائنات لكل ملف بيانات على نحو صريح. #85369 (Daniil Ivanik).
  • دعم عمليات الحذف بالتساوي في Iceberg. #85843 (Han Fei).

محرك الجدول DeltaLake

  • تحسين محرك الجدول DeltaLake: يوفّر delta-kernel-rs واجهة برمجة تطبيقات ExpressionVisitor، وقد جرى تنفيذها في طلب السحب هذا وتطبيقها على تحويل تعبيرات أعمدة partition (وستحل محل أسلوب قديم Deprecated ضمن delta-kernel-rs كان مستخدمًا سابقًا في شيفرتنا). وفي المستقبل، سيتيح ExpressionVisitor أيضًا تنفيذ pruning المعتمد على الإحصاءات وبعض الميزات الخاصة بـ Delta Lake. بالإضافة إلى ذلك، يهدف هذا التغيير إلى دعم partition pruning في محرك الجدول DeltaLakeCluster (إذ ستُسلسَل نتيجة التعبير المُحلَّل - ActionsDAG - وتُرسَل من العقدة البادئة مع data path، لأن هذا النوع من المعلومات اللازم لعملية pruning لا يتوفر إلا بوصفه meta information ضمن سرد data files، وهي عملية ينفذها العقدة البادئة فقط، لكن يجب تطبيقها على البيانات في كل server يقرأها). #81136 (Kseniia Sumarokova).
  • إصلاح partition pruning في دوال عنقود بحيرة البيانات. #82131 (Kseniia Sumarokova).
  • إصلاح قراءة البيانات المُقسَّمة إلى partition في table function ‏DeltaLakeCluster. في طلب السحب هذا، جرى رفع protocol version لدوال العنقود، مما يتيح إرسال معلومات إضافية من العقدة البادئة إلى replicas. وتتضمن هذه المعلومات الإضافية تعبير التحويل delta-kernel، اللازم لتحليل partition columns (وبعض الأمور الأخرى مستقبلًا، مثل generated columns، وما إلى ذلك). #82132 (Kseniia Sumarokova).
  • أصبحت قاعدة البيانات Datalake الآن تعرض Exception أوضح. يُصلح #81211. #82304 (alesapin).
  • تنفيذ Filtering الداخلي لـ delta-kernel-rs (الإحصاءات وpartition pruning) في وحدة التخزين DeltaLake. #84006 (Kseniia Sumarokova).
  • إضافة إعداد delta_lake_enable_expression_visitor_logging لتعطيل سجلات expression visitor، لأنها قد تكون verbose جدًا حتى بالنسبة إلى log level الخاص بالاختبارات عند إجراء debugging. #84315 (Kseniia Sumarokova).
  • إضافة الإعداد delta_lake_snapshot_version للسماح بقراءة snapshot version محدد في محرك الجدول DeltaLake. #85295 (Kseniia Sumarokova).

تكامل بحيرة البيانات

  • تسريع إدراج الجداول في كتالوج البيانات من خلال طلبات غير متزامنة. #81084 (alesapin).
  • دعم TimestampTZ في Glue catalog. يُغلق هذا #81654. #83132 (scanhex12).
  • تقسيم FormatParserGroup إلى بنيتي struct مستقلتين: الأولى مسؤولة عن موارد compute وIO المشتركة، والثانية مسؤولة عن موارد filter المشتركة (ActionDag وKeyCondition الخاصة بالتصفية). وقد أُنجز ذلك لإتاحة استخدام مشترك أكثر مرونة لهذه البُنى عبر threads مختلفة. #83997 (Daniil Ivanik).
  • إضافة partition_columns_in_data_file المفقود إلى configuration الخاصة بـ Azure. #85373 (Arthur Passos).
  • إضافة الراية show_data_lake_catalogs_in_system_tables للتحكم في إضافة جداول بحيرة البيانات إلى system.tables، ما يعالج #85384. #85411 (Smita Kulkarni).

‏S3 وobject storage

  • تنفيذ الطريقتين moveFile وreplaceFile في s3_plain_rewritable لدعمه كـ disk لقاعدة البيانات. #79424 (Tuan Pham Anh).
  • أصبحت طلبات القراءة والكتابة في S3 خاضعة لتحديد المعدل على مستوى مقبس HTTP (بدلًا من طلبات S3 كاملة) لتجنّب المشكلات المرتبطة بتقييد max_remote_read_network_bandwidth_for_server وmax_remote_write_network_bandwidth_for_server. #81837 (Sergei Trifonov).
  • يضيف طلب السحب هذا jitter إلى آلية retry في S3 عند تمكين إعداد s3_slow_all_threads_after_network_error. #81849 (zoomxi).
  • تنفيذ authentication في AWS S3 باستخدام IAM role مُحدَّد صراحةً. كما تم تنفيذ OAuth لـ GCS. كانت هذه الميزات متاحة سابقًا فقط في ClickHouse Cloud، وهي الآن open-source. كذلك جرت مزامنة بعض interfaces مثل serialization لمعلمات connection الخاصة بـ object storage. #84011 (Alexey Milovidov).
  • إتاحة استخدام أي storage policy (أي object storage مثل S3) في external aggregation/الفرز الخارجي. #84734 (Azat Khuzhin).
  • جمع جميع الكائنات المحذوفة لتنفيذ عملية حذف واحدة في object storage. #85316 (Mikhail Artemenko).

محرك الجدول S3Queue

  • يمكن الآن استخدام وحدات الماكرو مثل {uuid} في إعداد keeper_path ضمن محرك الجدول S3Queue. #82463 (Nikolay Degterinsky).
  • إضافة إعداد جديد على مستوى الخادم s3queue_disable_streaming يعطّل التدفّق في الجداول التي تستخدم محرك الجدول S3Queue. ويمكن تغيير هذا الإعداد دون إعادة تشغيل الخادم. #82515 (Kseniia Sumarokova).
  • إضافة العمودين commit_time وcommit_id إلى system.s3queue_log. #83016 (Kseniia Sumarokova).
  • إضافة سجلات لعملية إيقاف S3Queue. #83163 (Kseniia Sumarokova).
  • إيقاف تدفّق S3(Azure/etc)Queue قبل إيقاف أي جداول عند إيقاف تشغيل الخادم. #83530 (Kseniia Sumarokova).
  • دعم تغيير إعدادات الإدراج الخاصة بـ MV على مستوى جدول S3Queue. تمت إضافة إعدادات جديدة على مستوى S3Queue: min_insert_block_size_rows_for_materialized_views وmin_insert_block_size_bytes_for_materialized_views. افتراضيًا، ستُستخدم إعدادات مستوى profile، وستتجاوزها إعدادات مستوى S3Queue. #83971 (Kseniia Sumarokova).
  • إصلاح للوضع المرتّب في S3Queue: الخروج مبكرًا إذا طُلب الإيقاف. #84463 (Kseniia Sumarokova).

تكامل Kafka

تحسينات ClickHouse Keeper

  • تحسين في Keeper: نقل ملفات changelog بين الأقراص ضمن سلسلة تنفيذ في الخلفية. سابقًا، كان نقل changelog إلى قرص مختلف يعطّل Keeper بالكامل حتى يكتمل النقل. وكان هذا يؤدي إلى تراجع في الأداء إذا كانت عملية النقل طويلة (مثل النقل إلى قرص S3). #82485 (Antonio Andelic).
  • تحسين في Keeper: إضافة إعداد جديد keeper_server.cleanup_old_and_ignore_new_acl. عند تفعيله، ستُزال ACL من جميع العقد، مع تجاهل ACL للطلبات الجديدة. وإذا كان الهدف هو إزالة ACL بالكامل من العقد، فمن المهم إبقاء هذا الإعداد مفعّلًا إلى أن يتم إنشاء لقطة جديدة. #82496 (Antonio Andelic).
  • تحسين في Keeper: دعم أذونات محددة لـ ACL ‏world:anyone. #82755 (Antonio Andelic).
  • إضافة دعم لتحديد ACL إضافية لـ Keeper للمسارات في الإعدادات. إذا كنت تريد إضافة ACL إضافية لمسار محدد، فعرّفها في الإعدادات تحت zookeeper.path_acls. #82898 (Antonio Andelic).
  • إضافة ProfileEvent عند رفض Keeper عملية كتابة بسبب حد الذاكرة المرن. #82963 (Xander Garbett).
  • تفعيل علامات الميزات create_if_not_exists وcheck_not_exists وremove_recursive في Keeper افتراضيًا، ما يتيح أنواعًا جديدة من الطلبات. #83488 (Antonio Andelic).
  • إضافة دعم لتطبيق ACL إضافية على عقد Keeper محددة باستخدام الإعداد apply_to_children. #84137 (Antonio Andelic).
  • إضافة الأمر get_acl إلى KeeperClient. #84641 (Antonio Andelic).
  • إضافة 4LW في Keeper، وهو lgrq، لتبديل تسجيل الطلبات الواردة. #84719 (Antonio Andelic).
  • تقليل التنازع على قفل التخزين في Keeper. #84732 (Antonio Andelic).
  • تدعم أداة encrypt_decrypt الآن اتصالات ZooKeeper المشفرة. #84764 (Roman Vasin).
  • تقييد حجم ذاكرة التخزين المؤقت لإدخالات سجل Keeper بحسب عدد الإدخالات باستخدام keeper_server.coordination_settings.latest_logs_cache_entry_count_threshold وkeeper_server.coordination_settings.commit_logs_cache_entry_count_threshold. #84877 (Antonio Andelic).

نوعا JSON وDynamic

  • إضافة الملف columns_substreams.txt إلى جزء Wide لتتبّع جميع التدفقات الفرعية المخزّنة في الجزء. يساعد ذلك على تتبّع التدفقات الديناميكية في نوعَي JSON وDynamic، وبالتالي تجنّب قراءة عيّنة من هذه الأعمدة للحصول على قائمة التدفقات الديناميكية (على سبيل المثال، لحساب أحجام الأعمدة). كما أصبحت الآن جميع التدفقات الديناميكية تظهر أيضًا في system.parts_columns. #81091 (Pavel Kruglov).
  • السماح باستخدام ALTER UPDATE في أعمدة JSON وDynamic. #82419 (Pavel Kruglov).
  • يمكنك الآن استخدام النوعين Time وTime64 داخل نوع JSON. #83784 (Yarik Briukhovetskyi).
  • إضافة الإعداد json_type_escape_dots_in_keys لتهريب النقاط في مفاتيح JSON أثناء تحليل نوع JSON. يكون هذا الإعداد معطّلًا افتراضيًا. #84207 (Pavel Kruglov).

تنسيقات Parquet وORC

  • إضافة إعدادات لضبط حجم كتلة ضغط ORC، وتحديث القيمة الافتراضية من 64KB إلى 256KB للحفاظ على الاتساق مع Spark أو Hive. #80602 (李扬).
  • دعم كتابة enum في Parquet على هيئة مصفوفة بايتات وفقًا لما تنص عليه المواصفة. سأضيف مزيدًا من المعلومات لاحقًا. #81090 (Arthur Passos).
  • دعم الكتابة إلى GeoParquet كتنسيق إخراج. #81784 (scanhex12).

الاستعلامات الموزعة والنسخ المتماثلة المتوازية

  • أُضيف إعداد جديد، enable_add_distinct_to_in_subqueries. عند تمكينه، سيضيف ClickHouse تلقائيًا DISTINCT إلى الاستعلامات الفرعية في عبارات IN ضمن الاستعلامات الموزعة. يمكن أن يقلل هذا بشكل كبير من حجم الجداول المؤقتة المنقولة بين الشظايا ويحسّن كفاءة الشبكة. ملاحظة: هذا ينطوي على مفاضلة—ففي حين يقل نقل البيانات عبر الشبكة، يلزم إجراء دمج إضافي (إزالة التكرار) على كل عقدة. فعّل هذا الإعداد عندما يكون نقل البيانات عبر الشبكة هو عنق الزجاجة وتكون تكلفة الدمج مقبولة. #81908 (fhw12345).
  • أُضيف دعم دوال الجدول remote-() مع النسخ المتماثلة المتوازية إذا تم توفير cluster في الوسيط address_expression. ويعالج ذلك أيضًا #73295. #82904 (Igor Nikonov).
  • تستخدم عمليات JOIN مع النسخ المتماثلة المتوازية الآن الخطوة المنطقية للربط. إذا واجهت أي مشكلات في استعلامات JOIN التي تستخدم النسخ المتماثلة المتوازية، فجرّب SET query_plan_use_new_logical_join_step=0 وأبلِغ عن مشكلة. #83801 (Vladimir Cherkasov).

الإعدادات والتهيئة

  • وسم الإعداد allow_experimental_join_condition على أنه متقادِم. #80566 (Vladimir Cherkasov).
  • لا يُعاد ضبط محددات معدل نقل الشبكة، الإجمالية منها والخاصة بكل مستخدم، مطلقًا، ما يضمن عدم تجاوز الحدود max_network_bandwidth_for_all_users و max_network_bandwidth_for_all_users أبدًا. #81729 (Sergei Trifonov).
  • تقديم الإعداد optimize_rewrite_regexp_functions (مفعّل افتراضيًا)، والذي يتيح للمُحسِّن إعادة كتابة بعض استدعاءات replaceRegexpAll و replaceRegexpOne و extract إلى صيغ أبسط وأكثر كفاءة عند اكتشاف أنماط تعبير نمطي محددة. (issue #81981). #81992 (Amos Bird).
  • ضبط قائمة انتظار خوادم TCP (64 افتراضيًا) استنادًا إلى listen_backlog (4096 افتراضيًا). #82045 (Azat Khuzhin).
  • إضافة إمكانية إعادة تحميل max_local_read_bandwidth_for_server و max_local_write_bandwidth_for_server أثناء التشغيل دون إعادة تشغيل الخادم. #82083 (Kai Zhu).
  • تقديم الإعداد enable_vector_similarity_index الذي يجب تفعيله لاستخدام فهرس تشابه المتجهات. أما الإعداد الحالي allow_experimental_vector_similarity_index فأصبح الآن متقادِمًا. ولا يزال يعمل لمن يحتاج إليه. #83459 (Robert Schulze).
  • إضافة max_joined_block_size_bytes إلى جانب max_joined_block_size_rows لتقييد استخدام الذاكرة في عمليات JOIN ذات الأعمدة الثقيلة. #83869 (Nikolai Kochetov).
  • إصلاح التوافق للإعداد cluster_function_process_archive_on_multiple_nodes. #83968 (Kseniia Sumarokova).
  • تفعيل دعم الاستعلامات الفرعية المترابطة افتراضيًا. #85107 (Dmitry Novik).
  • إضافة إعدادات database_replicated التي تحدد القيم الافتراضية لـ DatabaseReplicatedSettings. وإذا لم يكن الإعداد موجودًا في استعلام إنشاء قاعدة بيانات Replicated، فستُستخدم القيمة من هذا الإعداد. #85127 (Tuan Pham Anh).
  • السماح بوسائط مفتاح-قيمة في محرك الجدول/الدالة s3 أو s3Cluster، مثل s3('url', CSV, structure = 'a Int32', compression_method = 'gzip'). #85134 (Kseniia Sumarokova).
  • تنفيذ EXISTS غير المترابط باعتباره استعلامًا فرعيًا scalar. يتيح ذلك استخدام ذاكرة التخزين المؤقت للاستعلامات الفرعية scalar وطيّ النتيجة كثابت، وهو ما يفيد الفهارس. ولأجل التوافق، أُضيف الإعداد الجديد execute_exists_as_scalar_subquery=1. #85481 (Nikolai Kochetov).
  • دعم تحليل المزيد من الحالات الخاصة بالمُعرّفات المركّبة. وعلى وجه الخصوص، يحسّن ذلك توافق ARRAY JOIN مع analyzer القديم. وتقديم إعداد جديد analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested للحفاظ على السلوك القديم. #85492 (Nikolai Kochetov).

جداول النظام والرصد

  • إضافة مقاييس الضغط إلى المقاييس غير المتزامنة في ClickHouse. #80779 (Xander Garbett).
  • إضافة المقاييس MarkCacheEvictedBytes وMarkCacheEvictedMarks وMarkCacheEvictedFiles لتتبّع عمليات الإزالة من ذاكرة mark cache. (issue #60989). #80799 (Shivji Kumar Jha).
  • يحتوي جدول system.formats الآن على معلومات موسّعة عن التنسيقات، مثل نوع محتوى HTTP وإمكانات استدلال المخطط وغير ذلك. #81505 (Alexey Milovidov).
  • إضافة دعم لمسح جميع التحذيرات من جدول system.warnings باستخدام TRUNCATE TABLE system.warnings. #82087 (Vladimir Cherkasov).
  • إدراج تراخيص حزم Rust في system.licenses. #82440 (Raúl Marín).
  • تقدير تعبيرات CNF/DNF المعقّدة، مثل (a < 1 and a > 0) or b = 3، بالاعتماد على الإحصاءات. #82663 (Han Fei).
  • في بعض الحالات، نحتاج إلى أبعاد متعددة لمقاييسنا. على سبيل المثال، عدّ عمليات الدمج أو التعديلات الفاشلة حسب رموز الأخطاء بدلًا من الاكتفاء بعدّاد واحد. #83030 (Miсhael Stetsyuk).
  • إضافة مقاييس موارد العملية (مثل UserTimeMicroseconds وSystemTimeMicroseconds وRealTimeMicroseconds) إلى profile events في part_log لإدخالات MergeParts. #83460 (Vladimir Cherkasov).
  • تُبلَّغ الآن مقاييس مستوى Cgroup والمقاييس على مستوى النظام معًا. تحمل مقاييس مستوى Cgroup الأسماء CGroup<Metric>، بينما تحمل مقاييس مستوى نظام التشغيل (المجمّعة من procfs) الأسماء OS<Metric>. #84317 (Nikita Taranov).
  • إضافة مقاييس متعددة الأبعاد لمراقبة حجم الطوابير المتزامنة المقيّدة، مع وسمها بحسب نوع الطابور وinstance ID لتحسين الرصد. #84675 (Miсhael Stetsyuk).
  • يوفّر جدول system.columns الآن column بوصفه اسمًا مستعارًا للعمود name الحالي. #84695 (Yunchi Pang).
  • إضافة عمود format string إلى system.errors. هذا العمود مطلوب لإجراء التجميع حسب نوع الخطأ نفسه في قواعد التنبيه. #84776 (Miсhael Stetsyuk).
  • جعل الحدود قابلة للضبط في Async Log وإضافة إمكانات الاستبطان. #85105 (Raúl Marín).
  • تجاهل UNKNOWN_DATABASE أثناء جلب أحجام أعمدة الجداول لـ system.columns. #85632 (Azat Khuzhin).

محركات قواعد البيانات

تحسينات النظام والتحسينات الداخلية

  • إصلاح إلحاق قواعد البيانات التي تستخدم أقراصًا بعيدة للقراءة فقط، وذلك عبر إضافة معرّفات UUID الخاصة بالجداول يدويًا إلى DatabaseCatalog. #82670 (Tuan Pham Anh).
  • تحسين التعامل مع مهام DDL عند استخدام distributed_ddl_output_mode='*_only_active' من خلال عدم انتظار النسخ المتماثلة الجديدة أو المستعادة التي يتجاوز تأخر النسخ المتماثل فيها القيمة max_replication_lag_to_enqueue. يساعد ذلك على تجنب أخطاء DDL task is not finished on some hosts عندما تصبح نسخة متماثلة جديدة نشطة بعد التهيئة أو التعافي، لكنها تكون قد راكمت سجلًا كبيرًا للنسخ المتماثل. كما جرى تنفيذ الاستعلام SYSTEM SYNC DATABASE REPLICA STRICT الذي ينتظر حتى ينخفض تأخر النسخ المتماثل إلى ما دون max_replication_lag_to_enqueue. #83302 (Alexander Tokmakov).
  • تغيير ترتيب إيقاف تشغيل SystemLogs ليحدث بعد الجداول العادية (وقبل جداول النظام بدلًا من قبل الجداول العادية). #83134 (Kseniia Sumarokova).
  • إضافة إعداد على مستوى الخادوم باسم logs_to_keep إلى إعدادات قاعدة البيانات Replicated، بما يتيح ضبط المعلمة الافتراضية logs_to_keep لقواعد البيانات Replicated. تؤدي القيم الأقل إلى تقليل عدد عقد ZooKeeper (وهو مفيد خصوصًا عند وجود عدد كبير من قواعد البيانات)، بينما تتيح القيم الأعلى للنسخ المتماثلة المفقودة اللحاق بالحالة بعد فترات أطول من التوقف. #84183 (Alexey Khatskevich).
  • تغيير القيمة الافتراضية لإعداد قاعدة البيانات Replicated المسمى max_retries_before_automatic_recovery إلى 10، مما يتيح تعافيًا أسرع في بعض الحالات. #84369 (Alexander Tokmakov).
  • تحسين عمليات DDL الخاصة بـ Refreshable Materialized View غير المعتمدة على append في قواعد البيانات Replicated، عبر تخطي إنشاء الجداول المؤقتة القديمة وإعادة تسميتها. #84858 (Tuan Pham Anh).

النسخ المتماثل والمزامنة

تحسينات النظام والمكوّنات الداخلية

  • تحسين SYSTEM RESTART REPLICA لإعادة محاولة إنشاء الجدول عند حدوث مشكلات في الاتصال بـ ZooKeeper، مما يمنع فقدان الجداول. #82616 (Nikolay Degterinsky).
  • إضافة التحقق من UUID في ReplicatedMergeTree::executeMetadataAlter لمنع تعريفات الجداول غير الصحيحة عند إجراء EXCHANGE للجداول بين الحصول على StorageID واستدعاء IDatabase::alterTable. #82666 (Nikolay Degterinsky).
  • إزالة منطق send_metadata التجريبي المرتبط بميزة النسخ المتماثل بدون نسخ التجريبية. لم يُستخدم هذا الكود مطلقًا، وهو غير مدعوم ويرجّح أنه معطّل، ولا توجد اختبارات للتحقق من عمله. #82508 (alesapin).
  • إضافة دعم لتوسيع الماكرو في remote_fs_zero_copy_zookeeper_path. #85437 (Mikhail Koviazin).

الدوال والتعبيرات

  • ستستخدم الدالة addressToSymbol والجدول system.symbols إزاحات الملفات بدلًا من عناوين الذاكرة الافتراضية. #81896 (Alexey Milovidov).
  • محاولة الحفاظ على أسماء العناصر عند اشتقاق الأنواع الفائقة للـ Tuples المُسمّاة. #81345 (lgbo).
  • السماح بدمج قواعد ترتيب مختلفة للعمود نفسه في نوافذ مختلفة. #82877 (Yakov Olkhovskiy).
  • إضافة دالة لكتابة الأنواع بتنسيق wkb. #82935 (scanhex12).
  • إضافة إمكانية تحليل Time وTime64 بصيغ MM:SS أو M:SS أو SS أو S. #83299 (Yarik Briukhovetskyi).
  • تدعم الدالة reinterpret() الآن التحويل إلى Array(T) حيث يكون T نوع بيانات ثابت الحجم (المشكلة #82621). #83399 (Shankar Iyer).
  • إصلاح الدالتين structureToProtobufSchema وstructureToCapnProtoSchema لإضافة بايت إنهاء صفري بشكل صحيح بدلًا من استخدام محرف سطر جديد، ما يمنع غياب أسطر جديدة في المخرجات واحتمال حدوث تجاوز سعة في المخزن المؤقت في الدوال التي تعتمد على البايت الصفري (مثل logTrace وdemangle وextractURLParameter وtoStringCutToZero وencrypt/decrypt). يُغلق #85062. #85063 (Alexey Milovidov).
  • إصلاح تخطيط القاموس regexp_tree لدعم معالجة السلاسل النصية التي تحتوي على بايتات صفرية. #85063 (Alexey Milovidov).
  • إصلاح الدالة formatRowNoNewline التي كانت تقتطع آخر محرف من المخرجات بالخطأ عند استدعائها مع تنسيق Values أو أي تنسيق لا يحتوي على سطر جديد في نهاية الصفوف. #85063 (Alexey Milovidov).
  • إصلاح خطأ في أمان الاستثناءات في الدالة stem كان يمكن أن يؤدي إلى تسرّب للذاكرة في حالات نادرة. #85063 (Alexey Milovidov).
  • إصلاح الدالة initcap لوسائط FixedString لكي تتعرّف بشكل صحيح على بداية الكلمات عند بداية السلاسل النصية عندما كانت السلسلة السابقة في block تنتهي بمحرف من محارف الكلمات. #85063 (Alexey Milovidov).
  • إصلاح ثغرة أمنية في تنسيق Apache ORC كان يمكن أن تؤدي إلى كشف ذاكرة غير مهيأة. #85063 (Alexey Milovidov).
  • تغيير سلوك replaceRegexpAll واسمه المستعار REGEXP_REPLACE للسماح بالمطابقات الفارغة في نهاية السلاسل النصية حتى عندما تكون المطابقة السابقة قد عالجت السلسلة بالكامل (مثل ^a*|a*$ أو ^|.*)، بما يتوافق مع دلالات JavaScript وPerl وبايثون وPHP وRuby، مع اختلافه عن PostgreSQL. #85063 (Alexey Milovidov).
  • تحسين وتبسيط تنفيذ العديد من الدوال الخاصة بالتعامل مع السلاسل النصية. وتم تصحيح التوثيق غير الدقيق لعدة دوال. ملاحظة: تغيّر ناتج byteSize لأعمدة String والأنواع المعقدة التي تحتوي على أعمدة String من 9 بايتات لكل سلسلة فارغة إلى 8 بايتات لكل سلسلة فارغة، وهو السلوك المتوقع. #85063 (Alexey Milovidov).
  • السماح بأن تكون قيمة الخطوة صفرًا في الدوال timeSeries*ToGrid(). وهذا هو الجزء #3 من https://github.com/ClickHouse/ClickHouse/pull/75036. #85390 (Vitaly Baranov).
  • دعم المصفوفات الداخلية للدالة nested. #85719 (Nikolai Kochetov).

تحسينات MergeTree

  • تعطيل فهارس التخطي التي تعتمد على الأعمدة المُحدَّثة أثناء القراءة أو بواسطة أجزاء التصحيح، ولكن بصورة أكثر دقة. الآن، لا تُعطَّل فهارس التخطي إلا في الأجزاء المتأثرة بالتعديلات أثناء القراءة أو أجزاء التصحيح؛ أما سابقًا، فكانت تلك الفهارس تُعطَّل لجميع الأجزاء. #84241 (Anton Popov).
  • إضافة إعداد MergeTree search_orphaned_parts_drives لتضييق نطاق البحث عن الأجزاء، مثلًا بحسب الأقراص التي تحتوي على بيانات وصفية محلية. #84710 (Ilya Golshtein).
  • إضافة الدعم المفقود لـ read_in_order_use_virtual_row في WHERE. يتيح ذلك تخطي قراءة المزيد من الأجزاء للاستعلامات التي تتضمن شروط تصفية لم تُدفَع بالكامل إلى PREWHERE. #84835 (Nikolai Kochetov).
  • إصلاح استخدام تسلسل مميّزات النوع Variant بصيغة “compact” في MergeTree. سابقًا، لم يكن يُستخدم في بعض الحالات التي كان يمكن استخدامه فيها. #84141 (Pavel Kruglov).
  • إضافة حدّ (إعداد الجدول max_uncompressed_bytes_in_patches) لإجمالي البايتات غير المضغوطة في أجزاء التصحيح. يمنع ذلك حدوث تباطؤ كبير في استعلامات SELECT بعد التحديثات الخفيفة، كما يمنع إساءة الاستخدام المحتملة للتحديثات الخفيفة. #85641 (Anton Popov).

إدارة ذاكرة التخزين المؤقت والذاكرة

  • إصلاح خطأ منطقي في ذاكرة التخزين المؤقت لنظام الملفات: “Having zero bytes but range is not finished”. #81868 (Kseniia Sumarokova).
  • إضافة rendezvous hashing لتحسين محلية ذاكرة التخزين المؤقت. #82511 (Anton Ivashkin).
  • إعادة هيكلة ميزة تغيير الحجم الديناميكي لذاكرة التخزين المؤقت لنظام الملفات. وأُضيفت المزيد من السجلات لأغراض الاستبطان. #82556 (Kseniia Sumarokova).
  • تقليل الكلفة الإضافية لتتبّع ذاكرة الاستعلام للدوال المعرّفة من قبل المستخدم القابلة للتنفيذ. #83929 (Eduard Karacharov).
  • أصبحت جميع تخصيصات الذاكرة التي تُجريها المكتبات الخارجية مرئية الآن لمتعقّب الذاكرة في ClickHouse، ويجري احتسابها على نحو صحيح. وقد يؤدي ذلك إلى “زيادة” استخدام الذاكرة المُبلّغ عنه لبعض الاستعلامات أو إلى حدوث حالات فشل مع MEMORY_LIMIT_EXCEEDED. #84082 (Nikita Mikhaylov).
  • تخصيص الحد الأدنى من الذاكرة اللازمة لـ encrypted_buffer في المجموعات المسماة المشفّرة. #84432 (Pablo Marcos).

فهرس تشابه المتجهات

  • منع المستخدم من استخدام nan وinf مع NumericIndexedVector. يعالج #82239 وبعض الحالات الإضافية أيضًا. #82681 (Raufs Dunamalijevs).
  • يدعم فهرس تشابه المتجهات الآن التكميم الثنائي. ويقلّل التكميم الثنائي استهلاك الذاكرة بشكل كبير ويُسرّع عملية بناء فهرس المتجهات (بفضل تسريع حساب المسافات). كما أصبح الإعداد الحالي vector_search_postfilter_multiplier متقادمًا، واستُبدل بإعداد أكثر عمومية: vector_search_index_fetch_multiplier. #85024 (Shankar Iyer).
  • أصبح البحث التقريبي عن المتجهات باستخدام فهارس تشابه المتجهات متاحًا الآن بشكل عام (GA). #85888 (Robert Schulze).

معالجة الأخطاء والرسائل

  • يُرسَل ترويس Connection في نهاية الترويسات، عند تحديد ما إذا كان ينبغي الإبقاء على الاتصال. #81951 (Sema Checherinda).
  • في الإصدارات السابقة، كان ضرب حالة الدالة التجميعية بـ IPv4 يؤدي إلى خطأ منطقي بدلًا من إرجاع رمز خطأ مناسب. يُغلق #82817. #82818 (Alexey Milovidov).
  • تحسين معالجة الأخطاء في AsynchronousMetrics. إذا كان الدليل /sys/block موجودًا لكنه غير قابل للوصول، فسيبدأ الخادم من دون مراقبة أجهزة التخزين الكتلية. يُغلق #79229. #83115 (Alexey Milovidov).
  • كان هناك تحقّق غير صحيح من التبعيات لعملية INSERT مع materialized views التي تحتوي على عبارات SELECT غير صحيحة، وكان المستخدم قد يتلقى std::exception غامضًا بدلًا من خطأ واضح ومفهوم. وقد أُصلح ذلك الآن. هذا يُصلح: #82889. #83190 (Nikita Mikhaylov).
  • لا تُخرج أوصافًا طويلة جدًا لإجراءات التعابير في رسائل الاستثناء. يُغلق #83164. #83350 (Alexey Milovidov).
  • عند إيقاف وحدة التخزين، تُطلق getStatus استثناء ErrorCodes::ABORTED. في السابق، كان هذا يتسبب في فشل استعلام SELECT. الآن نلتقط استثناءات ErrorCodes::ABORTED ونتجاهلها عمدًا بدلًا من ذلك. #83435 (Miсhael Stetsyuk).
  • أصبحت رسائل الاستثناء في بعض الحالات أثناء loading وإضافة projections أسهل قراءةً. #83728 (Robert Schulze).
  • تحقّق مما إذا كان الاتصال قد أُلغي قبل التحقق من EOF لمنع القراءة من اتصال مغلق. يُصلح #83893. #84227 (Raufs Dunamalijevs).
  • تحسين التعامل مع إيقاف تشغيل الخادم لاتصالات العميل من خلال تبسيط عمليات التحقق الداخلية. #84312 (Raufs Dunamalijevs).
  • أصبحت الأخطاء منخفضة المستوى أثناء تنفيذ UDF تؤدي الآن إلى الفشل مع رمز الخطأ UDF_EXECUTION_FAILED، بينما كان يمكن سابقًا إرجاع رموز أخطاء مختلفة. #84547 (Xu Jia).

تحسينات في تنسيق SQL

  • إصلاح عدم اتساق تنسيق CREATE DICTIONARY. إغلاق #82105. #82829 (Alexey Milovidov).
  • إصلاح عدم اتساق تنسيق TTL عندما يحتوي على الدالة materialize. إغلاق #82828. #82831 (Alexey Milovidov).
  • إصلاح عدم اتساق تنسيق EXPLAIN AST داخل استعلام فرعي عندما يحتوي على خيارات إخراج مثل INTO OUTFILE. إغلاق #82826. #82840 (Alexey Milovidov).
  • إصلاح عدم اتساق تنسيق التعبيرات الموضوعة بين قوسين ذات الأسماء المستعارة ضمن السياق الذي لا يُسمح فيه بالأسماء المستعارة. إغلاق #82836. إغلاق #82837. #82867 (Alexey Milovidov).
  • إصلاح تنسيق CREATE USER مع query مَعلمات (أي CREATE USER {username:Identifier} IDENTIFIED WITH no_password). #84376 (Azat Khuzhin).
  • إصلاح تحليل للفاصلة اللاحقة في columns الخاصة باستعلام CREATE DICTIONARY بعد column يحتوي على مَعلمات، مثل Decimal(8). إغلاق #85586. #85653 (Nikolay Degterinsky).

التكاملات الخارجية

  • توحيد أسماء المَعلمات في ODBC وJDBC عند استخدام المجموعات المسماة. #83410 (Andrey Zvonov).
  • MongoDB: التحليل الضمني للسلاسل النصية إلى أنواع رقمية. سابقًا، إذا جرى تلقّي قيمة نصية من مصدر MongoDB لعمود رقمي في جدول ClickHouse، كان يُطلَق استثناء. الآن، يحاول المحرّك تحليل القيمة الرقمية من السلسلة النصية تلقائيًا. يُغلق #81167. #84069 (Kirill Nikiforov).
  • السماح باستخدام simdjson على البنى المعمارية غير المدعومة (وكان هذا يؤدي سابقًا إلى أخطاء CANNOT_ALLOCATE_MEMORY). #84966 (Azat Khuzhin).

تحسينات متنوعة

  • إضافة محرك جدول YTsaurus ودالة جدول. #77606 (MikhailBurdukov).
  • تحسين HashJoin::needUsedFlagsForPerRightTableRow، بحيث يعيد false في حالة الربط التبادلي. #82379 (lgbo).
  • السماح بكتابة/قراءة أعمدة Map كمصفوفة من Tuples. #82408 (MikhailBurdukov).
  • تم التراجع عن طلب السحب هذا. #82884 (Mithun p).
  • السجلات غير المتزامنة: تقييد الحد الأقصى لعدد الإدخالات المحتفَظ بها في قائمة الانتظار. #83214 (Raúl Marín).
  • تمكين Date/Date32 كأعداد صحيحة في JSON input formats. #83597 (MikhailBurdukov).
  • تحسين دعم Bloom filter indexes ‏(العادية وngram وtoken) بحيث يمكن استخدامها عندما تكون الوسيطة الأولى مصفوفة ثابتة (المجموعة) وتكون الثانية هي العمود المفهرس (المجموعة الفرعية)، مما يتيح تنفيذ الاستعلام بكفاءة أعلى. #84700 (Doron David).
  • السماح بتحويل نوع قيم Set عند دفع مرشحات IN / GLOBAL IN إلى المفاتيح الأساسية لتخزين KeyValue ‏(مثل: EmbeddedRocksDB وKeeperMap). #84515 (Eduard Karacharov).
  • إزالة عمليات الفحص الكاملة في الحالات التي يؤدي فيها تحليل الفهرس إلى نطاقات فارغة عند القراءة باستخدام النسخ المتماثلة المتوازية. #84971 (Eduard Karacharov).
  • إصلاح مجموعة من المشكلات التي قد تحدث عند محاولة تشغيل اختبارات التكامل على المضيف المحلي. #82135 (Oleg Doronin).
  • تمكين trace_log.symbolize افتراضيًا لعمليات النشر القديمة. #85456 (Azat Khuzhin).

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

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

إصلاحات تنفيذ الاستعلامات

  • بالنسبة إلى الاستعلامات التي تجمع بين ORDER BY ... LIMIT BY ... LIMIT N، عند تنفيذ ORDER BY على هيئة PartialSorting، أصبح العداد rows_before_limit_at_least يعكس الآن عدد الصفوف التي يستهلكها بند LIMIT بدلًا من عدد الصفوف التي تستهلكها عملية الفرز. #78999 (Eduard Karacharov).
  • إصلاح خطأ منطقي في العامل <=> مع Join storage، وأصبح الاستعلام يعيد الآن رمز الخطأ الصحيح. #80165 (Vladimir Cherkasov).
  • إصلاح تعطل في الدالة loop عند استخدامها مع عائلة الدالة remote. كما تم ضمان احترام بند LIMIT في loop(remote(...)). #80299 (Julia Kartseva).
  • إصلاح السلوك غير الصحيح للدالتين to_utc_timestamp وfrom_utc_timestamp عند التعامل مع التواريخ السابقة لـ Unix epoch ‏(1970-01-01) واللاحقة لأقصى تاريخ ‏(2106-02-07 06:28:15). وأصبحت هاتان الدالتان الآن تقيدان القيم بشكل صحيح عند بداية epoch وعند أقصى تاريخ، على الترتيب. #80498 (Surya Kant Ranjan).
  • إصلاح تنفيذ IN مع transform_null_in=1 عند وجود NULL في الوسيطة اليسرى ونتيجة استعلام فرعي غير Nullable. #81584 (Pavel Kruglov).
  • إصلاح المشكلة التي لا تُقرأ فيها الأعمدة المطلوبة أثناء معالجة الاستعلامات الفرعية المترابطة القياسية. ويعالج هذا #81716. #81805 (Dmitry Novik).
  • إصلاح تحليل عامل التصفية عندما يكون العمود الوحيد المستخدم في الاستعلام هو عمود alias ثابت. ويعالج هذا #79448. #82037 (Dmitry Novik).
  • إصلاح الخطأ Not found column في الاستعلامات التي تحتوي على arrayJoin ضمن شرط WHERE ومع IndexSet. #82113 (Nikolai Kochetov).
  • إصلاح الاستثناء TOO_DEEP_SUBQUERIES عندما يشير تعريف CTE إلى تعبير جدول آخر يحمل الاسم نفسه. #83413 (Dmitry Novik).
  • إصلاح النتائج غير الصحيحة للاستعلامات التي تحتوي على البند WHERE ... IN (<subquery>) مع تفعيل query condition cache (الإعداد use_query_condition_cache). #83445 (LB7666).
  • قد يؤدي INSERT SELECT مع UNION ALL إلى إلغاء مرجعية مؤشر NULL في حالة نادرة. ويغلق هذا #83618. #83643 (Alexey Milovidov).
  • إصلاح LOGICAL_ERROR أثناء تحليل التعبير الخاص بـ ROW POLICY للأعمدة المترابطة. #82618 (Dmitry Novik).
  • إصلاح النتائج الخاطئة عند استخدام query condition cache بالاقتران مع CTEs التكرارية (المشكلة #81506). #84026 (zhongyuankai).
  • إصلاح التحليل التكراري اللانهائي لتعريفات WINDOW غير الصالحة. ويعالج هذا #83131. #84242 (Dmitry Novik).
  • إصلاح Not-ready Set في IN (subquery) ضمن إعداد additional_table_filters expression. #85210 (Nikolai Kochetov).
  • إصلاح خطأ منطقي متعلق بالاستعلامات الفرعية المكررة عند تمكين optimize_syntax_fuse_functions، وإغلاق #75511. #83300 (Vladimir Cherkasov).

إصلاحات Iceberg وDataLake

  • إصلاح تحديد البيانات الوصفية عند الاستعلام عن جداول Iceberg عبر REST catalog. … #80562 (Saurabh Kumar Ojha).
  • إصلاح حالات تسابق البيانات في Iceberg. #82088 (Azat Khuzhin).
  • إصلاح خطأ “Context has expired” في Iceberg. #82146 (Azat Khuzhin).
  • أصبح ClickHouse الآن قادرًا على قراءة جداول Iceberg من Glue catalog بعد تطور المخطط. يُصلح #81272. #82301 (alesapin).
  • إصلاح حالات تسابق البيانات في Iceberg. #82841 (Azat Khuzhin).
  • تعطيل تقليم الملفات المستند إلى الحدود لعناصر Array في Iceberg وقيم Map في Iceberg، بما في ذلك جميع الحقول الفرعية المتداخلة التابعة لها. #83520 (Daniil Ivanik).
  • إصلاح عمليات الكتابة إلى Iceberg للأنواع المعقدة. #85330 (scanhex12).
  • كتابة الحدود الدنيا والعليا غير مدعومة للأنواع المعقدة. #85332 (scanhex12).
  • إصلاح قابلية الحقول لأن تكون NULL في Iceberg. #85977 (scanhex12).
  • لم يعد يتم إنشاء ملف حذف فارغ في Iceberg. #86061 (scanhex12).
  • تحديث timestamp البيانات الوصفية في عمليات الكتابة إلى Iceberg. #85711 (scanhex12).
  • لا يستطيع Spark قراءة position delete files. #85762 (scanhex12).
  • لم يعد يأخذ المخطط من manifest files، بل يخزن المخططات ذات الصلة لكل snapshot بشكل مستقل. ويستنتج المخطط المناسب لكل ملف بيانات من snapshot المقابلة له. كان السلوك السابق يخالف مواصفة Iceberg لإدخالات manifest files ذات الحالة existing. #84588 (Daniil Ivanik).
  • لم يعد Iceberg يحاول تخزين snapshot version ذات الصلة مؤقتًا بين استعلامات select، بل يحاول دائمًا تحديد snapshot على نحو صحيح. وقد أدت المحاولة السابقة لتخزين snapshot الخاصة بـ Iceberg مؤقتًا إلى مشكلات عند استخدام جدول Iceberg مع time travel. #85038 (Daniil Ivanik).
  • إصلاح تحديد البيانات الوصفية عند الاستعلام عن جداول Iceberg عبر REST catalog. … #85531 (Saurabh Kumar Ojha).
  • إصلاح إخفاء secrets في دوال الجدول icebergS3Cluster وicebergAzureCluster. #85658 (MikhailBurdukov).

إصلاحات DeltaLake

إصلاحات TTL وMergeTree

  • أُعيد احتساب فهرس الحد الأدنى/الحد الأقصى عندما يقلّل TTL عدد الصفوف، لضمان صحة الخوارزميات التي تعتمد عليه، مثل minmax_count_projection. يعالج هذا #77091. #77166 (Amos Bird).
  • إصلاح إعادة احتساب TTL بشكل غير صحيح في TTL GROUP BY عند تحديث TTL. #81222 (Evgeniy Ulasik).
  • إصلاح الخطأ “Context has expired” أثناء عمليات الدمج عند استخدام dict في تعبير TTL. #81690 (Azat Khuzhin).
  • إصلاح LOGICAL_ERROR والانهيار الذي يليه عند استخدام العمود نفسه في TTL لكلٍّ من GROUP BY وSET. #82054 (Pablo Marcos).
  • لم يعد MergeTree ينفّذ أي إجراءات متعلقة بـ TTL إذا أُزيلت جميع إعدادات TTL من الجدول. #84441 (alesapin).
  • إصلاح عدم تحقّق ALTER MODIFY ORDER BY من أعمدة TTL في مفاتيح الفرز. تُرفض أعمدة TTL الآن بشكل صحيح عند استخدامها في clauses ORDER BY أثناء عمليات ALTER، مما يمنع احتمال تلف الجدول. #84536 (xiaohuanlin).

إصلاحات الإسقاطات

  • إصلاح الخطأ المنطقي أثناء تنفيذ materialize للإسقاط عند تغيير نوع العمود إلى Nullable. #80741 (Pavel Kruglov).
  • إصلاح الاستخدام غير الصحيح للبيانات الوصفية الأصلية في دالة الجدول mergeTreeProjection عند enable_shared_storage_snapshot_in_query = 1. وهذا يخص #82634. #82638 (Amos Bird).
  • إصلاح تعطل نادر في ClickHouse عندما يحتوي الجدول على إسقاط، وتكون lightweight_mutation_projection_mode = 'rebuild'، وينفّذ المستخدم عملية حذف خفيفة الوزن تحذف جميع الصفوف من أي block في الجدول. #84158 (alesapin).
  • إصلاح النسخ الاحتياطي للأجزاء ذات الإسقاطات التالفة. #85362 (Antonio Andelic).
  • منع استخدام العمود _part_offset في الإسقاطات في الإصدارات إلى أن يصبح مستقرًا. #85372 (Sema Checherinda).

إصلاحات النسخ المتماثلة المتوازية

  • في بعض الاستعلامات المنفَّذة باستخدام النسخ المتماثلة المتوازية، كان يمكن تطبيق تحسينات القراءة بالترتيب على المُبادِر دون العُقد البعيدة. وقد أدى ذلك إلى استخدام أوضاع قراءة مختلفة لدى منسّق النسخ المتماثلة المتوازية (على المُبادِر) وعلى العُقد البعيدة، وهو خطأ منطقي. #80652 (Igor Nikonov).
  • تعطيل النسخ المتماثلة المتوازية عندما يحتوي استعلام فرعي على FINAL #81401 بواسطة . #83455 (zoomxi).
  • إصلاح LOGICAL_ERROR في الاستعلامات التي تستخدم النسخ المتماثلة المتوازية وتحتوي على عدة عمليات INNER join تتبعها عملية RIGHT join. لا تُستخدم النسخ المتماثلة المتوازية لمثل هذه الاستعلامات. #84299 (Vladimir Cherkasov).
  • قد تنتج الاستعلامات التي تستخدم النسخ المتماثلة المتوازية وتستفيد من تحسين القراءة العكسية بالترتيب نتائج غير صحيحة. #85406 (Igor Nikonov).

المصادقة والأمان

  • إصلاح إخفاء قيم المجموعة المسماة في السجلات/query_log. يغلق #82405. #82510 (Kseniia Sumarokova).
  • تعيين salt لبيانات المصادقة عند تحليلها من AST بالنوع SCRAM_SHA256_PASSWORD. #82888 (Tuan Pham Anh).
  • إخفاء تفاصيل المصادقة الخاصة بـ Avro schema registry بحيث لا تظهر للمستخدم ولا في السجلات. #83713 (János Benjamin Antal).
  • إصلاح السلوك غير الصحيح عند تنفيذ REVOKE S3 ON system.*، إذ كان يسحب أذونات S3 من *.*. هذا يُصلح #83417. #83420 (pufit).
  • إصلاح تعطل الخادم عندما يحاول مستخدم أُنشئ باستخدام no_password تسجيل الدخول بعد تغيير إعداد الخادم allow_no_password إلى 0. #84426 (Shankar Iyer).
  • تحسين رسالة الخطأ عند محاولة إنشاء مستخدم مُعرَّف باستخدام JWT. #85072 (Konstantin Bogdanov).
  • إخفاء بيانات الاعتماد الخاصة بـ deltaLakeAzure وdeltaLakeCluster وicebergS3Cluster وicebergAzureCluster. #85889 (Julian Maicher).
  • إصلاح خطأ أُدخل في #79963. عند الإدراج في عرض مُجسَّد له definer، يجب أن يستخدم فحص الأذونات الامتيازات الخاصة بـ definer. يُصلح #79951. #83502 (pufit).

إصلاحات النسخ الاحتياطي والاستعادة

  • إصلاح مشكلة النسخ الاحتياطي لجدول Memory فارغ، والتي كانت تؤدي إلى فشل استعادة النسخة الاحتياطية مع ظهور الخطأ BACKUP_ENTRY_NOT_FOUND. #82791 (Julia Kartseva).
  • إصلاح رسالة خطأ مضللة عند استعادة نسخة احتياطية على قرص في وضع القراءة فقط. #83051 (Julia Kartseva).
  • إصلاح بدء نسخ احتياطية داخلية غير ضرورية بعد حدوث مشكلات في الاتصال. #84755 (Vitaly Baranov).

دوال النافذة والتجميع

  • إصلاح تعطل محتمل في Aggregator عند حدوث استثناء أثناء الدمج. #81450 (Nikita Taranov).
  • إصلاح تعطل محتمل في Aggregator عند حدوث استثناء أثناء الدمج. #82022 (Nikita Taranov).
  • إصلاح خطأ نسخ ولصق في arraySimilarity، مع منع استخدام الأوزان من نوعي UInt32 وInt32، وتحديث الاختبارات والوثائق. #82103 (Mikhail f. Shiryaev).
  • إصلاح تجاوز السعة في الدوال numericIndexedVectorPointwiseAdd وnumericIndexedVectorPointwiseSubtract وnumericIndexedVectorPointwiseMultiply وnumericIndexedVectorPointwiseDivide الذي كان يحدث عند تطبيقها على أعداد كبيرة. #82165 (Raufs Dunamalijevs).

إصلاحات Parquet وتنسيق الملفات

  • إصلاح مشكلة في Parquet bloom filter كانت تتسبب في تطبيق شرط مثل WHERE function(key) IN (...) بشكل غير صحيح كما لو كان WHERE key IN (...). #81255 (Michael Kolupaev).
  • إصلاح مشكلة في parquet writer كانت تؤدي إلى إخراج إحصاءات غير صحيحة (الحد الأدنى/الحد الأقصى) لأنواع Decimal. #83754 (Michael Kolupaev).
  • إصلاح إلغاء التسلسل لـ groupArraySample/groupArrayLast في حالة العناصر الفارغة (إذ قد يتخطى إلغاء التسلسل جزءًا من البيانات الثنائية إذا كان الإدخال فارغًا، ما قد يؤدي إلى تلف أثناء قراءة البيانات وظهور UNKNOWN_PACKET_FROM_SERVER في بروتوكول TCP). لا يؤثر ذلك على الأنواع الرقمية وأنواع التاريخ والوقت. #82763 (Pedro Ferreira).
  • إصلاح كتابة JSON paths ذات قيم NULL بتنسيق RowBinary. #83923 (Pavel Kruglov).

إصلاحات JOIN

  • إصلاح تعديل التصفية للاستعلامات التي تحتوي على تعبير JOIN مع جدول يستخدم محرك التخزين Merge. يُصلح #82092. #82950 (Dmitry Novik).
  • إصلاح التعطل عند إجراء JOIN مع تخزين المفتاح-القيمة باستخدام مفتاح أُجري له تحويل نوع. #82497 (Pervakov Grigorii).
  • إصلاح خطأ منطقي عند تحليل المُطابِق في استعلام يحتوي على عدة عمليات JOIN، ويغلق #81969. #82421 (Vladimir Cherkasov).
  • إصلاح دمج التصفية في شرط JOIN في الحالات التي تكون فيها معاملات المساواة من أنواع مختلفة أو تشير إلى ثوابت. يُصلح #83432. #84145 (Dmitry Novik).
  • إصلاح الخطأ المنطقي Expected single dictionary argument for function أثناء تنفيذ JOIN على شرط عدم المساواة عندما يكون أحد الأعمدة LowCardinality والآخر ثابتًا. يغلق #81779. #84019 (Alexey Milovidov).

إصلاحات قاعدة البيانات المتماثلة

  • إصلاح markReplicasActive في DDLWorker و DatabaseReplicatedDDLWorker. #81395 (Tuan Pham Anh).
  • إصلاح DatabaseReplicated::getClusterImpl. إذا كان العنصر الأول (أو العناصر الأولى) في hosts يحتوي على id == DROPPED_MARK ولم تكن هناك عناصر أخرى للشارد نفسه، فسيكون العنصر الأول في shards متجهًا فارغًا، مما يؤدي إلى std::out_of_range. #82093 (Miсhael Stetsyuk).
  • تتبُّع عدد مهام تحميل الجداول غير المتزامنة. إذا كانت هناك مهام قيد التشغيل، فلا تُحدَّث tail_ptr في TransactionLog::removeOldEntries. #82824 (Tuan Pham Anh).
  • إصلاح المشكلة التي تحدث عندما يُنشأ جدول MergeTree مع add_minmax_index_for_numeric_columns=1 أو add_minmax_index_for_string_columns=1، ثم يُطبَّق الفهرس فعليًا لاحقًا أثناء عملية ALTER، مما يمنع قاعدة البيانات المتماثلة من التهيئة بشكل صحيح على نسخة متماثلة جديدة. #83751 (Nikolay Degterinsky).
  • إصلاح إنشاء RMV على نسخة متماثلة جديدة من قاعدة البيانات المتماثلة إذا تم حذف DEFINER. #85327 (Nikolay Degterinsky).
  • إصلاح استعادة قواعد البيانات المتماثلة عندما يستغرق نقل ملف البيانات الوصفية وقتًا طويلًا. #85177 (Tuan Pham Anh).
  • استعادة قاعدة البيانات المتماثلة قسريًا بعد استعادة البيانات الوصفية لقاعدة البيانات في Keeper. #85960 (Tuan Pham Anh).
  • إصلاح خطأ في تعافي قاعدة البيانات Replicated: إذا كان اسم الجدول يحتوي على الرمز %، فقد يُعاد إنشاء الجدول باسم مختلف أثناء التعافي. #85987 (Alexander Tokmakov).
  • أصبح عامل DDL ينظّف الآن المضيفين القدامى من مجموعة النسخ المتماثلة. سيؤدي ذلك إلى تقليل حجم البيانات الوصفية المخزنة في ZooKeeper. #88154 (alesapin).

إصلاحات التحديثات خفيفة الوزن

  • إصلاح التحديثات خفيفة الوزن للجداول التي تستخدم محركي ReplacingMergeTree وCollapsingMergeTree. #84851 (Anton Popov).
  • إصلاح خطأ منطقي في التحديثات خفيفة الوزن التي تحدّث جميع الأعمدة في الجدول. #84380 (Anton Popov).
  • إصلاح التحديثات خفيفة الوزن للجداول التي تستخدم المحرك ReplicatedMergeTree والتي أُنشئت على خوادم بإصدار أقدم من 25.7. #84933 (Anton Popov).
  • إصلاح التحديثات خفيفة الوزن للجداول التي تستخدم محرك MergeTree غير المكرّر بعد تشغيل استعلام ALTER TABLE ... REPLACE PARTITION. #84941 (Anton Popov).
  • إصلاح تنظيف أجزاء التصحيح في ReplicatedMergeTree. في السابق، كان من الممكن ألا تظهر نتيجة التحديث خفيف الوزن مؤقتًا على النسخة المتماثلة إلى أن يُنزَّل من نسخة متماثلة أخرى الجزء المدموج أو المُعدَّل الذي يطبّق أجزاء التصحيح فعليًا. #85121 (Anton Popov).

إصلاحات S3 وتخزين الكائنات

  • إصلاح التحقق من صحة المعاملات في دالة الجدول S3 عند إخفاء الأسرار، ما يمنع حدوث LOGICAL_ERROR محتمل، مع إغلاق #80620. #82056 (Vladimir Cherkasov).
  • إصلاح احتمال حدوث توقف متبادل في الاستعلامات البعيدة عندما يكون الخادم تحت ضغط الذاكرة. #82160 (Kirill).
  • إضافة وقت انتهاء الصلاحية إلى رمز AWS ECS المميز بحيث يمكن إعادة تحميله. #82422 (Konstantin Bogdanov).
  • إصلاح تعطيل محاذاة الحدود للمخزن المؤقت cached في محركات الجداول الخارجية. كان هذا معطّلًا في https://github.com/ClickHouse/ClickHouse/pull/81868. #82493 (Kseniia Sumarokova).
  • إصلاح no_sign_request في عميل S3. يمكن استخدامه لتجنب توقيع طلبات S3 صراحةً. ويمكن أيضًا تعريفه لنقاط نهاية محددة باستخدام إعدادات تعتمد على endpoint. #83379 (Antonio Andelic).
  • تخطي العُقد غير المتاحة أثناء INSERT SELECT من s3Cluster() إلى متماثل MergeTree. #83676 (Igor Nikonov).
  • إصلاح شرط الإرجاع المبكر لإبطاء معدل طلبات S3: يجب أن تكون إحدى القيمتين s3_slow_all_threads_after_network_error أو backup_slow_all_threads_after_retryable_s3_error مساوية لـ true لتفعيل سلوك الإبطاء عندما تكون جميع الخيوط متوقفة مؤقتًا بسبب خطأ قابل لإعادة المحاولة، بدلًا من اشتراط القيمتين معًا. #85505 (Julia Kartseva).
  • إصلاح خطأ منطقي أثناء القراءة من دوال تخزين الكائنات عبر جدول Distributed أو دالة الجدول البعيدة. إصلاحات: #84658، وإصلاح #85173، وإصلاح #52022. #85359 (alesapin).
  • إصلاح الخطأ المنطقي من S3Queue: “Table is already registered”. إغلاق #84433. ظهر الخلل بعد https://github.com/ClickHouse/ClickHouse/pull/83530. #84677 (Kseniia Sumarokova).
  • إصلاح تسبّب قيم الإعدادات الكبيرة في تعطل جداول S3Queue وإعادة تشغيل نسخة متماثلة. #86074 (Nikolay Degterinsky).

إصلاحات DynamicAndVariantType

  • إصلاح التراجع عن تغييرات عمود Dynamic عند فشل التحليل. #82169 (Pavel Kruglov).
  • إصلاح احتمال حدوث تعطل في نوع Variant ضمن UNION. #83295 (Pavel Kruglov).
  • إصلاح قراءة عمود Variant مع التجسيد المؤجل. #84400 (Pavel Kruglov).
  • عدم التحقق من الأنواع التجريبية/المريبة أثناء تنفيذ تعبير default/materialize عند القراءة من جدول موجود. #81618 (Pavel Kruglov).

إصلاحات Keeper

  • إصلاح في Keeper: تحديث العدد الإجمالي لعمليات watch بشكل صحيح عند حذف العقد المؤقتة عند إغلاق الجلسة. #83583 (Antonio Andelic).
  • إصلاح الكتابات غير المرتبة في سجل تغييرات Keeper. سابقًا، كان من الممكن أن توجد كتابات قيد التنفيذ إلى سجل التغييرات، لكن التراجع قد يتسبب في تغيير متزامن لملف الوجهة. وكان هذا يؤدي إلى سجلات غير متسقة، مع احتمال فقدان البيانات. #84434 (Antonio Andelic).
  • إصلاح تسربات في Keeper مع تخزين RocksDB (إذ لم تكن المكررات تُدمَّر). #84523 (Azat Khuzhin).
  • إصلاح مشكلة كان فيها إعداد Keeper rotate_log_storage_interval = 0 يتسبب في تعطل ClickHouse. (المشكلة #83975). #84637 (George Larionov).
  • إصلاح العدد الإجمالي لعمليات watches الذي يعيده Keeper. #84890 (Antonio Andelic).
  • قفل ‘mutex’ عند جلب ZooKeeper من ‘view’ في RefreshTask. #84699 (Tuan Pham Anh).

إصلاحات الفهرسة

  • إصلاح التخطي المفرط للحبيبات عند التصفية عبر فهارس token/ngram باستخدام regexp يتضمن alternation ويبدأ ببديل أول غير حرفي. #79373 (Eduard Karacharov).
  • كان من الممكن أن يفشل تنفيذ الإعداد use_skip_indexes_if_final_exact_mode (المُقدَّم في 25.6) في تحديد نطاق مرشح مناسب، وذلك بحسب إعدادات محرك MergeTree / توزيع البيانات. وقد تم حل ذلك الآن. #82667 (Shankar Iyer).
  • كان من الممكن أن يفشل تحسين الإعداد use_skip_indexes_if_final_exact_mode (المُقدَّم في 25.6) في تحديد نطاق مرشح مناسب، وذلك بحسب إعدادات محرك MergeTree / توزيع البيانات. وقد تم حل ذلك الآن. #82879 (Shankar Iyer).
  • سابقًا، لم تكن فهارس set تأخذ أعمدة Nullable في الاعتبار عند التحقق مما إذا كانت الحبيبات تستوفي شرط عامل التصفية (المشكلة #75485). #84305 (Elmi Ahmadov).
  • لم تكن المقارنة مع قيمة nan تستخدم النطاقات الصحيحة أثناء تقييم فهرس MinMax. #84386 (Elmi Ahmadov).
  • لم تعد محللات الرموز ngram وno_op تتسبب في تعطل فهرس النص (التجريبي) عند وجود رموز إدخال فارغة. #84849 (Robert Schulze).

إصلاحات العرض المادي

إصلاحات Azure والتخزين السحابي

  • في AzureBlobStorage، عند استخدام النسخ الأصلي نقارن بين طرق المصادقة، وإذا حدث استثناء أثناء ذلك، فقد جرى تحديث الشيفرة للرجوع إلى القراءة والنسخ (أي النسخ غير الأصلي). #82693 (Smita Kulkarni).
  • إصلاح مشكلة التحرير المزدوج في AzureIteratorAsync. #85064 (Nikita Taranov).

إصلاحات الأعطال والاستقرار

  • إصلاح تعطل محتمل في logging أثناء إنهاء session، إذ قد يكون user_id فارغًا أحيانًا. #82513 (Bharat Nallan).
  • إصلاح تعطل في عميل بسبب بقاء connection في حالة انقطاع بعد تنفيذ INSERT غير صالح. #83253 (Azat Khuzhin).
  • إصلاح تعطل عند حساب حجم block يحتوي على columns فارغة. #83271 (Raúl Marín).
  • إصلاح تعطل قد يحدث مع query تستخدم الإعداد ‘max_threads=1’ عند تنفيذها تحت حمل مع تمكين CPU scheduling. #83387 (Fan Ziqi).
  • جعل zoutofmemory خطأً عتاديًا، وإلا فسيؤدي إلى throw logical error. راجع https://github.com/clickhouse/clickhouse-core-incidents/issues/877. #84420 (Han Fei).
  • إصلاح احتمال حدوث إيقاف قسري (بسبب joining threads من task)، وربما أيضًا حالات تعليق (في unit tests) أثناء إيقاف BackgroundSchedulePool. #83769 (Azat Khuzhin).
  • إصلاح حالة توقف متبادل تتسبب بها thread الخاصة بفاحص الإلغاء في الخلفية. #84203 (Antonio Andelic).
  • إصلاح توقف متبادل عند الإيقاف بسبب قفل Context بشكل تكراري أثناء تنظيف library bridge. #83824 (Azat Khuzhin).
  • إصلاح تعطل في عميل بسبب بقاء connection في حالة انقطاع بعد تنفيذ INSERT غير صالح. #83842 (Azat Khuzhin).
  • إصلاح احتمال حدوث UB (أعطال) في حالة MEMORY_LIMIT_EXCEEDED أثناء deserialization لـ String. #85440 (Azat Khuzhin).
  • إصلاح تعطل نادر في asynchronous inserts التي تغيّر settings log_comment أو insert_deduplication_token. #85540 (Anton Popov).

إصلاحات Glue والكتالوج

  • إصلاح خلل في تكامل Glue catalog. يمكن لـ ClickHouse الآن قراءة الجداول ذات أنواع البيانات المتداخلة عندما تحتوي بعض الأعمدة الفرعية على أعداد عشرية، على سبيل المثال: map<string, decimal(9, 2)>. يُصلح #81301. #82114 (alesapin).
  • يقرأ ClickHouse الآن الجداول من Glue Catalog عندما يكون نوع الجدول محددًا بأحرف صغيرة. #84316 (alesapin).
  • يتجاهل Unity catalog الآن المخططات ذات أنواع البيانات غير المعتادة في حالة الجداول غير التابعة لـ Delta. يُصلح #85699. #85950 (alesapin).

إصلاحات الدوال

  • تدعم الدوال trim{Left,Right,Both} الآن سلاسل الإدخال من النوع “FixedString(N)”. على سبيل المثال، أصبح SELECT trimBoth(toFixedString('abc', 3), 'ac') يعمل الآن. #82691 (Robert Schulze).
  • إذا استُدعيت الدالة trim بمدخلات ثابتة بالكامل، فإنها تُنتج الآن سلسلة خرج ثابتة. (الخلل #78796). #82900 (Robert Schulze).
  • إصلاح الخرج غير الصحيح للدالة formatDateTime عند استخدام المُنسِّق %f مع مُنسِّقات ذات حجم متغير (مثل %M). #83020 (Robert Schulze).
  • إصلاح خلل في معاملات NULL في الدالة CASE. #82436 (Yarik Briukhovetskyi).
  • عدم استخدام أجزاء غير مرتبطة من قاموس مشترك في الدالة lowCardinalityKeys. #83118 (Alexey Milovidov).
  • إصلاح colorSRGBToOKLCH/colorOKLCHToSRGB عند مزج معاملات ثابتة وأخرى غير ثابتة. #83906 (Azat Khuzhin).
  • إصلاح الإنشاء غير الصحيح لـ tuples فارغة في الدالة array(). ويعالج هذا #84202. #84297 (Amos Bird).
  • إصلاح خلل كان يتسبب في ترميز Bech32 وفك ترميزه بشكل غير صحيح. ولم يُكتشف هذا الخلل في الأصل لأن أحد التطبيقات المتاحة عبر الإنترنت للخوارزمية، والمستخدم للاختبار، كان يعاني من المشكلة نفسها. #84257 (George Larionov).

إصلاحات الاستعلامات الموزعة

  • كان يُسمح بتنفيذ INSERT SELECT الموزع المتوازي مع LIMIT، وهذا غير صحيح لأنه يؤدي إلى ازدواجية البيانات في جدول الوجهة. #84477 (Igor Nikonov).
  • عدم محاولة استبدال دوال الجدول ببديلها الخاص بالعنقود عند وجود JOIN أو استعلام فرعي. #84335 (Konstantin Bogdanov).
  • إضافة فحص للتحقق مما إذا كان استعلام فرعي مترابط مستخدمًا في سياق موزع لتجنب حدوث تعطل. يعالج #82205. #85030 (Dmitry Novik).
  • كان استخدام distributed_depth كمؤشر إلى الدالة *Cluster غير صحيح، وقد يؤدي إلى ازدواجية البيانات؛ ويُستخدم client_info.collaborate_with_initiator بدلًا من ذلك. #85734 (Konstantin Bogdanov).
  • إضافة دعم للثوابت العامة من عبارة WITH في INSERT SELECT الموزع المتوازي مع جدول الوجهة Distributed. سابقًا، كان الاستعلام قد يُطلق خطأ Unknown expression identifier. #85811 (Nikolai Kochetov).
  • إصلاح خطأ منطقي عند محاولة CREATE ... AS (SELECT * FROM s3Cluster(...)) مع DatabaseReplicated. #85904 (Konstantin Bogdanov).
  • إضافة عمليات تحقق من sharding_key أثناء تنفيذ ALTER على جدول Distributed. سابقًا، كان ALTER غير الصحيح يؤدي إلى إفساد تعريف الجدول وتعطيل إعادة تشغيل الخادم. #86015 (Nikolay Degterinsky).

إصلاحات المقاييس والمراقبة

  • إصلاح التحقق من صحة إعدادات المقاييس غير المتزامنة asynchronous_metrics_update_period_s وasynchronous_heavy_metrics_update_period_s. #82310 (Bharat Nallan).
  • إصلاح مقاييس IndexUncompressedCacheBytes/IndexUncompressedCacheCells/IndexMarkCacheBytes/IndexMarkCacheFiles (إذ كانت تُحتسب سابقًا ضمن مقياس من دون السابقة Cache). #83730 (Azat Khuzhin).
  • إصلاح LOGICAL_ERROR في QueryMetricLog: لا يمكن أن تكون Mutex بقيمة NULL. #82979 (Pablo Marcos).
  • إصلاح المقاييس غير الصحيحة KafkaAssignedPartitions وKafkaConsumersWithAssignment. #85494 (Ilya Golshtein).
  • إصلاح التقليل من تقدير إحصائية البايتات المُعالجة عند استخدام PREWHERE (صراحةً أو تلقائيًا). #85495 (Michael Kolupaev).
  • إصلاح انحراف تتبّع الذاكرة الناتج عن مجموعة الجدولة الخلفية والمنفّذ. #84946 (Azat Khuzhin).

إصلاحات نوع البيانات والتحويل

  • إصلاح الحالات التي قد يتسبب فيها تحليل Time في مشكلات msan. يعالج هذا: #82477. #82514 (Yarik Briukhovetskyi).
  • إصلاح فرز قيم NaN في النوع LowCardinality(Float32|Float64|BFloat16). #83786 (Pervakov Grigorii).
  • تم إصلاح تجاوز السعة عند القيم الكبيرة (>2106-02-07) عند التحويل من Date إلى DateTime64. #83982 (Yarik Briukhovetskyi).
  • إصلاح مشكلة القراءة الضمنية لقيم Time السالبة إلى الجدول، مع جعل التوثيق أوضح وأقل إرباكًا. #83091 (Yarik Briukhovetskyi).
  • أصبح codec ‏DoubleDelta قابلاً للتطبيق الآن فقط على الأعمدة ذات النوع الرقمي. وعلى وجه الخصوص، لم يعد بالإمكان ضغط أعمدة FixedString باستخدام DoubleDelta. (يُصلح #80220). #84383 (Jimmy Aguilar Mena).
  • إصلاح فقدان الدقة في JSONExtract عند تحويل أرقام JSON إلى أنواع Decimal. والآن تحافظ قيم JSON الرقمية على تمثيلها العشري الدقيق، مما يجنب أخطاء التقريب في الأعداد ذات الفاصلة العائمة. #85665 (ssive7b).

إدارة الذاكرة والموارد

  • إصلاح التعامل غير الصحيح مع الذاكرة المرتبط بـ max_untracked_memory. #83607 (Azat Khuzhin).
  • منع مشاركة async_read_counters بين الاستعلامات. #83423 (Azat Khuzhin).
  • إصلاح أخطاء محتملة ناتجة عن عدم تهيئة File Cache عند استخدامه كتخزين مؤقت للبيانات. #83539 (Bharat Nallan).
  • تطبيق filesystem_prefetches_limit دائمًا (وليس فقط من MergeTreePrefetchedReadPool). #83999 (Azat Khuzhin).

إصلاحات التهيئة والإعدادات

  • عند تمرير الإعدادات عبر URI، يُعتدّ بآخر قيمة. #82137 (Sema Checherinda).
  • إصلاح سباقات البيانات في العميل (من خلال عدم استخدام السياق العام) وتجاوزات session_timezone (سابقًا، إذا كانت session_timezone مضبوطة مثلًا في users.xml/خيارات العميل على قيمة غير فارغة، ثم ضُبطت في سياق الاستعلام على قيمة فارغة، كانت تُستخدم القيمة من users.xml، وهذا غير صحيح؛ أما الآن فستكون الأولوية دائمًا لسياق الاستعلام على السياق العام). #82444 (Azat Khuzhin).
  • منع ضبط threadpool_writer_pool_size على الصفر لضمان عدم تعلّق عمليات الخادم. #82532 (Bharat Nallan).
  • معالجة تجاوز طفيف في سعة الأعداد الصحيحة في تهيئة الإعداد role_cache_expiration_time_seconds (المشكلة #83374). #83461 (wushap).
  • منع القيمة الصفرية لـ max_insert_block_size لأنها قد تتسبب في خطأ منطقي. #83688 (Bharat Nallan).
  • إصلاح حلقة لا نهائية في estimateCompressionRatio() عند block_size_bytes=0. #83704 (Azat Khuzhin).
  • كانت معلمات مثل date_time_input_format تُتجاهل بالكامل عند استخدام HTTP مع multipart. #85570 (Sema Checherinda).

إصلاحات MongoDB

  • سابقًا، كان يمكن لتعريفات محرك الجدول MongoDB أن تتضمن مكوّن مسار في الوسيط host:port، وكان يُتجاهَل بصمت. وكان تكامل MongoDB يرفض تحميل مثل هذه الجداول. مع هذا الإصلاح، أصبحنا نسمح بتحميل هذه الجداول ونتجاهل مكوّن المسار إذا كان لمحرك MongoDB خمس وسائط، مع استخدام اسم قاعدة البيانات من الوسائط. ملاحظة: لا يُطبَّق هذا الإصلاح على الجداول المُنشأة حديثًا أو على الاستعلامات التي تستخدم دالة الجدول mongo، وكذلك على مصادر القواميس والمجموعات المُسمّاة. #81942 (Vladimir Cherkasov).

تحسينات متفرقة

  • في الإصدارات السابقة، كان الخادم يعيد محتوى زائدًا للطلبات الموجَّهة إلى /js. هذا يُغلق #61890. #81895 (Alexey Milovidov).
  • إصلاح InterpreterInsertQuery::extendQueryLogElemImpl لإضافة علامات الاقتباس العكسية إلى أسماء قاعدة البيانات والجدول عند الحاجة (مثلًا عندما تحتوي الأسماء على محارف خاصة مثل -). #81528 (Ilia Shvyrialkin).
  • إصلاح احتمال حدوث سباق بيانات بين خيط الاقتراحات وخيط العميل الرئيسي. #82233 (Azat Khuzhin).
  • إصلاح سلامة الاستثناءات في إعادة كتابة union/intersect/except_default_mode. يُغلق هذا #82664. #82820 (Alexey Milovidov).
  • عند استخدام تنفيذ Database لا يعتمد على التخزين المؤقت، تُحذف البيانات الوصفية للجدول المقابل بعد إعادة الأعمدة، ويصبح المرجع غير صالح. #82939 (buyval01).
  • يُزامَن استدعاء Onprogress في JSONEachRowWithProgress مع الإنهاء. #83879 (Sema Checherinda).
  • إصلاح خلل نادر حيث قد يؤدي استعلام MATERIALIZE COLUMN إلى ظهور ملفات غير متوقعة في checksums.txt، وفي النهاية إلى أجزاء بيانات detached. #84007 (alesapin).
  • التعامل مع الاستثناءات على نحو صحيح أثناء التحديث الدوري للأجزاء. #84083 (Azat Khuzhin).
  • إصلاح توليد أسماء الأعمدة للقيم المنطقية الحرفية بحيث يستخدم “true”/“false” بدلًا من “1”/“0”، مما يمنع تعارض أسماء الأعمدة بين القيم المنطقية والحرفية الصحيحة في الاستعلامات. #84945 (xiaohuanlin).
  • إصلاح مشكلات محتملة في دقة الفرز في محرك جدول Merge. #85025 (Xiaozhe Yu).
  • تنفيذ واجهات برمجة تطبيقات المفقودة لـ DiskEncrypted. #85028 (Azat Khuzhin).
  • إضافة إعداد للتوافق مع الإصدارات السابقة للسماح للمحلل الجديد بالإشارة إلى الاسم المستعار الخارجي في جملة WITH عند تعارض الأسماء. يُصلح #82700. #83797 (Dmitry Novik).
  • السماح بالإشارة إلى أي جدول في وسيطة view(...) الخاصة بالدالة الجدولية ‏remote عند تمكين المحلل. يُصلح #78717. يُصلح #79377. #83844 (Dmitry Novik).
  • إصلاح الكتابة مع append (في MergeTree المستخدم للمعاملات التجريبية) مع أنواع البيانات الوصفية plain_rewritable/plain، إذ كان يجري تجاهلها سابقًا. #83695 (Tuan Pham Anh).
  • إصلاح استخدام logger في IAccessStorage. #84365 (Konstantin Bogdanov).
  • إصلاح استبعاد الملفات استنادًا إلى العمود الافتراضي في بحيرات البيانات. #84520 (Kseniia Sumarokova).
  • إصلاح مشكلة قد تؤدي فيها عملية الاستعلام عن مصدر بعيد متأخر إلى تجاوز حدود المتجه. #84820 (George Larionov).
  • تخزين جميع الإعدادات بشكل صحيح في بيانات تعريف الجدول لمحرك object queue. #84860 (Antonio Andelic).
  • إصلاح الخطأ CORRUPTED_DATA عند استخدام الأعمدة الكسولة مع الفرز الخارجي. #84738 (János Benjamin Antal).
  • التخلّص من استدعاءات getStatus() غير الضرورية أثناء استعلامات SYSTEM DROP REPLICA. ويُصلح ذلك الحالة التي يُحذف فيها جدول في الخلفية ويُطلَق فيها الاستثناء Shutdown for storage is called. #85220 (Nikolay Degterinsky).
  • إضافة عمليات التحقق المفقودة من طول اسم الجدول في استعلامات CREATE OR REPLACE و RENAME. #85326 (Michael Kolupaev).
  • إصلاح التعطّل وفساد البيانات أثناء ALTER UPDATE لـ JSON. #85383 (Pavel Kruglov).
  • إصلاح segfault في coalescing merge tree للسلاسل النصية الكبيرة. هذا يُغلق #84582. #85709 (scanhex12).
  • إصلاح send_logs_source_regexp (بعد إعادة هيكلة التسجيل غير المتزامن في #85105). #85797 (Azat Khuzhin).
  • إصلاح احتمال عدم الاتساق في القواميس التي تستخدم update_field عند أخطاء MEMORY_LIMIT_EXCEEDED. #85807 (Azat Khuzhin).
  • إصلاح طلبات HTTP التي تُجريها دالة الجدول url() بحيث تُضمِّن أرقام المنافذ بشكل صحيح في ترويسة Host عند الوصول إلى منافذ غير قياسية. يحلّ هذا حالات فشل المصادقة عند استخدام عناوين URL موقّعة مسبقًا مع خدمات متوافقة مع S3 مثل MinIO التي تعمل على منافذ مخصّصة، وهو أمر شائع في بيئات التطوير. (يُصلح #85898). #85921 (Tom Quist).
آخر تعديل في ٢٩ يونيو ٢٠٢٦