التغييرات غير المتوافقة مع الإصدارات السابقة
تغييرات الاستعلامات والصياغة
- تم إصلاح عدم اتساق تنسيق الاستعلامات الناتج عن استبدال غير صحيح للاسم المستعار. ملاحظة: عند تعطيل المحلّل، قد لا تعود بعض استعلامات
CREATE VIEWالتي تستخدمINمع مرجع إلى اسم مستعار قابلة للمعالجة. لتجنّب ذلك، تأكد من تمكين المحلّل (وهو مُمكَّن افتراضيًا منذ 24.3). #82838 (Alexey Milovidov). - أصبحت قائمة الأعمدة الفارغة في
JOIN USING ()تُعدّ الآن خطأً نحويًا. سابقًا، كان يُبلَّغ عن ذلك على أنهINVALID_JOIN_ON_EXPRESSIONعند تنفيذ الاستعلام، وفي بعض الحالات (مثل الربط مع التخزينJoin) كان قد يتسبب فيLOGICAL_ERROR. #92371 (Vladimir Cherkasov). - لم تعد الاستعلامات الفرعية مسموحًا بها في
ORDER BYأو في تعبيرات مفاتيح الجداول الأخرى. #96847 (Alexey Milovidov).
تغييرات نوع البيانات
- أُضيف دعم
Nullable(Tuple). لتمكينه، اضبطallow_experimental_nullable_tuple_type = 1. #89643 (Nihal Z. Miaji). - أصبحت البيانات المشتركة المتقدمة في النوع JSON مُمكّنة افتراضيًا الآن. ولن يعود من الممكن الرجوع إلى إصدارات أقدم من 25.8، لأن الإصدارات الأقدم لا تستطيع قراءة أجزاء البيانات المكتوبة بتنسيق JSON الجديد. ولإجراء الترقيات بأمان، اضبط إعداد
compatibilityعلى الإصدار السابق، أو اضبط إعدادات MergeTreedynamic_serialization_version='v2'وobject_serialization_version='v2'. #92511 (Pavel Kruglov). - يستخدم
SKIP REGEXPفي النوع JSON المطابقة الجزئية افتراضيًا الآن. #92847 (Pavel Kruglov). - أُصلح خطأ منطقي كان يحدث عند عدم تطابق النوع
Variant. #95811 (Bharat Nallan). - تُستنتج أعمدة
DATEمن PostgreSQL الآن على أنهاDate32في ClickHouse (وكانت تُستنتج سابقًا على أنهاDate، ما قد يسبب تجاوز السعة للقيم الواقعة خارج نطاقه الضيق). كما أصبح إدراج قيمDate32مرة أخرى في PostgreSQL مدعومًا الآن. #95999 (Alexey Milovidov).
تغييرات التخزين والفهارس
- تم تحسين تخطيط التخزين للفهرس النصي المعكوس لتحقيق قراءات أكثر كفاءة من تخزين الكائنات، إلى جانب تحسين أداء الدمج للجداول التي تحتوي على فهارس نصية معكوسة. إذا كنت قد استخدمت الفهرس النصي التجريبي قبل الإصدار 25.12، فيجب عليك حذف الفهرس قبل الترقية وإعادة بنائه على الإصدار الجديد. #91518 (Anton Popov).
- تغيّر تنسيق تخزين الإحصاءات — إذ تُخزَّن الآن جميع الإحصاءات في ملف واحد. #93414 (Anton Popov).
- أصبحت أسماء ملفات الفهارس الآن مُهرَّبة لمنع تلف الأجزاء. سيفشل ClickHouse في تحميل الفهارس التي تحتوي أسماؤها على محارف غير ASCII، والتي أُنشئت بواسطة الإصدارات السابقة. للتعامل مع ذلك، استخدم إعداد MergeTree
escape_index_filenames. #94079 (Raúl Marín).
الميزات المُزالة
- أُزيلت مرمّزات الضغط
DEFLATE_QPLوZSTD_QAT. حوِّل أي بيانات موجودة مضغوطة بهذه المرمّزات إلى codec آخر قبل الترقية. لاحظ أن استخدام هذه المرمّزات كان يتطلب سابقًا تفعيلenable_deflate_qpl_codecأوenable_zstd_qat_codec. #92150 (Robert Schulze). - لم يعد
INSERTإلى أعمدةALIASالبسيطة مدعومًا (وهذا يتراجع عن #84154). لم تكن هذه الميزة تعمل مع التنسيقات المخصّصة، ولم تكن مقيّدة بإعداد. #92849 (Azat Khuzhin). - أُزيل محرك قاعدة البيانات
Lazyولم يعد متاحًا. #93627 (Alexey Milovidov). - أُزيل وضع
transposed_with_wide_viewالخاص بـmetric_logبسبب خلل جعله غير قابل للاستخدام. ولم يعد من الممكن تعريفsystem.metric_logباستخدام هذا الوضع. #93867 (Alexey Milovidov).
تغييرات الإعدادات والتهيئة
- يؤدي إعداد جديد الآن إلى ظهور خطأ إذا لم يكن كتالوج بحيرة البيانات يملك حق الوصول إلى تخزين الكائنات. #93606 (Konstantin Vedernikov).
- أصبحت جدولة CPU لأعباء العمل استباقية افتراضيًا. راجع إعداد الخادم
cpu_slot_preemption. #94060 (Sergei Trifonov). - أُعيد تصنيف الإعدادات
exact_rows_before_limitوrows_before_aggregationوcross_to_inner_join_rewriteوregexp_dict_allow_hyperscanوregexp_dict_flag_case_insensitiveوregexp_dict_flag_dotallوdictionary_use_async_executorمن إعدادات التنسيق إلى إعدادات عادية. وهذا في معظمه تغيير داخلي لا يترتب عليه آثار جانبية ظاهرة للمستخدم، إلا إذا كنت قد حددت أيًا منها في تعريف محرك جدول Iceberg أو DeltaLake أو Kafka أو S3 أو S3Queue أو Azure أو Hive أو RabbitMQ أو Set أو FileLog أو NATS — ففي هذه الحالة ستؤدي هذه التعريفات الآن إلى ظهور خطأ بدلًا من تجاهلها بصمت. #94106 (Robert Schulze). - بُسِّطت دلالات
do_not_merge_across_partitions_select_final. في السابق، كان يمكن تمكين هذه الميزة تلقائيًا حتى من دون ضبطها صراحةً، مما تسبب في التباس ومشكلات في بيئة production. الآن: يؤدي ضبطها على1إلى تمكين هذه الوظيفة دون شروط، بينما يؤدي ضبطها على0إلى الرجوع إلى الإعداد الجديدenable_automatic_decision_for_merging_across_partitions_for_final(القيمة الافتراضية1). #96110 (Nikita Taranov). - أُضيف التحقق من صحة مخطط S3. #96194 (Konstantin Vedernikov).
- أصبح الإعداد
apply_row_policy_after_finalمفعّلًا افتراضيًا الآن، بما يضمن أنROW POLICYيراعيFINALكما كان في الأصل. إذا كنت تعتمد سابقًا علىoptimize_move_to_prewhere_if_final=1لتطبيق سياسات الصفوف قبلFINAL، فاستخدمapply_row_policy_after_final=0بدلًا من ذلك. #97279 (Nikolai Kochetov).
تغييرات الأمان والتحكم في الوصول
- تفرض
joinGet/joinGetOrNullالآن امتيازاتSELECTعلى جدول Join الأساسي. ويتطلب تنفيذjoinGet('db.table', 'column', key)امتيازSELECTعلى كلٍّ من الأعمدة المفتاحية وعمود السمة المطلوب استرجاعه. وستفشل الاستعلامات التي لا تملك هذه الامتيازات برسالةACCESS_DENIED. ولإجراء الترحيل، امنح الصلاحيات باستخدامGRANT SELECT ON db.join_table TO userللوصول الكامل إلى الجدول، أوGRANT SELECT(key_col, attr_col) ON db.join_table TO userللوصول على مستوى العمود. #94307 (Vladimir Cherkasov). - تتطلب استعلامات
CREATE TABLE ... AS ...الآن امتيازSHOW COLUMNSبدلًا منSHOW TABLES، الذي كان يُتحقَّق منه سابقًا على نحو غير صحيح. #94556 (pufit).
تغييرات الإدراج وإزالة التكرار
- أصبحت إزالة التكرار مفعّلة الآن افتراضيًا لجميع عمليات الإدراج. في السابق، كانت معطّلة لعمليات الإدراج غير المتزامنة والعروض المادية، لكنها كانت مفعّلة لعمليات الإدراج المتزامنة. وللحفاظ على السلوك السابق، عيّن
deduplicate_insert='backward_compatible_choice'صراحةً (وبالمثل بالنسبة إلىdeduplicate_blocks_in_dependent_materialized_views). #95970 (Sema Checherinda).
تغييرات جداول النظام
- أصبحت البيانات الوصفية المخزنة في الذاكرة لكل من S3Queue وAzureQueue محدودة الآن. وأُعيدت تسمية جداول النظام: أصبح
system.s3queueالآنsystem.s3queue_metadata_cache، وأصبحsystem.azure_queueالآنsystem.azure_queue_metadata_cache. #95809 (Kseniia Sumarokova).
تغييرات أخرى غير متوافقة
- تم إصلاح دوال H3 index التي كان يمكن أن تتسبب في تعطّل أو تعليق عند استدعائها باستخدام مُدخلات غير صالحة. #93657 (Michael Kolupaev).
الميزات الجديدة
المصادقة
- تمت إضافة دعم كلمة مرور لمرة واحدة مستندة إلى الوقت (TOTP) كوسيلة للمصادقة. #71273 (Vladimir Cherkasov).
الدوال
- أُضيفت الدالة
reverseBySeparator، التي تعكس ترتيب السلاسل الفرعية داخل سلسلة نصية مفصولة بفاصل محدد. #91780 (Xuewei Wang). - أُضيفت الدالتان
colorOKLABToSRGBوcolorSRGBToOKLABللتحويل بين فضاءَي الألوان sRGB وOKLAB. #93361 (Pranav Tiwari). - أُضيفت الدالة
cosineDistanceTransposedالتي تقدّر تقريبًا مسافة جيب التمام بين نقطتين. #93621 (Raufs Dunamalijevs). - أُضيفت دالة التهشير
xxh3_128. #96055 (Raúl Marín). - أُضيفت الدالة
mergeTreeAnalyzeIndex()لتحليل استخدام فهرس MergeTree. #92954 (Azat Khuzhin). - تدعم الدوال الآن النوع
Variantمن خلالFunctionVariantAdaptorالجديد. #90900 (Bharat Nallan). - يمكن الآن استدعاء بعض الدوال في SQL من دون أقواس. #94678 (Aly Kafoury).
جداول النظام
- أُضيف جدول
system.user_defined_functionsلمراقبة حالة تحميل UDF وإعداداته. #90340 (Xu Jia). - أُضيف جدول
system.zookeeper_info. #90809 (Smita Kulkarni). - أُضيف جدول
system.primesودالة جدولprimesالتي تتضمن الأعداد الأولية بترتيب تصاعدي. #92776 (Nihal Z. Miaji). - أُضيف العمود
filesإلىsystem.partsلعرض عدد الملفات في كل جزء بيانات. #94337 (Match). - أُضيف جدول
system.fail_pointsلفحص نقاط الإخفاق الموجودة وما إذا كانت مفعّلة. #96762 (Pedro Ferreira).
محركات الجداول والتخزين
- تمت إضافة دعم الفهرس النصي لأعمدة
Array. #89895 (Jimmy Aguilar Mena). - تمت إضافة دعم كتالوج REST الخاص بـ Paimon. #92011 (JIaQi Tang).
- تمت إضافة دالة جدول
icebergLocalCluster. #93323 (Anton Ivashkin). - تمت إضافة إعداد قاعدة البيانات
lazy_load_tables. عند تمكينه، لا تُحمَّل الجداول أثناء بدء تشغيل قاعدة البيانات — وبدلًا من ذلك، يُنشأStorageTableProxyخفيف الوزن، ويُنشأ محرك الجدول الفعلي ماديًا عند أول وصول. #96283 (xiaohuanlin). - تمت إضافة دعم ZooKeeper إضافي لـ
DatabaseReplicated. #91683 (RinChanNOW). - يمكن الآن تقسيم البيانات وملفات النظام في ذاكرة التخزين المؤقت إلى مقاطع منفصلة. #87834 (MikhailBurdukov).
- تمت إضافة ذاكرة تخزين مؤقت جديدة من نوع SLRU للبيانات الوصفية لـ Parquet لتحسين أداء القراءة عبر تجنب تنزيل الملفات بشكل متكرر دون داعٍ. ويمكن حذف ذاكرة التخزين المؤقت باستخدام
SYSTEM DROP PARQUET METADATA CACHE. #89750 (Grant Holly). - تدعم جداول بحيرة البيانات الآن
PREWHEREوPREWHEREمتعدد المراحل في قارئ Parquet v3. #93542 (Konstantin Vedernikov). - تمت إضافة تحليل الفهرس الموزع عبر عدة نسخ متماثلة، وهو مفيد للتخزين المشترك وأحجام البيانات الكبيرة. #86786 (Azat Khuzhin).
الإدراج وإزالة التكرار
- أصبحت إزالة تكرار
async insertتعمل الآن مع العروض المادية التابعة. عند حدوث تصادم فيblock_id، تُرشَّح الكتلة الأصلية لإزالة الصفوف المرتبطة بـblock_idالمتصادم، ثم تُمرَّر الصفوف المتبقية عبر جميع استعلامات العرض المادي ذات الصلة. #89140 (Sema Checherinda). - أصبحت عمليات
async insertsتدعم الآنparallel quorum— إذ تُنسخ البيانات المُدرجة إلىquorum، وإذا عُثر على بيانات مكررة، ينتظر الاستعلام حتى تُنسخ أيضًا البيانات المُدرجة سابقًا. #93356 (Sema Checherinda). - أُضيف إعداد على مستوى الخادم باسم
insert_deduplication_versionلتمكين الترحيل إلى قيمةhashموحَّدة لإزالة التكرار. #95409 (Sema Checherinda). - بدأ ترحيل قيم
hashesالخاصة بإزالة التكرار. #97562 (Sema Checherinda).
ميزات SQL والاستعلامات
- تمت إضافة صياغة
SYSTEM CLEAR [...] CACHEكبديل أوضح للصياغة الحاليةSYSTEM DROP [...] CACHE. وتظل الصياغة القديمة متاحة. #93727 (Pranav Tiwari). - تمت إضافة الاستعلام
OPTIMIZE <table> DRY RUN PARTS <part names>لمحاكاة عمليات الدمج دون اعتماد الجزء الناتج. وهو مفيد للتحقق من صحة الدمج، وإعادة إنتاج الأخطاء المرتبطة به، وقياس أداء عمليات الدمج. #96122 (Anton Popov). - أصبح بالإمكان الآن تنفيذ استعلامات DDL مع
ON CLUSTERلقواعد بيانات Replicated عند تمكين الإعدادignore_on_cluster_for_replicated_database. وسيتم تجاهل اسم العنقود. #92872 (Kirill). - تم تقديم صياغة وإطار عمل جديدين لتبسيط ميزة فهرس الإسقاط وتوسيعها. #91844 (Amos Bird).
الإعدادات والتهيئة
- تمت إضافة الإعداد
max_insert_block_size_bytesلإتاحة تحكم أدق في تكوين الكتل المُدخلة. #92833 (Kirill Kopnev). - تمت إضافة الإعداد
use_primary_key. اضبطه علىfalseلتعطيل استبعاد الحبيبات استنادًا إلى المفتاح الأساسي. #93319 (Nihal Z. Miaji). - تمت إضافة الإعداد
default_dictionary_database، الذي يتيح لـ ClickHouse تحديد القواميس الخارجية المُشار إليها من دون مُحدِّد لقاعدة البيانات ضمن قاعدة بيانات افتراضية محددة. وهذا يبسّط الترحيل من القواميس العامة المعرّفة عبر XML إلى القواميس المعرّفة عبر SQL لكل قاعدة بيانات. #91412 (Dmitrii Plotnikov). - تمت إضافة الإعداد
check_named_collection_dependencies(مُمكّن افتراضيًا) لمنع إسقاط المجموعات المسماة التي تستخدمها الجداول. #96181 (Pablo Marcos). - تمت إضافة مجدول عدالة max-min للتحكم في التزامن، ما يوفّر عدالة أفضل في حالات زيادة الاشتراك الشديدة، حيث تتنافس استعلامات كثيرة على عدد محدود من فتحات CPU. وأصبح إعداد الخادم
concurrent_threads_schedulerيستخدم افتراضيًا القيمةmax_min_fairبدلًا منfair_round_robin، لذلك لم تعد الاستعلامات القصيرة تتضرر بسبب الاستعلامات الطويلة. #94732 #95300 (Sergei Trifonov). - تمت إضافة خياري التهيئة
logger.startup_console_levelوlogger.shutdown_console_levelلتجاوز مستوى السجل في وحدة التحكم أثناء بدء تشغيل ClickHouse وإيقافه، على التوالي. #95919 (Garrett Thomas).
المراقبة
- تمت إضافة المقياس
ClickHouse_Infoإلى نقطة النهاية/metricsالخاصة بـ Prometheus، ويتضمن معلومات عن الإصدار، مما يتيح إنشاء مخططات تتتبّع معلومات الإصدار التفصيلية بمرور الوقت. #91125 (Christoph Wurm).
الميزات التجريبية
- يمكن الآن للبحث المتجهي توزيع الحمل على النسخ المتماثلة داخل مجموعة، مما يتيح دعم الفهارس المتجهية الكبيرة التي تتجاوز سعة ذاكرة آلة افتراضية واحدة. #95876 (Shankar Iyer).
- أُضيف AST fuzzer على مستوى الخادم، وتتحكم فيه الإعدادات
ast_fuzzer_runsوast_fuzzer_any_query. وعند تفعيله، يُشغِّل الخادم تحويرات عشوائية لكل استعلام بعد تنفيذه المعتاد، مع تجاهل النتائج. #97568 (Alexey Milovidov).
تحسينات
الاستعلامات وSQL
- أصبحت الاستعلامات الفرعية المترابطة تدعم الآن مزيدًا من محركات الجداول وأنواع مصادر البيانات. #90175 (Dmitry Novik).
- أصبحت
INغير الثابتة مدعومة الآن للقيم القياسية (scalar) (مثلval1 NOT IN if(cond, val2, val3)). #93495 (Yarik Briukhovetskyi). - أُضيف دعم للأسماء المستعارة الموسعة للجداول في عمليات
JOIN(مثلSELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b). #95331 (Yarik Briukhovetskyi). - أصبح
EXPLAIN indices = 1مدعومًا الآن كاسم مستعار لـEXPLAIN indexes = 1. #92774 (Pranav Tiwari). - تم تحسين pushdown للمرشحات في وظيفتَي الجدول
numbersوprimes— إذ يمكن لـ ClickHouse الآن اشتقاق حدود متحفظة للقيم من شروطWHEREلتقييد توليد التسلسل، ما يجنّب عمليات المسح غير المحدودة. #96115 (Nihal Z. Miaji). - أصبح تحسين المجموعات المتكافئة يعمل الآن عبر عدة عمليات
INNER JOINمتتالية، بحيث تُدفَع المرشحات المطبقة على أي جدول في السلسلة تلقائيًا إلى جميع الجداول ذات الصلة. #96596 (Vladimir Cherkasov). - تُستخدم الآن وظائف جدول cluster التلقائية للاستعلامات الفرعية المفردة في
FROM. #96332 (phulv94). - يُستخدم الآن فهرس المفتاح الأساسي عند التصفية باستخدام
startsWithUTF8إذا كانت البادئة تحتوي فقط على محارف ASCII. #97055 (vkcku). - تُمكّن
assumeNotNullوcoalesceوifNullالآن من تقليم فهرس المفتاح الأساسي وskip index لمسندات النطاق عندما تكون أعمدة المفتاح مغلّفة بهذه الدوال. #94754 (Nihal Z. Miaji). - تُزال الآن أيضًا الأعمدة غير المستخدمة من خطوة القراءة عند القراءة من MergeTree، وهو ما يفيد بشكل خاص عندما يُدفَع مرشح إلى
PREWHERE. #89982 (János Benjamin Antal). - أصبح تحسين
use_join_disjunctions_push_downمفعّلًا افتراضيًا الآن. #89313 (Alexey Milovidov). - أصبح تحسين
enable_join_runtime_filtersمفعّلًا افتراضيًا الآن. #89314 (Alexey Milovidov). - انخفضت الآن الكلفة الإضافية لمرشحات وقت التشغيل في JOIN عبر تعطيل المرشحات تلقائيًا عندما يكون عدد كبير جدًا من bits مضبوطًا في bloom filter أو عندما لا يُستبعَد سوى عدد قليل جدًا من الصفوف. #91578 (Alexander Gololobov).
- تمت إضافة الإعداد
use_hash_table_stats_for_join_reordering(مفعّل افتراضيًا) للتحكم في ما إذا كانت إحصاءات حجم hash table أثناء وقت التشغيل تُستخدم لإعادة ترتيب join. #93912 (Vladimir Cherkasov). - يُجرى الآن تحليل الفهرس مرة واحدة فقط، بغض النظر عمّا إذا كان الاستعلام يُنفَّذ محليًا أو باستخدام replicas المتوازية. #94854 (Nikita Taranov).
- إذا كان فهرس تخطٍّ في استعلام
FINALعلى عمود يشكّل جزءًا من المفتاح الأساسي، فسيُتجاوز الآن فحص تقاطع المفتاح الأساسي الإضافي في الأجزاء الأخرى. #93899 (Shankar Iyer). - أصبح
DROP DATABASEالآن يحذف الجداول بترتيب عكسي للتبعيات، مما يحسّن السلامة في حال التعطل عندما تحتوي قاعدة البيانات على جداول لها تبعيات تحميل. #97057 (Alexey Milovidov). - أصبح الانتظار المتزامن لعمليات mutation يراعي الآن إلغاء الاستعلام والمهل الزمنية. #96756 (Alexey Milovidov).
- جرى منع استعادة البيانات المحذوفة إذا نُفِّذ
ADD COLUMNبسرعة بعد عملية mutation من نوعDROP COLUMN. #96713 (Alexey Milovidov). - أصبحت تعبيرات
ALTERالمتعارضة معUPDATEوRENAME COLUMNتُطلق الآن استثناءً مناسبًا بدلًا من خطأ منطقي. #96022 (Alexey Milovidov). - أصبح يُجمَع الآن العدد الإجمالي التقديري للصفوف وإحصاءات NDV (عدد القيم المميّزة) لأعمدة مفاتيح التجميع. #92812 (Alexander Gololobov).
- يمكن الآن لجميع النسخ المتماثلة الاستيلاء على النطاقات اليتيمة أثناء قراءة النسخ المتماثلة المتوازية، مما يحسّن موازنة الحمل ويقلّل زمن الاستجابة في الطرف البعيد. #91374 (zoomxi).
- تحسّنت دقة التقدير للنسخ المتماثلة المتوازية التلقائية مع مرشحات
PREWHEREعالية الانتقائية. #97231 (Nikita Taranov). - أصبح
joinGetيدعم الآن الجداول المؤقتة. #92973 (Eduard Karacharov). - أصبحت الآن عمليات التجميع الخارجية والفرز و
joinتراعي إعداد الاستعلامtemporary_files_codecفي جميع السياقات. #92388 (Vladimir Cherkasov). - لم تعد تحسينات خطة تنفيذ بحث تشابه المتجهات تُطبَّق إلا عند وجود فهرس لعمود البحث. #94998 (Eduard Karacharov).
محركات الجداول والتخزين
- يدعم
StorageEmbeddedRocksDBالآن أعمدة متعددة كمفتاح أساسي. #33917 (usurai). - أُضيف بناء الجملة
ALTER TABLE <table> ATTACH PART <part_name> FROM <directory_name>، ما يتيح إرفاق الأجزاء من أي أدلة فرعية ضمنdetached/(مثل الأجزاء ذات البادئاتbroken-on-startأوunexpected) من دون الحاجة إلى إعادة تسمية في نظام الملفات يدويًا. #74816 (Anton Popov). - يعمل
min_free_disk_bytes_to_perform_insertالآن بشكل صحيح مع وحدات تخزين JBOD. #90878 (Aleksandr Musorin). - أصبح
max_parts_to_merge_at_onceيُراعى الآن أثناء عمليات دمج إسقاط الأجزاء الخاصة بـ TTL. #95315 (Kseniia Sumarokova). - يمكن الآن ضبط العمليات الخلفية (mutate و merge) بشكل مستقل عبر ملف تعريف
background، بدلًا من مشاركة الإعدادات مع الاستعلامات العادية عبر ملف تعريفdefault. #93905 (Arsen Muk). - جرى تحسين قراءة العمود الفرعي مع احتساب الحجم بشكل صحيح، مما يقلل استخدام الذاكرة ويحسّن السرعة. #96251 (Pavel Kruglov).
- جرى تقييد عدد تدفقات pipeline الناتجة عن
split_intersecting_parts_ranges_into_layersلتجنب الاستهلاك المفرط للذاكرة. #96478 (Nikita Taranov). - أصبح فهرس نصي الآن في مرحلة GA. #96794 (Robert Schulze).
- أصبح
QBitالآن في مرحلة GA. #95358 (Raufs Dunamalijevs). - يمكن الآن مقارنة
QBitللتحقق من التساوي. #94078 (Raufs Dunamalijevs). - عند حفظ مخطط الجدول باستخدام
enable_positional_arguments_for_projections، تُستبدل التعبيرات الآن بدلًا من الوسائط الموضعية، مما يتيح إعادة تشغيل الخادم مع تعطيل هذا الإعداد. #96372 (Alexey Milovidov). - في قواعد بيانات Replicated، لم يعد cluster المخزَّن مؤقتًا يُحدَّث مع كل استعلام شكلي. #96897 (Tuan Pham Anh).
- أُضيف الاستعلام
SYSTEM RESET DDL WORKER [ON CLUSTER]لإعادة تعيين حالة DDLWorker، وهو مفيد لتحديث نشاط replica عند تحديث معرّفات المضيف. #93780 (Tuan Pham Anh).
بحيرات البيانات
- تمت إضافة دعم متجهات الحذف في DeltaLake. #93852 (Kseniia Sumarokova).
- أصبحت متجهات الحذف مدعومة الآن أيضًا في
deltaLakeCluster. #94365 (Kseniia Sumarokova). - أصبح DeltaLake متاحًا الآن على macOS. #95985 (Alexey Milovidov).
- يستخدم DeltaLake الآن نتائج
count()من البيانات الوصفية ويعرض إحصاءات الجدول الصحيحة (إجمالي البايتات/الصفوف) فيsystem.tables. #96190 (Kseniia Sumarokova). - تم تخطي عمليات القراءة من تخزين الكائنات عند الاستعلام عن جداول DeltaLake من
system.tables. #95899 (Antonio Andelic). - تمت إضافة الأمر
SYSTEM RELOAD DELTA KERNEL TRACING <level>لتصحيح logging الخاص بـ delta-kernel. #96763 (Kseniia Sumarokova). - أصبح موقع البيانات الوصفية لجدول Iceberg يُستنتج تلقائيًا إذا لم يتم تحديد
metadata_locationفي بيانات Glue الوصفية. #91994 (Andrey Zvonov). - أصبحت إدخالات ملف manifest في Iceberg تحلل الآن الحدين الأدنى والأعلى لأسماء ملفات position delete، مما يحسن اختيار ملفات البيانات. #93980 (Daniil Ivanik).
- تم تمكين تحسين
PREWHEREلجداول Iceberg. #95476 (Konstantin Vedernikov). - أصبحت حدود سلاسل التنفيذ والذاكرة مشتركة الآن بين قارئات ملفات البيانات وملفات position delete في جداول Iceberg. #94701 (Yang Jiang).
- تمت إضافة دعم
ALTER TABLE RENAME COLUMNلجداول Iceberg. #97455 (murphy-4o). - تمت إضافة دعم Google Cloud Storage لبحيرات البيانات. #93866 (Konstantin Vedernikov).
- أصبحت رموز الوصول إلى S3 تُحدَّث ديناميكيًا الآن أثناء الاستعلامات الطويلة مع Unity Catalog. #95069 (Konstantin Vedernikov).
- تمت إضافة وصول قائم على الأدوار إلى Glue catalog عبر الإعدادين
aws_role_arnوaws_role_session_name. #90825 (Antonio Andelic).
S3Queue
- أصبح S3Queue الآن يتتبّع تقسيم Hive في الوضع ordered. #81040 (Anton Ivashkin).
- أُعيدت هيكلة معالجة الوضع ordered في S3Queue باستخدام buckets، مما قلّل عدد طلبات Keeper وحسّن الأداء. #92889 (Kseniia Sumarokova).
- أُضيف دعم أكثر عمومية للتقسيم في الوضع ordered لـ S3Queue. #94321 (Bharat Nallan).
- أُضيف التقسيم إلى buckets استنادًا إلى partition key في S3Queue في الوضع ordered. #94698 (Bharat Nallan).
- دعم ZooKeeper إضافي في S3Queue عبر الإعداد
keeper_path. #95203 (Diego Nieto). - أصبح الوضع ordered في S3(Azure)Queue الآن ينظّف العُقد الفاشلة عبر تتبّع الحدود. #94412 (Kseniia Sumarokova).
S3 وتخزين الكائنات
- لم تعد رؤوس S3
x-amz-server-side-encryptionتُمرَّر إلى طلباتHeadObjectوUploadPartوCompleteMultipartUpload. #64577 (Francisco J. Jurado Moreno). - يمكن الآن تحديد
storage_class_nameفي المجموعات المسماة لمحرك جدول S3 ودالة الجدولs3. #91926 (János Benjamin Antal). - أُصلحت مشكلة تقييد المعدل في نقطة نهاية بيانات EC2 الوصفية عند تشغيل عدد كبير من استعلامات S3 المتزامنة باستخدام بيانات اعتماد ملف تعريف المثيل — إذ أصبح موفّر بيانات الاعتماد الآن مخزّنًا مؤقتًا ومشتركًا بين جميع الاستعلامات. #92891 (Sav).
- أُضيف دعم التوافق مع MinIO إلى AWS S3 C++ SDK، مع تعيين رموز الأخطاء بما يقابل أخطاء MinIO الخاصة، مما يحسّن الاعتمادية لعناقيد MinIO المستضافة ذاتيًا. #93082 (XiaoBinMu).
- جرى تحسين رسائل أخطاء المصادقة في S3 مع تلميحات للتحقق من بيانات الاعتماد. #95648 (Gerald Latkovic).
- أصبحت Azure Blob Storage الآن ترجع إلى النسخ للقراءة والكتابة عند فشل النسخ الأصلي بسبب أي خطأ (وكان ذلك سابقًا يقتصر على Unauthorized فقط). #92888 (Smita Kulkarni).
الدوال
- تدعم
avg()الآن قيمDateوDateTimeوTimeكوسيطات. #87845 (Yarik Briukhovetskyi). - يمكن الآن لكل من
mapContainsKeyLikeوmapContainsValueLikeالاستفادة من فهرس نصي علىmapKeys()أوmapValues(). #93049 (Michael Jarrett). - تدعم
flipCoordinatesالآن النوعGeometry. #93303 (Bharat Nallan). - أُزيل حد 64 رمزًا لدالتي
hasAnyTokensوhasAllTokens. #95152 (Elmi Ahmadov). - أُضيفت
distanceCosineكاسم مستعار لـcosineDistance، بما يتسق مع دوال المسافة الأخرى. #96065 (Raufs Dunamalijevs). - أُضيفت الدالة
iifإلى ClickHouse KQL. #94790 (happyso). - أصبح
use_variant_as_common_typeمفعّلًا افتراضيًا، مما يتيح استخدام الأنواع غير المتوافقة داخلArrayواستعلاماتUNIONوفروعif/multiIf/case. #90677 (Alexey Milovidov).
الإعدادات والتكوين
- أصبح
use_skip_indexes_on_data_readمُمكّنًا افتراضيًا الآن. #93407 (Shankar Iyer). - أُضيف الإعداد
add_minmax_index_for_time_columns— وعند تفعيله، يُنشئ تلقائيًا فهارس minmax لجميع الأعمدةDateوDate32وTimeوTime64وDateTimeوDateTime64. #93355 (Michael Jarrett). - أُضيف الإعداد
materialize_statistics_on_merge(مُمكّن افتراضيًا) للتحكم في ما إذا كانت الإحصاءات تُحوَّل إلى شكل materialized أثناء عمليات الدمج. #93379 (Han Fei). - أُضيف الإعداد
input_format_binary_max_type_complexityلتقييد العدد الإجمالي لعُقد الأنواع التي يمكن فك ترميزها بتنسيق ثنائي، بما يمنع الحمولات الضارة. #92519 (Raufs Dunamalijevs). - أُضيف الإعداد
trace_profile_events_listلقصر التتبّع باستخدامtrace_profile_eventعلى أسماء أحداث محددة. #92298 (Alexey Milovidov). - أُضيف الإعداد
type_json_allow_duplicated_key_with_literal_and_nested_objectللسماح بالمسارات المكررة في JSON عندما يكون أحدها قيمة حرفية والآخر كائنًا متداخلًا، حفاظًا على التوافق مع الإصدارات السابقة للبيانات التي أُنشئت قبل فرض إزالة تكرار المسارات. #93604 (Pavel Kruglov). - أُضيف إعداد MergeTree
merge_max_dynamic_subcolumns_in_compact_partوالإعداد على مستوى querymax_dynamic_subcolumns_in_json_type_parsingلتقييد الأعمدة الفرعية الديناميكية في أعمدة JSON أثناء الدمج والتحليل. #94184 (Pavel Kruglov). - أُضيف
use_statisticsكاسم مستعار لـallow_statistics_optimize، بما يتسق معuse_primary_keyوuse_skip_indexes. #94366 (Robert Schulze). - جرى تمكين
input_format_numbers_enum_on_conversion_errorلتحويل Numbers-to-Enum بهدف التحقق من وجود العنصر. #94384 (Elmi Ahmadov). - أُضيف إعداد لطرح استثناء عندما يحتوي جدول على row policies لكن لا تنطبق أيٌّ منها على المستخدم الحالي، بما يساعد على اكتشاف أخطاء التهيئة المحتملة. #95014 (Vitaly Baranov).
- أصبح
enable_max_bytes_limit_for_min_age_to_force_mergeمُمكّنًا افتراضيًا الآن في إصدار التوافق 26.2 والإصدارات الأحدث. #95917 (Christoph Wurm). - أصبح
core_dump.size_limitالآن قابلاً لإعادة التحميل الفوري دون إعادة تشغيل الخادم. #96524 (Miсhael Stetsyuk). - أصبحت تجاوزات سطر الأوامر تُؤخذ الآن في الاعتبار عند إعادة تحميل التهيئة. #80295 (Alexey Milovidov).
- أُضيفت استراتيجية تدوير مركّبة (الحجم + الوقت) لسجلات الخادم. #87620 (Jianmei Zhang).
- يمكن الآن تمكين تحليل الفهرس الموزّع استنادًا إلى عدد الأجزاء (
distributed_index_analysis_min_parts_to_activate) وحجم الفهارس (distributed_index_analysis_min_indexes_size_to_activate). #95216 (Azat Khuzhin). - أصبحت ذاكرة التخزين المؤقت للإحصاءات مفعّلة افتراضيًا الآن، مع فترة تحديث قدرها 300 ثانية. #95841 (Han Fei).
- تُفسَّر الآن مَعلمة الإعداد
pathنسبةً إلى دليل العمل عند بدء التشغيل، مما يمنع وضع أدلة البيانات في مواقع غير مألوفة. #96305 (Alexey Milovidov).
جداول النظام والمراقبة
- تمت إضافة العمود
parts_postpone_reasonsإلىsystem.mutationsلتحسين التشخيص. #92206 (Shaohua Wang). - تمت إضافة العمود
creation(implicit/explicit) إلىsystem.data_skipping_indices. #92378 (Raúl Marín). - أصبحت المهام قيد التشغيل تنعكس الآن في
system.background_schedule_poolوفي جدول السجل المقابل. #92587 (Azat Khuzhin). - تمت إضافة المقياس
QueryNonInternalلتتبّع عدد الاستعلامات غير الداخلية الجاري تنفيذها، مما يساعد على مراقبة التوازي مقارنةً بالحدmax_concurrent_queries. #94284 (Ashwath Singh). - تمت إضافة مقياس غير متزامن لأطول زمن منقضٍ لعملية دمج قيد التشغيل. #94825 (Raúl Marín).
- تمت إضافة
connection_addressوconnection_portإلىquery_logلإظهار الاتصال الفعلي (وهو مفيد عند الاتصال عبر proxy). #95471 (Yakov Olkhovskiy). - تمت إضافة مزيد من المعلومات إلى
system.crash_log. #94112 (Miсhael Stetsyuk). - تمت إضافة اسم المكوّن إلى
system.aggregated_zookeeper_log. #95882 (Antonio Andelic). - تمت إضافة جدول
system.tokenizersالذي يعرض جميع أدوات تقسيم النص إلى رموز المتاحة. #96753 (Robert Schulze). - تمت إضافة جدول
system.jemalloc_statsونقطة نهاية HTTP /jemalloc.htmlلعرض تفاعلي لإحصاءات مُخصِّص الذاكرة jemalloc. #97077 (Antonio Andelic). - تمت إضافة جدول
system.jemalloc_profile_textلقراءة وتحليل heap profile لـ jemalloc، مع دعم تنسيقات الإخراج raw وsymbolized وcollapsed. #97218 (Antonio Andelic). - تمت إضافة
mutation_idsإلىsystem.part_logلأحداثMUTATE_PARTوMUTATE_PART_START. #93811 (Shaohua Wang). - أصبحت إعدادات الخادم العامة المتداخلة Nested (مثل
logger.level) مرئية الآن جزئيًا فيsystem.server_settings. #94001 (Hechem Selmi). - يعرض
view_duration_msالآن الوقت الذي كانت فيه المجموعة نشطة، بدلًا من مجموع مدد سلاسل التنفيذ. #94966 (Sema Checherinda). - أصبح
system.blob_storage_logمتاحًا الآن لـ Azure Blob Storage وLocal وHDFS. وتمت إضافة العمودerror_code. #93105 (Alexey Milovidov). - أصبحت المهام الخلفية الأبطأ من المتوسط تُسجَّل الآن مع عتبة قابلة للتهيئة (
background_schedule_pool_log.duration_threshold_milliseconds، والقيمة الافتراضية 30ms). #92965 (Azat Khuzhin). - لم تعد كلمات المرور من وحدة تخزين URL تظهر في سجل الاستعلامات. #93245 (Konstantin Vedernikov).
ClickHouse Keeper
- يتعامل على نحو صحيح مع الفجوات في إدخالات سجل Keeper إذا كانت السجلات تسبق آخر فهرس مُعتمَد. #90403 (Antonio Andelic).
- تمت إضافة تتبّع OpenTelemetry لطلبات Keeper. #91332 (Miсhael Stetsyuk).
- تمت إضافة metrics جديدة لـ Keeper:
KeeperChangelogWrittenBytesوKeeperChangelogFileSyncMicrosecondsوKeeperSnapshotWrittenBytesوKeeperSnapshotFileSyncMicrosecondsوKeeperBatchSizeElementsوKeeperBatchSizeBytes. #92149 (Miсhael Stetsyuk). - أصبحت امتدادات Keeper
CHECK_STATوTRY_REMOVEمفعّلة افتراضيًا. #93886 (Mikhail Artemenko). - أصبح Keeper الآن يطرح استثناءً بدلًا من التوقّف عند اكتشاف snapshot معطوبة أو changelog غير متّسق، ما يتطلّب تدخّلًا يدويًا لضمان recovery أكثر أمانًا. #94168 (Antonio Andelic).
- تمت إضافة الامتدادين
with_dataوwith_statإلى طلبات KeepergetChildren، مما يتيح جلب العناصر التابعة مع بياناتها وإحصاءاتها في عملية واحدة. #94826 (Nikolay Degterinsky). - تمت إضافة فحص لاكتشاف سوء تهيئة Keeper قد يؤدي إلى فشل في تجميع الـ cluster. #94682 (Konstantin Bogdanov).
- تمت إضافة دعم امتداد Keeper
with_dataلتحسين جلب الجداول في Database Replicated. #96090 (Nikolay Degterinsky). - أصبح الآن بالإمكان الإدراج في ZooKeeper إضافي عبر
system.zookeeper. #92092 (RinChanNOW).
إدارة الذاكرة
- جرى تحسين حجز المساحة في ذاكرة التخزين المؤقت لنظام الملفات — إذ باتت العناصر المرشحة للإخلاء تُجمَع الآن من دون الاحتفاظ بقفل حصري. #82764 (Kseniia Sumarokova).
- جرى تمكين عمليات القراءة المتوازية في مخزن القراءة المؤقت لذاكرة التخزين المؤقت لنظام الملفات لمحركات الجداول/الدوال البعيدة. #71781 (Kseniia Sumarokova).
- جرى تقليل استخدام الذاكرة على الأنظمة غير المعتمدة على Linux عبر تمكين التطهير الفوري للصفحات المتسخة في jemalloc. #93360 (Eduard Karacharov).
- بات تطهير الصفحات المتسخة في jemalloc يعمل الآن في خيط منفصل عن خيط MemoryWorker الرئيسي. وأُضيف إعداد
memory_worker_purge_total_memory_threshold_ratioلتنفيذ التطهير استنادًا إلى نسبة استخدام الذاكرة الإجمالية. #94902 (Antonio Andelic). - بات اضمحلال الصفحات المتسخة في jemalloc يُعطَّل ديناميكيًا الآن عندما يكون ClickHouse تحت ضغط مستمر على الذاكرة. #95145 (Antonio Andelic).
- أُضيف فحص صريح لاستهلاك الذاكرة قبل قراءة البيانات من MergeTree، مع تقليل أحجام قوائم الانتظار في مجموعة الخيوط استنادًا إلى الخبرة التشغيلية في بيئات production. #94692 (Nikita Mikhaylov).
- بات الحد الإجمالي للذاكرة يُفحَص الآن قبل مصادقة المستخدم، مع إطلاق
memory limit exceededإذا جرى تجاوز الحد. #95003 (Nikolai Kochetov). - جرى إصلاح احتساب الذاكرة غير الصحيح لذاكرة التخزين المؤقت لشروط الاستعلام. #95478 (Nikita Mikhaylov).
- جرى تحسين موثوقية اكتشاف استخدام ذاكرة الاستعلام عند الكتابة إلى القرص أثناء التجميع/الفرز. #92500 (Azat Khuzhin).
- بات المُجدول يمنح الآن أولوية لخيط MemoryWorker عند شح موارد CPU لحماية العملية. #94864 (Nikita Mikhaylov).
- جرى إصلاح عدم التزام ClickHouse بحدود الذاكرة في بعض الحالات عند القراءة من جدول. #93715 (Nikita Mikhaylov).
تنسيقات البيانات
- يتيح قارئ Parquet الآن قراءة الأعمدة من النوع
TupleأوMapبتنسيق JSON. #92864 (Michael Kolupaev). - يدعم قارئ Parquet الآن Tuples الفارغة. #92868 (Michael Kolupaev).
- يُسلسَل النوع
Dateالآن باعتباره النوعdate32الأصلي في Arrow ضمن تنسيقات Arrow/ArrowStream (وكان سابقًاuint16). ويمكن استعادة السلوك القديم باستخدام الإعدادoutput_format_arrow_date_as_uint16. #96860 (Alexey Milovidov). - أصبح تنسيق الإخراج
Hashالآن مستقلًا عن أحجام الـ block. #94503 (Alexey Milovidov). - لم تعد الأنواع البسيطة في تنسيق Pretty JSON تُطبع في أسطر منفصلة. #93836 (Pavel Kruglov).
- يراعي استدلال المخطط الآن
allow_experimental_nullable_tuple_type— فعند تمكينه، يمكن أن تصبح الكائنات المتداخلة المفقودةNULLبدلًا منTupleمكوّن من عناصرNULL. #95525 (Nihal Z. Miaji). - يُخرج منسّق SQL الآن
COMMENTقبلAS SELECTبدلًا من وضعSELECTبين قوسين. #96293 (Alexey Milovidov). - جرى تحسين ضغط قائمة postings باستخدام simdcomp. #92871 (Peng Jian).
النسخ الاحتياطي والاستعادة
- تمت إضافة إعداد النسخ الاحتياطي
backup_data_from_refreshable_materialized_view_targetsللتحكم في ما إذا كان سيتم نسخ بيانات العروض المادية القابلة للتحديث احتياطيًا. وتُنسخ دائمًا الجداول الهدف الخاصة بـ RMVs التي تستخدم استراتيجية التحديثAPPEND. #93658 (Julia Kartseva). - تمت إضافة دعم للمجموعات المسماة المعرّفة باستخدام SQL في
BACKUP/RESTOREلكل من S3 وAzure Blob Storage. #94605 (Pablo Marcos).
المجموعات المسماة والقواميس
- أصبح يُسمح الآن بتجاوزات معلمات المجموعات المسماة في دالة الجدول الخاصة بـ MongoDB. #89616 (vanchaklar).
- تم تفعيل المجموعات المسماة لقواميس وجداول YTsaurus. #94582 (MikhailBurdukov).
- يمكن الآن تمرير أوصاف الأعمدة إلى مصادر قواميس الجداول الديناميكية في YTsaurus. #92391 (MikhailBurdukov).
- يُعرض الآن مخطط العرض ذي المعلمات عند تحديده صراحةً. #90220 (Grigorii Sokolik).
إزالة التكرار
- أُعيدت صياغة الإعداد
insert_select_deduplicateلإضافة خيارات للتوافق مع الإصدارات السابقة. #92951 (Sema Checherinda). - أصبح السماح بإزالة التكرار مع async inserts ممكنًا الآن عند وجود materialized views. #93957 (Sema Checherinda).
تحسينات أخرى
- تم تحسين تجربة الاستخدام في
SYSTEM INSTRUMENT ADD/REMOVE: تُستخدم الآن السلاسل النصية الحرفية لأسماء الدوال، وتُطبَّق الرقع على جميع الدوال المطابقة، كما أصبحfunction_nameمدعومًا فيREMOVE. #93345 (Pablo Marcos). - تمت إضافة
SYSTEM NOTIFY FAILPOINTلنقاط الفشل القابلة للإيقاف المؤقت، وSYSTEM WAIT FAILPOINTلأوامر PAUSE/RESUME. #92368 (Shaohua Wang). - أصبحت أسماء دوال C++ في
system.trace_logوsystem.symbolsوالدالةdemangleتُعرض الآن بشكل صحيح. #93075 (Alexey Milovidov). - تُكتب الآن ملفات profile الخاصة بـ jemalloc مع الرموز، مما يلغي الحاجة إلى binary أثناء إنشاء heap profile. #93099 (Azat Khuzhin).
- تم إصلاح تعطل كان يحدث عند إرفاق table بقاعدة بيانات
MaterializedPostgreSQLإذا كانتdropReplicationSlotthrows أثناء التراجع عن تكدس الاستدعاءات. #96871 (Alexey Milovidov). - تم إصلاح احتمال ترك بقايا عند فشل
CREATE TABLE. #94174 (Azat Khuzhin). - تم إصلاح الوصول إلى ذاكرة غير مهيأة عند استخدام مفتاح TLS محمي بكلمة مرور. #94182 (Konstantin Bogdanov).
- عند انتهاء مهلة
alter table ... modify setting ...أثناء الحصول على قفل، فإنه يعيد الآن خطأ مهلة بدلًا من خطأ منطقي. #93856 (Han Fei). - تم تحسين التوافق بين Profiler الخاص بـ CPU وProfiler الوقت الفعلي عند حدوث مهلات socket. #96601 (Sergei Trifonov).
- تم تمكين التحصين السريع لـ libcxx في builds الإصدار (وخاصةً فحوصات تجاوز الحدود) من دون أي تأثير ملحوظ على الأداء. #94757 (Miсhael Stetsyuk).
تحسينات الأداء
أداء JOIN
- جرى تسريع بعض عمليات
hash joinعبر تنفيذ الإرسال الديناميكي لـColumnVector::replicate. #79573 (Raúl Marín). - أصبح الآن من الممكن دفع المزيد من عوامل التصفية إلى JOINs. #85556 (Nikita Taranov).
- جرى توسيع دفع عوامل التصفية من شروط
ONفي JOIN لعمليات الربطANYوSEMIوANTIعندما يستخدم عامل التصفية مدخلات من جانب واحد فقط. #92584 (Dmitry Novik). - يمكن الآن استخدام المجموعات المكافئة لدفع عوامل التصفية في
SEMI JOIN. #92837 (Dmitry Novik). - جرت موازاة معالجة الصفوف غير المنضمة في
ParallelHashJoinللتعبيرات الشرطية المعقدة، ويتحكم فيها الإعدادparallel_non_joined_rows_processing(مفعّل افتراضياً). #92068 (Yarik Briukhovetskyi). - يتخطى
hash joinالآن قراءة الجانب الأيسر بالكامل عندما يكون الجانب الأيمن فارغاً، ما يجنّب عملاً غير ضروري ناتجاً عن الفلترة المكثفة أو التجميع. #94062 (Alexander Gololobov). - أصبحت عوامل تصفية وقت التشغيل الخاصة بـ JOIN مدعومة الآن في عمليات
RIGHT OUTERJOIN. #96183 (Hechem Selmi). - أُجّل الآن تحسين PREWHERE إلى ما بعد تحسين عوامل تصفية وقت التشغيل الخاصة بـ JOIN، مما يتيح أيضاً دفع عوامل تصفية وقت التشغيل إلى PREWHERE. #95838 (Alexander Gololobov).
تحسين الاستعلامات
- تم تعطيل تحسين ترتيب الفرز لدوال النوافذ عندما يتطابق مفتاح التقسيم مع مفتاح الفرز أو يكون بادئة له، مما يحسّن أداء التنفيذ المتوازي. #87299 (Nikita Taranov).
- أصبحت عوامل التصفية الخارجية تُدفَع الآن إلى داخل العروض، مما يتيح تطبيق PREWHERE على كلٍّ من العقد المحلية والبعيدة. #88316 (Igor Nikonov).
- جرى تحسين الأداء واستهلاك الذاكرة في
LIMITوOFFSETالكسريَّين. #91167 (Ahmed Gouda). - لم تعد عوامل التصفية الثابتة على الأعمدة الافتراضية تُقيَّم بشكل متكرر دون داعٍ. #91588 (c-end).
- يمكن الآن استخدام أي تعبير حتمي في المفتاح الأساسي (مثل
ORDER BY cityHash64(user_id)) لتخطي البيانات. يطبّق ClickHouse هذا التعبير على ثوابت الاستعلام ويستخدم النتيجة في عمليات البحث في فهرس المفتاح الأساسي مع=وINوhas. وبالنسبة إلى التعبيرات الحقنية، فإن الصيغ المنفية (!=,NOT IN,NOT has) مدعومة أيضًا. #92952 (Nihal Z. Miaji). - أصبح تحسين read-in-order يتعرّف الآن على الحالات التي تكون فيها أعمدة
ORDER BYثابتة بسبب شروطWHERE، مما يتيح قراءات فعّالة بالترتيب العكسي. وهذا يفيد الاستعلامات متعددة المستأجرين مثلWHERE tenant='42' ORDER BY tenant, event_time DESC. #94103 (matanper). - بالنسبة إلى استعلامات
FINALالتي تستخدم شرطًا على المفتاح الأساسي يليه فهارس التخطي، أصبحت خطوةPrimaryKeyExpandتتحقق الآن فقط من نطاقات المفتاح الأساسي المُدرجة مبدئيًا في القائمة المختصرة. #94903 (Shankar Iyer). - يُطبَّق الآن تحسين lazy materialization على جميع فروع استعلام
UNION ALL، وليس على الفرع الأول فقط، مما يقلل عمليات الإدخال/الإخراج للاستعلامات التي تجمع بين عدة قراءات مرتبة ومقيّدة من جداول MergeTree مختلفة. #96832 (Federico Ginosa).
أداء الدوال وعمليات التجميع
- تشمل الترجمة الفورية JIT الآن مزيدًا من الدوال. #88770 (Alexey Milovidov).
- جرى تحسين الدالة التجميعية
distinctJSONPathsلقراءة مسارات JSON فقط من أجزاء البيانات بدلًا من عمود JSON بأكمله. #92196 (Pavel Kruglov). - جرى تحسين
uniqExactعندما تتكرر العناصر المتطابقة غالبًا على نحوٍ متتالٍ. #93268 (Alexey Milovidov). - جرى تسريع
isValidASCIIلقيم الإدخال المؤلفة بالكامل من ASCII. #93347 (Robert Schulze). - جرى تسريع
uniqللأنواع الرقمية عبر تجميع عمليات الإدراج على دفعات عند الإمكان (غير NULL، وليس-If، ومن دونGROUP BY، ومن دونIPv6أوString). #95904 (Raúl Marín).
أداء التخزين والإدخال/الإخراج
- تم إصلاح Parquet Reader V3 Prefetcher لاستخدام آلية قراءة عشوائية أسرع. #91435 (Arsen Muk).
- تم تحسين أداء
icebergCluster. #91537 (Yang Jiang). - تم تقليل استخدام الذاكرة في
INSERTوعمليات الدمج للجداول العريضة جدًا ذات Wide parts من خلال تمكين مخازن الكتابة المؤقتة التكيفية. كما أُضيف دعم مخازن الكتابة المؤقتة التكيفية للأقراص المشفرة. #92250 (Azat Khuzhin). - تم تحسين أداء البحث النصي الكامل باستخدام فهرس النص ومقسِّم
sparseGramsعبر تقليل عدد tokens التي يُبحث فيها. #93078 (Anton Popov). - تم تسريع ضغط codec T64 باستخدام الإرسال الديناميكي على x86. #95881 (Raúl Marín).
- تم تسريع فك ضغط LZ4 للـ blocks بحجم 32 بايت على x86. #96778 (Raúl Marín).
- يعمل الآن تحسين direct read لفهرس النص بشكل جزئي — إذ ستستخدم الأجزاء التي لديها فهرس نص materialized هذا الفهرس، بينما ستعود الأجزاء التي لا تملكه إلى filter expression الأصلية. #96411 (Anton Popov).
- جرى تحسين حساب minmax skip index أثناء
INSERTعبر إزالة نسخة بيانات غير ضرورية وتمكين حساب min/max المتجهي للأعمدة الرقمية. #97392 (Raúl Marín). - أُضيفت indexes ثانوية من نوع
minmaxعلى أعمدة الوقت وindexes من نوعbloom_filterعلى أعمدةquery_id/initial_query_idإلى جداول سجلات النظام لتسريع التصفية. #96712 (Alexey Milovidov). - تم تجنب تراجع استخدام الذاكرة عند
INSERTعندما لا تكون إزالة التكرار مفعّلة. #96503 (Alexey Milovidov).
تحسينات الذاكرة
- جرى تقليل البصمة الذاكرية لـ
ASTLiteralعبر إزالة الحقول غير المستخدمة عندما لا يكون التمييز البصري وتحليلVALUESمفعّلين. #93974 (Ilya Yatsishin). - أُضيف صنف AST متخصص لـ Enum يخزّن مَعلمات القيم على هيئة أزواج string/integer بدلًا من العناصر الفرعية العامة من
ASTLiteral، مما يقلل استهلاك الذاكرة. #94178 (Ilya Yatsishin). - جرى تحسين استهلاك الذاكرة لكائنات AST الخاصة بـ named tuple عبر تخزين أسماء الأعمدة مباشرة كسلاسل نصية بدلًا من عقد
ASTLiteralالعامة. #94704 (Ilya Yatsishin). - جرى تقليل حجم البنية
CachedOnDiskReadBufferFromFileبنحو 50 مرة. #96098 (Azat Khuzhin). - لم يعد
HashTable::resizeينسخ البيانات القديمة عندما يكون الجدول فارغًا. #96180 (Raúl Marín).
تحسينات داخلية
- اعتُمِد أسلوب “fastrange” (Daniel Lemire) لتقسيم البيانات داخل مسار تنفيذ الاستعلام، ما يحسّن الفرز المتوازي وعمليات JOIN. #93080 (Alexey Milovidov).
- حُسّنت عملية إزالة الافتراضية باستخدام خيارات ربط إضافية. #94737 (Nikita Taranov).
- حُسّن أداء استنساخ النسخة المتماثلة لجداول
ReplicatedMergeTreeالتي تحتوي على عدد كبير من الأجزاء، وذلك عبر تجميع طلبات ZooKeeper. #94847 (c-end). - خُفِّض استهلاك CPU لخيط الاستقبال في ZooKeeper ضمن
observeOperationsبأكثر من 20% عبر استخدام hashing أسرع وعدادات بلا أقفال. #95962 (Miсhael Stetsyuk).
إصلاحات الأخطاء
جميع إصلاحات الأخطاء (انقر للتوسيع)
جميع إصلاحات الأخطاء (انقر للتوسيع)
إصلاحات JOIN
- تم إصلاح الخطأ
INCOMPATIBLE_TYPE_OF_JOINفي تخزينJoinعند تطبيق تحسين تحويل الربط الخارجي إلى ربط داخلي. #84292 (Vladimir Cherkasov). - تم إصلاح خطأ منطقي في الاستعلامات التي تحتوي على عدة عمليات
JOINمع عبارةUSINGوjoin_use_nulls. #92251 (Vladimir Cherkasov). - تم إصلاح خطأ منطقي أثناء إعادة ترتيب عمليات
JOINمعjoin_use_nulls. #92289 (Vladimir Cherkasov). - تم إصلاح احتمال حدوث تعطل مع الإعداد
join_on_disk_max_files_to_merge. #92335 (Bharat Nallan). - تم إصلاح
LOGICAL_ERRORالناتج عن تعديل غير مرغوب فيه في خطة الاستعلام عند تحويل ربط خارجي إلى ربط داخلي. كما جرى تخفيف متطلبات التحسين ليُطبَّق عند استخدام الدوال الحقنية على مفاتيح التجميع أثناء عمليات الربط. #92503 (János Benjamin Antal). - تم إصلاح خطأ منطقي مع عدة عمليات ربط على شرط ثابت و
join_use_nulls. #92892 (Vladimir Cherkasov). - تم إصلاح حالة
NULL != NULLفيfull_sorting_joinلعمودLowCardinality(Nullable(T)). #92924 (Vladimir Cherkasov). - تم إصلاح نتائج الربط عندما كان مفتاح الربط في الجانب الأيمن عمودًا sparse. #93038 (Amos Bird).
- تم إصلاح عمل Runtime Filters بشكل غير صحيح عندما كان
LEFT ANTI JOINيحتوي على شرط لاحق إضافي. #91824 (Alexander Gololobov). - تم إصلاح خطأ منطقي عند استخدام Runtime Filters في استعلام يحتوي على totals للجدول الموجود في الجانب الأيمن. #93330 (Alexander Gololobov).
- تم إصلاح خطأ منطقي كان يحدث في بعض الحالات عند إضافة Join Runtime Filters إلى خطة الاستعلام بسبب إرجاع أعمدة const مكررة بشكل غير صحيح. #93144 (Alexander Gololobov).
- تم إصلاح دالة
__applyFilterالمستخدمة بواسطة Join Runtime Filters، والتي كانت تُرجعILLEGAL_TYPE_OF_ARGUMENTفي بعض الحالات الصحيحة. #93187 (Alexander Gololobov). - تم إصلاح عدم إضافة Runtime Filters عند إجراء الربط مع الجدول الأيمن المعبأ مسبقًا. #93211 (Alexander Gololobov).
- تم إصلاح الخطأ
NOT_FOUND_COLUMN_IN_BLOCKعند تمكين Runtime Filter وكانت الجداول المرتبطة تُرجع العمود نفسه عدة مرات. #93526 (Alexander Gololobov). - تم إصلاح عدم إضافة
FilterStepبشكل صحيح عند تطبيق Join Runtime Filter على جدول من نوعMerge. #94021 (Alexander Gololobov). - تم إصلاح تحويل النوع إلى النوع الفائق أثناء عملية الربط لتخزين
Joinمع عبارةUSING. #94000 (Dmitry Novik). - تم إصلاح الاستعلامات التي تستخدم parallel replicas و
JOINمع جدول ليس من نوع MergeTree. #93902 (Igor Nikonov). - تم إصلاح حالة تسابق لعمود JOIN من نوع Nullable في Runtime Filters. #95775 (Hechem Selmi).
- تم إصلاح تحوّل السلسلة الفارغة إلى
NULLفي جدولJoinذي المفتاحNullable(String). #96002 (Alexey Milovidov). - تم إصلاح الخطأ
NOT_SUPPORTEDعند استخدام خوارزمية JOIN من النوعdirectمع جدول MergeTree فارغ. #95935 (Vladimir Cherkasov). - تم إصلاح النتائج غير الصحيحة في الاستعلامات التي تتضمن عمليات OUTER JOIN مع عدة عمليات INNER JOIN، وكان السبب إعادة ترتيب غير قانونية لعمليات JOIN عندما كان الشرط
ONالخاص بـ OUTER JOIN يشير إلى أعمدة من عدة جداول سبق ضمها. #96193 (Vladimir Cherkasov). - تم إصلاح استثناء Runtime Filter لأعمدة Tuple ذات الحقول الفرعية Nullable. #96509 (Alexey Milovidov).
- تم إصلاح مشكلة كانت تؤدي إلى إرجاع نتائج غير صحيحة في الاستعلامات التي تحتوي على CROSS JOINs مع تفعيل parallel replicas. #96848 (Igor Nikonov).
- تم إصلاح
arrayJoinالذي كان يُنتج صفوفًا مكررة عند استخدامه مع INNER JOIN وWHERE clause، بسبب push-down جزئي وغير صحيح لـ predicate أدى إلى دفع المرشحات التي تحتوي علىarrayJoinإلى ما دون JOIN. #96989 (Alexey Milovidov). - تم إصلاح
LOGICAL_ERRORعندما كانarrayJoinفيWHEREclause يشير إلى أعمدة من جانبي JOIN. #97239 (Alexey Milovidov). - تم إصلاح خطأ منطقي محتمل عند استخدام matcher (
*) داخل lambda function ضمن clause من نوع VALUES في JOIN مع USING. #95661 (Vladimir Cherkasov). - تم إصلاح خطأ منطقي محتمل مع matcher (
*,table.*) وanalyzer_compatibility_join_using_top_level_identifierعندما كان عمودUSINGيحتوي على types مختلفة. #95808 (Vladimir Cherkasov). - تم إصلاح خطأ منطقي متعلق بـ
analyzer_compatibility_join_using_top_level_identifierوأعمدة ALIAS. #97297 (Vladimir Cherkasov). - تم إصلاح تعطل في analyzer القديم عند استخدام JOIN مع aliases مكررة. #96405 (Ilya Golshtein).
إصلاحات الاستعلام والمحلِّل
- تم إصلاح خطأ كانت فيه معالجات predefined query تفسّر المسافات البيضاء اللاحقة على أنها بيانات أثناء عمليات insert. #83604 (Fabian Ponce).
- تم إصلاح مشكلة في aggregation مع projection كانت تؤدي إلى ظهور استثناء بعد عمليات ALTER التي تقتصر على metadata فقط، مثل توسيع عناصر Enum. #84143 (Alexey Milovidov).
- تم إصلاح تطبيق
count_distinct_optimizationعلى window functions وعبر عدة arguments. #92376 (Raúl Marín). - تم إصلاح formatting غير المتسق لـ AST في
arrayElementمع literal منفي. #92293 (Pavel Kruglov). - تم إصلاح
NOT INمع arguments من نوع Array غير ثابتة كانت تُرجع قيماً غير صحيحة. #93314 (Yarik Briukhovetskyi). - تم إصلاح خطأ في المقارنة null-safe المتعلق بالنوع
Nothing. #91884 (Yarik Briukhovetskyi). - تم إصلاح الخطأ
Not found columnفي التحسينuse_top_k_dynamic_filtering. #93316 (Nikolai Kochetov). - تم إصلاح إزالة columns غير المستخدمة من subqueries عند وجود subquery scalar مترابط. #93273 (Dmitry Novik).
- تم إصلاح عدم عمل
optimize_inverse_dictionary_lookupمع distributed queries عندما كان المفتاح من نوع عددي صحيح موقّع. #93848 (Nihal Z. Miaji). - تم إصلاح عدم عمل
lag/leadمع استعلاماتremote()الموزعة. #93858 (Nihal Z. Miaji). - تم إصلاح خطأ في منطق skipping البيانات عند استخدام
not match(...)فيWHERE، ما كان يؤدي إلى نتائج غير صحيحة. #92726 (Nihal Z. Miaji). - تم إصلاح خطأ في منطق skipping البيانات عند استخدام
not materialize(...)أوnot CAST(...)فيWHERE، ما كان يؤدي إلى نتائج غير صحيحة. #93017 (Nihal Z. Miaji). - تم إصلاح logical error أثناء index analysis عند استخدام Array فارغة في الدالة
has. #92995 (Nihal Z. Miaji). - تم إصلاح logical error في حالة نادرة عند استخدام Tuple فارغ مع عمود
Map. #93814 (Nihal Z. Miaji). - تم إصلاح فشل queries التي تستخدم PK sharding مع condition قيمتها false. #92815 (Yarik Briukhovetskyi).
- تم إصلاح تخطيط query في table engine
Mergeالذي كان يُطلقILLEGAL_COLUMNمعhostName()عند merging جداول محلية مع جداول remote/Distributed. #93286 (Jinlin). - تم إصلاح الخطأ
NO_SUCH_COLUMN_IN_TABLEفي engine Mergeفوق الجداول التي تحتوي على aliases. #92910 (Pavel Kruglov). - تم إصلاح استعلام
SELECTالذي يتضمن predicate على عدة أعمدة باستخدام skip indexes من نوع bloom filter، مع شرطيORوNOTمعًا، بعد أن كان يعيد نتائج غير متسقة. #94026 (Shankar Iyer). - تم إصلاح تطبيق projections عندما كان filter يحتوي على subcolumns. #93141 (Pavel Kruglov).
- تم إصلاح تلف
_part_offsetعند إعادة بناء projections أثناء merges، كما جرى تحسين معالجة projections عبر تجنب reads غير الضرورية. #93827 (Amos Bird). - جرى منع collapse لأعمدة interpolated مختلفة إلى العمود نفسه داخل block عندما كانت فعليًا aliases للعمود نفسه. #93197 (Yakov Olkhovskiy).
- أُزيلت الأعمدة غير المستخدمة عند إعادة بناء projection أثناء merge، مما خفّض memory usage وأنشأ عددًا أقل من parts المؤقتة. #93233 (Nikolai Kochetov).
- تم إصلاح logical error في بعض الحالات عند استخدام
LIMIT/OFFSETبقيم سالبة في distributed queries. #95357 (Nihal Z. Miaji). - تم إصلاح logical error في بعض الحالات عند استخدام
LIMIT/OFFSETبقيم كسرية في distributed queries. #96475 (Nihal Z. Miaji). - تم إصلاح الدالة
INالتي كانت تعيد نتائج غير صحيحة مع قيمNULLعندما كانtransform_null_inenabled. #95674 (Nihal Z. Miaji). - تم إصلاح فشل
IN (col)عند استخدام مرجع column واحد مع الخطأUNSUPPORTED_METHOD. #97646 (Alexey Milovidov). - تم إصلاح إعادة كتابة
optimize_syntax_fuse_functionsللدوالsum/count/avgإلىsumCount()عندما كان argument التجميعي من النوعLowCardinality(Nullable). #96239 (Nihal Z. Miaji). - تم إصلاح partition pruning غير الصحيح للدالتين
not INوnot has. #96241 (Nihal Z. Miaji). - تم إصلاح خطأ filter في
prewhereناتج عن lambda expressions داخلprewhere. #95395 (Xiaozhe Yu). - تم إصلاح
LOGICAL_ERRORفي query analyzer عند تمرير lambda expression في موضع كان يتوقع قيمة صريحة. #96892 (Alexey Milovidov). - تم إصلاح dereference لمؤشر فارغ في بعض expressions التي تتضمن lambda functions. #96479 (Alexey Milovidov).
- تم إصلاح عدم تطبيق
SETTINGSالخاصة بكل subquery على Table functions مثلfileفي CTEs وsubqueries. #96882 (Alexey Milovidov). - تم إصلاح تصادم hash في query condition cache للثوابت المطوية في CTE، وهو ما كان قد يؤدي إلى نتائج query خاطئة. #96172 (Alexey Milovidov).
- تم إصلاح خطأ
BAD_ARGUMENTSعند الاستعلام عن الجداول التي تحتوي على تعبيرات lambda داخل أعمدة ALIAS عبر table function merge()مع تمكين المحلّل. #97551 (Alexey Milovidov). - تم إصلاح مشكلة تجاهل
EXCEPT ALLوINTERSECT ALLلتكرارات الصفوف وتعاملِهما كما لو أنهما النظيرانDISTINCTلهما. #96876 (Alexey Milovidov). - تم إصلاح فشل assertion في
WindowTransformعند استخدام إزاحةPRECEDINGكبيرة. #96026 (Alexey Milovidov). - تم إصلاح استثناء عند استخدام window functions مع
group_by_use_nulls = 1وCUBE/ROLLUP/GROUPING SETS. #96878 (Alexey Milovidov). - تم إصلاح التفاعل بين
GROUPING SETSوgroup_by_use_nullsوTupleمعLowCardinality، والذي كان ينتج بنية block غير متوقعة. #96358 (Alexey Milovidov). - تم إصلاح خطأ منطقي أثناء
GROUP BY ... WITH ROLLUP/CUBEعندما كانت المفاتيح تتضمنLowCardinality(Nullable(...))داخلNullable(Tuple(...)). #97647 (Alexey Milovidov). - تم إصلاح فشل assertion في
IfTransformStringsToEnumPassعندما كانتifأوtransformتُرجعNullable(String). #97002 (Alexey Milovidov). - تم إصلاح
ACCESS_DENIEDللمستخدمين الذين لا يملكون إذنCREATE TEMPORARY TABLEعندما أعادتoptimize_inverse_dictionary_lookupكتابة الشروط الخاصة بـdictGet(...). #97484 (Nihal Z. Miaji). - تم إصلاح عدم تطابق الأنواع في الدالة
ifبينUInt64وInt32في حالة غير معتادة من الاستعلامات الموزعة مع PREWHERE وtype inference. #96012 (Alexey Milovidov). - تم إصلاح queries المترجمة بواسطة JIT التي تتضمن أنواع
Bool. #96013 (Alexey Milovidov). - تم إصلاح النتائج غير الصحيحة عندما كانت التعبيرات المترجمة بواسطة JIT تحوّل
DateTimeإلىDateTime64(على سبيل المثال فيCASE/if/multiIfمع أنواع DateTime مختلطة). #96879 (Alexey Milovidov). - تم إصلاح استخدام قيمة غير مهيأة في
formatDateTimeمع محددات تنسيق غير ثابتة العرض. #96133 (Alexey Milovidov). - تم إصلاح
std::terminateفيindexOfAssumeSortedعند استدعائه بأنواع غير متوافقة. #96877 (Alexey Milovidov). - أصبحت دوال Geometry تقبل الآن الأنواع الفرعية الهندسية الفردية بالإضافة إلى النوع Variant
Geometry. #97571 (Alexey Milovidov). - تم إصلاح حالات كانت تؤثر فيها الفهارس في نتائج الاستعلامات التي تتضمن سياسة الصفوف/PREWHERE وFINAL. #97076 (Yarik Briukhovetskyi).
- أصبح بإمكان تحسين read-in-order استخدام سياسات الصفوف. #97538 (Janos Benjamin Antal).
- تم إصلاح
LOGICAL_ERRORعند استخدام الأعمدة المفهرسة نصيًا مع عبارةQUALIFY. #97313 (Alexey Milovidov). - تم إصلاح تعطل محتمل عندما كانت عبارة
WHEREتحتوي على أكثر من 32 تعبيرًا معAND/OR. #97698 (Shankar Iyer). - تم إصلاح عدم تطابق بنية الكتلة في تحسين
removeUnusedColumnsعند استخدامindexHintمع توسيع النجمة على الجداول التي تستخدمFINAL. #97622 (Alexey Milovidov). - تم إصلاح عدم الاتساق في تنسيق AST بعد التحويل ذهابًا وإيابًا لقيم Tuple الحرفية ذات الأسماء المستعارة داخل الأقواس. #97418 (Alexey Milovidov).
- تم إصلاح عدم الاتساق في تنسيق AST للتعبير
NOT (1, 1, 1). #97653 (Alexey Milovidov).
إصلاحات MergeTree والتخزين
- استُبدلت أسماء الملفات دائمًا بقيم تجزئة في MergeTree إذا كان نظام الملفات غير حساس لحالة الأحرف. وكان ذلك قد يؤدي سابقًا على macOS إلى تلف البيانات عندما تختلف أسماء الأعمدة/الأعمدة الفرعية في حالة الأحرف فقط. #86559 (Pavel Kruglov).
- تستخدم العروض المادية الآن قاعدة البيانات التي أُنشئت فيها كسياق تنفيذ، مما يتيح حذف تحديد قاعدة البيانات صراحةً من استعلام select الخاص بالعرض. #88193 (Dmitry Kovalev).
- أُضيف فحص كامل للأذونات في مرحلة الإنشاء للاستعلام الأساسي داخل عرض مادي. #89180 (pufit).
- أُصلح خطأ منطقي عند قيام mutation بدون transaction بتعديل أجزاء ضمن transaction نشطة جرى التراجع عنها. #90469 (Shaohua Wang).
- أُصلح عدم تحديث
system.warningsبشكل صحيح بعد تحويل قاعدة بيانات عادية إلى قاعدة بيانات atomic. #90473 (sdk2). - أُصلح الخطأ
LOGICAL_ERROR: Storage does not support transactionأثناءATTACH AS REPLICATED. #91772 (Shaohua Wang). - أُصلح الخطأ المحتمل
FILE_DOESNT_EXISTبعد mutation لعمود sparse معratio_of_defaults_for_sparse_serialization=0.0. #92860 (Pavel Kruglov). - أُصلح الخطأ المحتمل
FILE_DOESNT_EXISTبعد mutation لعمود sparse عند تغييرratio_of_defaults_for_sparse_serializationإلى1.0عبر alter. #93016 (Pavel Kruglov). - أُصلح الاستخدام المحتمل لأجزاء outdated بسبب سباق TOCTOU في الأجزاء المشتركة. #93022 (Azat Khuzhin).
- جرى توريث إعدادات معلومات تسلسل الجزء المصدر أثناء mutation في MergeTree، مما أصلح احتمال ظهور نتائج استعلام غير صحيحة على الأجزاء المعدّلة بعد تغييرات تسلسل نوع البيانات. #92419 (Pavel Kruglov).
- أُصلح تعارض محتمل بين عمود وعمود فرعي يحملان الاسم نفسه، كان يؤدي إلى تسلسل غير صحيح وفشل الاستعلامات. #92453 (Pavel Kruglov).
- أُصلح الخطأ
NOT_FOUND_COLUMN_IN_BLOCKأثناء insert في جدول يحتوي على عمود فرعي ضمن partition expression. #92905 (Pavel Kruglov). - أُصلح احتمال فقدان عمود فرعي في MV أثناء alter للجدول المصدر. #93276 (Pavel Kruglov).
- أُصلح الخطأ
LOGICAL_ERRORعند استعادةReplicatedMergeTreeمع سباق في إزالة التكرار. #93612 (Pablo Marcos). - أُصلح استخدام عمود sparse لتحديث TTL أثناء فك التسلسل المباشر، مما يمنع الخطأ
Unexpected type of result TTL column. #93619 (Pavel Kruglov). - جرت استعادة مغلّفات
LowCardinalityلنتائج تعبيرات SET عند الحاجة أثناء تجميع TTL. #92971 (Seva Potapov). - أُصلح الخطأ
Cannot add action to empty ExpressionActionsChainفيALTER TABLE REWRITE PARTS. #92754 (Azat Khuzhin). - تم إصلاح substitution لمعاملات query في أساليب authentication الخاصة بـ
CREATE USERعند استخدامON CLUSTER. #92777 (xiaohuanlin). - لم تعد تُجرى محاولة حذف الأدلة المؤقتة عند بدء التشغيل إذا كان جدول MergeTree موجودًا على قرص read-only. #92748 (Alexey Milovidov).
- تم إصلاح materialization لـ skip indexes المُنشأة فوق subcolumns. #93708 (Anton Popov).
- تم إصلاح
CLEAR COLUMNمع الفهارس التابعة. #94057 (Raúl Marín). - تم إصلاح Attach لقواعد بيانات Replicated عندما يتغير المضيف بين الخوادم بعد إعادة التشغيل. #93779 (Tuan Pham Anh).
- تم إصلاح logical error في
CREATE TABLE ... AS urlCluster()ومع محرك database Replicated. #92418 (Kseniia Sumarokova). - تم إصلاح race condition بين
REPLACE PARTITIONوmutations الخلفية، والتي كان يمكن أن تؤدي إلى ظهور البيانات القديمة والجديدة معًا. #96955 (Alexey Milovidov). - تم إصلاح race condition المتبقية بين
REPLACE PARTITIONوmutations الخلفية، والتي كان يمكن أن تتسبب في ظهور البيانات القديمة مجددًا. #97105 (Alexey Milovidov). - تم إصلاح mutations العالقة عندما أعاد
PartCheckThreadإدراجGET_PARTفي queue لجزء mutated بالفعل. #97162 (Alexey Milovidov). - تم إصلاح فشل
ALTER TABLE DROP COLUMNبعد تنفيذ lightweight update سابقًا على العمود نفسه. #96861 (Anton Popov). - تم إصلاح إلغاء مرجع مؤشر null عند تطبيق patch parts أثناء lightweight updates. #97583 (Alexey Milovidov).
- لم تعد parts ذات projections غير المعروفة تُعلَّم على أنها مفقودة إلى الأبد. #95952 (Mikhail Artemenko).
- تم إصلاح تجاهل
CREATE TABLE ... CLONE AS ...للمُعرِّف الكامل لـ source table. #96415 (Hasyimi Bahrudin). - تم إصلاح إعادة توليد الفهارس الضمنية في replicated tables أثناء تغييرات metadata. #96600 (Raúl Marín).
- تم إصلاح الفهارس الضمنية مع أعمدة alias، وأُضيف تحقق كامل قبل إنشائها. #97115 (Raúl Marín).
- تم إصلاح إعادة
min(timestamp)لقيمة epoch (1970-01-01) عبر_minmax_count_projectionبعد دمج TTL عندما كانت جميع الصفوف قد استُبعدت بواسطة filter. #96703 (Raquel Barbadillo). - تم إصلاح المشكلة التي كان فيها الجمع بين
use_const_adaptive_granularityوindex_granularity_bytes(granularity غير adaptive) يؤدي إلى خطأ في الحساب. #96143 (Alexey Milovidov). - تم إصلاح الاستثناء
Number of rows in lazy chunk does not match number of offsetsعند القراءة من الجداول ذات دقة فهرس غير تكيفية باستخدامORDER BY ... LIMIT. #97270 (Alexey Milovidov). - تم إصلاح تراجع في zero-copy replication حيث كان يمكن حذف الأجزاء المشتركة قبل أن تنتهي النسخ المتماثلة الأخرى من جلبها. #95597 (filimonov).
- تم إصلاح فقدان
SYSTEM RESTART REPLICAللجدول من قاعدة البيانات عند فشل إعادة إنشاء الجدول بسبب استثناء لا يتعلق بـ ZooKeeper، مما يؤدي إلى عدم تطابق بصمة البيانات الوصفية فيDatabaseReplicated. #97276 (Alexey Milovidov). - تم إصلاح استثناء
assert_castعند إنشاء إحصاءات الأعمدة بعد أن غيّرALTER TABLE MODIFY COLUMNنوع العمود. #97027 (Alexey Milovidov). - عندما لا تكون هناك أي إحصاءات معرّفة للجدول، لم يعد ClickHouse يحاول تحميلها، ما يتجنب عبئًا إضافيًا غير ضروري. #96233 (Han Fei).
- تم إصلاح الخطأ المنطقي
There was an error: Cannot obtain error messageعند انتظار distributed DDL وحذف قاعدة بيانات Replicated بالتزامن. #95664 (Alexander Tokmakov). - تم إصلاح خطأ منطقي في
KeyConditionعندما كان للجدول مفتاح أساسي يقبل NULL وكان الاستعلام يستخدمcoalesceمع وسيط أول ثابت. #96340 (Alexey Milovidov).
إصلاحات أنواع البيانات والتسلسل
- تم إصلاح خطأ محتمل أثناء قراءة العمود الفرعي size من نوعَي Dynamic/JSON. #95573 (Pavel Kruglov).
- تم إصلاح تعطل عند تطبيق
tupleElementعلى Arrays من JSON. #95647 (Pavel Kruglov). - تم إصلاح تنفيذ
tupleElementعلى JSON مع paths متداخلة، والذي كان يعيد نتائج غير صحيحة. #95907 (Pavel Kruglov). - تم إصلاح
tupleElementالذي كان يطلق استثناءً مع JSON للمسارات التي تحتوي على type hints. #97728 (Pavel Kruglov). - تم إصلاح skipping paths في نوع البيانات JSON — سابقًا، كان
JSON(SKIP path)يتخطّى جميع المفاتيح التي تبدأ بالبادئةpath(حتى المفاتيح مثلpathpath)، ما قد يؤدي إلى فقدان البيانات. الآن، لم يعد يتم تخطي سوى المفتاح المطابق تمامًا. #95948 (Pavel Kruglov). - تم إصلاح تطبيق
type_json_allow_duplicated_key_with_literal_and_nested_objectعلى المسارات محددة النوع في JSON. #97422 (Pavel Kruglov). - تم إصلاح التحقق من توافق المسارات محددة النوع في نوع JSON. #92539 (Pavel Kruglov).
- تم إصلاح إنشاء type hint للمسار ‘skip’ في JSON. #92842 (Pavel Kruglov).
- تم إصلاح resolution للأعمدة الفرعية الديناميكية في aliases الأعمدة داخل analyzer. #92583 (Pavel Kruglov).
- تم إصلاح الخطأ
Nested columns sizes are inconsistent with local_discriminatorsالناتج عن تحسين خاطئ للتصفية الموضعية لأعمدة Variant. #96410 (Alexey Milovidov). - تم إصلاح تعطل في
ifNullعند استخدام argument من نوعVariantفيGROUP BY. #96790 (Alexey Milovidov). - تم إصلاح logical error في
FunctionVariantAdaptorمع الدوال التي تتطلب arguments ثابتة مثلarrayROCAUC. #97116 (Bharat Nallan). - تم إصلاح
LOGICAL_ERRORفيFunctionVariantAdaptorعندما كانت الدالة تعيد النوعNothing. #97213 (Alexey Milovidov). - تم إصلاح استثناء منطقي عند مقارنة NULL بعمود Variant يحتوي على أنواع LowCardinality. #97379 (Alexey Milovidov).
- تم إصلاح
LOGICAL_ERRORفيconcatعندما كانت إحدى الوسائط تحتوي على نوعVariantيتضمنLowCardinality. #97654 (Alexey Milovidov). - تم إصلاح النتائج غير الصحيحة عند تحويل أعمدة
LowCardinalityإلىNullable. #96483 (Nihal Z. Miaji). - جرت معالجة أنواع
LowCardinality Nullableبشكل صحيح فيCASTعندما كانcast_keep_nullableمفعّلًا. #95747 (Alexey Milovidov). - تم إصلاح الاستثناء
ColumnNullable is not compatible with originalعند تحويل الأنواع المتداخلة المعقدة. #96924 (Alexey Milovidov). - تم إصلاح
LOGICAL_ERRORعند استخدامisNull/isNotNullعلى الأعمدة الفرعية لأنواعNullable(Tuple(... Nullable(T) ...)). #97582 (Alexey Milovidov). - تم إصلاح
LOGICAL_ERRORفي التحويل من Array إلىQBit. #97413 (Alexey Milovidov). - تم إصلاح
LOGICAL_ERRORعند قراءة عمود متناثر وعموده الفرعي معًا. #97515 (Pavel Kruglov). - تم إصلاح
LOGICAL_ERRORعند قراءة العمود الفرعي.sizeمنNullable(String)متناثر داخل Tuple مع PREWHERE. #97264 (Alexey Milovidov). - تم إصلاح فشل التحقق في
SetوMergeTreeIndexSetعند معالجة الأعمدة التي تحتوي على أعمدة فرعية داخلية متناثرة. #97493 (Alexey Milovidov). - تم إصلاح الخطأ المحتمل
SIZES_OF_COLUMNS_DOESNT_MATCHأثناء فرز عمود Tuple فارغ. #92520 (Pavel Kruglov). - تم إصلاح أخطاء فك ترميز
DELTA_BYTE_ARRAYفي قارئ Parquet الأصلي التي كانت تؤثر على بيانات السلاسل النصية عالية التكرار. #91929 (Daniel Muino). - تم إصلاح فشل التحقق عند القراءة من Parquet file عندما كان جزء من تعبير PREWHERE مستخدمًا في موضع آخر من الاستعلام. #90635 (Max Kainov).
- تم إصلاح
LOGICAL_ERRORفي قارئ Parquet V3 الأصلي عندما كان عمود filter الخاص بـ PREWHERE يحتوي على قيم UInt8 غير Boolean. #96594 (Alexey Milovidov). - تم إصلاح استدلال المخطط في القارئ القديم عندما كان JSON column يأتي بعد عمود Tuple. #92867 (Michael Kolupaev).
- تم إصلاح تخزين المخطط مؤقتًا لجميع الملفات بدلًا من الملف المُستدل عليه فقط أثناء استدلال المخطط باستخدام glob. #92006 (Pavel Kruglov).
- تم إصلاح قراءة التنسيق
ProtobufListمن الملفات الفارغة ومنع إنتاج سجلات وهمية للجداول الفارغة. #96007 (Alexey Milovidov). - تم إصلاح التراجع المتعلق بـ
Gorillacodec عندما لم يكن الحجم المحدد صراحةً متوافقًا مع حجم نوع البيانات. #96118 (Alexey Milovidov). - أصبح بإمكان PostgreSQL engine الآن قراءة
BOOLEAN[]بشكل صحيح. #96006 (Alexey Milovidov). - تم إصلاح خطأ منطقي عند قراءة UUID column من عمود SQLite TEXT. #96016 (Alexey Milovidov).
- تم إصلاح تحويل الأنواع في SQLite engine لكل من
DateTimeوDateوUUIDوأنواع أخرى. #96017 (Alexey Milovidov). - تم إصلاح التعامل غير الصحيح مع محارف الهروب في قيم
FixedStringضمن الاستعلامات الموجَّهة إلى SQLite وPostgreSQL. #96019 (Alexey Milovidov). - تمت إضافة الإعداد
input_format_numbers_enum_on_conversion_errorللتحويل من الأعداد إلى قيم enum. #56240 (Nikolay Degterinsky).
إصلاحات فهرس النص وفهرس التخطي
- تم تعطيل إنشاء فهارس النص وتجسيدها مؤقتًا على الجداول التي تحتوي على أجزاء تتجاوز 4,294,967,295 صفًا، وذلك لمنع ظهور نتائج استعلام غير صحيحة. #92644 (Anton Popov).
- تم إصلاح عدة حالات تعطل أثناء عمليات دمج فهارس النص في جداول MergeTree. #92925 (Anton Popov).
- تم إصلاح عمليات دمج فهارس النص المبنية على تعبيرات معقدة (مثل
concat(col1, col2)). #93073 (Anton Popov). - تم إصلاح تحليل الفهرس لفهارس النص على أعمدة المصفوفات عندما لا يحتوي الفهرس على أي رموز. #93457 (Anton Popov).
- تم إصلاح إعادة بناء فهارس النص المُنشأة فوق الأعمدة الفرعية. #93326 (Anton Popov).
- تم إصلاح القراءة المباشرة من فهرس النص عند وجود استعلامات بحث مكررة. #93516 (Anton Popov).
- تم إصلاح حالات عدم الاتساق في تحليل فهرس النص للدوال
hasوmapContainsKeyوmapContainsValue، والتي كان يمكن أن تُرجع نتائج مختلفة بحسب استخدام فهرس النص من عدمه. #93578 (Anton Popov). - تم إصلاح حساب الأحجام غير المضغوطة لفهارس النص في
system.parts. #92832 (Anton Popov). - تم إصلاح فهارس
ngrambf_v1ذات طول ngram > 8 التي كانت تؤدي إلى إطلاق استثناء. #92672 (Robert Schulze). - تم إصلاح فهرس
ngram_bfعلى البيانات غير UTF-8، والذي كان يؤدي إلى قراءة ذاكرة غير مهيأة. #93663 (Alexey Milovidov). - تم إصلاح مشكلة
stack-use-after-scopeفي فهرس تشابه المتجهات. #96259 (Alexey Milovidov). - تم إصلاح خطأ منطقي عندما كان تعبير فهرس التخطي يُنتج عمودًا ثابتًا. #96880 (Alexey Milovidov).
- تم إصلاح مشكلة كان فيها إنشاء جدول بتعبير فارغ
()كفهرس يؤدي إلى وصول غير صالح إلى الذاكرة. #96363 (Alexey Milovidov). - تم إصلاح مشكلة use-after-free في تحليل الفهرس عند تعطيل
use_primary_keyووجود عدد كبير جدًا من حالات الفصل المنطقي. #96112 (Alexey Milovidov). - تم إصلاح استخدام الفهرس الأساسي في التحديثات خفيفة الوزن مع الاستعلامات الفرعية لعبارة
INداخلWHERE. #92838 (Anton Popov). - استُخدم رمز الخطأ الصحيح عند التحقق من hypothesis index. #92559 (Raúl Marín).
إصلاحات مستودع البيانات
- أُصلِح تعطل مفاجئ في عنقود أحادي العقدة عند القراءة من Iceberg في وضع split-by-buckets. #91553 (Konstantin Vedernikov).
- أُصلِح
tupleفي ORDER BY في Iceberg. #93225 (Konstantin Vedernikov). - أُصلِح دعم بيانات الاعتماد المُورَّدة في Azure ADLS Gen2 ضمن DataLakeCatalog — وتحليل المفاتيح
adls.sas-token.*من REST catalogs الخاصة بـ Iceberg وإصلاح parsing لعناوين URL الخاصة بـ ABFSS. #93477 (Karun Anantharaman). - استُبدِل
DateبـDate32في Iceberg. #95322 (Konstantin Vedernikov). - أُصلِح تعطل مفاجئ عند استخدام ORDER BY في Iceberg. #96484 (Konstantin Vedernikov).
- أُصلِح partitioning في Iceberg. #96620 (Konstantin Vedernikov).
- أُصلِحت الحدود غير الصحيحة لملفات البيانات عندما كان مرجع الحذف الموضعي NULL في إدخالات manifest الخاصة بـ Iceberg. #96061 (Daniil Ivanik).
- أُضيفت عمليات تحقق إضافية لإعداد ملف بيانات التعريف الجذري في Iceberg. #96754 (Daniil Ivanik).
- لم تعد بيانات الاعتماد تُسجَّل في catalogs الخاصة بـ Iceberg. #96831 (Konstantin Vedernikov).
- أُصلِح squashing لبيانات Delta Lake المُقسَّمة إلى partitions. #95773 (Kseniia Sumarokova).
- أُصلِح catalog بحيرة البيانات بنمط REST عند وجود
auth_headerغير صالح كان يتسبب في تعطيلsystem.tables. #96680 (Han Fei).
إصلاحات S3/Azure/تخزين الكائنات
- تم إصلاح التخزين المؤقت لمفتاح التقسيم في محرك جدول S3 عند وجود دوال غير حتمية. #92844 (Miсhael Stetsyuk).
- تم إصلاح مشكلة assert في
ReadBufferFromS3التي كانت تحدث عند تفعيل التخزين المؤقت. #93809 (Kseniia Sumarokova). - تم إصلاح خطأ محتمل في خيط تنظيف DiskObjectStorage. #87411 (Kseniia Sumarokova).
- تم إصلاح حالات توقف متبادل محتملة في
DiskObjectStorageTransaction. #93810 (Kseniia Sumarokova). - تم إصلاح حالات فشل محتملة في خيط تنظيف DiskObjectStorage عند وقوع العديد من الأخطاء. #94048 (Kseniia Sumarokova).
- تم إصلاح تسابق بيانات في
copyS3Fileلـ multipart_tags. #97227 (Azat Khuzhin). - لم يعد تشغيل mutation غير صالحة من نوع
ALTER UPDATEعلى الجداول الشبيهة بالملفات في تخزين الكائنات (S3 وAzure) يتسبب في إلغاء مرجعية nullptr. #96162 (Alexey Milovidov).
إصلاحات S3Queue
- تم إصلاح الخطأ
Failed to set file processing within 100 retriesفي الوضع المرتّب لـ S3Queue (وأصبح الآن تحذيرًا بدلًا من أن يكون خطأً). #92814 (Kseniia Sumarokova). - تم إصلاح خلل في إعداد S3Queue
s3queue_migrate_old_metadata_to_buckets. #93232 (Kseniia Sumarokova). - تم إصلاح البيانات الوصفية لمحركات S3Queue/AzureQueue. #90498 (Kseniia Sumarokova).
- تم إصلاح حالة تسابق على البيانات في تخزين S3Queue/AzureQueue. #95385 (Kseniia Sumarokova).
- تم إصلاح إزالة التكرار عند التدفق من محرك S3Queue/AzureQueue. #95467 (Kseniia Sumarokova).
إصلاحات الأمان والتحكم في الوصول
- تم إصلاح غياب التحقق من صلاحية الوصول في
SYSTEM SYNC FILE CACHE. #92372 (Kseniia Sumarokova). - تم إصلاح منطق غير صحيح في التحقق من grants الوصول ذات أحرف البدل، وكان أكثر تقييدًا من اللازم. #92725 (pufit).
- مُنع المستخدمون من الحصول على قائمة columns من جدول من دون إذن
SHOW COLUMNSعبر محرك الجداولmerge. #93695 (János Benjamin Antal). - تم إصلاح ثغرة overflow في الأعداد الصحيحة أثناء deserialization لحالة
groupConcat، وكان يمكن أن تؤدي إلى مشكلات في سلامة الذاكرة. #93426 (Raufs Dunamalijevs). - تم التحقق من أن حجم buffer بعد فك الضغط مطابق لما هو متوقع. #93690 (Raúl Marín).
- تم إصلاح revoke للأدوار الافتراضية. #96103 (Vitaly Baranov).
- تم إصلاح إرجاع
AccessRights::containsلنتائج غير صحيحة عند وجود عمليات revoke جزئية. #96170 (pufit). - تم إصلاح تحديث row policies المعيّنة للمستخدم الأولي في distributed queries. #95469 (Vitaly Baranov).
- أصبحت وسيطة password في table function
redisمخفية الآن في logs وsystem tables. #95325 (Janos Benjamin Antal). - تم إصلاح تسرّب الذاكرة في كائنات BIO عند قراءة شهادات X509. #96885 (Alexey Milovidov).
- تم التحقق من witness version في bech32 لتجنّب overflow في buffer. #96671 (Raúl Marín).
- تم إصلاح بطء الأداء عند الاستعلام عن system tables باستخدام مستخدم لديه grants محدودة على عدد كبير من databases. #95874 (pufit).
إصلاحات النسخ الاحتياطي والاستعادة
- أُصلِح الخطأ
Couldn't pack tar archive: Failed to write all bytesالناتج عن ترويسة غير صحيحة لحجم مُدخل الأرشيف. #92122 (Julia Kartseva). - أُصلِح تعطل الخادم عند تزاحم عدد كبير من النسخ الاحتياطية المتزامنة على الملفات نفسها. #93659 (Alexey Milovidov).
- أُصلِح تجاوز سعة المكدس عند إنشاء نسخ احتياطية قائمة على الأرشيف (
.zip,.tzst) على قرص تخزين كائنيplain_rewritable. #96872 (Alexey Milovidov). - أُصلِح تعطل الخادم عند فشل النسخة الاحتياطية بسبب امتلاء القرص أو أخطاء إدخال/إخراج أخرى. #96873 (Alexey Milovidov).
- أُصلِح
segfaultفي النسخ الاحتياطي لـStorageKeeperMapبسبب استخدام الذاكرة بعد تحريرها. #97336 (Alexey Milovidov).
إصلاحات الأعطال والاستقرار
- تم إصلاح تعطل ناتج عن القراءة من
Connectionمقطوعة الاتصال. #92807 (Raufs Dunamalijevs). - تم إصلاح تعطل محتمل في الدالة
tokens()عندما تكون الوسيطة الثانيةNULL. #92586 (Raúl Marín). - تم إصلاح تعطل الخادم عند استدعاء
tokensباستخدام معاملات tokenizer غير ثابتة. #93383 (Robert Schulze). - تم إصلاح تعطل محتمل ناتج عن mutation موضعية لأعمدة PREWHERE الثابتة الأساسية أثناء تقليص الأعمدة أو تصفيتها بالتزامن. #92588 (Arsen Muk).
- تم إصلاح احتمال حدوث تعليق عند إنهاء background schedule pool، ما قد يؤدي إلى تعليق الخادم عند إيقافه. #93008 (Azat Khuzhin).
- تم إصلاح ترك الاتصالات في حالة معطوبة بعد الإلغاء المبدئي للاستعلامات الموزعة. #93029 (Azat Khuzhin).
- تم إصلاح الخطأ المحتمل
Cannot finalize buffer after cancellationفيestimateCompressionRatio(). #93068 (Azat Khuzhin). - تم ضمان إنهاء ZooKeeper عند الإيقاف لمعالجة حالات التعليق المحتملة. #93602 (Azat Khuzhin).
- تم إصلاح استثناء غير مُلتقط أثناء إعادة تحميل named collections في الخلفية عند استخدام تخزين ZooKeeper. #92717 (Kseniia Sumarokova).
- تم إصلاح استخدام قيمة غير مهيأة في
ReadWriteBufferFromHTTP. #94058 (Alexey Milovidov). - تم إصلاح عدم تحديث حجم المخزن المؤقت لـ
TraceSender، مما كان يتسبب في عمليات flush متداخلة من خيوط تنفيذ مختلفة. #93966 (Miсhael Stetsyuk). - تم تخزين المؤشرات المشتركة الخاصة بالتخزين في
QueryPipelineلضمان عدم إتلاف كائناتIStorageما دامPipelineExecutorقيد التشغيل. #93746 (Miсhael Stetsyuk). - تم إصلاح تعطل محتمل في الاستعلامات الموزعة في حالة الإلغاء. #95466 (Aleksandr Musorin).
- تم إصلاح تعطل عند
DROP WORKLOADأثناء تشغيله بالتزامن مع الاستعلامات. #95856 (Alexey Milovidov). - تم إصلاح data race في
DROP WORKLOAD. #96614 (Sergei Trifonov). - تم إصلاح عدة أخطاء حرجة متعلقة باستخدام
ThreadPoolCallbackRunnerLocal. #95818 (Raúl Marín). - تم إصلاح حالة توقف محتملة في
ProcessListبسبب انعكاس ترتيب الأقفال عند تفعيل overcommit tracker للذاكرة. #96182 (Antonio Andelic). - تم إصلاح livelock في خيط تنفيذ التحقق من الإلغاء للاستعلامات ذات القيمة المرتفعة لـ
max_execution_time. #96450 (Sergei Trifonov). - تم إصلاح تعطل خيط تنفيذ التنظيف في MemoryWorker بسبب race condition. #96819 (Antonio Andelic).
- أُصلِح تعطل في
clearCachesناتج عن الإتلاف المبكر للقطات التخزين المخزنة مؤقتًا. #96995 (Alexey Milovidov). - أُصلِح
heap-use-after-freeفيCREATE TABLEمع القيود. #96669 (Nikita Taranov). - أُصلِح احتمال حدوث
use-after-freeفيStorageKafka2. #97520 (Bharat Nallan). - أُصلِح سباق بيانات على
shutdown_calledفيDatabaseMaterializedPostgreSQL. #97554 (Alexey Milovidov). - أُصلِحت حالة تسابق في التحميل المتوازي للقاموس
HASHEDالمُجزّأ، وكان يمكن أن تؤدي إلى عدم تحميل بعض الصفوف. #96953 (Alexey Milovidov). - أُصلِح توقف متبادل في القواميس عندما كان أحد القواميس يشير إلى جدول Merge يشير إليه بشكل تكراري. #96120 (Alexey Milovidov).
- أُصلِح وصول خارج الحدود في
BaseSettings::readBinaryعندما كان خادم أحدث يرسل إعدادًا غير معروف أثناء إلغاء تسلسل خطة الاستعلام. #97585 (Michael Stetsyuk). - أُصلِح تعطل عند إرفاق جدول بقاعدة بيانات
MaterializedPostgreSQLإذا ألقىdropReplicationSlotاستثناءً أثناء فك تكدس الاستدعاءات. #96871 (Alexey Milovidov). - أُفرِج عن دفق الطلب في insert select لتجنب إغلاق اتصال HTTP. #92175 (Sema Checherinda).
- أُصلِح توقف متبادل في
SHOW CREATE DATABASEلقاعدة بيانات Backup. #92541 (Azat Khuzhin).
إصلاحات أخرى للأخطاء
- تم إصلاح التعامل مع المصفوفة الفارغة في
handleAllTokensضمن الدالتينhasAllTokensوhasAnyTokens. #93328 (Anton Popov). - تم إصلاح الفترة الزمنية لأدوات التنميط العامة للأداء — إذ كانت تُستخدم قيمة مبتورة بدلًا من القيمة المضبوطة، مما تسبب في تفعيلها بوتيرة أعلى. #96048 (Antonio Andelic).
- تم إصلاح
event_dateفيsystem.asynchronous_metric_log. #95947 (Raúl Marín). - تم إصلاح عرض
system.functionsلسلسلة فارغة بدلًا منcategories = 'Internal'للدوال الداخلية. #97315 (Robert Schulze). - تم إصلاح احتمال حدوث خطأ منطقي في قاموس
ip_trieعندما لا يكون نوع المفتاح String. #97555 (Bharat Nallan). - تم إصلاح تصحيح أخطاء UDF عبر تفعيل التقاط stderr في
system.query_log.exception. #92209 (Xu Jia). - تم إصلاح
filterPartsByVirtualColumnsفي حالات المسندات الثابتة ذات القيمة false. #97620 (Bharat Nallan). - تم إصلاح عدم تجسيد
ColumnConstقبل الدمج. #97019 (Hasyimi Bahrudin).