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

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

تغييرات الاستعلامات والصياغة

  • تم إصلاح عدم اتساق تنسيق الاستعلامات الناتج عن استبدال غير صحيح للاسم المستعار. ملاحظة: عند تعطيل المحلّل، قد لا تعود بعض استعلامات 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 على الإصدار السابق، أو اضبط إعدادات MergeTree dynamic_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 والإعداد على مستوى query max_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 إلى طلبات Keeper getChildren، مما يتيح جلب العناصر التابعة مع بياناتها وإحصاءاتها في عملية واحدة. #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 إذا كانت dropReplicationSlot throws أثناء التراجع عن تكدس الاستدعاءات. #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 OUTER JOIN. #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 في WHERE clause يشير إلى أعمدة من جانبي 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_in enabled. #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).
  • تم إصلاح التراجع المتعلق بـ Gorilla codec عندما لم يكن الحجم المحدد صراحةً متوافقًا مع حجم نوع البيانات. #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).
آخر تعديل في ٢٩ يونيو ٢٠٢٦