> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# سجل تغييرات v26.6 لـ Cloud

> سجل تغييرات v26.6

<h2 id="backward-incompatible-changes">
  تغييرات غير متوافقة مع الإصدارات السابقة
</h2>

<h3 id="query-and-syntax-changes">
  تغييرات الاستعلامات وبناء الجملة
</h3>

* أصبحت دالتا النافذة `RANK` و`DENSE_RANK` ترفضان الوسائط وتُطلقان الخطأ `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`، تماشيًا مع معيار SQL. في السابق، كانت استعلامات مثل `RANK(x) OVER (ORDER BY id)` تُقبل دون تنبيه مع تجاهل الوسيط، وهو ما شكّل مصدرًا متكررًا لالتباس المستخدمين. ولاستعادة السلوك المتساهل السابق، اضبط `allow_rank_dense_rank_arguments = 1`. [#104324](https://github.com/ClickHouse/ClickHouse/pull/104324) ([groeneai](https://github.com/groeneai)).

<h3 id="data-type-changes">
  تغييرات أنواع البيانات
</h3>

* ترفض `icebergHash` و`icebergBucket` الآن وسيطات من الأنواع `Int128` و`UInt128` و`Int256` و`UInt256` و`Decimal256` وتُصدر خطأً صريحًا. سابقًا، كانت تقتطع القيم الأوسع بصمت وتنتج قيم hash متصادمة. لا تحدد مواصفة Iceberg التجزئة إلا للأعداد الصحيحة ذات 32 أو 64 بت وللقيم العشرية بدقة تصل إلى 38؛ حوّل القيم إلى `Int64` أو `Decimal128` للحفاظ على السلوك السابق للقيم التي تقع ضمن النطاق. [#105866](https://github.com/ClickHouse/ClickHouse/pull/105866) ([Algunenano](https://github.com/Algunenano)).
* أصبحت الدوال `toUUID` و`toUUIDOrNull` و`toUUIDOrZero` و`toUUIDOrDefault` وعملية `CAST` إلى `UUID` و`Nullable(UUID)` و`accurateCastOrNull` إلى `UUID`، وكذلك تنسيقات الإدخال التي تحلل معرّف UUID من نص (`Avro`، `MsgPack`، `JSONExtract`، ...)، ترفض السلاسل النصية التي يكون طولها صحيحًا لكنها تحتوي على محارف غير سداسية عشرية. سابقًا، كانت هذه المدخلات تتحول بصمت إلى معرّف UUID ملفّق نتيجة تجاوز نهاية جدول البحث عن الأرقام السداسية عشرية. أما الآن فتُصدر `toUUID` الخطأ `CANNOT_PARSE_UUID`، بينما تعيد بدائل `Or*` القيمة `NULL` أو معرّف UUID الصفري أو القيمة الافتراضية المحددة. [#104370](https://github.com/ClickHouse/ClickHouse/pull/104370) ([groeneai](https://github.com/groeneai)).
* يجري الآن التحقق من النوعين `Dynamic` و`Variant` في عبارة `PARTITION BY` الخاصة بالنافذة؛ ولم يكن ذلك يُفحص سابقًا عندما يكون `allow_suspicious_types_in_group_by` معطلًا. أما الآن فتُصدر الاستعلامات التي تقسّم نافذة على عمود من النوع `Dynamic` أو `Variant` خطأً ما لم يكن `allow_suspicious_types_in_group_by = 1`. [#105450](https://github.com/ClickHouse/ClickHouse/pull/105450) ([Avogar](https://github.com/Avogar)).

<h3 id="storage-and-index-changes">
  تغييرات التخزين والفهارس
</h3>

* رفض Dynamic/Variant المتداخلة في تجميعات min/max وفهارس minmax. سابقًا، كان التحقق يقتصر على Dynamic/Variant في المستوى الأعلى فقط. [#105468](https://github.com/ClickHouse/ClickHouse/pull/105468) ([Avogar](https://github.com/Avogar)).
* تتغير القيمة الافتراضية لإعداد الخادم `insert_deduplication_version` من `compatible_double_hashes` إلى `new_unified_hash`. تعمل إزالة تكرار الإدراج الآن على كتلة الإدراج بأكملها (لكل عملية إدراج) بدلًا من كل جزء/قسم: تظل إعادة محاولة عملية الإدراج نفسها مُزالة التكرار، لكن لم تعد عمليتا إدراج مختلفتان تنتجان جزءًا متطابقًا تُزالان تكراريًا فيما بينهما، ولم تعد أيضًا عمليات الإدراج التي تُرتَّب فيها الصفوف نفسها ترتيبًا مختلفًا تُزال تكراريًا. اضبط `insert_deduplication_version = compatible_double_hashes` لاستعادة السلوك السابق. تخضع إزالة تكرار الإدراج غير المتزامن أيضًا لنافذة المزامنة ضمن `new_unified_hash`: إذ يتبع كلٌّ من تمكينها (`replicated_deduplication_window`) ومدة الاحتفاظ بها (`replicated_deduplication_window_seconds`، والقيمة الافتراضية ساعة واحدة) إعدادات المزامنة، لذا فإن `*_for_async_inserts` إعداد قديم ولا ينطبق إلا على `old_separate_hashes` / `compatible_double_hashes`. يجب أن تعمل المثيلات التي تُرقّى مباشرةً من إصدار كانت قيمته الافتراضية `old_separate_hashes` أولًا باستخدام `compatible_double_hashes` إلى أن تنقضي أطول نافذة لإزالة التكرار ذات صلة (بما في ذلك `replicated_deduplication_window_for_async_inserts`، وقيمتها الافتراضية أسبوع واحد، عند استخدام عمليات الإدراج غير المتزامن) قبل الاعتماد على `new_unified_hash`. ينبغي لأحمال العمل غير المتزامنة التي تنتقل من `compatible_double_hashes` أن ترفع أولًا `replicated_deduplication_window[_seconds]` إلى نافذة الإدراج غير المتزامن (وأن تعمل طوال نافذة غير متزامنة كاملة)، أو أن توقف عمليات الإدراج غير المتزامن مؤقتًا، أو أن تبقى على `compatible_double_hashes`، لأن `new_unified_hash` لم يعد يتحقق من معرّفات `async_blocks` ذات مدة الاحتفاظ الأطول. [#107886](https://github.com/ClickHouse/ClickHouse/pull/107886) ([CheSema](https://github.com/CheSema)).
* إصلاح `hasToken` بحيث لا يعيد بصمت نتائج عبر فهرس نصي عند استخدام needle يحتوي على فاصل، بل يطلق `BAD_ARGUMENTS`. [#108189](https://github.com/ClickHouse/ClickHouse/pull/108189) ([Ergus](https://github.com/Ergus)).

<h3 id="removed-features">
  الميزات المُزالة
</h3>

* لم يعد بإمكانك استخدام قارئ وكاتب Parquet المتقادمَين المبنيَّين على Arrow. إذ يُستخدم التنفيذ الأصيل دائمًا بدلًا منهما. أصبحت الإعدادات التي كانت تختار التنفيذات القديمة أو تضبطها متقادمة ويتم تجاهلها: `input_format_parquet_use_native_reader_v3` و`output_format_parquet_use_custom_encoder` و`output_format_parquet_version` و`output_format_parquet_compliant_nested_types` و`output_format_parquet_unsupported_types_as_binary`. يكتب الكاتب الأصيل دائمًا بصيغة Parquet V2.6+ مع أنواع متداخلة متوافقة، ويُصدر الخطأ `UNKNOWN_TYPE` للأنواع غير المدعومة بدلًا من كتابتها كبيانات ثنائية خام. [#100949](https://github.com/ClickHouse/ClickHouse/pull/100949) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُزيل الإعداد المتقادم `allow_experimental_query_deduplication` وسلوك إزالة تكرار الاستعلامات التجريبي غير المدعوم المرتبط به. [#99398](https://github.com/ClickHouse/ClickHouse/pull/99398) ([devcrafter](https://github.com/devcrafter)).
* لم يعد `ALTER TABLE ... REPLACE PARTITION ... FROM ...` يحذف بيانات قسم الوجهة بصمت عندما لا يحتوي الجدول المصدر على أجزاء ضمن القسم المطلوب. سابقًا، كان هذا الطلب يزيل قسم الوجهة دون كتابة أي بيانات بديلة. ويُرفض الآن افتراضيًا بالخطأ `BAD_ARGUMENTS`. هذا تغيير غير متوافق مع الإصدارات السابقة: إذ إن `REPLACE PARTITION` من مصدر فارغ، والذي كان ينجح سابقًا (مما يؤدي إلى مسح الوجهة)، سيُصدر الآن استثناءً بعد الترقية. لاستعادة سلوك المسح الصامت السابق، اضبط الإعداد الجديد `allow_replace_partition_from_empty_source = 1` (لكل استعلام أو ضمن ملف التعريف)، أو اضبط `compatibility` على `26.5` أو إصدار أقدم. ولحذف بيانات الوجهة صراحةً، استخدم `ALTER TABLE ... DROP PARTITION ...`. [#104939](https://github.com/ClickHouse/ClickHouse/pull/104939) ([groeneai](https://github.com/groeneai)).
* أُزيلت دوال KQL ‏(Kusto) التجريبية `array_sort_asc` و`array_sort_desc`، وعمليات التنفيذ الخلفية المقابلة لها في SQL، `kql_array_sort_asc` و`kql_array_sort_desc`. كانت هذه الدوال تجريبية ومنفذة بجودة متدنية، وكانت مصدرًا لأخطاء في صحة النتائج وأخطاء في المحلل. تُرجع الاستعلامات التي تستخدم هذه الأسماء الآن `UNKNOWN_FUNCTION`. [#108101](https://github.com/ClickHouse/ClickHouse/pull/108101) ([groeneai](https://github.com/groeneai)).

<h2 id="new-features">
  الميزات الجديدة
</h2>

<h3 id="functions">
  الدالة
</h3>

* أُضيف دعم دالة PromQL `histogram_quantile` في دوال الجداول `prometheusQuery` و`prometheusQueryRange`. يتيح ذلك حساب الكَمّيات على حاويات المُدرَّج التكراري التقليدية في Prometheus، المحددة بالوسم `le`. [#103477](https://github.com/ClickHouse/ClickHouse/pull/103477) ([Yasumoto](https://github.com/Yasumoto)).
* أُضيفت الدالة `h3PolygonToCellsWithContainment`، التي تدعم أوضاع الاحتواء القائمة على المركز، والاحتواء الكامل، والتداخل. [#104455](https://github.com/ClickHouse/ClickHouse/pull/104455) ([yousefQadry](https://github.com/yousefQadry)).
* يمكن للمستخدم الآن تحديد وسيطة اختيارية للدقة للدوال `formatReadableSize` و`formatReadableDecimalSize` و`formatReadableQuantity` للتحكم في عدد الأرقام بعد الفاصلة العشرية. القيمة الافتراضية هي 2، مع الحفاظ على السلوك السابق. [#104648](https://github.com/ClickHouse/ClickHouse/pull/104648) ([antoniofilipovic](https://github.com/antoniofilipovic)).
* أُضيف الاسمان المستعاران التجميعيان `min_by` و`max_by` للدالتين `argMin` و`argMax`. [#105712](https://github.com/ClickHouse/ClickHouse/pull/105712) ([itsjoeoui](https://github.com/itsjoeoui)).

<h3 id="sql-and-query-features">
  ميزات SQL وميزات الاستعلام
</h3>

* تقبل `formatReadableTimeDelta` الآن تعبير `INTERVAL` من نوع غير `Month` أو `Year` كمدخل. [#64315](https://github.com/ClickHouse/ClickHouse/pull/64315) ([Beetelbrox](https://github.com/Beetelbrox)).
* أُضيف دعم صيغة الإخراج PNG، ما يتيح عرض نتائج الاستعلامات مباشرةً كصور PNG. [#74691](https://github.com/ClickHouse/ClickHouse/pull/74691) ([m7kss1](https://github.com/m7kss1)).
* أُضيفت ميزة حجز الذاكرة لأعباء العمل. راجع وثائق [جدولة أعباء العمل](https://clickhouse.com/docs/operations/workload-scheduling). [#82414](https://github.com/ClickHouse/ClickHouse/pull/82414) ([serxa](https://github.com/serxa)).
* أُضيف خيارا `IPV4_PREFIX_BITS` و`IPV6_PREFIX_BITS` للحصص المحددة بـ `IP_ADDRESS` أو `FORWARDED_IP_ADDRESS`، ما يتيح مشاركة حدود الحصة على مستوى الشبكة الفرعية لـ IP بدلًا من تطبيقها على كل عنوان كامل على حدة. [#89270](https://github.com/ClickHouse/ClickHouse/pull/89270) ([adityachopra29](https://github.com/adityachopra29)).
* تنفيذ `ADD ENUM VALUES` في استعلامات `ALTER TABLE` لتبسيط إضافة قيم جديدة إلى نوع Enum موجود دون الحاجة إلى تحديد جميع قيم Enum الحالية مجددًا. [#93830](https://github.com/ClickHouse/ClickHouse/pull/93830) ([ilejn](https://github.com/ilejn)).
* إضافة صيغة الإدخال `GeoJSON` للقراءة. [#98124](https://github.com/ClickHouse/ClickHouse/pull/98124) ([mneedham](https://github.com/mneedham)).
* أُضيف معالج لاحق إلى فهرس النصوص لتحويل الرموز بعد تجزئة النص. [#98939](https://github.com/ClickHouse/ClickHouse/pull/98939) ([Ergus](https://github.com/Ergus)).
* أُضيف دعم اختياري لعُقد TTL في ClickHouse Keeper. تنتهي صلاحية عُقد TTL تلقائيًا بعد انتهاء عمرها المحدد في التهيئة، ولا يمكن أن تحتوي على عُقد فرعية. [#100397](https://github.com/ClickHouse/ClickHouse/pull/100397) ([scanhex12](https://github.com/scanhex12)).
* أُضيف تخزين مواضع الرموز لفهارس النصوص لدعم عمليات بحث `hasPhrase` الدقيقة. فعّل وسيطة الفهرس `support_phrase_search` وإعداد `MergeTree` ‏`allow_experimental_text_index_phrase_search`. [#103172](https://github.com/ClickHouse/ClickHouse/pull/103172) ([ahmadov](https://github.com/ahmadov)).
* إضافة الدالتين arrayTopK وarrayBottomK: - تُرجع `arrayTopK(k, array)` أكبر K عناصر بترتيب تنازلي - تُرجع `arrayBottomK(k, array)` أصغر K عناصر بترتيب تصاعدي. [#104563](https://github.com/ClickHouse/ClickHouse/pull/104563) ([vitlibar](https://github.com/vitlibar)).
* إضافة دعم اختيار الأعمدة وفق نمط الاسم باستخدام `* LIKE '<pattern>'` و`* ILIKE '<pattern>'`، بما في ذلك الصيغ المؤهلة مثل `table.* LIKE '<pattern>'` و`table.* ILIKE '<pattern>'`. يطابق `LIKE` أسماء الأعمدة مع مراعاة حالة الأحرف، بينما يطابقها `ILIKE` دون مراعاة حالة الأحرف. [#104569](https://github.com/ClickHouse/ClickHouse/pull/104569) ([niyue](https://github.com/niyue)).
* أُضيفت استعلامات مستمرة لجداول `MergeTree` باستخدام سلسلة من قراءات اللقطات. [#105114](https://github.com/ClickHouse/ClickHouse/pull/105114) ([Michicosun](https://github.com/Michicosun)).
* أُضيفت الصيغة `RowBinaryWithNamesAndTypesAndDefaults` لتحسين دعم تطور المخطط. [#105736](https://github.com/ClickHouse/ClickHouse/pull/105736) ([mzitnik](https://github.com/mzitnik)).
* أُضيفت دوال لتقديم Mapbox Vector Tiles مباشرةً من SQL: تُسقِط `MVTEncodeGeom` شكلاً هندسياً إلى فضاء البكسل لبلاطة slippy-map وتقتطعه، بينما تُجمِّع `MVTEncode` الأشكال الهندسية المُسقطة لمجموعة في بايتات ثنائية لبلاطة أحادية الطبقة، وتُرجع `MVTBoundingBox` / `MVTBoundingBoxMercator` المربع المحيط بالبلاطة لتقييد الصفوف ضمنه. تدعم الدوال الأشكال الهندسية من نوع Point وline وPolygon. تتوفر أيضاً بالأسماء المستعارة في PostGIS: `ST_AsMVTGeom` و`ST_AsMVT`. [#106107](https://github.com/ClickHouse/ClickHouse/pull/106107) ([saarthak2002](https://github.com/saarthak2002)).
* أُضيفت `LOCALTIME` و`LOCALTIMESTAMP` (بناء جملة SQL القياسي / PostgreSQL). `LOCALTIMESTAMP` اسم مستعار لـ `now()` (ويُرجع `DateTime`)؛ وتُرجع `LOCALTIME` الوقت الحالي من اليوم كقيمة `Time`. [#106139](https://github.com/ClickHouse/ClickHouse/pull/106139) ([thomas-cabral](https://github.com/thomas-cabral)).
* أُضيفت استراتيجيتان جديدتان لـ `load_balancing`، هما `hostname_longest_common_prefix` و`hostname_longest_common_suffix`، وتُفضِّلان النسخة المتماثلة التي يشترك اسم مضيفها مع اسم مضيف البادئ في أطول بادئة مشتركة (أو لاحقة مشتركة، على الترتيب). وهما مفيدتان عندما يكون مركز البيانات مُرمَّزاً كبادئة أو لاحقة في أسماء مضيفين ذات مقاطع رقمية متفاوتة الطول، إذ قد تختار استراتيجيتا `nearest_hostname` و`hostname_levenshtein_distance` الحاليتان النسخة المتماثلة الخاطئة. [#107360](https://github.com/ClickHouse/ClickHouse/pull/107360) ([den-crane](https://github.com/den-crane)).
* دالتان جديدتان هما `quantizeBFloat16ToInt8` و`dequantizeInt8ToBFloat16`: codec قياسي يضغط مكوّنات embedding إلى 8 بت باستخدام مُكمِّم غاوسي Lloyd-Max ذي 256 مستوى، ويمكن استخراج رموز Int4/Int2/الثنائية منه عبر اقتطاع البتات. [#108102](https://github.com/ClickHouse/ClickHouse/pull/108102) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h3 id="table-engines-and-storage">
  محركات الجداول والتخزين
</h3>

* أُضيف دعم الكتابة إلى Azure Data Lake Storage Gen2. [#105406](https://github.com/ClickHouse/ClickHouse/pull/105406) ([scanhex12](https://github.com/scanhex12)).

<h3 id="settings-and-configuration">
  الإعدادات والتهيئة
</h3>

* أُضيف الإعداد `output_format_always_write_decimal_point_in_float_and_decimal` لطباعة الفاصلة العشرية دائمًا للأرقام ذات الفاصلة العائمة وأرقام `Decimal` في التنسيقات النصية، حتى عندما تكون القيمة عددًا صحيحًا. على سبيل المثال، إخراج `1.` بدلًا من `1`. يكون هذا الإعداد معطّلًا افتراضيًا. [#62614](https://github.com/ClickHouse/ClickHouse/pull/62614) ([qoega](https://github.com/qoega)).
* أُضيف إعداد جديد غير قابل للتغيير في `MergeTree` باسم `allow_tuple_element_aggregation`، وهو معطّل افتراضيًا. عند تفعيله، تعمل `SummingMergeTree` و`AggregatingMergeTree` و`CoalescingMergeTree` على تسطيح أعمدة `Tuple` تعاوديًا وتجميع كل عنصر نهائي فيها بصورة مستقلة أثناء عمليات الدمج، كما لو كان عمودًا من المستوى الأعلى: تجمعه `SummingMergeTree`، وتدمج `AggregatingMergeTree` حالة دالة التجميع الخاصة به، وتحتفظ `CoalescingMergeTree` بآخر قيمة غير NULL له. يجب تحديد هذا الإعداد عند إنشاء الجدول، وتتجاهله المحركات التي لا تدعمه دون إصدار أي تنبيه. [#98039](https://github.com/ClickHouse/ClickHouse/pull/98039) ([JingYanchao](https://github.com/JingYanchao)).
* أُضيف الإعداد `output_format_float_precision` للتحكم في عدد المنازل العشرية في المخرجات النصية للأرقام ذات الفاصلة العائمة. [#99721](https://github.com/ClickHouse/ClickHouse/pull/99721) ([phulv94](https://github.com/phulv94)).
* أُضيف إعدادا جدول `MergeTree`، وهما `materialize_projections_on_insert` و`materialize_projections_on_merge`. عندما تكون قيمة `materialize_projections_on_insert = 0`، تتخطى عمليات INSERT إنشاء أجزاء الإسقاط، مما يحسّن معدل إدراج البيانات في الجداول ذات الإسقاطات الكثيرة. وعندما تكون قيمة `materialize_projections_on_merge = 1`، تعيد عملية الدمج إنشاء إسقاط مفقود من جميع أجزائه المصدرية، بحيث يمكن إنشاء الإسقاطات أثناء عمليات الدمج بدلًا من إنشائها عند الإدراج. ولا تزال عمليات الدمج تدمج الأجزاء التي تتشارك المجموعة نفسها من الإسقاطات فقط. [#100993](https://github.com/ClickHouse/ClickHouse/pull/100993) ([cwurm](https://github.com/cwurm)).
* أُضيف إعداد جديد في S3Queue باسم `after_processing_move_preserve_path`. عند تفعيله مع `after_processing='move'` و`after_processing_move_prefix`، تُنقل الكائنات المعالجة مع الاحتفاظ بمسار المصدر الكامل ضمن بادئة الوجهة، بدلًا من تسطيحها لتصبح اسم الملف فقط. [#105354](https://github.com/ClickHouse/ClickHouse/pull/105354) ([asya-ch](https://github.com/asya-ch)).
* أُضيفت عناصر تهيئة لمعالج HTTP هي `url_prefix` و`full_url_prefix` لمطابقة جميع المسارات التي تبدأ ببادئة محددة، إلى جانب العناصر الصريحة `url_regexp` و`full_url_regexp` و`headers_regexp`. ولا تزال الصيغة القديمة `<url>regex:...</url>` مدعومة. [#107492](https://github.com/ClickHouse/ClickHouse/pull/107492) ([vitlibar](https://github.com/vitlibar)).

<h3 id="authentication">
  المصادقة
</h3>

* أُضيفت بيانات اعتماد اختيارية باسم `external_id` للوصول إلى S3 المستند إلى الدور. [#106941](https://github.com/ClickHouse/ClickHouse/pull/106941) ([eliangidoni](https://github.com/eliangidoni)).
* أُضيفت معلومات شهادة عميل TLS (subject والرقم التسلسلي والجهة المُصدِرة وفترة الصلاحية) إلى جدول `system.session_log` لتحسين قابلية رصد المصادقة المعتمدة على الشهادات. [#107679](https://github.com/ClickHouse/ClickHouse/pull/107679) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h3 id="system-tables">
  جداول النظام
</h3>

* أُضيف جدول `system.iceberg_files` الذي يعرض البيانات الوصفية لكل ملف في جداول Iceberg، بصف واحد لكل ملف بيانات أو ملف حذف ضمن اللقطة الحالية لكل جدول. [#104415](https://github.com/ClickHouse/ClickHouse/pull/104415) ([asya-ch](https://github.com/asya-ch)).
* أُضيفت فهارس تخطٍ افتراضية (ماذا لو). استخدم `CREATE HYPOTHETICAL INDEX ... ON t (expr) TYPE ...` لتعريف فهرس تخطٍ افتراضي ضمن نطاق الجلسة، ثم استخدم `EXPLAIN WHATIF SELECT ...` لتقدير نسبة التخطي وتكلفته دون تجسيده. تظهر الفهارس المعرّفة في جدول `system.hypothetical_indexes` الجديد. [#104608](https://github.com/ClickHouse/ClickHouse/pull/104608) ([yariks5s](https://github.com/yariks5s)).
* أُضيف جدول النظام `system.constraints` الذي يوفر معلومات عن جميع قيود CHECK وASSUME في جميع الجداول، بما في ذلك اسم القيد ونوعه وتعبيره. [#105337](https://github.com/ClickHouse/ClickHouse/pull/105337) ([PedroTadim](https://github.com/PedroTadim)).
* أُضيف جدول نظام جديد باسم `system.documentation` يجمع وثائق المرجع المضمّنة للمكوّنات الموحّدة في النظام (الدوال ومحركات الجداول وأنواع البيانات والإعدادات والتنسيقات وغيرها) في جدول واحد، مع عرض الوثائق بتنسيق Markdown. [#107463](https://github.com/ClickHouse/ClickHouse/pull/107463) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h2 id="experimental-features">
  الميزات التجريبية
</h2>

* أُضيفت خوارزمية `dphyp` التجريبية لإعادة ترتيب عمليات الربط الداخلية، كخيار لإعداد `query_plan_optimize_join_order_algorithm`، إلى جانب إعداد `query_plan_optimize_join_order_max_searched_plans` الذي يقيّد البحث عن ترتيب الربط ويعود إلى الخوارزمية التالية في السلسلة عند تجاوز الحد؛ اضبطه على `0` للاحتفاظ بسلوك البحث السابق غير المقيّد. [#98798](https://github.com/ClickHouse/ClickHouse/pull/98798) ([davenger](https://github.com/davenger)).
* أُضيف وضع التطبيق الكسول لقوائم الترحيلات لفهرس النص. عند تمكينه عبر `SET allow_experimental_text_index_lazy_apply = 1` و`SET text_index_posting_list_apply_mode = 'lazy'`، تُفك ترميزات قوائم الترحيلات عند الطلب على مستوى الكتل المعبأة، باستخدام نهج قائم على المؤشر بدلًا من تحويلها بالكامل إلى Roaring Bitmaps، مما يقلل استخدام الذاكرة ووقت المعالجة لاستعلامات فهرس النص الانتقائية. [#100035](https://github.com/ClickHouse/ClickHouse/pull/100035) ([fastio](https://github.com/fastio)).
* أصبح بالإمكان إرفاق معالجات prometheus بمنفذ http الرئيسي مع بادئة اختيارية. [#104975](https://github.com/ClickHouse/ClickHouse/pull/104975) ([JTCunning](https://github.com/JTCunning)).
* أُضيف إعداد MergeTree تجريبي `packed_skip_index_max_bytes` يضم التدفقات الفرعية الصغيرة لفهرس التخطي في أرشيف `skp_idx.packed` واحد لكل جزء، مما يقلل الضغط على inodes عند تعريف العديد من فهارس التخطي في جدول. يُتخذ القرار لكل تدفق فرعي وقت الكتابة: تُضاف إلى الأرشيف التدفقات الفرعية التي يبقى حجمها المتسلسل دون العتبة، بينما يحتفظ أي تدفق أكبر بالتخطيط المستقل `skp_idx_<name>.idx2` / `.mrk2`. يمكن للجزء الواحد أن يجمع بين التخطيطين. فهارس النص الكامل غير مدعومة وتُخزَّن دائمًا في ملفات منفصلة. القيمة الافتراضية هي 0 (التعبئة معطلة). [#105321](https://github.com/ClickHouse/ClickHouse/pull/105321) ([Algunenano](https://github.com/Algunenano)).
* دعم تسلسل `Buffers` لدوال WebAssembly UDF باستخدام `ABI BUFFERED_V1`، وإضافة `webassembly_udf_enable_fuel` كإعداد دائم لدالة WASM UDF. [#105574](https://github.com/ClickHouse/ClickHouse/pull/105574) ([antonio2368](https://github.com/antonio2368)).
* تنفيذ الاستعلامات الموزعة متعدد المراحل: يقسم المخطط خطة الاستعلام إلى مراحل متصلة بتبادلات scatter / broadcast / gather / shuffle، ويوزع أجزاء الخطة على العقد العاملة. تُنقل البيانات بين المراحل عبر TCP أو عبر ملفات مؤقتة في تخزين كائنات مشترك، ويدعم هذا المسار عمليات ربط التجزئة من نوع shuffle وbroadcast، والتجميع من نوع shuffle، والفرز الموزع. هذه الميزة تجريبية ومعطلة افتراضيًا. [#106020](https://github.com/ClickHouse/ClickHouse/pull/106020) ([davenger](https://github.com/davenger)).
* يمكن لمحرك خطة الاستعلامات الموزعة التجريبي (`make_distributed_plan`) الآن استخدام منفذ مختلف لتوزيع المهام وتبادل البث لكل عامل، يُضبط لكل نسخة متماثلة في `<remote_servers>` باستخدام `stateless_worker_port` و`streaming_exchange_port`. عند عدم ضبطهما، تُستخدم منافذ مستوى الخادم السابقة (`stateless_worker_client.port` و`distributed_query.streaming_exchange_port`). يتيح ذلك تشغيل عدة عمال على مضيف واحد. [#107885](https://github.com/ClickHouse/ClickHouse/pull/107885) ([davenger](https://github.com/davenger)).

<h2 id="performance-improvements">
  تحسينات الأداء
</h2>

<h3 id="join-performance">
  أداء JOIN
</h3>

* تطبيق فهارس selector وreplication بشكل كسول عند وجود JOIN يتبعه LIMIT انتقائي أو TopN أو JOIN آخر. للتحكم في عدد أعمدة payload اللازمة لتفعيل فهارس selector الكسولة، استخدم الإعداد `query_plan_min_columns_for_join_lazy_indexing` (تعني القيمة 0 أن التحسين معطّل). وللتحكم في قيمة LIMIT التي يُطبَّق عليها التحسين، استخدم الإعداد `query_plan_max_limit_for_join_lazy_indexing`. [#98883](https://github.com/ClickHouse/ClickHouse/pull/98883) ([m-selmi](https://github.com/m-selmi)).
* السماح لـ `ASOF JOIN` باستخدام خوارزمية join ‏`parallel_hash`، مع توزيع عملية البناء بالتوازي بين قيم مفاتيح المساواة المختلفة. سابقًا، كان ASOF مستبعدًا دائمًا من `parallel_hash`. [#105375](https://github.com/ClickHouse/ClickHouse/pull/105375) ([gregakinman](https://github.com/gregakinman)).
* مشاركة FixedHashMap الخاصة بـ hash join بوصفها عامل تصفية وقت التشغيل لـ join على جانب probe. عندما يكون جدول hash على جانب البناء من نوع FixedHashMap، أو يمكن تحويله إليه، يُنشر بوصفه عامل تصفية وقت التشغيل ويحل محل `Set`/`BloomFilter` الذي كان `BuildRuntimeFilterStep` سيثبّته بخلاف ذلك. يتحكم في ذلك الإعداد الجديد `enable_join_runtime_filter_shared_fixed_hash_table` (القيمة الافتراضية `true`). [#105640](https://github.com/ClickHouse/ClickHouse/pull/105640) ([wudidapaopao](https://github.com/wudidapaopao)).
* أصبح مسموحًا الآن بإعادة ترتيب DP JOIN مع النسخ المتماثلة المتوازية. [#105889](https://github.com/ClickHouse/ClickHouse/pull/105889) ([nickitat](https://github.com/nickitat)).
* تحسين خطة الاستعلام عند استخدام JOIN لعوامل تصفية وقت التشغيل (الإعداد `enable_join_runtime_filters` مفعّل افتراضيًا): أصبح نموذج تكلفة إعادة ترتيب join يتجاوز `WindowTransform` (وخطوات الخطة الأخرى التي تحافظ على الصفوف) في الشجرة الفرعية اليمنى، ويستخدم عدد الصفوف الأساسي وNDV لكل عمود بدلًا من افتراض عدم وجود إحصاءات. [#107229](https://github.com/ClickHouse/ClickHouse/pull/107229) ([UnamedRus](https://github.com/UnamedRus)).

<h3 id="query-optimization">
  تحسين الاستعلامات
</h3>

* تحسين أداء تحليل فهرس النصوص في عمليات البحث متعددة الرموز عبر تحسين التعامل مع الرموز النادرة. [#98226](https://github.com/ClickHouse/ClickHouse/pull/98226) ([CurtizJ](https://github.com/CurtizJ)).
* تحسين أداء الدوال `encrypt` و`decrypt` و`halfMD5` عبر تجنب عمليات البحث الضمنية عن موفّر OpenSSL لكل صف في OpenSSL 3.x. [#99105](https://github.com/ClickHouse/ClickHouse/pull/99105) ([thevar1able](https://github.com/thevar1able)).
* دمج كتل المصدر قبل `projection.calculate()` أثناء `MATERIALIZE PROJECTION` لتقليل عدد أجزاء الإسقاط المؤقتة والعبء الإضافي لعملية الدمج. تسريع بمقدار 3.4 مرات تقريبًا على جدول يضم 50 مليون صف. [#100047](https://github.com/ClickHouse/ClickHouse/pull/100047) ([amosbird](https://github.com/amosbird)).
* يستفيد المستخدمون الآن من تحسّن أداء عوامل تصفية وقت التشغيل التقريبية وفهارس مرشح Bloom. [#100201](https://github.com/ClickHouse/ClickHouse/pull/100201) ([cv4g](https://github.com/cv4g)).
* تسريع استعلامات `ORDER BY ... LIMIT BY` عبر تشغيل `LIMIT BY` ضمن كل تدفق فرز متوازٍ أثناء `Sort` عندما تكون أعمدة `LIMIT BY` بادئة لأعمدة `ORDER BY`. يقلل ذلك عدد الصفوف التي تمر عبر دمج الفرز النهائي وأي خطوات لاحقة في خط المعالجة. يتحكم في هذا التحسين الإعداد الجديد `query_plan_push_limit_by_into_sort` (مفعّل افتراضيًا). [#104000](https://github.com/ClickHouse/ClickHouse/pull/104000) ([nihalzp](https://github.com/nihalzp)).
* تقليل العبء الإضافي لكل استعلام في استعلامات SELECT البسيطة (التحليل النحوي والتحليل والتخطيط). على سبيل المثال، أصبح `SELECT count() FROM hits` من اتصال واحد أسرع بنحو 50%. [#104513](https://github.com/ClickHouse/ClickHouse/pull/104513) ([Algunenano](https://github.com/Algunenano)).
* تحسين أداء `bitmapContains` لحالات `groupBitmap` غير `UInt64` عبر تجنب استدعاءات `rb_max` المتكررة أثناء التحقق من النطاق. [#105960](https://github.com/ClickHouse/ClickHouse/pull/105960) ([niyue](https://github.com/niyue)).
* تحسين أداء الإدراج لأعمدة `LowCardinality` ذات فهارس `bloom_filter`. [#106410](https://github.com/ClickHouse/ClickHouse/pull/106410) ([EmeraldShift](https://github.com/EmeraldShift)).
* تحسين أداء الدالتين `L2DistanceTransposed` و`cosineDistanceTransposed` لنوع البيانات `QBit`. [#106701](https://github.com/ClickHouse/ClickHouse/pull/106701) ([rienath](https://github.com/rienath)).
* تحسين أداء تحليل الاستعلامات على الجداول ذات الأعمدة الكثيرة: تجنب حساب تجزئات عقد الأعمدة (التي تتضمن تعبير جدول المصدر بالكامل) عند عدم الحاجة إليها. أصبح تحليل الاستعلامات الفرعية المتداخلة `SELECT *` على جدول يضم نحو 1200 عمود أسرع بنحو 50 مرة. [#106957](https://github.com/ClickHouse/ClickHouse/pull/106957) ([novikd](https://github.com/novikd)).
* تحسين أداء الدوال `encrypt` و`decrypt` و`tryDecrypt` و`aes_encrypt_mysql` و`aes_decrypt_mysql` بما يصل إلى عشرة أضعاف، مع استعادة الأداء المفقود عند الترحيل من BoringSSL إلى OpenSSL 3.x ‏(24.4). [#107339](https://github.com/ClickHouse/ClickHouse/pull/107339) ([thevar1able](https://github.com/thevar1able)).
* تحسين تنفيذ `arrayElement` على `Array(LowCardinality(String))` ودوال LIKE للخرائط ذات المفاتيح أو القيم من نوع `LowCardinality(String)` عبر تجنب إنشاء السلاسل فعليًا دون حاجة. [#107450](https://github.com/ClickHouse/ClickHouse/pull/107450) ([EmeraldShift](https://github.com/EmeraldShift)).
* تقليل استخدام CPU وتحسين أداء تقييم فهرس التخطي للاستعلامات التي تصفي أعمدة `DateTime64`. [#107707](https://github.com/ClickHouse/ClickHouse/pull/107707) ([shankar-iyer](https://github.com/shankar-iyer)).
* تحسين أداء عمليات البحث عن السلاسل الفرعية غير الحساسة لحالة الأحرف، بما في ذلك `positionCaseInsensitiveUTF8` و`ILIKE` و`multiSearchAnyCaseInsensitiveUTF8`. [#107882](https://github.com/ClickHouse/ClickHouse/pull/107882) ([Algunenano](https://github.com/Algunenano)).
* إصلاح تراجع في معدل النقل بنحو 16% في برنامج الترميز `FPC` للأعداد ذات الفاصلة العائمة على ARM، والذي أُضيف عند بدء جداول التنبؤ الخاصة به باستخدام `VectorWithMemoryTracking`. [#108182](https://github.com/ClickHouse/ClickHouse/pull/108182) ([groeneai](https://github.com/groeneai)).
* إصلاح تراجع في الأداء كان فيه تنفيذ `DELETE` خفيف واحد يعطّل ذاكرة التخزين المؤقت لشروط الاستعلام للجدول بأكمله. وكانت الاستعلامات الانتقائية المتكررة على جدول سبق أن تأثر بحذف خفيف تتوقف عن تقليم الحبيبات وتلجأ إلى قراءة كل علامة. [#112947](https://github.com/ClickHouse/ClickHouse/pull/112947) ([fm4v](https://github.com/fm4v)).
* تقييد تكلفة تقدير انتقائية `col IN (...)` من إحصاءات الأعمدة، إذ كان ذلك قد يضيف مئات المللي ثانية إلى تخطيط استعلام واحد. لم يعد المقدِّر يشغّل الاستعلام الفرعي في `col IN (subquery)` لملء مجموعة لا يحتاج منها إلا إلى قيمة انتقائية واحدة، بل يتجاوز المجموعة غير المنشأة. وبالنسبة إلى مجموعة أكبر من الإعداد الجديد `statistics_max_set_size_for_exact_selectivity_estimation` (القيمة الافتراضية 10000)، تُستمد الانتقائية الآن من حجم المجموعة ونطاقها المحدود. [#114389](https://github.com/ClickHouse/ClickHouse/pull/114389) ([nickitat](https://github.com/nickitat)).

<h3 id="function-and-aggregation-performance">
  أداء الدوال والتجميع
</h3>

* تحسين تحليل فهرس المفتاح الأساسي للمفاتيح الأساسية الطويلة وعالية الكاردينالية. بالنسبة إلى المفتاح الأساسي الطويل، يعتمد زمن تحليل الفهرس الآن أساسًا على مدى تعقيد عامل تصفية الاستعلام (أي أعمدة المفتاح التي يستخدمها فعليًا)، لا على طول المفتاح الأساسي؛ لذا فإن توسيع مفتاح الفرز يضيف عبئًا ضئيلًا على تحليل الفهرس للاستعلامات التي تُجري التصفية على عدد قليل فقط من أعمدته. أما بالنسبة إلى مفتاح أساسي عالي الكاردينالية، حيث يحتفظ ClickHouse في الذاكرة ببادئة انتقائية فقط من أعمدة المفتاح ولا يحمّل الأعمدة اللاحقة، فإن تحليل الفهرس يعمل الآن على هذه البادئة الموجودة في الذاكرة فقط بدلًا من المفتاح بأكمله. هذا التحسين مفعّل افتراضيًا ويمكن إيقافه باستخدام الإعداد الجديد `use_lightweight_primary_key_index_analysis`. [#91836](https://github.com/ClickHouse/ClickHouse/pull/91836) ([nihalzp](https://github.com/nihalzp)).
* تقليل ذروة استخدام الذاكرة عند دمج نتائج التجميع الجزئية ثنائية المستوى ذات حالات التجميع الكبيرة (مثل `groupArray`)، عبر تحرير حالات المصدر لكل حاوية تدريجيًا أثناء الدمج بدلًا من إبقائها جميعًا في الذاكرة حتى اكتمال الدمج. [#102330](https://github.com/ClickHouse/ClickHouse/pull/102330) ([yurifedoseev](https://github.com/yurifedoseev)).
* تحسين جديد لـ `GROUP BY` للمفاتيح عالية الكاردينالية والموزعة بالتساوي، يوزّع الصفوف بين الخيوط باستخدام تجزئة مفتاح التجميع، بحيث يجمع كل خيط مجموعة فرعية منفصلة من المفاتيح دون مرحلة دمج. عيّن `enable_sharding_aggregator = 1` لتفعيله. [#104233](https://github.com/ClickHouse/ClickHouse/pull/104233) ([nihalzp](https://github.com/nihalzp)).
* تسريع استعلامات `LIMIT BY` على جداول `MergeTree` المقسمة إلى أقسام، بتشغيل `LIMIT BY` بالتوازي داخل تدفق كل قسم، بدلًا من دمج جميع التدفقات في تدفق واحد قبل تطبيق الحد. ينطبق ذلك عندما يكون تعبير القسم دالة حتمية لأعمدة `LIMIT BY`، بحيث لا يمكن لأي مجموعة `LIMIT BY` أن تمتد عبر قسمين. يتحكم فيه الإعداد الجديد `allow_limit_by_partitions_independently` (مفعّل افتراضيًا). [#105126](https://github.com/ClickHouse/ClickHouse/pull/105126) ([nihalzp](https://github.com/nihalzp)).
* تسريع استعلامات `SELECT ... LIMIT N BY <cols>` عندما تكون `<cols>` بادئة لمفتاح فرز الجدول، أو تصبح كذلك بعد أن يثبّت `WHERE col = const` الأعمدة البادئة. عند تفعيل ذلك، يقرأ `MergeTree` البيانات بترتيب المفتاح الأساسي، ويطبّق `LIMIT BY` أولًا التصفية في وضع التدفق باستخدام ذاكرة O(1) لكل تدفق مُرتب، مما يستبعد معظم البيانات، ثم يطبّق `LIMIT BY` العادي على البيانات المتبقية للحصول على النتيجة النهائية. يتحكم فيه الإعداد الجديد `optimize_limit_by_in_order` (مفعّل افتراضيًا). [#105135](https://github.com/ClickHouse/ClickHouse/pull/105135) ([nihalzp](https://github.com/nihalzp)).
* تسريع استعلامات `LIMIT BY` عبر إزالة تعبيرات المفاتيح الزائدة: يُحذف المفتاح الذي يكون دالة حتمية للمفاتيح الأخرى (مثلًا، يصبح `LIMIT 5 BY x, f(x)` هو `LIMIT 5 BY x`)، وتُستبدل الدالة الحقنية المطبقة على مفتاح بوسيطها (مثلًا، يصبح `LIMIT 5 BY toString(x)` هو `LIMIT 5 BY x`). يؤدي ذلك إلى تقييم عدد أقل من التعبيرات الأقل تكلفة لكل صف. يتحكم فيه الإعدادان الجديدان `optimize_limit_by_function_keys` و`optimize_injective_functions_in_limit_by`، وكلاهما مفعّل افتراضيًا. [#106818](https://github.com/ClickHouse/ClickHouse/pull/106818) ([nihalzp](https://github.com/nihalzp)).
* تسريع تحليل الاستعلامات التي تحتوي على عدد كبير من استدعاءات الدوال أو استدعاءات دوال متداخلة بعمق، عبر إزالة تجزئة زائدة لشجرة الاستعلام من ذاكرة التخزين المؤقت لحل الدوال. [#107516](https://github.com/ClickHouse/ClickHouse/pull/107516) ([novikd](https://github.com/novikd)).
* موازاة معالجة نتائج CTE تعاودي: لم تعد عملية `GROUP BY` أو أي عملية أخرى على نتيجة كبيرة لـ `WITH RECURSIVE` مقتصرة على خيط واحد. [#107694](https://github.com/ClickHouse/ClickHouse/pull/107694) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h3 id="storage-and-io-performance">
  أداء التخزين والإدخال/الإخراج
</h3>

* تتشارك عملاء S3 الذين يستخدمون نقطة النهاية والحاوية نفسيهما ذاكرة تخزين مؤقت واحدة، مما يجنب تكرار اكتشاف المنطقة. [#96802](https://github.com/ClickHouse/ClickHouse/pull/96802) ([zvonand](https://github.com/zvonand)).
* تحسين أداء النسخ في تخزين الكائنات عبر نسخ الكائنات الثنائية بالتوازي. [#105089](https://github.com/ClickHouse/ClickHouse/pull/105089) ([asya-ch](https://github.com/asya-ch)).
* تجنب قراءة محتويات الملفات عند استخدام تنسيق الإدخال One مع دوال الجداول الشبيهة بالملفات، مثل file وs3. [#105157](https://github.com/ClickHouse/ClickHouse/pull/105157) ([niyue](https://github.com/niyue)).
* يمكن للمفتاح الأساسي وفهارس التخطي في `MergeTree` الآن استبعاد الحبيبات عند استخدام عوامل تصفية تلتف فيها `ifNull` أو `coalesce` حول شرط، مثل `ifNull(key = 0, 0)` أو `coalesce(key = 0, 0)`. كانت هذه المسندات — التي غالبًا ما تنشئها مولدات الاستعلامات لتحويل مقارنة قد تكون بـ`NULL` إلى قيمة منطقية محددة — غير قابلة للتحليل سابقًا من جانب الفهارس، لذا لم يكن بالإمكان تخطي الحبيبات. يوسّع هذا إعداد `allow_key_condition_coalesce_rewrite` الحالي (المفعّل افتراضيًا). [#106272](https://github.com/ClickHouse/ClickHouse/pull/106272) ([andyzzhao](https://github.com/andyzzhao)).
* تحسين أداء فك الترميز لأعمدة Parquet من نوعي `FLOAT` و`DOUBLE` المشفرة بـ`BYTE_STREAM_SPLIT`. [#106376](https://github.com/ClickHouse/ClickHouse/pull/106376) ([Algunenano](https://github.com/Algunenano)).
* إصلاح حالات التوقف الطويلة عند تسجيل الدخول وبدء الاستعلامات في تخزين الوصول المكرّر عند تغيير عدد كبير من كيانات الوصول (سياسات الصفوف والأدوار والحصص وملفات تعريف الإعدادات) دفعة واحدة. تعيد الآن ذاكرة التخزين المؤقت لكل كيان احتسابها مرة واحدة لكل دفعة إشعارات بدلًا من مرة لكل كيان متغير، مما يزيل العمل التربيعي الذي كان قد يحتجز قفل الوصول لدقائق. [#107672](https://github.com/ClickHouse/ClickHouse/pull/107672) ([azat](https://github.com/azat)).
* إصلاح تراجع في الأداء أدى إلى توقف الجلب المسبق عند قراءة عدد كبير من الملفات الصغيرة من تخزين الكائنات عبر `s3` ودوال الجداول الأخرى، والرجوع إلى القراءات المتزامنة، مما أبطأ بشكل ملحوظ القراءات أحادية الخيط أو منخفضة التزامن لعدد كبير من الملفات الصغيرة. [#108872](https://github.com/ClickHouse/ClickHouse/pull/108872) ([fm4v](https://github.com/fm4v)).
* تفعيل الجلب المسبق الأولي للكائنات الصغيرة عندما تمر قراءات تخزين الكائنات عبر ذاكرة التخزين المؤقت لنظام الملفات (`filesystem_cache_name`). سابقًا، ظلت قراءات عدد كبير من الملفات الصغيرة، مثل إدخال `S3Queue`، متزامنة ومقيدة بزمن الاستجابة عند تفعيل ذاكرة التخزين المؤقت لنظام الملفات. [#109478](https://github.com/ClickHouse/ClickHouse/pull/109478) ([fm4v](https://github.com/fm4v)).
* تحسين `PREWHERE` للأعمدة الفرعية من `Map` عبر مراعاة حجمها على القرص. [#110623](https://github.com/ClickHouse/ClickHouse/pull/110623) ([Avogar](https://github.com/Avogar)).
* يُطبّق الآن التحويل الكسول على الاستعلامات التي تتضمن `FINAL` وعامل تصفية و`LIMIT` صغيرًا، حتى دون `ORDER BY` (لـ`ReplacingMergeTree`). [#110722](https://github.com/ClickHouse/ClickHouse/pull/110722) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* تقليل وقت CPU اللازم لإزالة التكرار عند تفريغ عمليات الإدراج غير المتزامن التي تمتد عبر العديد من الأقسام. [#111150](https://github.com/ClickHouse/ClickHouse/pull/111150) ([valerypetrov](https://github.com/valerypetrov)).
* إصلاح تراجع في أداء CPU للاستعلامات التي تنفذ عددًا كبيرًا من القراءات الصغيرة المستقلة من جزء `MergeTree` نفسه عندما يحتوي الجدول على أعمدة `LowCardinality`. كان الفحص الذي يحدد ما إذا كان الجزء يحتوي على قاموس مشترك واحد يمسح كل علامة في الجزء بأكمله لكل مهمة قراءة؛ أما الآن فيعثر على كل سلسلة من العلامات المتساوية باستخدام البحث الثنائي. كانت الاستعلامات بهذا النمط على الجداول ذات `index_granularity` صغير أبطأ بما يصل إلى عدة مرات منذ الإصدار 26.6. [#116134](https://github.com/ClickHouse/ClickHouse/pull/116134) ([groeneai](https://github.com/groeneai)).

<h3 id="memory-optimization">
  تحسين استخدام الذاكرة
</h3>

* خُفِّضت الذاكرة المستخدمة في البيانات الوصفية للنوع `Enum` بما يصل إلى 10 مرات في الجداول التي تحتوي على أعمدة `Enum`. تظل عمليات البحث من القيمة إلى الاسم مماثلة في الأداء أو أسرع، بينما قد تكون عمليات البحث من الاسم إلى القيمة أثناء التحليل وإلغاء التسلسل أبطأ. [#95668](https://github.com/ClickHouse/ClickHouse/pull/95668) ([qoega](https://github.com/qoega)).
* خُفِّض ذروة استخدام الذاكرة في `BACKUP` عبر عدم نسخ القائمة الداخلية لمعلومات الملفات عند كتابة إدخالات النسخ الاحتياطي، وهو أمر مهم للنسخ الاحتياطية التي تحتوي على ملايين الملفات. [#111162](https://github.com/ClickHouse/ClickHouse/pull/111162) ([jkartseva](https://github.com/jkartseva)).

<h2 id="improvements">
  تحسينات
</h2>

<h3 id="query-and-sql-improvements">
  الاستعلامات وSQL
</h3>

* تحديد الأعمدة حسب موضعها (بدلاً من أسمائها) عند إزالة الأعمدة غير المستخدمة من خطة الاستعلام. يتيح ذلك إزالة الأعمدة غير المستخدمة عند وجود أسماء أعمدة مكررة. [#100586](https://github.com/ClickHouse/ClickHouse/pull/100586) ([antaljanosbenjamin](https://github.com/antaljanosbenjamin)).
* إضافة `SESSION_USER` كاسم مستعار لـ `currentUser()` غير حساس لحالة الأحرف، لتحقيق التوافق مع PostgreSQL / معيار SQL. [#106081](https://github.com/ClickHouse/ClickHouse/pull/106081) ([takumihara](https://github.com/takumihara)).
* تقليل زمن استجابة الإلغاء للاستعلامات التي تعمل عبر بروتوكول MySQL: أصبح KILL QUERY يقاطع تسلسل المخرجات داخل جزء واحد بدلاً من انتظار إرسال الجزء بالكامل إلى العميل. [#106535](https://github.com/ClickHouse/ClickHouse/pull/106535) ([rvasin](https://github.com/rvasin)).
* إصلاح الخطأ `ILLEGAL_TYPE_OF_ARGUMENT` في الاستعلامات الموزعة التي تحتوي على `serialize_query_plan = 1` وتتضمن لامبدا ذات وسيطة ثابتة (مثل `arrayMap(t -> t.2, ...)`). تُحفظ الآن الأعمدة الثابتة لعُقد `INPUT` في `ActionsDAG` عند تسلسل خطة الاستعلام. [#107124](https://github.com/ClickHouse/ClickHouse/pull/107124) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* تقليل زمن استجابة الإلغاء للاستعلامات التي تعمل عبر بروتوكول MySQL: أصبح KILL QUERY يقاطع تسلسل المخرجات داخل جزء واحد بدلاً من انتظار إرسال الجزء بالكامل إلى العميل. [#107228](https://github.com/ClickHouse/ClickHouse/pull/107228) ([rvasin](https://github.com/rvasin)).

<h3 id="functions-improvements">
  الدوال
</h3>

* أصبح `EXPLAIN SYNTAX` ينسّق عوامل التشغيل باستمرار على هيئة استدعاءات دوال في مخرجات الشرح (مثل `plus(1, 2)` بدلًا من `1 + 2`). [#94681](https://github.com/ClickHouse/ClickHouse/pull/94681) ([1abdelhalim](https://github.com/1abdelhalim)).
* أصبح النمط بأسلوب PostgreSQL `expr OP SOME(array)` / `expr OP ALL(array)` (عندما لا يكون الطرف الأيمن استعلامًا فرعيًا) مدعومًا، ويُعاد تحويله إلى `has` / `NOT has` مع `=`/`<>`، أو إلى دوال لامبدا `arrayExists` / `arrayAll` مع عوامل المقارنة الأخرى. لا تُقبل `ANY` في صيغة المصفوفة لأن `any` هي أيضًا دالة تجميعية؛ استخدم `SOME` بدلًا منها. وتظل صيغة الاستعلام الفرعي لـ `ANY`/`SOME`/`ALL` تُحوَّل إلى `IN` / `NOT IN`. [#105129](https://github.com/ClickHouse/ClickHouse/pull/105129) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم الدوال `multiSearchAny` و`multiSearchAnyUTF8` و`multiMatchAny` في فهارس النص. كما تحسّن تحليل فهرس النص للدالة `match`: إذ بات بإمكان الأنماط ذات المجموعات البديلة تخطي المزيد من الحبيبات. [#106279](https://github.com/ClickHouse/ClickHouse/pull/106279) ([CurtizJ](https://github.com/CurtizJ)).
* تفرض الدالة `h3PolygonToCells` الآن الحد الأقصى لحجم المصفوفة على جميع المضلعات ضمن `MultiPolygon`، وتتحقق من رموز الإرجاع الخاصة بمكتبة H3، وترفض وسائط `MultiLineString` بدلًا من إرجاع نتيجة فارغة بصمت. [#106399](https://github.com/ClickHouse/ClickHouse/pull/106399) ([Algunenano](https://github.com/Algunenano)).
* يتحقق إلغاء تسلسل حالات الدوال التجميعية `contingency` و`cramersV` و`cramersVBiasCorrected` و`theilsU` الآن من أن الأعداد المخزنة تُشكّل جدول توافق متسقًا، ويُطلق استثناء `CORRUPTED_DATA` خلاف ذلك. [#107185](https://github.com/ClickHouse/ClickHouse/pull/107185) ([nihalzp](https://github.com/nihalzp)).
* تحسين تقدير الكاردينالية في محسّن خطة الاستعلام: يرث العمود الناتج من دالة حتمية ذات وسيطة واحدة (مثل `toYear(date)`) الآن عدد القيم المميزة لوسيطتها بوصفه حدًا أعلى، بدلًا من بقائه دون إحصاءات، مما يؤدي إلى إعادة ترتيب أدق لعمليات الربط. [#107757](https://github.com/ClickHouse/ClickHouse/pull/107757) ([davenger](https://github.com/davenger)).

<h3 id="table-engines-and-storage-improvements">
  محركات الجداول والتخزين
</h3>

* إصلاح مستهلكي محرك جداول Kafka الذين ظلوا يستخدمون فترة استطلاع قصيرة بعد إسناد القسم، بحيث يعودون إلى قيمة `kafka_poll_timeout_ms` المضبوطة ويتجنبون عمليات الاستطلاع الفارغة المفرطة، وأجزاء البيانات المُدرجة الأصغر، وأعباء الدمج الإضافية بعد إعادة التوازن. [#100431](https://github.com/ClickHouse/ClickHouse/pull/100431) ([sugaf1204](https://github.com/sugaf1204)).
* يمكن لمحركات جداول بحيرة البيانات، بما في ذلك `Iceberg` و`DeltaLake`، الآن استخدام أقراص S3 وAzure المغلفة بذاكرة تخزين مؤقت، مما يتيح للقراءات المتكررة الاستفادة من ذاكرة التخزين المؤقت لنظام الملفات. [#102017](https://github.com/ClickHouse/ClickHouse/pull/102017) ([RinChanNOWWW](https://github.com/RinChanNOWWW)).
* السماح بدمج عوامل التصفية المُضافة بعد التحديد الأولي لـ PREWHERE (دفع المسندات، أو عوامل التصفية وقت التشغيل، أو PREWHERE صريح مع WHERE يحدده المخطط) في PREWHERE القائم خلال تمريرة ثانية للمحسّن، بدلًا من بقائها كخطوة Filter منفصلة فوق قراءة MergeTree. [#105445](https://github.com/ClickHouse/ClickHouse/pull/105445) ([yariks5s](https://github.com/yariks5s)).
* أُضيف الإعداد `wait_for_part_commit_in_dependent_materialized_views`. عند تمكينه، يمكن لعرض مادي متسلسل ينضم مجددًا إلى مصدره رؤية الصف الذي يجري إدراجه حاليًا. [#105943](https://github.com/ClickHouse/ClickHouse/pull/105943) ([ahmadov](https://github.com/ahmadov)).
* دعم `EXTRACT(TIMEZONE_HOUR FROM dt)` و`EXTRACT(TIMEZONE_MINUTE FROM dt)` المتوافقين مع PostgreSQL لاستخراج جزئي الساعة والدقيقة من إزاحة المنطقة الزمنية، ودعم `EXTRACT(<unit> FROM INTERVAL n <unit>)` / `date_part('<unit>', INTERVAL n <unit>)` لاستخراج القيمة من فترة زمنية. [#106227](https://github.com/ClickHouse/ClickHouse/pull/106227) ([vinayakj592](https://github.com/vinayakj592)).
* تنفيذ `SYSTEM RESTART DISK <name>`: يعيد الآن تحميل البيانات الوصفية للقرص في الذاكرة ويفحص مجددًا أجزاء بيانات جداول النسخ المتماثلة للقراءة فقط الموجودة عليه. يتيح ذلك لنسخة متماثلة للقراءة فقط من جدول على تخزين `plain_rewritable` مشترك رصد البيانات التي كتبها خادم آخر عند الطلب، دون انتظار `refresh_parts_interval` أو إعادة تشغيل الخادم. [#106645](https://github.com/ClickHouse/ClickHouse/pull/106645) ([jrdi](https://github.com/jrdi)).
* تخطي تحميل ملفات العلامات غير الضروري للبيانات المشتركة المتقدمة في JSON. [#107051](https://github.com/ClickHouse/ClickHouse/pull/107051) ([Avogar](https://github.com/Avogar)).
* أُضيف الإعداد `materialized_postgresql_use_extended_date_and_time_types` الذي يُضبط عند الإنشاء لمحرك قاعدة البيانات `MaterializedPostgreSQL`. افتراضيًا (مُمكّن)، تُستنتج أعمدة PostgreSQL من نوع `date`/`timestamp` كأنواع `Date32`/`DateTime64`؛ ويؤدي ضبطه على `0` عند تنفيذ `CREATE DATABASE` إلى استنتاج أنواع `Date`/`DateTime` الأضيق. الإعداد غير منطبق على محرك جدول `MaterializedPostgreSQL`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* يمكن لـ MergeTree الآن قراءة تدفق مضغوط تستخدم كتله برامج ترميز مختلفة. هذا هو المتطلب المسبق من جهة القراءة لميزة الاختيار التكيفي لبرنامج الترميز. [#108592](https://github.com/ClickHouse/ClickHouse/pull/108592) ([rienath](https://github.com/rienath)).
* استخدام فهرس التخطي `bloom_filter` لمسندات `IN` على عمود مفهرس مباشرةً عندما يكون `transform_null_in = 1` ولا تحتوي مجموعة `IN` على قيمة `NULL`. سابقًا، كان يُتخطى الفهرس في مثل هذه الاستعلامات، مما يفرض إجراء فحص كامل. [#111329](https://github.com/ClickHouse/ClickHouse/pull/111329) ([groeneai](https://github.com/groeneai)).

<h3 id="s3-and-object-storage-improvements">
  S3 والتخزين الكائني
</h3>

* تسجيل الامتيازات في `system.query_log.used_privileges` لجميع عمليات التحقق من الوصول التي تم منحها، بما في ذلك تلك التي تمر عبر مسار `isGranted` غير المُطلق للاستثناءات (`checkAccessWithFilter`). سابقًا، لم تكن تُسجَّل سوى الامتيازات التي يُتحقق منها عبر نقاط الدخول المُطلقة للاستثناءات (`checkAccess` / `checkGrantOption`)، مما كان يجعل `READ ON FILE` / `READ ON S3` / `READ ON AZURE` / `READ ON URL` غير ظاهرة في سجل التدقيق لاستعلامات `DESCRIBE` و`CREATE TABLE AS` والاستعلامات المشابهة التي تستخدم دوال الجداول `file` / `s3` / `azure` / `url`. لم يتغير فرض التحكم بالوصول. [#104693](https://github.com/ClickHouse/ClickHouse/pull/104693) ([alexbakharew](https://github.com/alexbakharew)).
* إتمام طلب التحميل متعدد الأجزاء النهائي إلى S3 بشكل غير متزامن عبر متعقب المهام، بحيث يمكن أن يتداخل مع رفع الجزء الأخير بدلًا من تنفيذه تسلسليًا أثناء الإنهاء. [#105487](https://github.com/ClickHouse/ClickHouse/pull/105487) ([asya-ch](https://github.com/asya-ch)).
* زيادة القيمة الافتراضية للإعداد `persistent_processing_node_ttl_seconds` لـ `S3Queue` و`AzureQueue` من ساعة واحدة إلى ست ساعات، لمنع المعالجة طويلة الأمد أو المعاد تشغيلها من فقدان قفل الحاوية مبكرًا جدًا. [#106838](https://github.com/ClickHouse/ClickHouse/pull/106838) ([kssenii](https://github.com/kssenii)).
* دعم القيم `REDUCED_REDUNDANCY` و`STANDARD_IA` و`ONEZONE_IA` و`GLACIER_IR` و`EXPRESS_ONEZONE`، بالإضافة إلى `STANDARD` و`INTELLIGENT_TIERING`، للإعداد `s3_storage_class_name`. [#107251](https://github.com/ClickHouse/ClickHouse/pull/107251) ([adityaksolves](https://github.com/adityaksolves)).
* يُحدَّد مسار العينة لتقسيم Hive لجداول التخزين الكائني (مثل `S3`) عند الاستخدام الأول للجدول بدلًا من `CREATE`/`ATTACH`، لذا لم تعد نقطة نهاية يتعذر الوصول إليها تمنع إنشاء الجدول وبدء تشغيل الخادم. [#111842](https://github.com/ClickHouse/ClickHouse/pull/111842) ([evillique](https://github.com/evillique)).

<h3 id="settings-and-configuration-improvements">
  الإعدادات والضبط
</h3>

* جعل استراتيجية تقسيم Hive الافتراضية ضمن إعداد التوافق `file_like_engine_default_partition_strategy`. [#86746](https://github.com/ClickHouse/ClickHouse/pull/86746) ([kssenii](https://github.com/kssenii)).
* أُضيفت أربعة إعدادات جديدة لجداول MergeTree للتحكم في المعلمات الافتراضية للفهارس النصية: `text_index_dictionary_block_size`، و`text_index_dictionary_block_frontcoding_compression`، و`text_index_posting_list_block_size`، و`text_index_posting_list_codec`. تتيح هذه الإعدادات ضبط سلوك الفهرس النصي على مستوى الجدول دون تحديد المعلمات في كل تعريف فهرس. وتظل الوسيطات الصريحة لكل فهرس ذات أولوية. [#100626](https://github.com/ClickHouse/ClickHouse/pull/100626) ([CurtizJ](https://github.com/CurtizJ)).
* أُضيف الإعداد `output_format_pretty_use_nbsp_for_padding` لعرض المسافات الحاشية في تخطيط الجداول ضمن تنسيقات `Pretty` ذات النمط الجدولي على هيئة `U+00A0` NO-BREAK SPACE عندما تكون قيمة `output_format_pretty_grid_charset` هي `UTF-8`. يساعد ذلك مخرجات `Pretty` المنسوخة على الحفاظ على محاذاة الجداول في الأدوات التي تختزل المسافات العادية. يكون الإعداد معطلاً افتراضياً، وتحتفظ المخرجات بترميز المحارف `ASCII` بالمسافات العادية. [#103559](https://github.com/ClickHouse/ClickHouse/pull/103559) ([ashrithb](https://github.com/ashrithb)).
* دعم التوافق مع محلل الاستعلامات القديم عبر الإعداد `analyzer_compatibility_allow_non_aggregate_in_having`. عند تفعيله، تُنقل الشروط غير التجميعية من HAVING إلى WHERE. [#104232](https://github.com/ClickHouse/ClickHouse/pull/104232) ([novikd](https://github.com/novikd)).
* لم تعد عبارة `OPTIMIZE TABLE ... ON CLUSTER` وعمليات DDL الأخرى تتعطل عندما يكون لدى الجدول الهدف `table_readonly = 1`. يُصدر الإعداد الآن رمز خطأ مخصصاً جديداً هو `TABLE_IS_PERMANENTLY_READ_ONLY`، ويتعامل معه `DDLWorker` على أنه غير قابل لإعادة المحاولة، بخلاف الخطأ المؤقت `TABLE_IS_READ_ONLY` الذي ينشأ أثناء انقطاع الاتصال المؤقت بـ ZooKeeper في `ReplicatedMergeTree`. كما أصبح إعداد `table_readonly` مرفوضاً صراحةً لـ `ReplicatedMergeTree`، سواء عند الإنشاء أو عبر `ALTER MODIFY SETTING`. [#105109](https://github.com/ClickHouse/ClickHouse/pull/105109) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبح ترتيب الفرز التنازلي في مفاتيح فرز `MergeTree` (مثل `ORDER BY (time DESC, key)`) مدعوماً دائماً، ولم يعد يتطلب الإعداد التجريبي `allow_experimental_reverse_key` الذي أصبح متقادماً. [#106440](https://github.com/ClickHouse/ClickHouse/pull/106440) ([nikitamikhaylov](https://github.com/nikitamikhaylov)).
* دعم `keyed_by_normalized_query_hash` للحصص المعرّفة في إعدادات الخادم الثابتة (`users.xml`)، بما يتوافق مع صياغة DDL الحالية `CREATE QUOTA ... KEYED BY normalized_query_hash`. [#107654](https://github.com/ClickHouse/ClickHouse/pull/107654) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* لم يعد إعداد التوافق يطبق الإعدادات المتقادمة، لذا لا يعلّمها كمعدّلة ولا يصدر تحذيرات بشأنها. [#107737](https://github.com/ClickHouse/ClickHouse/pull/107737) ([UberDever](https://github.com/UberDever)).
* أُضيف الإعداد `analyzer_compatibility_multiple_joins_qualify_column_names` (وقيمته الافتراضية `false`). عند تفعيله، وإذا احتوى بند `FROM` في استعلام على عمليتي `JOIN` أو أكثر، تحاكي أسماء أعمدة النتائج التي ينتجها محلل الاستعلامات إعادة كتابة عمليات الربط المتعددة في المحلل القديم: تُسمى الأعمدة الموسعة من `*` بـ `<alias-or-table>.<column>`، ويحتفظ مرجع العمود غير المستعار في قائمة `SELECT` باسمه تماماً كما كُتب. يتيح ذلك للاستعلامات الخارجية التي تشير إلى مثل هذه الأسماء المؤهلة، مثل `SELECT ll.Date FROM (SELECT * FROM t AS ll JOIN t1 ON ... JOIN t2 ON ...)`، أن تعمل كما كانت مع المحلل القديم. كما أُصلح فقدان محلل الاستعلامات لأسماء أعمدة النتائج المؤهلة للأعمدة الموسعة من `*` عند استخدام `group_by_use_nulls` مع `ROLLUP` أو `CUBE` أو `GROUPING SETS`، إذ كان ذلك ينتج أسماء أعمدة نتائج مكررة ويعطل الإشارات الخارجية إلى تلك الأعمدة. [#110746](https://github.com/ClickHouse/ClickHouse/pull/110746) ([novikd](https://github.com/novikd)).
* أُضيف الإعداد `analyzer_compatibility_apply_final_to_all_joined_tables` لاستعادة السلوك القديم، حيث كان مُعدِّل `FINAL` في الجدول الواقع أقصى يسار عبارة JOIN يُطبَّق أيضًا على الجداول الأخرى المرتبطة. يُسجَّل هذا الإعداد في سجل تغييرات الإعدادات، لذا فإن استخدام `compatibility` مع إصدارات أقدم من 26.6 يستعيد الدلالات القديمة تلقائيًا. [#111589](https://github.com/ClickHouse/ClickHouse/pull/111589) ([fm4v](https://github.com/fm4v)).
* أُضيف إعداد MergeTree جديد باسم `text_index_version` للتحكم في إصدار التنسيق المخزَّن على القرص لفهارس النصوص: `v0_initial` أو `v1_with_codec` أو `v2_with_positions`. أثناء الترقية التدريجية أو قبل الرجوع إلى إصدار أقدم، اضبطه على إصدار أقدم لضمان استمرار الخوادم الأحدث في كتابة أجزاء فهرس النصوص بتنسيق يمكن للخوادم الأقدم قراءته؛ ويُعدّله إعداد التوافق تلقائيًا. [#111803](https://github.com/ClickHouse/ClickHouse/pull/111803) ([CurtizJ](https://github.com/CurtizJ)).

<h3 id="system-tables-and-monitoring-improvements">
  جداول النظام والمراقبة
</h3>

* تعبئة `used_storages` في `system.query_log` باسم محرك التخزين عند الاستعلام عن الجداول عبر DataLakeCatalog. [#100706](https://github.com/ClickHouse/ClickHouse/pull/100706) ([melvynator](https://github.com/melvynator)).
* إضافة الأعمدة `current_projection` و`current_projection_progress` و`projections_completed` و`projections_remaining` إلى `system.merges` لعرض تقدّم دمج الإسقاطات. [#102611](https://github.com/ClickHouse/ClickHouse/pull/102611) ([amosbird](https://github.com/amosbird)).
* باتت محركات الجداول تتضمن وثائق مضمنة يمكن الاطلاع عليها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.table_engines`. [#106177](https://github.com/ClickHouse/ClickHouse/pull/106177) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* باتت محركات قواعد البيانات تتضمن وثائق مضمنة يمكن الاطلاع عليها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.database_engines`. [#106178](https://github.com/ClickHouse/ClickHouse/pull/106178) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* باتت أنواع البيانات تتضمن وثائق مضمنة يمكن الاطلاع عليها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.data_type_families`. [#106180](https://github.com/ClickHouse/ClickHouse/pull/106180) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* باتت تنسيقات الإدخال/الإخراج تتضمن وثائق مضمنة يمكن الاطلاع عليها عبر الأعمدة الجديدة `description` و`examples` و`introduced_in` و`related` في جدول `system.formats`. [#106181](https://github.com/ClickHouse/ClickHouse/pull/106181) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* باتت موفّقات الدوال التجميعية تتضمن وثائق مضمنة يمكن الاطلاع عليها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.aggregate_function_combinators`. [#106185](https://github.com/ClickHouse/ClickHouse/pull/106185) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُضيف جدول جديد `system.data_skipping_index_types` يسرد أنواع فهارس تخطي البيانات المتاحة، إلى جانب الوثائق المضمنة (`description` و`syntax` و`examples` و`introduced_in` و`related`). [#106186](https://github.com/ClickHouse/ClickHouse/pull/106186) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُضيف جدول جديد `system.disk_types` يسرد أنواع الأقراص المتاحة، إلى جانب الوثائق المضمنة (`description` و`syntax` و`examples` و`introduced_in` و`related`). [#106187](https://github.com/ClickHouse/ClickHouse/pull/106187) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُضيفت المقاييس غير المتزامنة `TotalUncompressedBytesOfMergeTreeTables` و`TotalUncompressedBytesOfMergeTreeTablesSystem`، التي تُبلّغ عن إجمالي الحجم غير المضغوط للبيانات المخزنة في جداول عائلة MergeTree. [#106364](https://github.com/ClickHouse/ClickHouse/pull/106364) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إضافة حدث الملف التعريفي `GlobalMemoryLimitExceeded` ليتمكن المشغّلون من مراقبة حالات بلوغ حد الذاكرة على مستوى الخادم. [#106466](https://github.com/ClickHouse/ClickHouse/pull/106466) ([sacheendra](https://github.com/sacheendra)).
* أُضيفت المقاييس غير المتزامنة `ExecutableUserDefinedFunctionMemoryResidentBytes` و`ExecutableUserDefinedFunctionProcesses`، التي تُبلّغ عن الذاكرة المقيمة (`VmRSS`) وعدد العمليات النشطة للدوال المعرفة من قبل المستخدم `executable` و`executable_pool`، بما في ذلك العمليات التابعة وعمّال التجمع الخاملون. [#107300](https://github.com/ClickHouse/ClickHouse/pull/107300) ([HanziJiang](https://github.com/HanziJiang)).
* أُضيف `show_remote_databases_in_system_tables`، وهو مفعّل افتراضيًا، للسماح للمستخدمين بإخفاء قواعد بيانات `MySQL` و`PostgreSQL` من `system.tables` و`system.columns` و`system.completions`. ويظل `show_data_lake_catalogs_in_system_tables` مقتصرًا على التحكم في ظهور `DataLakeCatalog` فقط. [#104416](https://github.com/ClickHouse/ClickHouse/pull/104416) ([pamarcos](https://github.com/pamarcos)). [#109082](https://github.com/ClickHouse/ClickHouse/pull/109082) ([pamarcos](https://github.com/pamarcos)).

<h3 id="clickhouse-keeper-improvements">
  ClickHouse Keeper
</h3>

* تغييرات متنوعة على Keeper تجعل أداءه أسرع إجمالًا بنحو الضعف (تحسين التجميع على دفعات، وإرسال الرسائل إلى القائد عبر خط أنابيب، وإلحاق السجلات عبر خط أنابيب). [#101757](https://github.com/ClickHouse/ClickHouse/pull/101757) ([al13n321](https://github.com/al13n321)).
* إضافة المزيد من أحداث ملف تعريف Keeper (من جهة الخادم ومن جهة العميل) للمراقبات. [#105336](https://github.com/ClickHouse/ClickHouse/pull/105336) ([scanhex12](https://github.com/scanhex12)).
* إضافة جدول `system.keeper_snapshots` جديد خاص بـ Keeper يتضمن معلومات عن لقطات ClickHouse Keeper المحلية. [#105571](https://github.com/ClickHouse/ClickHouse/pull/105571) ([mstetsyuk](https://github.com/mstetsyuk)).
* إضافة جدول `system.keeper_changelogs` جديد خاص بـ Keeper يتضمن معلومات عن ملفات سجل التغييرات المحلية لـ ClickHouse Keeper (سجل Raft). [#105617](https://github.com/ClickHouse/ClickHouse/pull/105617) ([mstetsyuk](https://github.com/mstetsyuk)).
* إضافة جدول `system.keeper_cluster` خاص بـ Keeper. يحتوي على صف واحد لكل عضو في مجموعة Raft كما يراه Keeper الحالي. [#105646](https://github.com/ClickHouse/ClickHouse/pull/105646) ([mstetsyuk](https://github.com/mstetsyuk)).
* تقليل ذروة استخدام الذاكرة عند تطبيق اللقطات المستلمة في ClickHouse Keeper باستخدام `KeeperMemoryStorage`. [#105851](https://github.com/ClickHouse/ClickHouse/pull/105851) ([antonio2368](https://github.com/antonio2368)).
* إضافة إعدادات `coordination_settings` في Keeper للحد من قبول إدخالات السجل غير المثبتة في `NuRaft` وخنق الفحص العكسي لعمليات إلحاق الإدخالات. [#106108](https://github.com/ClickHouse/ClickHouse/pull/106108) ([antonio2368](https://github.com/antonio2368)).

<h3 id="memory-management-improvements">
  إدارة الذاكرة
</h3>

* أُصلحت رسائل أخطاء البنية التي قد تتضمن بايتات من ذاكرة مجاورة بعد أن يتراجع المُحلِّل إلى ما بعد نهاية تعليمة. [#105086](https://github.com/ClickHouse/ClickHouse/pull/105086) ([groeneai](https://github.com/groeneai)).
* خُفِّض استخدام الذاكرة عند فتح نسخة احتياطية (من أجل `RESTORE` أو كأساس لنسخة احتياطية تزايدية باستخدام `BACKUP`). تُحلَّل الآن البيانات الوصفية `.backup` كتدفق بدلاً من تحميلها في شجرة مستند XML داخل الذاكرة، مما يتجنب تخصيص شجرة DOM بحجم عدة غيغابايتات للنسخ الاحتياطية الكبيرة، ولا سيما التزايدية. [#109107](https://github.com/ClickHouse/ClickHouse/pull/109107) ([jkartseva](https://github.com/jkartseva)).
* خُفِّض ذروة استخدام الذاكرة عند إنهاء `BACKUP`. لم تعد كتابة البيانات الوصفية للنسخة الاحتياطية تنسخ معلومات جميع الملفات إلى متجه مؤقت (وهو ما كان يستهلك مؤقتًا عدة غيغابايتات للنسخ الاحتياطية التي تضم ملايين الملفات)؛ بل تُكرَّر المعلومات الآن في موضعها. [#109861](https://github.com/ClickHouse/ClickHouse/pull/109861) ([jkartseva](https://github.com/jkartseva)).

<h3 id="data-formats-improvements">
  تنسيقات البيانات
</h3>

* يمكن للمستخدمين الآن إدراج حقول Avro Fixed لمتغيرات الأعداد الصحيحة ذات 8 بت/16 بت/32 بت/64 بت. [#98139](https://github.com/ClickHouse/ClickHouse/pull/98139) ([patrickpichler](https://github.com/patrickpichler)).
* يعيد تنسيق `AvroConfluent` الآن محاولة الاتصال بعميل HTTP لـ Confluent Schema Registry عند حدوث حالات فشل عابرة (انتهاء مهلة النقل، رفض الاتصال، أخطاء DNS، وHTTP `5xx`/`408`/`429`) باستخدام تراجع أُسّي، بدلاً من إلغاء عملية INSERT عند أول خلل في الشبكة. تتحكم الإعدادات الجديدة `format_avro_schema_registry_max_retries` (القيمة الافتراضية `5`) و`format_avro_schema_registry_retry_initial_backoff_ms` (القيمة الافتراضية `100`) في هذه السياسة. وتظل أخطاء التحقق من المخطط (HTTP `409` وAvro JSON غير السليم) قاتلة. [#106661](https://github.com/ClickHouse/ClickHouse/pull/106661) ([groeneai](https://github.com/groeneai)).
* حُفظت رموز الخطأ الأصلية لـ ClickHouse للأخطاء المُعادة عبر Apache Arrow. [#107267](https://github.com/ClickHouse/ClickHouse/pull/107267) ([azat](https://github.com/azat)).

<h3 id="named-collections-and-dictionaries">
  المجموعات المسماة والقواميس
</h3>

* أُضيف إعداد `enable_compression` إلى دالة الجدول `mysql` ومحرك الجدول `MySQL` ومحرك قاعدة البيانات `MySQL` ومصدر القاموس `SOURCE(MYSQL)` والمجموعات المسماة. عند تفعيله، يتفاوض ClickHouse على ضغط على مستوى بروتوكول MySQL لجميع البيانات المنقولة عبر الاتصال. [#103229](https://github.com/ClickHouse/ClickHouse/pull/103229) ([bernardlim](https://github.com/bernardlim)).
* أُضيف جدول جديد `system.dictionary_layouts` يسرد مخططات القواميس المتاحة إلى جانب التوثيق المضمّن (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106182](https://github.com/ClickHouse/ClickHouse/pull/106182) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُضيف جدول جديد `system.dictionary_sources` يسرد مصادر القواميس المتاحة إلى جانب التوثيق المضمّن (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106184](https://github.com/ClickHouse/ClickHouse/pull/106184) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبح نوع التخزين الفعلي للمجموعات المسماة متاحًا الآن باسم `named_collections_storage.type` في `system.server_settings` وعبر `getServerSetting('named_collections_storage_type')`. [#111806](https://github.com/ClickHouse/ClickHouse/pull/111806) ([pamarcos](https://github.com/pamarcos)).

<h3 id="other-improvements">
  تحسينات أخرى
</h3>

* تحسين تلميحات أسماء الجداول في رسائل الخطأ: لم تعد تقترح الاسم نفسه تمامًا، وأصبحت تتضمن اسم قاعدة البيانات في الاقتراح (مثلًا، "هل تقصد other\_db.my\_table؟"). [#95116](https://github.com/ClickHouse/ClickHouse/pull/95116) ([matt-metivier](https://github.com/matt-metivier)).
* تحسين رسالة الخطأ الخاصة بالمعرّفات غير المحلولة في الاستعلامات التي لا تتضمن عبارة FROM، بحيث تقترح إضافتها. [#101769](https://github.com/ClickHouse/ClickHouse/pull/101769) ([Onyx2406](https://github.com/Onyx2406)).
* إصلاح عدم استخدام `PREWHERE` مع استعلام فرعي `IN` على أعمدة المفتاح الأساسي لفهرس المفتاح الأساسي في استبعاد الحبيبات، مما كان يؤدي إلى مسح الجدول بالكامل بدلًا من قراءة الحبيبات ذات الصلة فقط. [#102570](https://github.com/ClickHouse/ClickHouse/pull/102570) ([nikitamikhaylov](https://github.com/nikitamikhaylov)).
* أصبحت العروض المادية القابلة للتحديث تواصل التحديث بعد استبدال جدولها الهدف باستخدام `EXCHANGE TABLES` وحذف الجدول القديم. سابقًا، كان من الممكن أن تفشل عمليات التحديث بسبب استثناء `UNKNOWN_TABLE` لأنها احتفظت بـ UUID الخاص بالجدول القديم. [#102724](https://github.com/ClickHouse/ClickHouse/pull/102724) ([seva-potapov](https://github.com/seva-potapov)).
* تفعيل `enable_join_transitive_predicates` افتراضيًا. [#103724](https://github.com/ClickHouse/ClickHouse/pull/103724) ([davenger](https://github.com/davenger)).
* أصبح العرض المادي القابل للتحديث يدعم الآن `REFRESH DEPENDS ON` لتشغيل التحديثات عند تحديث عرض مادي قابل للتحديث آخر، بدلًا من الاعتماد على جدول زمني. (كان `REFRESH EVERY ... DEPENDS ON` موجودًا بالفعل، لكن لم يكن بالإمكان استخدامه بصورة موثوقة لحالة الاستخدام هذه.) راجع وثائق CREATE MATERIALIZED VIEW. [#104440](https://github.com/ClickHouse/ClickHouse/pull/104440) ([al13n321](https://github.com/al13n321)).
* إضافة خيار `EXPLAIN PIPELINE` لدمج سلاسل المعالجات المتكررة. [#104662](https://github.com/ClickHouse/ClickHouse/pull/104662) ([niyue](https://github.com/niyue)).
* إضافة `REGEXP_SUBSTR` كاسم مستعار لـ `regexpExtract` غير حساس لحالة الأحرف، للتوافق مع Oracle/MySQL/Snowflake. [#105122](https://github.com/ClickHouse/ClickHouse/pull/105122) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إضافة `date_part('unit', expr)` كصياغة مختصرة لـ `EXTRACT(unit FROM expr)`. جميع أنواع Interval القياسية والإضافات الخاصة بـ PostgreSQL (`epoch`, `dow`, `doy`, `isodow`, `isoyear`, `century`, `decade`, `millennium`) مدعومة. [#105127](https://github.com/ClickHouse/ClickHouse/pull/105127) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبح `QueryConditionCache` يسجل الآن الحبيبات المستبعدة كلًّا على حدة، حتى ضمن دفعات القراءة التي تجتاز PREWHERE جزئيًا، مما يقلل عدد العلامات التي تعيد الاستعلامات اللاحقة ذات الشرط نفسه قراءتها. [#105335](https://github.com/ClickHouse/ClickHouse/pull/105335) ([hanfei1991](https://github.com/hanfei1991)).
* إضافة دعم BFloat16 لدوال الشروط الرقمية. [#105391](https://github.com/ClickHouse/ClickHouse/pull/105391) ([mohhddhassan](https://github.com/mohhddhassan)).
* دعم الإحصاءات الأساسية، وهي إحصاءات مدمجة لكل عمود تخزن القيم الرقمية الدنيا/العليا، ومتوسط طول السلاسل النصية، وأعداد NULL عند الاقتضاء. [#106048](https://github.com/ClickHouse/ClickHouse/pull/106048) ([hanfei1991](https://github.com/hanfei1991)).
* دعم المعدّل الختامي `NULL` / `NOT NULL` في `ALTER TABLE ... ADD/MODIFY COLUMN`، بما يتوافق مع `CREATE TABLE`. [#106150](https://github.com/ClickHouse/ClickHouse/pull/106150) ([takumihara](https://github.com/takumihara)).
* يجمع مُحسِّن PREWHERE الآن المترابطات التي تشير إلى مجموعة الأعمدة نفسها قبل تقدير الانتقائية، بحيث تُقيَّم شروط مثل `a > 2500 AND a < 2502` معًا كنطاق موحّد (انتقائية تقارب 0.02%) بدلًا من تقييمها كمسندين مستقلين (انتقائية تقارب 50% لكل منهما). يوفّر ذلك ترتيبًا أدق لشروط PREWHERE عند توفر إحصاءات الأعمدة. [#106337](https://github.com/ClickHouse/ClickHouse/pull/106337) ([hanfei1991](https://github.com/hanfei1991)).
* لا تطبع المقدمة "Stack trace (when copying this message, always include the lines below):" في رسائل الاستثناءات إذا كان تتبّع المكدس فارغًا بالفعل. [#106524](https://github.com/ClickHouse/ClickHouse/pull/106524) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `CREATE TABLE ... CLONE AS (and REPLACE / ATTACH PARTITION ... FROM)` على الأقراص المشفّرة، إذ كان ينسخ البيانات بدلًا من إنشاء روابط صلبة لها. [#106731](https://github.com/ClickHouse/ClickHouse/pull/106731) ([nikitamikhaylov](https://github.com/nikitamikhaylov)).
* تم إصلاح قواعد بيانات `DataLakeCatalog` ذات `catalog_type = 'onelake'` لتقرأ بيانات الجداول باستخدام نقطة نهاية OneLake Blob (`.blob.fabric.microsoft.com`) افتراضيًا. اضبط `onelake_use_blob_endpoint = false` للإبقاء على سلوك نقطة نهاية DFS السابقة (`.dfs.fabric.microsoft.com`). [#106843](https://github.com/ClickHouse/ClickHouse/pull/106843) ([scanhex12](https://github.com/scanhex12)).
* خُفِّض حمل CPU الناتج عن التسجيل غير المتزامن عند ارتفاع معدلات السجل، وذلك بإشعار مستهلك السجل فقط عند انتقال قائمة الانتظار من فارغة إلى غير فارغة، بدلًا من إشعاره عند كل رسالة. [#107352](https://github.com/ClickHouse/ClickHouse/pull/107352) ([nikitamikhaylov](https://github.com/nikitamikhaylov)).
* تم إصلاح قراءة طول `auth_response` في مصافحة MySQL، إذ كانت بايتات الطول ذات القيمة `>= 128` تُفسَّر كقيمة بحجم عدة غيغابايت لأنها قُرئت باعتبارها `char` موقّعًا. [#107384](https://github.com/ClickHouse/ClickHouse/pull/107384) ([uwezkhan](https://github.com/uwezkhan)).
* يربط `MaterializedPostgreSQL` الآن أعمدة PostgreSQL من النوع `numeric(p, 0)` التي تتجاوز دقتها 76 (مثل `numeric(78, 0)` المستخدم للأعداد الصحيحة ذات 256 بت) بالنوع `Int256` في ClickHouse بدلًا من الفشل برسالة "Precision too big". وتُرفض القيم التي لا تتسع في `Int256` برسالة خطأ واضحة. [#107431](https://github.com/ClickHouse/ClickHouse/pull/107431) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبح `Nullable(Tuple(...))` الآن في مرحلة Beta. وهو معطّل افتراضيًا؛ اضبط `enable_nullable_tuple_type = 1` لاستخدامه. [#107754](https://github.com/ClickHouse/ClickHouse/pull/107754) ([nihalzp](https://github.com/nihalzp)).
* لم تعد عمليات الإدراج غير المتزامنة تسجّل القائمة الكاملة من `query_id`s عند مستوى `trace`/`debug`، إذ كان ذلك قد يؤدي، منذ الإصدار 26.2، إلى تضخم `text_log` في الخدمات ذات حركة الإدراج غير المتزامن الكثيفة. وأصبحت الأسطر التفصيلية الآن عند مستوى `test`. [#107852](https://github.com/ClickHouse/ClickHouse/pull/107852) ([CheSema](https://github.com/CheSema)).
* خُفِّض استخدام البيانات الوصفية لذاكرة التخزين المؤقت لنظام الملفات من خلال تحرير إدخالات priority غير الصالحة فورًا. [#107903](https://github.com/ClickHouse/ClickHouse/pull/107903) ([kssenii](https://github.com/kssenii)).
* يُستخدم الآن فهرس التخطي `bloom_filter` على عمود `Array` مع `arrayJoin(column) IN (set)` و`arrayJoin(column) GLOBAL IN (set)` و`arrayJoin(column) = const`، بالطريقة نفسها التي كان يُستخدم بها بالفعل مع `hasAny(column, set)` و`has(column, const)`. في السابق، كانت صيغ `arrayJoin ...` هذه تلجأ إلى فحص كامل. [#109536](https://github.com/ClickHouse/ClickHouse/pull/109536) ([groeneai](https://github.com/groeneai)).
* يستخدم `IS NOT DISTINCT FROM` و`IS TRUE` الآن فهارس المفتاح الأساسي وminmax لتجاوز الحبيبات، كما في حالة `=`. سابقًا، كان `k IS NOT DISTINCT FROM 42` و`(k = 42) IS TRUE` يفحصان جميع الحبيبات. [#110006](https://github.com/ClickHouse/ClickHouse/pull/110006) ([groeneai](https://github.com/groeneai)).

<h2 id="bug-fixes">
  إصلاحات الأخطاء
</h2>

<h3 id="join-fixes">
  إصلاحات JOIN
</h3>

* إصلاح دالة `nested` (المستخدمة داخليًا بواسطة `ARRAY JOIN`) التي كانت تزيل `LowCardinality` من أنواع الأعمدة، مما كان يؤدي إلى تحوّل `Array(LowCardinality(String))` إلى `Array(String)` في المخرجات. [#98974](https://github.com/ClickHouse/ClickHouse/pull/98974) ([Onyx2406](https://github.com/Onyx2406)).
* إصلاح إعادة ترتيب عمليات الربط التي كانت تُسقط بصمت الصفوف غير المتطابقة من `RIGHT`/`LEFT JOIN` عند ربطها بفاصلة (ربط تبادلي) مع جدول آخر، مثل `t1 RIGHT JOIN t2 ON t1.c = t2.c, t3`. كان الاستعلام يُرجع سابقًا نتيجة الربط الداخلي بدلًا من نتيجة الربط الخارجي. [#101684](https://github.com/ClickHouse/ClickHouse/pull/101684) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ `LOGICAL_ERROR` ("المنفذ غير متصل"، الرمز 49) الذي قد يحدث عند تنفيذ استعلامات تتضمن `VIEW` مع تجميع داخل `JOIN`. [#102574](https://github.com/ClickHouse/ClickHouse/pull/102574) ([Ergus](https://github.com/Ergus)).
* إصلاح تجاهل `max_rows_to_transfer` و`max_bytes_to_transfer` بصمت في استعلامات `GLOBAL IN` و`GLOBAL JOIN` ضمن المحلل الجديد. تُطلق الإعدادات الآن `SET_SIZE_LIMIT_EXCEEDED` (أو تُوقِف التنفيذ، بحسب `transfer_overflow_mode`) عندما يتجاوز الجدول الخارجي المُجسَّد الحد المُهيأ، بما يطابق سلوك المحلل القديم. [#104119](https://github.com/ClickHouse/ClickHouse/pull/104119) ([groeneai](https://github.com/groeneai)).
* إصلاح نتائج خاطئة أو فشل في استعلامات `JOIN` التي تستخدم `join_algorithm = 'direct'` مع جدول `MergeTree` على الجانب الأيمن، عندما تعيد عملية التحسين ترتيب أعمدة البحث. [#104174](https://github.com/ClickHouse/ClickHouse/pull/104174) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ كانت فيه الاستعلامات التي تجمع بين `arrayJoin` و`ORDER BY ... LIMIT` بعد `JOIN` قد تُرجع صفر صفوف بصمت. لم تعد عملية تحسين خطة الاستعلام التي ترفع تقييم الدالة فوق `SortingStep` تُطبَّق عندما يحتوي التعبير المرفوع على `arrayJoin`، إذ يمكن لـ`arrayJoin` تغيير عدد الصفوف. [#104558](https://github.com/ClickHouse/ClickHouse/pull/104558) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ منطقي في `LIMIT BY` السالب في بعض الحالات عند استخدامه مع `ARRAY JOIN`. [#105403](https://github.com/ClickHouse/ClickHouse/pull/105403) ([nihalzp](https://github.com/nihalzp)).
* إضافة إعداد توافق جديد `analyzer_compatibility_prefer_alias_over_subcolumn` (معطّل افتراضيًا). عند تفعيله، يفضّل المحلل الجديد تفسير بادئة الاسم المستعار على مطابقات الأعمدة الفرعية لـ`Tuple` أو الأعمدة المنقطة للمعرّفات متعددة الأجزاء، مستعيدًا سلوك المفسّر السابق. يتجنب ذلك أخطاء `AMBIGUOUS_IDENTIFIER` (وما يتصل بها) عندما يربط استعلام جدولًا يطابق اسمه جدولًا داخليًا في تعبير جدول شائع/استعلام فرعي يستخدم `SELECT *` على ربط، إذ قد تتسرب أعمدة أُعيدت تسميتها باستخدام العلامة النجمية (مثل `b.id`) بمعرّفات الجدول الداخلي إلى النطاق الخارجي. [#105491](https://github.com/ClickHouse/ClickHouse/pull/105491) ([vdimir](https://github.com/vdimir)).
* إصلاح نتائج قد تكون خاطئة لاستعلامات تجمع بين ربط خارجي وربط داخلي لاحق يشير إلى الجانب الذي يوفّر قيم `NULL` في الربط الخارجي. كان من الممكن أن تختار إعادة ترتيب عمليات الربط خطة تنقل شروط الربط الداخلي إلى عبارة `ON` الخاصة بالربط الخارجي. [#105992](https://github.com/ClickHouse/ClickHouse/pull/105992) ([vdimir](https://github.com/vdimir)).
* تحسين التوافق مع المحلل القديم. إذا كان للجدول أعمدة مثل `x.a Array, x.b Array, x String`، تُفضّل المصفوفات في `ARRAY JOIN x`. [#106069](https://github.com/ClickHouse/ClickHouse/pull/106069) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح استثناء في استعلامات `INNER JOIN` مع جدول `MergeTree` فارغ على الجانب الأيسر عند تفعيل `enable_parallel_replicas` و`query_plan_use_new_logical_join_step` و`query_plan_optimize_join_order_algorithm = 'greedy'`. [#106338](https://github.com/ClickHouse/ClickHouse/pull/106338) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح خطأ منطقي (`Left and right columns have same names`) في مُحسِّن ترتيب الربط، قد يحدث في عمليات الربط المنفذة باستخدام النسخ المتماثلة المتوازية عندما تشترك علاقتان في مخطط الربط في أسماء الأعمدة. [#106418](https://github.com/ClickHouse/ClickHouse/pull/106418) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` (`Invalid number of rows in Chunk`) في `JoiningTransform` لعملية `LEFT JOIN` ذات مفاتيح فريدة في الجانب الأيمن وشرط `ON` مختلط وقيمة صغيرة لـ `max_joined_block_size_rows`. [#106928](https://github.com/ClickHouse/ClickHouse/pull/106928) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء (`LOGICAL_ERROR`) في مرشح JOIN أثناء التشغيل عندما يحتوي مفتاح الربط على نوع `Variant` أو `Dynamic` متداخل داخل `Tuple` أو `Array` أو `Map`، ويحتوي الجانب الأيمن من الربط على قيمة مميزة واحدة. [#106931](https://github.com/ClickHouse/ClickHouse/pull/106931) ([groeneai](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` (`Expected the argument N to have X rows, but it has Y`) عند تنفيذ دالة على عمود `Dynamic` ناتج عن JOIN على `Dynamic` (مثل الصفوف غير المنضمة في `RIGHT`/`FULL JOIN`، أو استعلام فرعي `EXISTS` مترابط أُزيل ترابطه وحُوِّل إلى ربط). [#107095](https://github.com/ClickHouse/ClickHouse/pull/107095) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء خطأ منطقي `Bad cast from type DB::IColumn const* to DB::ColumnNullable const*` عندما تُمرَّر نجمة مؤهلة (`t.*`) عبر مفتاح `JOIN ... USING` إلى دالة تجميعية، ويحتوي الجانب الآخر من ربط خارجي على مفتاح `Nullable` (مع `join_use_nulls = 0`). [#107129](https://github.com/ClickHouse/ClickHouse/pull/107129) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Unexpected return type from equals. Expected Nullable(UInt8). Got UInt8`) عندما يدفع تحسين تمرير الفصل المنطقي (المسند الجزئي) شرطًا عبر مفتاح `USING` وسّعه JOIN. وإصلاح أيضًا تعطل للخادم (خطأ تجزئة) في المحلل عند حل المعرّفات في استعلامات `JOIN ... USING` التي تحتوي على فروع `if`/`multiIf` قابلة للطي الثابت وتشير إلى معرّفات غير معروفة. [#107407](https://github.com/ClickHouse/ClickHouse/pull/107407) ([groeneai](https://github.com/groeneai)).
* إصلاح مرشح JOIN أثناء التشغيل الذي كان ينتج نتائج خاطئة لأعمدة JSON. [#107663](https://github.com/ClickHouse/ClickHouse/pull/107663) ([Avogar](https://github.com/Avogar)).
* إصلاح استثناء خطأ منطقي `Bad cast from type DB::ColumnNullable to DB::ColumnVector<...>` عندما تختار نجمة مؤهلة (`t.*`) مفتاح `JOIN USING` ويكون هذا الربط متداخلًا ضمن ربط `PASTE`/`CROSS`/الفاصلة أو ربط `ON` خارجي، مع `join_use_nulls = 0`. [#108043](https://github.com/ClickHouse/ClickHouse/pull/108043) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ في المحلل الجديد، حيث كان FINAL على أحد جداول JOIN (مثل `FROM t1 FINAL JOIN t2`) يُطبَّق بشكل غير صحيح على الجداول الأخرى المنضمة أيضًا، مما قد يجعل هذه الاستعلامات أبطأ. [#108979](https://github.com/ClickHouse/ClickHouse/pull/108979) ([vdimir](https://github.com/vdimir)).
* مع `analyzer_compatibility_join_using_top_level_identifier = 1`، يمكن الآن حل معرّف في `JOIN ... USING` من اسم مستعار معرّف لتعبير فرعي داخل قائمة SELECT (مثلًا، `SELECT uniqExact(lower(x) AS id) FROM t1 JOIN t2 USING (id)`)، بما يطابق سلوك المحلل القديم. سابقًا، لم تكن تُؤخذ في الاعتبار سوى الأسماء المستعارة للإسقاطات ذات المستوى الأعلى، وكانت هذه الاستعلامات تفشل باستثناء `UNKNOWN_IDENTIFIER` حتى مع تمكين الإعداد. ويُنتج الآن أيضًا تلميح الخطأ الذي يقترح هذا الإعداد عندما يكون الاسم المستعار المطابق متداخلًا. [#110739](https://github.com/ClickHouse/ClickHouse/pull/110739) ([novikd](https://github.com/novikd)).
* تم إصلاح الخطأ `INCOMPATIBLE_TYPE_OF_JOIN` في انضمام `ANY` على جدول بمحرك `Join` عندما يسمح عامل تصفية `WHERE` على عمود في الجانب الأيمن لمخطط الاستعلام بإعادة كتابة الانضمام إلى `SEMI` أو `ANTI`. يحتوي جدول بمحرك `Join` على صرامة مُعلنة وثابتة لا يمكن تغييرها، لذا لم يعد يُجرى هذا التحويل لهذه الجداول. [#111362](https://github.com/ClickHouse/ClickHouse/pull/111362) ([groeneai](https://github.com/groeneai)).
* إصلاح `TYPE_MISMATCH` ("نوع مفتاح المفتاح المعقد ... غير متطابق") عند استخدام `JOIN` مع قاموس ومفتاح انضمام من نوع `Nullable` أو `LowCardinality` أو `LowCardinality(Nullable)`، بينما يكون مفتاح القاموس غير مغلف. تُوحِّد عملية البحث في القاموس للانضمام المباشر المفتاح الآن وفقًا لنوع المفتاح المُعلن للقاموس (كما يفعل `dictGet`/`dictHas` بالفعل)، ولا يتطابق مفتاح `NULL` مطلقًا. [#111857](https://github.com/ClickHouse/ClickHouse/pull/111857) ([groeneai](https://github.com/groeneai)).
* إصلاح `AMBIGUOUS_COLUMN_NAME` (`عدم تطابق بنية الكتلة في (يجب أن تكون الأعمدة ذات الاسم المتطابق ذات بنية متطابقة)`) لاستعلام يكرر شرط `JOIN ON` في `WHERE` مع `join_use_nulls = 1`. يعيد هذا الاستعلام نتيجته الآن بدلًا من أن يفشل. [#112007](https://github.com/ClickHouse/ClickHouse/pull/112007) ([groeneai](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة أو إنهاء الخادم في عمليات `JOIN` المباشرة مع القاموس عندما يستخدم مفتاحها تسلسلًا متناثرًا. [#112327](https://github.com/ClickHouse/ClickHouse/pull/112327) ([groeneai](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة عندما يحتوي hash join على مفتاح `LowCardinality` واحد من نوع يتجاوز عرضه 8 بايتات (`UInt128` و`Int128` و`UInt256` و`Int256` وبدائلها `Nullable`). كان هذا الانضمام يعيد بصمت صفوفًا لا تتساوى قيم مفاتيحها. [#113230](https://github.com/ClickHouse/ClickHouse/pull/113230) ([groeneai](https://github.com/groeneai)).
* إصلاح تقليم الأجزاء والحبيبات لشرط `JOIN ON` يتضمن أعمدة ثابتة من الجانب الآخر. [#113484](https://github.com/ClickHouse/ClickHouse/pull/113484) ([vdimir](https://github.com/vdimir)).
* إصلاح قيمة خاطئة تُعاد لعمود افتراضي مثل `_table` أو `_database` عند اختياره من الجانب الأيمن لانضمام `JOIN` يُنفَّذ بواسطة `DirectKeyValueJoin` (تخزين مفتاح-قيمة مثل `EmbeddedRocksDB` أو `KeeperMap` أو `Redis` أو قاموس). كان الاستعلام يعيد محتويات عمود بيانات بدلًا من ذلك، أو يفشل مع `LOGICAL_ERROR`. [#113698](https://github.com/ClickHouse/ClickHouse/pull/113698) ([groeneai](https://github.com/groeneai)).

<h3 id="query-and-analyzer-fixes">
  إصلاحات الاستعلامات والمُحلِّل
</h3>

* إصلاح خطأ يتسبب في طرح splitMultipartQuery للخطأ "استعلام فارغ" عند الاستعلامات التي تنتهي بتعليق بعد فاصلة منقوطة. [#85491](https://github.com/ClickHouse/ClickHouse/pull/85491) ([yariks5s](https://github.com/yariks5s)).
* إصلاح حالة لا يقبل فيها المحلل اللغوي اسمًا مستعارًا بعد استعلام فرعي في DESCRIBE TABLE، مما يؤدي إلى خطأ في البنية النحوية. [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([yariks5s](https://github.com/yariks5s)).
* إصلاح استهلاك `INSERT` لعبارة `FORMAT` بدلًا من تطبيقها على مخرجات `EXPLAIN` في `EXPLAIN INSERT INTO ... SELECT ... FORMAT ...`. [#101772](https://github.com/ClickHouse/ClickHouse/pull/101772) ([Onyx2406](https://github.com/Onyx2406)).
* إصلاح البطء الملحوظ في استعلامات SELECT عند تشغيل عمليات INSERT متزامنة. سابقًا، كان مسار INSERT يحجز فتحات CPU حتى `max_threads` عند بدء الاستعلام، حتى عندما لا تُستخدم معظم الفتحات، مما يحرم عمليات SELECT المتزامنة من الموارد. أصبح تخصيص فتحات CPU الآن قائمًا على الطلب: فلا يطلب المسار الفتحات إلا عند دفع عمل قابل للتوازي فعليًا. ينطبق ذلك على كل من التحكم في التزامن ومجدول CPU الاستباقي لأحمال العمل. يعمل إعداد الخادم الجديد `concurrent_threads_lazy_allocation` (القيمة الافتراضية `true`) كآلية للتراجع. [#102928](https://github.com/ClickHouse/ClickHouse/pull/102928) ([seva-potapov](https://github.com/seva-potapov)).
* إصلاح خطأ كان يمكن أن يؤدي فيه `ALTER TABLE ... MODIFY SETTING` على جدول `EmbeddedRocksDB` إلى حفظ قيمة إعداد غير صالحة في ملف البيانات الوصفية للجدول، حتى عند رفض الخادم للاستعلام. عند إعادة تشغيل الخادم التالية، كان سيتعذر إرفاق الجدول بسبب `CANNOT_PARSE_BOOL` (أو خطأ تحليل مشابه)، وفي قواعد البيانات التي تكون فيها إخفاقات التحميل قاتلة، كان الخادم يرفض البدء. تُرفض الآن قيم الإعدادات غير الصالحة قبل كتابة أي بيانات وصفية. [#103417](https://github.com/ClickHouse/ClickHouse/pull/103417) ([groeneai](https://github.com/groeneai)).
* إصلاح `INSERT` المتدفق مع `input_format_max_block_wait_ms` لواجهة `HTTP` ولـ `INSERT SELECT FROM input`، بحيث تُفرَّغ كتل الإدخال الجزئية قبل اكتمال الطلب. [#104534](https://github.com/ClickHouse/ClickHouse/pull/104534) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعبير `CASE` الذي كان يعيد فرع `ELSE` بدلًا من فرع `THEN` المطابق عندما تكون كلٌّ من قيمة التعبير وقيمة `WHEN` تساويان `NULL`. [#105556](https://github.com/ClickHouse/ClickHouse/pull/105556) ([Algunenano](https://github.com/Algunenano)).
* إصلاح دعم استخدام دوال SQL المعرفة من المستخدم `WASM` في تعريفات `MATERIALIZED VIEW`. [#106161](https://github.com/ClickHouse/ClickHouse/pull/106161) ([niyue](https://github.com/niyue)).
* إصلاح طرح `INTERPOLATE ()` للخطأ `INVALID_WITH_FILL_EXPRESSION` عندما تُمنح أعمدة ORDER BY أسماء مستعارة في قائمة SELECT باستخدام المحلل القديم. [#106252](https://github.com/ClickHouse/ClickHouse/pull/106252) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* أصبحت الدوال `base58Encode` و`base58Decode` و`tryBase58Decode` تراعي `max_execution_time` وإلغاء الاستعلامات عند معالجة مدخلات كبيرة، وترفض المدخلات التي تتجاوز 10 كيلوبايت بدلًا من الاستمرار في التشغيل مدة طويلة جدًا. يمكن ضبط الحد عبر الإعداد الجديد `function_base58_max_input_size` (تعطّله القيمة `0`). [#106428](https://github.com/ClickHouse/ClickHouse/pull/106428) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ يؤدي إلى نتائج غير صحيحة، حيث كانت `WHERE c0 = const` لا تعيد أي صفوف للجداول ذات `ORDER BY f(c0)` عندما تُقيَّم `f(const)` إلى NaN، مثل `ORDER BY sqrt(c0)` مع ثابت سالب. كان تحليل المفتاح الأساسي يستبعد كل حبيبة على نحو خاطئ ويُفسد ذاكرة التخزين المؤقت لشروط الاستعلامات اللاحقة. [#106507](https://github.com/ClickHouse/ClickHouse/pull/106507) ([groeneai](https://github.com/groeneai)).
* أُصلحت النتائج الخاطئة للاستعلام `SELECT c, count() FROM t WHERE c GROUP BY c` على الجداول التي تتضمن الإسقاط الضمني `_minmax_count_projection` أو إسقاطًا تجميعيًا صريحًا أو إسقاطًا عاديًا؛ إذ كانت كل مجموعة تُدمج سابقًا في صف واحد بمفتاح ثابت وإجمالي عدد الصفوف. [#106590](https://github.com/ClickHouse/ClickHouse/pull/106590) ([groeneai](https://github.com/groeneai)).
* أصبح `FORMAT` يُطبَّق أيضًا على مخرجات `EXPLAIN` في `EXPLAIN ... INSERT ... SELECT ... FORMAT ...` عندما تسبق `SETTINGS`‏ `FORMAT` أو يكون تنسيق الإخراج `Values`. [#106686](https://github.com/ClickHouse/ClickHouse/pull/106686) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُصلح خطأ `RESOURCE_ACCESS_DENIED` زائف ونادر ("Scheduler queue with resource request is about to be destructed") لاستعلام مُنح بالفعل حق الوصول إلى مورد حمل عمل، وكان سببه احتفاظ كائن طلب محلي للخيط أُعيد استخدامه بحالة فشل طلب سابق. [#106690](https://github.com/ClickHouse/ClickHouse/pull/106690) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُصلحت `match` و`extract` و`extractAll` و`countMatches` التي كانت تُرجع نتائج خاطئة للتعابير النمطية التي تحتوي على تسلسلات هروب سداسية عشرية أو ثمانية. [#106709](https://github.com/ClickHouse/ClickHouse/pull/106709) ([ofeliacode](https://github.com/ofeliacode)).
* أُصلح تجاوز سفلي لعدد صحيح في محلّل بروتوكول PostgreSQL السلكي، حيث كانت رسالة بحقل طول أصغر من 4 تؤدي إلى التفاف `size - 4` واستدعاء `resize`/`ignore` بحجم كبير جدًا. [#107485](https://github.com/ClickHouse/ClickHouse/pull/107485) ([uwezkhan](https://github.com/uwezkhan)).
* عند استخدام `enable_analyzer = 1` (الإعداد الافتراضي)، أصبح الاستعلام عن جدول باسمه المجرد، عندما لا يكون موجودًا إلا في قاعدة بيانات أخرى، يقترح الجدول الصحيح؛ فعلى سبيل المثال، يعرض `SELECT * FROM functions` الرسالة `Maybe you meant system.functions?`. سابقًا، كان المحلل الجديد يعرض الخطأ `Unknown table expression identifier` دون تلميح، بينما كان المحلل القديم يقدّم هذا الاقتراح المفيد بالفعل. [#107550](https://github.com/ClickHouse/ClickHouse/pull/107550) ([groeneai](https://github.com/groeneai)).
* أُصلح إيقاف الخادم (`std::terminate`، الإشارة 6) أثناء إنهاء استعلام بخطة موزعة (`make_distributed_plan = 1`) عندما يفشل فحص حالة العامل في إعادة جدولة الفحص التالي (مثل `CANNOT_SCHEDULE_TASK` عند الإيقاف أو `MEMORY_LIMIT_EXCEEDED`). يفشل الاستعلام الآن بصورة سليمة ويواصل الخادم العمل. [#107575](https://github.com/ClickHouse/ClickHouse/pull/107575) ([groeneai](https://github.com/groeneai)).
* أُصلحت النتائج غير الصحيحة من الاستعلامات الموزعة التي تختار أعمدة `ALIAS` تشترك في تعبير فرعي واحد؛ إذ كان من الممكن أن تختل محاذاة الأعمدة وتُرجع القيم تحت العمود الخطأ. [#107675](https://github.com/ClickHouse/ClickHouse/pull/107675) ([vdimir](https://github.com/vdimir)).
* أُصلح الخطأ المنطقي `Inconsistent AST formatting` لدالة نافذة بلا وسائط ضمن تعريف `CODEC` أو محرك (مثل `CODEC(cume_dist() OVER (...))`)؛ إذ تحتفظ هذه الدالة الآن بأقواسها لكي يظل الاستعلام صالحًا بعد دورة تنسيق وتحليل. [#107806](https://github.com/ClickHouse/ClickHouse/pull/107806) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* يُعامل `getClientHTTPHeader` الآن بشكل صحيح بوصفه غير حتمي، لذا لم تعد نتيجته تُعاد استخدامها خطأً بواسطة ذاكرة التخزين المؤقت لنتائج الاستعلامات. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أُصلحت النتائج الخاطئة عند استخدام `SELECT [...] SAMPLE [...]` مع ذاكرة التخزين المؤقت لشروط الاستعلام (الإعداد `use_query_condition_cache = 1`، وهو أيضًا الإعداد الافتراضي). [#108488](https://github.com/ClickHouse/ClickHouse/pull/108488) ([groeneai](https://github.com/groeneai)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام اسم مستعار لمسند مركب في `GROUP BY` ثم الرجوع إليه، مع تمكين `enable_identifier_resolve_cache` (الإعداد الافتراضي). لم يكن تحسين `optimize_and_compare_chain` ثابت النتيجة، ما أدى إلى تراكم رابط اقتراني انتقالي مكرر في عقدة محلولة مشتركة. [#108553](https://github.com/ClickHouse/ClickHouse/pull/108553) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `NUMBER_OF_COLUMNS_DOESNT_MATCH` عندما يقرأ استعلام فرعي من جدول `Distributed` عمودَي `ALIAS` أو أكثر تتوسع إلى التعبير نفسه (مثلًا `a1 String ALIAS toString(x), a2 String ALIAS toString(x)`) ويُستخدم هذا الاستعلام الفرعي في استعلام خارجي، مثل `SELECT count() FROM (SELECT a1, a2 FROM dist GROUP BY a1, a2)`. [#108725](https://github.com/ClickHouse/ClickHouse/pull/108725) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `UNKNOWN_IDENTIFIER` في `ALTER TABLE ... DROP COLUMN` عندما يحتوي عمود آخر على تعبير `DEFAULT` أو `MATERIALIZED` يعرّف اسمًا مستعارًا مضمّنًا ويشير إليه. [#109374](https://github.com/ClickHouse/ClickHouse/pull/109374) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاوز `system.tables` لقواعد البيانات بصمت للمستخدمين ذوي الأذونات الخاصة بكل قاعدة بيانات عندما يقرأ الاستعلام عمودَي `name`/`database` فقط. أُضيف في 26.2. [#109723](https://github.com/ClickHouse/ClickHouse/pull/109723) ([samay-sharma](https://github.com/samay-sharma)).
* إصلاح الخطأ `UNKNOWN_IDENTIFIER` للأعمدة المؤهلة باسم تعبير الجدول الشائع (`cte_name.column`) في الاستعلامات المخزنة في طرق العرض عند تمكين المحلل. [#111386](https://github.com/ClickHouse/ClickHouse/pull/111386) ([novikd](https://github.com/novikd)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` عندما يرشّح استعلام `FINAL` بحسب عمود مفتاح فرز غير موجود في قائمة `SELECT` ويُنقل عامل التصفية إلى `PREWHERE` (مثلًا `SELECT s FROM t FINAL WHERE k GROUP BY s` مع `optimize_move_to_prewhere_if_final = 1`). [#111721](https://github.com/ClickHouse/ClickHouse/pull/111721) ([groeneai](https://github.com/groeneai)).
* إصلاح فشل بدء تشغيل الخادم وفشل `ATTACH` مع ظهور الرسالة `WITH RECURSIVE is not supported with the old analyzer` لطريقة عرض تحتوي على تعبير جدول شائع تعاودي عندما يكون `enable_analyzer = 0` هو الإعداد الافتراضي للخادم. [#112784](https://github.com/ClickHouse/ClickHouse/pull/112784) ([evillique](https://github.com/evillique)).
* إصلاح تمرير إعدادات الاستعلام ومعالجة NULL في `accurateCastOrDefault`. [#114912](https://github.com/ClickHouse/ClickHouse/pull/114912) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح إبلاغ `read_rows` و`read_bytes` و`written_rows` و`written_bytes` في `system.query_thread_log` عن إجمالي تراكمي طوال عمر الخيط بدلًا من القيم الخاصة بالاستعلام المسجل. تأثرت صفوف الخيوط المجمعة طويلة العمر، ولا سيما خيط `HTTPHandler` الذي يبدأ الاستعلام. [#115596](https://github.com/ClickHouse/ClickHouse/pull/115596) ([groeneai](https://github.com/groeneai)).

<h3 id="mergetree-and-storage-fixes">
  إصلاحات MergeTree والتخزين
</h3>

* يمكن الآن إسقاط الأجزاء المفصولة ذات اللاحقة `tryN`. [#58957](https://github.com/ClickHouse/ClickHouse/pull/58957) ([antaljanosbenjamin](https://github.com/antaljanosbenjamin)).
* إصلاح استثناء `MULTIPLE_EXPRESSIONS_FOR_ALIAS` في الاستعلامات ذات الأسماء المستعارة المكررة للإسقاطات (مثل `SELECT *, day + 365 AS day`) ضمن الاستعلامات الفرعية المتداخلة عند استخدام النسخ المتماثلة المتوازية. [#80310](https://github.com/ClickHouse/ClickHouse/pull/80310) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح اختيار برنامج ترميز ضغط غير صحيح لأجزاء `MergeTree` عند ضبط إعداد `default_compression_codec` على مستوى الجدول صراحةً. كانت الأجزاء المكتوبة عند الإدراج وأثناء عمليات الدمج وللإسقاطات تستخدم برنامج الترميز الافتراضي على مستوى الخادم بدلًا من إعداد مستوى الجدول. ويشمل الإصلاح الآن أيضًا الجزء الفارغ الناتج عن طفرة تحذف جميع البيانات. [#101784](https://github.com/ClickHouse/ClickHouse/pull/101784) ([Onyx2406](https://github.com/Onyx2406)).
* إصلاح أخطاء `MULTIPLE_EXPRESSIONS_FOR_ALIAS` التي تطرحها النسخ المتماثلة البعيدة عند تشغيل استعلامات تشير إلى أسماء مستعارة للإسقاطات ضمن `PREWHERE` / `WHERE` / `HAVING` / `QUALIFY` (مثل `SELECT x AS a, y AS b, (a AND b) AS c FROM t PREWHERE c`) أو استعلامات `SELECT *` على عمليات الربط الذاتي ذات أسماء الأعمدة المتداخلة، عند استخدام النسخ المتماثلة المتوازية و`parallel_replicas_local_plan = 0`. [#103806](https://github.com/ClickHouse/ClickHouse/pull/103806) ([groeneai](https://github.com/groeneai)).
* إصلاح جزء تصحيح معطّل بعد `ALTER TABLE ... DROP PARTITION ID 'patch-...'` يتبعه `DETACH`/`ATTACH TABLE`. سابقًا، كان الجزء الفارغ المغطي يُكتب دون `partition.dat` و`source_parts.dat`، مما يؤدي إلى ظهور إدخال `broken-on-start_patch-...` في `system.detached_parts` بعد الإرفاق التالي أو إعادة تشغيل الخادم. [#104353](https://github.com/ClickHouse/ClickHouse/pull/104353) ([groeneai](https://github.com/groeneai)).
* إصلاح الاستبدال الصامت للبيانات بقيم افتراضية عند تشغيل `ALTER TABLE ... RENAME COLUMN` بالتزامن مع `OPTIMIZE TABLE ... FINAL` أو عملية دمج أخرى في الخلفية. [#104822](https://github.com/ClickHouse/ClickHouse/pull/104822) ([groeneai](https://github.com/groeneai)).
* إصلاح حالتين من الخطأ `LOGICAL_ERROR: Reading from materialized CTE 'X' before it has been materialized` تسببت فيهما استعلامات تستخدم `enable_materialized_cte`: (1) تعبير جدول شائع مادي يُعاد استخدامه ويُصفّى باستخدام `IN (subquery)` على تعبير جدول شائع مادي آخر، و(2) تعبير جدول شائع مادي يُشار إليه مباشرةً وضمن عامل تصفية `WHERE ... IN (...)` يصل إلى مفتاح أساسي لـ `MergeTree` عبر استعلام فرعي `IN` متداخل. تأثر `EXPLAIN` للاستعلامات نفسها أيضًا لأن الأخطاء كانت تحدث أثناء تحسين الخطة. [#105041](https://github.com/ClickHouse/ClickHouse/pull/105041) ([novikd](https://github.com/novikd)).
* مع `skip_cache_on_disk_failure = 1`، تستمر الاستعلامات الآن عند تعذر إنشاء `FileCache` دليل ذاكرة تخزين مؤقت على القرص. يُسجَّل الإخفاق بدلًا من أن يفشل الاستعلام. [#105250](https://github.com/ClickHouse/ClickHouse/pull/105250) ([Diskein](https://github.com/Diskein)).
* إصلاح استثناء الخطأ المنطقي `Mutation of Memory table produced incomplete output` الذي يطرحه `ALTER TABLE <memory_table> APPLY PATCHES` و`ALTER TABLE <memory_table> APPLY DELETED MASK`. لا تمتلك جداول `Memory` أجزاء تصحيح أو أقنعة حذف، لذا يُعامل الأمران الآن بشكل صحيح باعتبارهما عمليتين بلا تأثير. [#105286](https://github.com/ClickHouse/ClickHouse/pull/105286) ([groeneai](https://github.com/groeneai)).
* إصلاح `CANNOT_CONVERT_TYPE` عند استخدام `Merge` فوق `Merge` فوق `Distributed` مع `distributed_group_by_no_merge=1`. [#105330](https://github.com/ClickHouse/ClickHouse/pull/105330) ([azat](https://github.com/azat)).
* إصلاح إرجاع `singleValueOrNullMerge` لقيمة فعلية بدلًا من `NULL` عند دمج حالة سبق أن رصدت عدة قيم مميزة. [#105734](https://github.com/ClickHouse/ClickHouse/pull/105734) ([fallintoplace](https://github.com/fallintoplace)).
* إصلاح تعطل في دالة الجدول `mongodb` وتخزين MongoDB ومصدر قاموس MongoDB عندما يكون اسم المجموعة فارغًا أو يحتوي على بايتات NUL. [#105776](https://github.com/ClickHouse/ClickHouse/pull/105776) ([Algunenano](https://github.com/Algunenano)).
* إصلاح رفض `ALTER TABLE ... CLEAR COLUMN` لأعمدة `columns_to_sum` المحددة صراحةً في `SummingMergeTree` و`CoalescingMergeTree`. [#105785](https://github.com/ClickHouse/ClickHouse/pull/105785) ([antonio2368](https://github.com/antonio2368)).
* إصلاح أخطاء `UNKNOWN_DATABASE` عند إنشاء عرض مُعلَّم بمعلمات يُمرَّر اسم قاعدة بياناته عبر معامل استعلام. [#105799](https://github.com/ClickHouse/ClickHouse/pull/105799) ([groeneai](https://github.com/groeneai)).
* استعادة تحسين القراءة بالترتيب لجداول `Merge` عند استخدام المُحلِّل. [#105867](https://github.com/ClickHouse/ClickHouse/pull/105867) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح طفرات `UPDATE` و`DELETE` في جداول Iceberg التي يُوصَل إليها عبر كتالوج، بما في ذلك التحديثات وعمليات الحذف المتكررة التي لا تطابق أي صفوف. [#106111](https://github.com/ClickHouse/ClickHouse/pull/106111) ([scanhex12](https://github.com/scanhex12)).
* إصلاح عدم تطبيق `optimize_skip_unused_shards` (وفشل force\_optimize\_skip\_unused\_shards على نحو خاطئ) عند الاستعلام عن جدول `Distributed` عبر جدول `Merge` أو دالة الجدول `merge`، مع تطبيق الشرط فوقهما. [#106250](https://github.com/ClickHouse/ClickHouse/pull/106250) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح الخطأ المنطقي `Column identifier ... is already registered` عندما يحتوي شرط طفرة (`DELETE`/`UPDATE`) على استعلام فرعي `IN`/`EXISTS` يقرأ من تعبير جدول افتراضي متداخل داخل استعلام فرعي آخر. [#106414](https://github.com/ClickHouse/ClickHouse/pull/106414) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح نتائج خاطئة متفرقة لاستعلامات `ORDER BY ... DESC` عند قراءة الأجزاء العريضة بترتيب عكسي مع `read_in_order_use_virtual_row_per_block = 1` وقيمة صغيرة لـ`max_block_size`. [#106429](https://github.com/ClickHouse/ClickHouse/pull/106429) ([vdimir](https://github.com/vdimir)).
* إصلاح الاستثناء `Bad cast exception` لقواميس Redis التي تستخدم `STORAGE_TYPE 'simple'` مع تخطيط `cache`/`direct` ومفتاح سلسلة واحد (مركب)؛ تعمل هذه القواميس الآن، وتُبلغ المفاتيح المركبة فوق تخزين `simple` عن خطأ واضح. [#106501](https://github.com/ClickHouse/ClickHouse/pull/106501) ([vdimir](https://github.com/vdimir)).
* إصلاح الاستثناء `Mutation of Memory table produced incomplete output` الذي كانت تُطلقه أوامر `ALTER TABLE <memory_table>` التي لا تؤثر في البيانات على مستوى الصفوف في محرك `Memory`، بما في ذلك `APPLY PATCHES` و`APPLY DELETED MASK` و`MATERIALIZE STATISTICS` و`MATERIALIZE INDEX` و`MATERIALIZE PROJECTION` و`REWRITE PARTS`. لا تمتلك جداول `Memory` هذه البُنى، لذا تُعامل هذه الأوامر الآن كعمليات بلا تأثير. [#106621](https://github.com/ClickHouse/ClickHouse/pull/106621) ([groeneai](https://github.com/groeneai)).
* إصلاح فشل الخادم في البدء مع `Too many marks in file ...skp_idx_idx.cmrk4, marks expected 0 (bytes size 0)` عندما يحتوي جدول `MergeTree` على جزء فهرس تخطٍّ بعدد حبيبات صفري وملف علامات غير فارغ على القرص. [#106675](https://github.com/ClickHouse/ClickHouse/pull/106675) ([groeneai](https://github.com/groeneai)).
* إصلاح الحالة التي لا تُطبَّق فيها النسخ المتماثلة المتوازية على عرض يتضمن UNION بسبب وجود جدول فارغ في UNION. [#106900](https://github.com/ClickHouse/ClickHouse/pull/106900) ([devcrafter](https://github.com/devcrafter)).
* إصلاح استثناء خطأ منطقي `conflicted_part_name.has_value()` قد يحدث أثناء إدراج متزامن في جدول `ReplicatedMergeTree` عندما تكون الكتلة المُدرجة قد أُزيل تكرارها بالكامل، وكانت عقدة إزالة التكرار الخاصة بالجزء المتعارض قد أُزيلت مسبقًا (مثلًا بواسطة `DROP PARTITION` متزامن). [#107026](https://github.com/ClickHouse/ClickHouse/pull/107026) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ `LOGICAL_ERROR` نادر بعنوان "Attempt to release query context that does not exist" وتعطل الخادم المصاحب له عند قراءة جداول `MergeTree` عبر قرص ذاكرة تخزين مؤقت لنظام الملفات تم إنشاؤه باستخدام `enable_filesystem_query_cache_limit = 1`. [#107028](https://github.com/ClickHouse/ClickHouse/pull/107028) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل الخادم عند نقل جزء فارغ إلى قرص `plain_rewritable` (مثلًا باستخدام `ALTER TABLE ... MOVE PARTITION ... TO DISK` لجزء فارغ تم الاحتفاظ به بسبب `remove_empty_parts = 0`). [#107040](https://github.com/ClickHouse/ClickHouse/pull/107040) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء `Logical error: Too large size passed to allocator` عند تنفيذ `INSERT` في جدول `MergeTree` عندما تُضبط `adaptive_write_buffer_initial_size` على قيمة كبيرة للغاية. أصبح الحجم الابتدائي لمخزن الكتابة التكيفي مقيّدًا الآن بالحد الأقصى للمخزن. [#107104](https://github.com/ClickHouse/ClickHouse/pull/107104) ([groeneai](https://github.com/groeneai)).
* إصلاح دفعات `ALTER TABLE ... ON CLUSTER` التي تجمع بين `MODIFY SETTING`/`RESET SETTING` وتغيير تعليق (مثلًا `MODIFY COMMENT 'x', MODIFY SETTING old_parts_lifetime = 123`) إذ كانت تُطبّق على النسخة المتماثلة القائدة فقط، مما يترك النسخ المتماثلة الأخرى غير متطابقة. كذلك إصلاح تصنيف `MODIFY COLUMN ... COMMENT` الموضعي أو الخاص بكل عمود باستخدام `SETTINGS` خطأً كتغيير محلي في بيانات التعليق الوصفية فقط، مما كان يستبعد إعادة ترتيب الأعمدة من البيانات الوصفية المتماثلة وقد يتسبب في `INCOMPATIBLE_COLUMNS` عند إعادة تشغيل النسخة المتماثلة. [#107142](https://github.com/ClickHouse/ClickHouse/pull/107142) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `Argument ... of GROUPING function is not a part of GROUP BY clause` للاستعلامات التي تستخدم الدالة `grouping` مع تمكين الإعداد `group_by_use_nulls`. [#107206](https://github.com/ClickHouse/ClickHouse/pull/107206) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح استعلامات `UPDATE` خفيفة الوزن مع تمكين النسخ المتماثلة المتوازية القديمة لجداول `MergeTree` غير المتماثلة. [#107246](https://github.com/ClickHouse/ClickHouse/pull/107246) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء خطأ منطقي محتمل في SYSTEM SYNC DATABASE REPLICA ... STRICT، وجعل المُعدِّل STRICT يسري فعليًا على النسخ المتماثلة لقاعدة البيانات. [#107344](https://github.com/ClickHouse/ClickHouse/pull/107344) ([PedroTadim](https://github.com/PedroTadim)).
* إصلاح `Logical error: 'Duplicate announcement received for replica number N'` الذي قد يحدث مع النسخ المتماثلة المتوازية عندما يحتوي استعلام فرعي قيَمي على استعلامات فرعية متداخلة تقرأ الجدول نفسه. [#107381](https://github.com/ClickHouse/ClickHouse/pull/107381) ([groeneai](https://github.com/groeneai)).
* إصلاح فقدان صامت للبيانات في `MergeTree` العادي (غير المتماثل) عند تنفيذ `REPLACE PARTITION` أو `MOVE PARTITION` أو `DETACH PARTITION` أو `DETACH PART` على قسم لا تزال فيه تصحيحات `UPDATE` خفيفة الوزن غير مطبقة. ترفض هذه العمليات الآن الأمر (كما يفعل `ReplicatedMergeTree` بالفعل)، مع الإشارة إلى `ALTER TABLE ... APPLY PATCHES`، بدلًا من التراجع بصمت عن التحديث المُعتمد. [#107386](https://github.com/ClickHouse/ClickHouse/pull/107386) ([groeneai](https://github.com/groeneai)).
* إصلاح توقف `MaterializedPostgreSQL` عن تكرار التغييرات بصمت عندما يحتوي اسم قاعدة البيانات أو الجدول في PostgreSQL على أحرف كبيرة (كان مستهلك `pgoutput` يطلب اسم publication غير مقتبس وبأحرف صغيرة، لا يطابق اسم publication الذي يحافظ على حالة الأحرف). [#107423](https://github.com/ClickHouse/ClickHouse/pull/107423) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ `THERE_IS_NO_COLUMN` عندما تكون قيمة `optimize_if_transform_strings_to_enum = 1` ويكون تعبير `if`/`transform` المُحسَّن على القيم النصية الحرفية مفتاحًا في `GROUP BY` أو `ORDER BY` لجدول Distributed أو عند استخدام النسخ المتماثلة المتوازية. [#107455](https://github.com/ClickHouse/ClickHouse/pull/107455) ([groeneai](https://github.com/groeneai)).
* إصلاح مشكلة إرجاع `SELECT ... FINAL` و`OPTIMIZE TABLE ... FINAL` لصفوف مكررة بعد اعتماد أجزاء من `MergeTree` عادي في `ReplacingMergeTree` أو `SummingMergeTree` أو `AggregatingMergeTree` عبر `CREATE TABLE ... CLONE AS` أو `ATTACH PARTITION ... FROM` أو `MOVE PARTITION ... TO TABLE`. يُعاد الآن ضبط مستوى دمج الجزء المعتمد إلى 0 عندما تختلف محركات المصدر والوجهة، بحيث تزيل الوجهة تكراره عند الدمج التالي. [#107481](https://github.com/ClickHouse/ClickHouse/pull/107481) ([groeneai](https://github.com/groeneai)).
* تحسين تتبّع إلغاء الاستعلام أثناء انتظار النصاب في ReplicatedMergeTree. [#107513](https://github.com/ClickHouse/ClickHouse/pull/107513) ([nickitat](https://github.com/nickitat)).
* احتساب الذاكرة التي تستخدمها مكتبة rapidjson (في `prettyPrintJSON` و`JSONMergePatch` ومحلل JSON الخاص بـ rapidjson) ضمن متعقب الذاكرة، بحيث تُرفض المدخلات الشاذة باستخدام `MEMORY_LIMIT_EXCEEDED` بدلًا من تخصيص الذاكرة بلا حدود. [#107555](https://github.com/ClickHouse/ClickHouse/pull/107555) ([Algunenano](https://github.com/Algunenano)).
* إصلاح خطأ `Logical error: Stream ... variant_discr ... is not found` الذي قد يحدث عند دمج أو قراءة جزء `MergeTree` ناتج عن عملية تغيير في جدول يحتوي على عمود `Dynamic`. [#107562](https://github.com/ClickHouse/ClickHouse/pull/107562) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` (`updateFormatPrewhereInfo called more than once`) الذي قد يحدث عند الاستعلام عن مصدر `file()` أو `url()` أو تخزين كائنات مع استخدام `PREWHERE` صريح و`WHERE` معًا، بينما يكون `optimize_prewhere_after_pushdown` مفعّلًا. [#107568](https://github.com/ClickHouse/ClickHouse/pull/107568) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء في الخادم (خطأ منطقي `Digest does not match`) كان يمكن أن يحدث عند استخدام `RENAME TABLE` أو `RENAME DATABASE` أو `CREATE OR REPLACE TABLE` مع جدول `TimeSeries` داخل قاعدة بيانات `Replicated`. أصبحت إعادة تسمية جدول `TimeSeries` مدعومة الآن. [#107583](https://github.com/ClickHouse/ClickHouse/pull/107583) ([groeneai](https://github.com/groeneai)).
* إصلاح `DROP TABLE` لجدول `TimeSeries` في قاعدة بيانات `Replicated`، والذي كان يتسبب سابقًا في تسريب الجداول الداخلية وترك مهمة الحذف في الخلفية تعيد المحاولة إلى الأبد (كان `DROP TABLE ... SYNC` يتوقف عن الاستجابة). [#107604](https://github.com/ClickHouse/ClickHouse/pull/107604) ([groeneai](https://github.com/groeneai)).
* إصلاح مشكلتين لاجتياز المسارات في بروتوكول جلب الأجزاء المُنسخة متماثلًا، كانتا قد تتيحان لنسخة متماثلة ضارة كتابة ملفات خارج دليل الجزء. [#107606](https://github.com/ClickHouse/ClickHouse/pull/107606) ([antonio2368](https://github.com/antonio2368)).
* إصلاح `ALTER TABLE ... REPLACE PARTITION` في جدول `MergeTree` عادي، الذي كان يعيد إظهار الأجزاء المستبدلة بعد إعادة تشغيل الخادم، مما يجعل الجدول يعيد كلًا من الصفوف البديلة والصفوف القديمة المستبدلة. [#107623](https://github.com/ClickHouse/ClickHouse/pull/107623) ([groeneai](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("Block structure mismatch ... between `ConvertingTransform` and `RemovingReplicatedColumnsTransform`") عند الإدراج في عرض مادي يعرّف جدوله الهدف `TO` عمود `Enum` أوسع مما ينتجه `SELECT` الخاص بالعرض. يُطبَّق الآن توسيع `Enum` الصالح في مسار إدراج العرض المادي، كما في `INSERT ... SELECT` المباشر. [#107648](https://github.com/ClickHouse/ClickHouse/pull/107648) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `NUMBER_OF_COLUMNS_DOESNT_MATCH` عند الاستعلام عن جدول `Distributed` (أو عند استخدام النسخ المتماثلة المتوازية) يحتوي على عدة أعمدة `ALIAS` تتوسع إلى التعبير نفسه، مع الإشارة إليها معًا في `ORDER BY`/`GROUP BY`/`HAVING`. [#107913](https://github.com/ClickHouse/ClickHouse/pull/107913) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* لم يعد الخطأ العابر أثناء تحديث أجزاء البيانات في جدول للقراءة فقط يوقف مهمة التحديث في الخلفية بشكل دائم. [#108034](https://github.com/ClickHouse/ClickHouse/pull/108034) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبح `index_granularity_bytes` يُراعى الآن لأعمدة حالة `AggregateFunction`. سابقًا، كان حد البايتات للحبيبة يُتجاهل في هذه الأعمدة (مثل حالات `uniqExact` في جداول `AggregatingMergeTree` والإسقاطات التجميعية)، مما يؤدي إلى حبيبات أكبر بكثير من الحد المُهيأ وزيادة تضخيم القراءة واستهلاك الذاكرة أثناء الاستعلام. [#108297](https://github.com/ClickHouse/ClickHouse/pull/108297) ([groeneai](https://github.com/groeneai)).
* إصلاح عدم رفض `insert_quorum = 'auto'` لعمليات الإدراج مسبقًا عندما يكون عدد النسخ المتماثلة الحية أقل من الأغلبية. تفشل هذه العمليات الآن فورًا بالخطأ `TOO_FEW_LIVE_REPLICAS` بدلًا من كتابة جزء محلي ثم انتهاء مهلتها لاحقًا بالخطأ `UNKNOWN_STATUS_OF_INSERT`. [#108800](https://github.com/ClickHouse/ClickHouse/pull/108800) ([gagandhakrey](https://github.com/gagandhakrey)).
* إصلاح تعطل الخادم عند الإدراج غير المتزامن مع إزالة التكرار، عندما يجعل `optimize_on_insert` الكتلة المُدرجة فارغة (مثل الصفوف التي يكون مجموعها صفرًا في `SummingMergeTree`). [#109229](https://github.com/ClickHouse/ClickHouse/pull/109229) ([Diskein](https://github.com/Diskein)).
* إصلاح فقدان بيانات عمود بلا تعبير افتراضي عند تنفيذ عملية دمج بالتزامن مع `ALTER TABLE ... RENAME COLUMN`، أو عندما تأتي قيم العمود الوحيدة من `UPDATE` خفيف الوزن. كان من الممكن إسقاط العمود من الجزء المدمج، فتُقرأ جميع قيمه كـ NULL. [#109356](https://github.com/ClickHouse/ClickHouse/pull/109356) ([groeneai](https://github.com/groeneai)).
* إصلاح إنهاء نادر للخادم عند دمج حالات التجميع `uniqExact` بالتوازي مع `GROUPING SETS` أو `ROLLUP` أو `CUBE`. [#109389](https://github.com/ClickHouse/ClickHouse/pull/109389) ([groeneai](https://github.com/groeneai)).
* إصلاح إعادة جدولة عمليات دمج rollup إلى أجل غير مسمى. [#109410](https://github.com/ClickHouse/ClickHouse/pull/109410) ([Michicosun](https://github.com/Michicosun)).
* إصلاح عمليات mutation لـ `GROUP BY` في الجداول ذات الأعمدة الافتراضية المادية أو الافتراضية الدائمة. [#109532](https://github.com/ClickHouse/ClickHouse/pull/109532) ([Michicosun](https://github.com/Michicosun)).
* إصلاح الخطأ `UNKNOWN_IDENTIFIER: Missing columns: '_block_offset'` عند تشغيل `ALTER TABLE ... MATERIALIZE INDEX` على فهرس minmax الضمني الذي أنشأه `add_minmax_index_for_block_number_column`/`add_minmax_index_for_block_offset_column` في جدول يحتوي على أجزاء مُدرجة حديثًا (بالمستوى 0). يُبنى الفهرس الآن لهذه الأجزاء بدلًا من فشل العملية. [#110236](https://github.com/ClickHouse/ClickHouse/pull/110236) ([groeneai](https://github.com/groeneai)).
* إصلاح عدم اكتشاف نسخة متماثلة للقراءة فقط في تخزين الكائنات (قرص مُهيأ باستخدام `read_only = true`) للأجزاء الجديدة عبر `refresh_parts_interval`، ورفض `table_disk = true` على مثل هذا القرص مع الرسالة "table\_disk غير مدعوم للأقراص غير التابعة لـ ObjectStorage". [#110460](https://github.com/ClickHouse/ClickHouse/pull/110460) ([jkartseva](https://github.com/jkartseva)).
* إصلاح خطأ LOGICAL\_ERROR ("لم تُسجّل أي مجموعة للمفتاح") في ALTER TABLE ... DROP COLUMN وALTER TABLE ... DELETE/UPDATE mutations وDELETE خفيف الوزن، في الجداول التي تحتوي على عمود ALIAS يستخدم تعبيره عامل IN، بما في ذلك عبر عمود ALIAS آخر. [#111039](https://github.com/ClickHouse/ClickHouse/pull/111039) ([PedroTadim](https://github.com/PedroTadim)).
* إصلاح الحالات التي لم تُطبَّق فيها سياسة الصفوف على إسقاطات MergeTree أثناء تنفيذ الاستعلام. [#112329](https://github.com/ClickHouse/ClickHouse/pull/112329) ([yariks5s](https://github.com/yariks5s)).
* إصلاح الخطأ المنطقي `ReadBufferFromEncryptedFile: Wrong file position` عند قراءة جزء `Compact` من قرص `encrypted` باستخدام إدخال/إخراج مباشر، والذي كان يؤدي إلى تعطل عمليات الدمج في `system.replication_queue`. [#112943](https://github.com/ClickHouse/ClickHouse/pull/112943) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح قراءة قاعدة البيانات الداخلية `_temporary_and_external_tables` عبر دالة الجدول `merge` ومحرك الجداول `Merge`، إذ كانت تتيح لجلسة قراءة الجداول المؤقتة الخاصة بجلسات ومستخدمين آخرين، وتتسبب في استثناء عند استخدام مسار المحلل القديم. أصبح التعبير النمطي لقواعد البيانات يتجاوز هذه القاعدة الآن، ويُرفض ذكر اسمها صراحةً، تمامًا كما يُرفض الوصول المباشر إليها. [#113224](https://github.com/ClickHouse/ClickHouse/pull/113224) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة كانت فيها سياسة صفوف تحتوي على استعلام فرعي قيَمي تُقيَّم مرة واحدة فقط ثم يُعاد استخدامها باستمرار بعد قراءة الجدول عبر جدول `Merge`. يُخزَّن شرط السياسة المُحلَّل مؤقتًا ويُشارك بين جميع الاستعلامات، وكانت قراءته عبر `Merge` تعيد كتابة التعبير المخزَّن مؤقتًا في موضعه، مما تسبب أيضًا في سباق بيانات بين الاستعلامات المتزامنة التي تستخدم السياسة نفسها. [#113563](https://github.com/ClickHouse/ClickHouse/pull/113563) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح أخطاء `CANNOT_CONVERT_TYPE` عند قراءة جدول `Merge` يحتوي على جدول `Distributed` يستخدم نسخًا متماثلة متوازية بمفتاح مخصص. [#113742](https://github.com/ClickHouse/ClickHouse/pull/113742) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `Logical error: No set is registered for key ...` عند القراءة عبر جدول `Merge` يتضمن تابعًا يعرّف عمود `ALIAS` يحتوي على `IN`، مع اختلاف التوابع في القيمة الافتراضية لذلك العمود. [#113757](https://github.com/ClickHouse/ClickHouse/pull/113757) ([groeneai](https://github.com/groeneai)).
* إصلاح تجاوز لسياسة الصفوف، حيث كانت دالة الجدول mergeTreeIndex تكشف قيم المفتاح الأساسي وفهرس minmax للصفوف المخفية بواسطة سياسة صفوف SELECT على الجدول المصدر؛ ويُرفض الآن استخدام mergeTreeIndex لقراءة جدول لديه سياسة صفوف. [#115304](https://github.com/ClickHouse/ClickHouse/pull/115304) ([yariks5s](https://github.com/yariks5s)).

<h3 id="data-type-and-serialization-fixes">
  إصلاحات نوع البيانات والتسلسل
</h3>

* إصلاح استثناء في `ARRAY JOIN` عند استخدام أنواع رقمية من `LowCardinality`. [#91784](https://github.com/ClickHouse/ClickHouse/pull/91784) ([Ergus](https://github.com/Ergus)).
* إصلاح إنشاء أعمدة `NOT NULL` بصمت كأعمدة `Nullable` عندما تكون قيمة `data_type_default_nullable = 1` ويُنشأ الجدول في قاعدة بيانات `Replicated` أو عبر `ON CLUSTER`. [#97572](https://github.com/ClickHouse/ClickHouse/pull/97572) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* إصلاح عدد الصفوف الخاطئ الذي يعيده استعلام `MaterializedView` عند ضبط `query_plan_enable_optimizations = 0`، عندما يعيّن العرض عمود `integer` إلى عمود `Bool`. [#100692](https://github.com/ClickHouse/ClickHouse/pull/100692) ([Maximus5](https://github.com/Maximus5)).
* إصلاح بيانات تعريف الأجزاء غير المتسقة بعد عمليات التعديل على الأعمدة ذات التسلسلات غير الافتراضية. [#102817](https://github.com/ClickHouse/ClickHouse/pull/102817) ([korowa](https://github.com/korowa)).
* إصلاح انتشار `NULL` عند قراءة الأعمدة الفرعية المستخرجة من أعمدة `Nullable(Tuple(...))`. على سبيل المثال، بالنسبة إلى `tup Nullable(Tuple(s Nullable(String)))`، يعيد `SELECT tup.s` الآن `NULL` بشكل صحيح في الصفوف التي يكون فيها الصف المركب الخارجي `NULL`، بدلًا من قيم غير صالحة. يشمل ذلك جميع أنواع العناصر القادرة على تمثيل `NULL`: `Nullable` و`Dynamic` و`Variant` و`LowCardinality(Nullable(...))`. [#102942](https://github.com/ClickHouse/ClickHouse/pull/102942) ([nihalzp](https://github.com/nihalzp)).
* إصلاح قيام `recursiveRemoveLowCardinality` بحذف أسماء أنواع الهندسة المخصصة (مثل `LineString` بدلًا من `Ring`، و`MultiLineString` بدلًا من `Polygon`)، مما كان يؤدي إلى تفسير نوع الهندسة بشكل خاطئ. [#103041](https://github.com/ClickHouse/ClickHouse/pull/103041) ([jh0x](https://github.com/jh0x)).
* إصلاح قيام `dictGetOrNull` بالكتابة فوق أعمدة أخرى بصمت بالقيمة `NULL` في إسقاط `SELECT` عند استدعائها باستخدام عمود مفتاح `Nullable` تكون قيمه مفقودة من القاموس. كانت الدالة تعدّل خريطة القيم الفارغة المُعارة من الإدخال في موضعها؛ أما الآن فتُنشئ نسخة عميقة من عمود النتيجة قبل تعديله. [#104327](https://github.com/ClickHouse/ClickHouse/pull/104327) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء في الاستعلامات الموزعة التي تحتوي على صف مركب `IN` فارغ ضمن مفتاح التجزئة عند تفعيل `optimize_skip_unused_shards_rewrite_in`. [#104966](https://github.com/ClickHouse/ClickHouse/pull/104966) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تقدير انتقائية `PREWHERE` لإحصاءات count-min في أعمدة `Float32`، بما في ذلك المقارنات مع قيم حرفية من `Float64`. [#105047](https://github.com/ClickHouse/ClickHouse/pull/105047) ([hanfei1991](https://github.com/hanfei1991)).
* إصلاح `ILLEGAL_TYPE_OF_ARGUMENT` عند دمج حالات التجميع `quantileExactWeightedInterpolated` أو `quantileDD` أو `quantilePrometheusHistogram` مع نظيراتها بصيغة الجمع `quantilesXxxMerge` (والعكس صحيح). تشترك الصيغ المفردة والجمع لهذه العائلات الثلاث من الكميات في حالة تجميع داخلية واحدة، لكنها لم تكن مدرجة في جدول تعيين الأسماء الداخلي، لذلك كان يُرفض دمج الحالات بين الدوال، وكذلك تحسين دمج الدوال لهذه العائلات. [#105189](https://github.com/ClickHouse/ClickHouse/pull/105189) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج غير الصحيحة للدوال `toStartOfWeek` و`toLastDayOfWeek` و`toMonday` و`toStartOfMonth` و`toLastDayOfMonth` و`toStartOfQuarter` و`toStartOfYear` عند تمرير وسيطات من النوعين `Date32` و`DateTime64` إذا وقعت النتيجة خارج نطاق `Date`: فبدلاً من الالتفاف إلى تواريخ عشوائية، أصبحت النتائج التي تسبق `1970-01-01` مقيَّدة إلى `1970-01-01`، والنتائج التي تلي `2149-06-06` مقيَّدة إلى `2149-06-06`. يصلح هذا أيضاً نتائج الاستعلامات الخاطئة (الأجزاء والحبيبات التي استُبعدت خطأً) عند استخدام هذه الدوال في `WHERE` على مفتاح `Date32` أو `DateTime64` يحتوي على قيم خارج النطاق. [#105244](https://github.com/ClickHouse/ClickHouse/pull/105244) ([yariks5s](https://github.com/yariks5s)).
* إصلاح خطأ منطقي في `arrayRemove` عندما تكون الوسيطة الأولى مصفوفة من `Variant` وجميع بدائلها غير متوافقة مع نوع الوسيطة الثانية، بينما يكون `variant_throw_on_type_mismatch` معطلاً. تتعامل الدالة الآن مع المقارنة على أنها "غير متساوية أبداً" وتعيد المصفوفة دون تغيير بدلاً من التسبب في فشل `assertTypeEquality` من جانب الخادم. [#105248](https://github.com/ClickHouse/ClickHouse/pull/105248) ([groeneai](https://github.com/groeneai)).
* إصلاح تجاهل `toFloat64`/`toUInt32`/`toString`/إلخ. على `Dynamic` للإعداد `cast_keep_nullable`. [#105467](https://github.com/ClickHouse/ClickHouse/pull/105467) ([Avogar](https://github.com/Avogar)).
* إصلاح تعطل الخادم بسبب `segfault` في `uniqStateOrNull` / `uniqStateOrDefault` / `uniqOrNullState` (وسلاسل combinator مشابهة لـ`uniq`) عند استخدامها مع `GROUP BY ... WITH ROLLUP` أو `WITH CUBE` أو `WITH TOTALS` ووسيطة `Nullable`. [#105470](https://github.com/ClickHouse/ClickHouse/pull/105470) ([groeneai](https://github.com/groeneai)).
* إصلاح إرجاع `toStartOfMillisecond` و`toStartOfMicrosecond` نتيجة تختلف بنحو ثانية تقريباً لقيم `DateTime64` السالبة (قبل الحقبة)، وإصلاح تجاوز سعة الأعداد الصحيحة الموقعة الذي يرصدُه `UndefinedBehaviorSanitizer` في `toStartOfSecond` و`toStartOfMillisecond` و`toStartOfMicrosecond` لمدخلات `DateTime64` القريبة من `INT64_MIN`. [#105482](https://github.com/ClickHouse/ClickHouse/pull/105482) ([groeneai](https://github.com/groeneai)).
* إصلاح إنهاء الخادم عند إلغاء تسلسل حالات `singleValueOrNull` لـ`JSON`. [#105535](https://github.com/ClickHouse/ClickHouse/pull/105535) ([Avogar](https://github.com/Avogar)).
* إصلاح تجاهل `input_format_try_infer_datetimes` أثناء الإدراج في البيانات المشتركة في `JSON`. [#105544](https://github.com/ClickHouse/ClickHouse/pull/105544) ([Avogar](https://github.com/Avogar)).
* إصلاح التفاف `DateTime` للقيم خارج النطاق في `JSONExtract` وعمليات إلغاء تسلسل النصوص. [#105551](https://github.com/ClickHouse/ClickHouse/pull/105551) ([Avogar](https://github.com/Avogar)).
* إصلاح التعطل عند إدراج tuples بأحجام مختلفة في عبارة `VALUES` نفسها ضمن عمود `String`. [#105582](https://github.com/ClickHouse/ClickHouse/pull/105582) ([Avogar](https://github.com/Avogar)).
* إصلاح خطأ `NOT&#95;IMPLEMENTED` في `toString` من `DateTime` بمنطقة زمنية تحتوي على قيمة `NULL`. [#105587](https://github.com/ClickHouse/ClickHouse/pull/105587) ([yariks5s](https://github.com/yariks5s)).
* إضافة تحقق من أعمدة `Dynamic` المسطحة غير الصالحة في إدخال `Native`. [#105666](https://github.com/ClickHouse/ClickHouse/pull/105666) ([Avogar](https://github.com/Avogar)).
* إصلاح `LOGICAL_ERROR` (`Unexpected return type from if`) الذي يظهر أثناء تخطيط الاستعلام لتعبيرات `if` التي يكون نوع نتيجتها `Variant` ويكون فرعها الثاني أو الثالث عبارة عن `if` بشرط ثابت على قيمة حرفية من `UInt64` تقع ضمن نطاق `Int64`. [#105680](https://github.com/ClickHouse/ClickHouse/pull/105680) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `Bad get: has Decimal32, requested Decimal128` في `sumMap` و`sumMapWithOverflow` على عمود `Nested(... Nullable(Decimal(P, S)))` عند تسلسل حالة التجميع (مثل النسخ المتماثلة المتوازية، واستخدام `sumMapState` عبر منسّق حالة ثنائي، والتجميع الخارجي). [#105816](https://github.com/ClickHouse/ClickHouse/pull/105816) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأين `Expected ColumnLowCardinality, got String` / `Bad cast from type DB::ColumnString to DB::ColumnLowCardinality` عند استخدام `apply_mutations_on_fly = 1` على جدول يحتوي على طفرات `UPDATE`/`DELETE` معلّقة أثناء التنفيذ ومصطفّة قبل طفرة `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#105847](https://github.com/ClickHouse/ClickHouse/pull/105847) ([Algunenano](https://github.com/Algunenano)).
* إصلاح الخطأ `Cannot find column` في الاستعلامات الموزعة التي تستخدم عامل التصفية `IN Array(...)` مع المحلل الجديد. [#105894](https://github.com/ClickHouse/ClickHouse/pull/105894) ([KochetovNicolai](https://github.com/KochetovNicolai)).
* إصلاح إنهاء الخادم عند تعديل عمود يتضمن `STATISTICS` إلى `Nullable` بينما يحذفه `ALTER` آخر بالتزامن. [#105917](https://github.com/ClickHouse/ClickHouse/pull/105917) ([groeneai](https://github.com/groeneai)).
* رفض بايتات `IntervalKind` الخارجة عن النطاق أثناء فك ترميز النوع `RowBinaryWithNamesAndTypes` (`input_format_binary_decode_types_in_binary_format = 1`) مع عرض خطأ `INCORRECT_DATA` واضح، بدلًا من إنشاء `DataTypeInterval` بنوع غير صالح قد يؤدي لاحقًا إلى سلوك غير محدد في مسارات التجزئة. [#106261](https://github.com/ClickHouse/ClickHouse/pull/106261) ([groeneai](https://github.com/groeneai)).
* قراءة العمود الفرعي 'null' كمسار JSON في Nullable(JSON) بدلًا من null-map. [#106295](https://github.com/ClickHouse/ClickHouse/pull/106295) ([Avogar](https://github.com/Avogar)).
* إصلاح قراءة خارج الحدود في `sipHash64Keyed` و`sipHash128Keyed` و`sipHash128ReferenceKeyed` عند تجزئة عمود تكون جميع مصفوفاته فارغة ولا يكون المفتاح ثابتًا. [#106355](https://github.com/ClickHouse/ClickHouse/pull/106355) ([Algunenano](https://github.com/Algunenano)).
* إصلاح خطأ كان يمنع المستخدمين من استخدام الاستعلامات الفرعية ذات القيمة المفردة في الوسيط الأول لـ `IN` عندما يكون الوسيط الثاني صفًا غير ثابت. [#106610](https://github.com/ClickHouse/ClickHouse/pull/106610) ([yariks5s](https://github.com/yariks5s)).
* إصلاح تجاهل `session_timezone` عند تسلسل أعمدة `LowCardinality(DateTime)` إلى تنسيقات نصية (CSV وTSV وJSONEachRow وغيرها). سابقًا، بعد أول كتابة لعمود `LowCardinality(DateTime)` على خادم، كانت جميع الاستعلامات اللاحقة التي تكتب هذا العمود تعرض سلسلة الوقت المحلي وفق أول منطقة زمنية تمت رؤيتها، بغض النظر عن `session_timezone`. [#106634](https://github.com/ClickHouse/ClickHouse/pull/106634) ([groeneai](https://github.com/groeneai)).
* إصلاح إنهاء الخادم في `if` و`multiIf` عندما يكون الشرط قيمة ثابتة من `Nullable(Nothing)`. [#106678](https://github.com/ClickHouse/ClickHouse/pull/106678) ([groeneai](https://github.com/groeneai)).
* التراجع عن تغيير كان يجعل `sumMap` / الموفّق `-Map` يرفضان أنواع القيم الرقمية ذات الأسماء المخصصة (مثل `SimpleAggregateFunction(sum, T)` و`Bool`) بالرسالة `ILLEGAL_TYPE_OF_ARGUMENT: Values for -Map cannot be summed`، مما عطّل عمليات التجميع التي كانت تعمل سابقًا. [#106729](https://github.com/ClickHouse/ClickHouse/pull/106729) ([fm4v](https://github.com/fm4v)).
* إصلاح استثناء `Bad cast` أثناء تقليم الأجزاء استنادًا إلى إحصاءات `MinMax` عندما يكون العمود المفتاح `LowCardinality` وثابت المسند هو `LowCardinality(Nullable(...))`. [#106793](https://github.com/ClickHouse/ClickHouse/pull/106793) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ منطقي في `parseDateTime` عند وجود بايتات إدخال غير ASCII. [#106856](https://github.com/ClickHouse/ClickHouse/pull/106856) ([Avogar](https://github.com/Avogar)).
* إصلاح استثناء `THERE_IS_NO_COLUMN` في الاستعلامات الموزعة التي تتضمن تحسين `optimize_rewrite_aggregate_function_with_if`، عندما تتطلب وسيطة الدالة التجميعية تحويلاً إلى النوع `Nullable`. [#106908](https://github.com/ClickHouse/ClickHouse/pull/106908) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح تجاوز في عدد صحيح موقّع (سلوك غير محدد) في `arrayLevenshteinDistanceWeighted` و`arraySimilarity` عندما تحتوي مصفوفات الأوزان على قيم صحيحة كبيرة. تُراكَم المسافة الموزونة الآن في عدد صحيح واسع للأوزان الصحيحة، لذا لم تعد الأوزان الصحيحة الكبيرة تتجاوز السعة وتظل دقيقة. [#106934](https://github.com/ClickHouse/ClickHouse/pull/106934) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل (`Source column is not Map` / `SIGSEGV`) عند دمج كتل مرتبة تحتوي على عمود `Variant` بمتغير `Map` يختلف ترتيب تخزينه المحلي عن ترتيبه العام. [#107011](https://github.com/ClickHouse/ClickHouse/pull/107011) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `TYPE_MISMATCH` ("Cannot convert string ... to type ...") في استعلامات `ORDER BY <numeric column> ... LIMIT n` عندما تؤدي المادية الكسولة إلى وضع عمود آخر قبل عمود الفرز. تُقرأ عتبة أعلى K الآن من عمود الفرز الصحيح. [#107060](https://github.com/ClickHouse/ClickHouse/pull/107060) ([groeneai](https://github.com/groeneai)).
* إصلاح عملية `ALTER TABLE ... RENAME COLUMN a TO b, RENAME COLUMN c TO a` مركبة تعيد استخدام اسم عمود تم تحريره (عملية "تبديل") بين أعمدة من أنواع مختلفة. سجّل الجزء المادي نوع عمود غير صحيح، مما أدى إلى فشل `SELECT` لاحقاً بالرسالة `Conversion between numeric types and IPv6 is not supported` (أو إيقاف العملية عند تحميل الجزء في إصدارات debug). [#107064](https://github.com/ClickHouse/ClickHouse/pull/107064) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج غير الحتمية للدالة `roundDown` عندما تحتوي مصفوفة الحدود على `NaN`. كان يمكن لقيمة الإدخال نفسها أن تُرجع حداً منتهياً أو `NaN` بحسب الصفوف المحيطة في الدفعة. تُتجاهل حدود `NaN` الآن، لذا تعتمد النتيجة فقط على الحدود المنتهية. [#107065](https://github.com/ClickHouse/ClickHouse/pull/107065) ([groeneai](https://github.com/groeneai)).
* إصلاح قيام `quantileTDigest` و`quantileTDigestWeighted` بإطلاق `DECIMAL_OVERFLOW` لوسيطات `Date` و`DateTime` عندما يكون الكوانتايل المُستوفى كسرياً لكنه ضمن النطاق (مثلاً `quantileTDigestWeighted(date, weight)` على قيم تتسع جميعها ضمن النوع). تُقتطع النتيجة الكسرية الآن إلى نوع النتيجة، بما يتوافق مع `quantilesTDigestWeighted`؛ ولا تزال القيم الفعلية خارج النطاق تثير خطأً. [#107066](https://github.com/ClickHouse/ClickHouse/pull/107066) ([groeneai](https://github.com/groeneai)).
* إصلاح الاقتطاع الصامت لقيم الأعداد الصحيحة خارج النطاق في تعريفات النوع `Enum8`/`Enum16`. أصبح `Enum8('a' = 200)` يطلق `ARGUMENT_OUT_OF_BOUND` بدلاً من إنشاء `Enum8('a' = -56)` بصمت. [#107081](https://github.com/ClickHouse/ClickHouse/pull/107081) ([groeneai](https://github.com/groeneai)).
* إصلاح ترتيب الصفوف غير الصحيح (وخطأ `LOGICAL_ERROR` بعنوان "Rows are not sorted with permutation" في إصدارات debug) في استعلامات `ORDER BY ... LIMIT` متعددة الأعمدة التي تفرز حسب أعمدة `Nullable` عندما تتعادل عدة صفوف في الأعمدة الأولى. [#107094](https://github.com/ClickHouse/ClickHouse/pull/107094) ([groeneai](https://github.com/groeneai)).
* إصلاح `Logical error: 'Bad cast from type DB::ColumnVector<...> to DB::ColumnTuple'` عند قراءة عمود `Array(Tuple(...))` مملوء بقيم افتراضية، مثلًا بعد `ALTER TABLE ... ADD COLUMN` أو بعد طفرة `ALTER TABLE ... CLEAR COLUMN` غير مكتملة تُطبَّق أثناء التنفيذ. [#107232](https://github.com/ClickHouse/ClickHouse/pull/107232) ([groeneai](https://github.com/groeneai)).
* رفض الاستخدامات غير المدعومة لأعمدة `AggregateFunction` في تعبيرات TTL عند تنفيذ `CREATE TABLE` (مثلًا `TTL toDateTime(state)`) بدلًا من الفشل لاحقًا أثناء تنفيذ TTL مع `ILLEGAL_TYPE_OF_ARGUMENT`. يشمل ذلك أيضًا الحالات الموجودة ضمن بدائل `Variant` وقيم `Dynamic`. ولا تزال المستهلكات الصالحة الواعية بالحالة، مثل `finalizeAggregation`، مقبولة. [#107366](https://github.com/ClickHouse/ClickHouse/pull/107366) ([Ria-K912](https://github.com/Ria-K912)).
* إصلاح `arrayResize` مع وسيطة حجم من نوع `Decimal`: يُفسَّر الحجم الآن وفقًا لقيمته الفعلية (مثلًا، تُرجع `arrayResize([1, 2, 3], 1.5::Decimal(2, 1))` عنصرًا واحدًا) بدلًا من التمثيل الخام غير المُقاس. [#107389](https://github.com/ClickHouse/ClickHouse/pull/107389) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR: Unexpected return type from materialize` (وأخطاء عدم تطابق الأنواع المشابهة) عند استخدام `apply_mutations_on_fly = 1` على جدول يحتوي على `UPDATE` معلّق يُطبَّق أثناء التنفيذ، ويُقرأ عموده المستهدف أيضًا كمدخل لدالة بواسطة `UPDATE` سابق يُطبَّق أثناء التنفيذ، قبل طفرة `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#107475](https://github.com/ClickHouse/ClickHouse/pull/107475) ([groeneai](https://github.com/groeneai)).
* إصلاح تحويل قيم NULL بصمت إلى سلاسل فارغة عند إدراج بيانات Arrow/ORC في عمود `LowCardinality(Nullable(...))`. كان هذا انحدارًا ظهر في الإصدار 26.5. [#107532](https://github.com/ClickHouse/ClickHouse/pull/107532) ([Ergus](https://github.com/Ergus)).
* إصلاح `LOGICAL_ERROR` ("Input nodes size mismatch in dag") عند تنفيذ استعلام يتضمن `make_distributed_plan = 1` ويربط باستخدام مفتاح مغلّف بدالة، بينما لا يوجد نوع مشترك بين جانبيه (على سبيل المثال، `ON intDiv(-1, t1.key) = t2.key` مع مفتاح أيمن من نوع `UInt64`). [#107701](https://github.com/ClickHouse/ClickHouse/pull/107701) ([groeneai](https://github.com/groeneai)).
* إصلاح قيام إزالة تكرار الإدراج بحساب تجزئات خاطئة لأعمدة `String` و`Array` مع إعداد الخادم `insert_deduplication_version = new_unified_hash`: إذ قد تفشل عمليات الإدراج المتطابقة في إزالة التكرار لأن تجزئة إزالة التكرار كانت تعتمد على موضع الصف داخل الكتلة المُدرجة. [#107915](https://github.com/ClickHouse/ClickHouse/pull/107915) ([CheSema](https://github.com/CheSema)).
* إصلاح إنهاء الخادم في `has` عند البحث في `Map` ذي مفاتيح `Dynamic` باستخدام وسيطة `LowCardinality`. [#107956](https://github.com/ClickHouse/ClickHouse/pull/107956) ([groeneai](https://github.com/groeneai)).
* إصلاح انحدار في أداء الأعمدة الفرعية لـ `Map` المستخدمة مع `PREWHERE`. [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Avogar](https://github.com/Avogar)).
* إصلاح خطأ منطقي عند تحويل عمود `Dynamic` أو `Variant` متداخل داخل `Tuple` إلى نوع عنصر غير `Nullable` باستخدام `accurateCastOrNull` أو `accurateCastOrDefault`. [#108061](https://github.com/ClickHouse/ClickHouse/pull/108061) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء الخطأ المنطقي `Bad cast from type DB::ColumnSparse to DB::ColumnVector<char8_t>` عند قراءة استعلام `LIKE` من فهرس `text` عبر مسار القراءة المباشرة البديل لعمود مخزّن بشكل متفرق. [#108068](https://github.com/ClickHouse/ClickHouse/pull/108068) ([groeneai](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("نوع الإرجاع غير المتوقع من if") عند قراءة عمود مع `apply_mutations_on_fly = 1` بعد تنفيذ `ALTER UPDATE col = ... WHERE <cond>` بشرط غير ثابت أو خاطئ، يتبعه `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([groeneai](https://github.com/groeneai)).
* إصلاح `signed integer overflow` (سلوك غير معرّف) في `dateDiff` بوحدتي `hour` و`minute` عند استخدام قيم `DateTime64` متطرفة قريبة من حدود نطاق `Int64`. [#108229](https://github.com/ClickHouse/ClickHouse/pull/108229) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء في الخادم (`Logical error` في `IColumn::insertFrom`) عند تحويل `Array(Dynamic)` أو `Array(Variant)` إلى `QBit` باستخدام `accurateCastOrNull`، مثل `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([groeneai](https://github.com/groeneai)).
* إصلاح `parseDateTimeBestEffort` مع المنطقة الزمنية، إذ كان يطلق CANNOT\_PARSE\_DATETIME لصفوف NULL في `toString(Nullable(DateTime64))`. [#108310](https://github.com/ClickHouse/ClickHouse/pull/108310) ([yariks5s](https://github.com/yariks5s)).
* إصلاح تعطل الخادم (تجاوز سعة المكدس) الناجم عن تعبيرات متداخلة بعمق مثل `[[[ ... ]]]` أو `array(array( ... ))` عند ضبط `max_parser_depth` على قيمة كبيرة. [#108493](https://github.com/ClickHouse/ClickHouse/pull/108493) ([Algunenano](https://github.com/Algunenano)).
* إصلاح إسقاط `SELECT *` الذي كان يعيد القيمة الافتراضية لنوع العمود (مثل `0`) بدلًا من قيمة `DEFAULT` الخاصة به (مثل `-1`) عند قراءة عمود أُضيف باستخدام `ALTER TABLE ... ADD COLUMN ... DEFAULT` بعد إنشاء الإسقاط. كانت القراءات من الجدول الأساسي صحيحة بالفعل؛ ولم تتأثر سوى القراءات التي يعالجها الإسقاط، إلى أن أُعيد بناؤه. [#108569](https://github.com/ClickHouse/ClickHouse/pull/108569) ([tiandiwonder](https://github.com/tiandiwonder)).
* إصلاح تعطيل التقليم حسب القسم والمفتاح الأساسي بصمت عندما يكون عمود مفتاح `LowCardinality(FixedString)` (أو `LowCardinality(Nullable(FixedString))`) مغلفًا بدالة ضمن المفتاح، مثل `PARTITION BY sipHash64(k) % N` مع `WHERE k = 'literal'`. كانت هذه الاستعلامات تفحص جميع الأقسام بدلًا من تقليمها. [#108777](https://github.com/ClickHouse/ClickHouse/pull/108777) ([groeneai](https://github.com/groeneai)).
* الحفاظ على الترتيب الأصلي للمفاتيح في تسلسل Map المستند إلى الحاويات لإصلاح عمليات المقارنة التي تعتمد عليه. [#109178](https://github.com/ClickHouse/ClickHouse/pull/109178) ([Avogar](https://github.com/Avogar)).
* إصلاح استنتاج المخطط لتنسيقات `Arrow` و`ArrowStream` و`Avro` وقارئات `ORC` و`Parquet` القديمة، التي كانت تعيد `Nullable(Tuple)` لأعمدة `struct` القابلة للقيم الفارغة، رغم أن النوع `Nullable(Tuple)` غير مسموح به (`allow_experimental_nullable_tuple_type` معطل). كان `DESCRIBE` يعيد نوعًا يرفضه `CREATE TABLE`، لذلك كان إنشاء جدول أو إدراج بيانات باستخدام المخطط المستنتج يفشل بالخطأ `Nullable Tuple type is not allowed`. [#109185](https://github.com/ClickHouse/ClickHouse/pull/109185) ([nihalzp](https://github.com/nihalzp)).
* إصلاح خطأ كانت فيه قيم `DEFAULT` للأعمدة لا تُطبّق عند استخدام `INSERT INTO TABLE FUNCTION` (مثل `remote(...)` أو `file(...)`) مع بيانات `VALUES` مضمنة، عندما يحلل الخادم البيانات المضمنة بنفسه (`send_table_structure_on_insert_with_inline_data = 0`). كانت قيمة `NULL` صريحة تُدرج في عمود غير `Nullable` ذي `DEFAULT` تصبح `0` بدلًا من القيمة الافتراضية المعلنة. أصبح السلوك الآن مماثلًا لعملية `INSERT` عادية في جدول ولـ HTTP protocol. [#109258](https://github.com/ClickHouse/ClickHouse/pull/109258) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ segfault في `groupArrayLastMerge`. أصبح إلغاء تسلسل حالة الدالة التجميعية خاضعًا للتحقق، لذا لا تؤدي الحالة التالفة إلى وصول خارج الحدود. [#109485](https://github.com/ClickHouse/ClickHouse/pull/109485) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح خطأ segfault في الدالة التجميعية `largestTriangleThreeBuckets` برفض حالة الدالة التجميعية التالفة أثناء إلغاء التسلسل. [#109492](https://github.com/ClickHouse/ClickHouse/pull/109492) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح قراءة عمود Parquet ذي `Tuple` غير قابل للقيم NULL عندما يغلّفه نوع ClickHouse المطلوب ضمن `Nullable` (مثل `Nullable(Tuple(...))`)، إذ كانت تفشل سابقًا بالخطأ `TYPE_MISMATCH`. [#109615](https://github.com/ClickHouse/ClickHouse/pull/109615) ([groeneai](https://github.com/groeneai)).
* أصبح بإمكان القارئ الأصلي لـ Parquet v3 قراءة عمود struct قابل للقيم NULL فعليًا (مجموعة OPTIONAL في Parquet) باعتباره `Nullable(Tuple(...))`. وكان يرمي سابقًا الخطأ `TYPE_MISMATCH`. [#109898](https://github.com/ClickHouse/ClickHouse/pull/109898) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل الخادم (تجاوز مكدس أصلي) عند نسخ أو إتلاف قيمة حرفية متداخلة بعمق من `Array`/`Tuple`/`Map`/`Object`، مثل استعلام يتضمن قيمة حرفية متداخلة بعمق كبير مع رفع `max_parser_depth`. [#110393](https://github.com/ClickHouse/ClickHouse/pull/110393) ([Algunenano](https://github.com/Algunenano)).
* إصلاح نتائج `IS NULL` / `IS NOT NULL` / `count()` غير الصحيحة مع `optimize_functions_to_subcolumns` في عمود أصبح `Nullable` عبر `ALTER MODIFY COLUMN T` يغيّر البيانات الوصفية فقط إلى `Nullable(T)`. بالنسبة إلى الأجزاء المكتوبة قبل التحويل، كان يُملأ العمود الفرعي `.null` من القيمة الافتراضية لنوع التخزين (NULL) بدلًا من اشتقاقه من العمود الأب الموجود فعليًا، لذا كان يُبلّغ خطأً عن الصفوف الموجودة غير NULL على أنها NULL. [#110584](https://github.com/ClickHouse/ClickHouse/pull/110584) ([groeneai](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("Bad cast from ColumnString to ColumnLowCardinality") أثناء تحليل فهرس المفتاح الأساسي عندما يُغلّف عمود مفتاح `LowCardinality` ضمن سلسلة `CAST` متداخلة تعيد إدخال `LowCardinality`، مثل `WHERE CAST(CAST(s, 'LowCardinality(String)'), 'String') < '5'`. في إصدارات debug وsanitizer كان هذا يوقف الخادم، بينما كان يتسبب في فشل الاستعلام في إصدارات الإصدار. [#111050](https://github.com/ClickHouse/ClickHouse/pull/111050) ([groeneai](https://github.com/groeneai)).
* إصلاح قراءة بيانات `Arrow` و`ArrowStream` ذات أعمدة `Array` أو `Map` متداخلة وفارغة، والتي أنتجها Apache Arrow Java قبل الإصدار 19.0.0 (المضمّن مع Apache Spark)، إذ كانت تُرفض سابقًا بخطأ `INCORRECT_DATA` يفيد بأن مخزن offsets المؤقت صغير جدًا. [#111101](https://github.com/ClickHouse/ClickHouse/pull/111101) ([Algunenano](https://github.com/Algunenano)).
* إصلاح الخطأ المنطقي `Block structure mismatch` (في إصدارات debug وsanitizer) وخطأ `Illegal types of arguments` في عمليات المجموعات على أعمدة حالات تجميعية متوافقة (مثل `quantileState` و`quantilesState(0.9)`) متداخلة داخل أعمدة حاوية مثل `Tuple` أو `Array` أو `Map` أو `Nullable` أو `Variant`. [#111191](https://github.com/ClickHouse/ClickHouse/pull/111191) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إضافة تحقق من بيانات الفهرس المنسوخ التالفة المستلمة عبر البروتوكول الأصلي. [#112331](https://github.com/ClickHouse/ClickHouse/pull/112331) ([Avogar](https://github.com/Avogar)).
* إصلاح قراءة خارج الحدود أثناء إزالة تكرار الإدراج عندما يمر `INSERT` عبر عرض مادي يغيّر عدد الصفوف قبل الكتابة إلى جدول هدف مقسّم إلى أقسام. [#112649](https://github.com/ClickHouse/ClickHouse/pull/112649) ([CheSema](https://github.com/CheSema)).
* تم إصلاح كتابة خارج النطاق عند قراءة عمود `DECIMAL` من `Parquet` يكون نوعه الفيزيائي أوسع من النوع الذي تقابله دقته المعلنة، مثل `DECIMAL(9, 2)` المخزن بالنوع الفيزيائي `INT64`. هذه الملفات صالحة في `Parquet` وتنتجها أدوات كتابة أخرى، لكن القارئ كان يحدد حجم العمود الوجهة بناءً على الدقة المعلنة، بينما كان مفكك الترميز يكتب بالعرض الفيزيائي، مما يؤدي إلى تلف الذاكرة. تؤدي قراءة مثل هذا الملف الآن أيضًا إلى ظهور `DECIMAL_OVERFLOW` عندما لا تتسع قيمة ضمن الدقة المعلنة، بدلًا من إرجاع بيانات تالفة، وتتم القراءة دون فقدان للبيانات عند استخدام تلميح نوع بعرض لا يقل عن عرض النوع الفيزيائي. [#113046](https://github.com/ClickHouse/ClickHouse/pull/113046) ([groeneai](https://github.com/groeneai)).
* تم إصلاح فشل `ATTACH PARTITION FROM` و`REPLACE PARTITION` و`MOVE PARTITION TO TABLE` وإضافة نسخة متماثلة من `ReplicatedMergeTree` مع ظهور الرسالة `Tables have different ...` أو `METADATA_MISMATCH` أو `INCOMPATIBLE_COLUMNS` للجداول التي كُتبت تعريفاتها بأقواس زائدة، مثل `PARTITION BY (a)` و`ORDER BY (b)` و`INDEX ix (b * c) TYPE minmax` و`PROJECTION p (SELECT (b) ...)` و`CONSTRAINT c CHECK (a > 0)` و`TTL (d + INTERVAL 10 YEAR)` أو `DEFAULT (a + 1)`. [#114188](https://github.com/ClickHouse/ClickHouse/pull/114188) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ يؤدي إلى تخزين كيان وصول يحمل إعدادًا بقيمة `Map`، مثل ملف تعريف إعدادات يحتوي على `http_response_headers` أو `additional_table_filters`، بصيغة لا يستطيع ClickHouse قراءتها مجددًا، مما يجعل الكيان غير قابل للتحميل بشكل دائم بعد إعادة التشغيل. [#114620](https://github.com/ClickHouse/ClickHouse/pull/114620) ([groeneai](https://github.com/groeneai)).
* تم إصلاح `has` و`indexOf` و`countEqual` و`mapContainsKey` و`mapContainsValue` وفهرسة `Map` التي كانت تُرجع "غير موجود" عند استخدام قيمة بحث ثابتة من `LowCardinality` تساوي القيمة الافتراضية لنوع العنصر، مثل `String` فارغ أو الرقم صفر. [#114624](https://github.com/ClickHouse/ClickHouse/pull/114624) ([groeneai](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة لتحسين `GROUP BY ... LIMIT` البسيط (الإعداد `optimize_trivial_group_by_limit_query`) في الاستعلامات التي تحتوي على `DISTINCT` أو `QUALIFY` أو دوال النوافذ أو `arrayJoin` في الإسقاط: إذ تستهلك هذه العمليات المجموعات أو تصفيها بعد التجميع، لذلك كان تقييد التجميع عند مفاتيح `LIMIT + OFFSET` قد يعيد صفوفًا أقل من اللازم أو قيمًا خاطئة. لم يعد التحسين يُطبّق على مثل هذه الاستعلامات. [#114695](https://github.com/ClickHouse/ClickHouse/pull/114695) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح النتائج الخاطئة لـ `SELECT count(arrayJoin(arr))` مع الإعداد الافتراضي `optimize_trivial_count_query = 1`. كان يُرجع عدد الصفوف المخزن بدلًا من عدد عناصر المصفوفة، وكان الاستعلام يُرجع `0` مع `file()` و`url()`. [#115227](https://github.com/ClickHouse/ClickHouse/pull/115227) ([groeneai](https://github.com/groeneai)).
* تم إصلاح `uniq` و`uniqExact` و`uniqHLL12` و`uniqTheta` التي كانت تُرجع نتيجة خاطئة لوسيطة مغلفة بدالة حقنية تخفي قابلية القيم الفارغة، مثل `uniqExact(tuple(x))` على عمود `Nullable`. كان تحسين `optimize_injective_functions_inside_uniq` يزيل دالة التغليف، فتُتخطى بعد ذلك الصفوف ذات القيمة NULL بدلًا من احتسابها. [#115466](https://github.com/ClickHouse/ClickHouse/pull/115466) ([vdimir](https://github.com/vdimir)).
* أصبح مسموحًا لقارئات KeeperMap بقبول البيانات الوصفية المشتركة عندما تختلف المفاتيح الأساسية المتكافئة فقط بأقواس خارجية زائدة. [#115642](https://github.com/ClickHouse/ClickHouse/pull/115642) ([skuznetsov-clickhouse](https://github.com/skuznetsov-clickhouse)).

<h3 id="text-index-and-skip-index-fixes">
  إصلاحات فهرس النص وفهرس التخطي
</h3>

* إصلاح توقف الخادم عند استخدام استعلام لمقارنات `coalesce`/`ifNull` متداخلة (مثل `WHERE coalesce(a, b, coalesce(c, d), e) = const`) على جدول `MergeTree` يحتوي على عدة فهارس تخطٍ من نوع `minmax` ومع `use_skip_indexes_for_disjunctions = 1`. تُطبَّق الآن إعادة كتابة فهرس التخطي لـ `<op>(coalesce(...), const)` بصورة تعاودية على وسائط `coalesce` الداخلية، بحيث تتطابق صيغة RPN لـ `KeyCondition` لكل فهرس مع صيغة RPN للقالب، كما يفترض رمز تتبع عمليات الفصل بالفعل. [#103929](https://github.com/ClickHouse/ClickHouse/pull/103929) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` الذي كان يطرحه `ALTER TABLE ... MATERIALIZE INDEX` على الأجزاء التي أُنشئت في 25.8 وتحتوي على فهرس تخطٍ لعمود أُضيف عبر أمر مستقل `ALTER TABLE ... ADD COLUMN`. تقرأ عملية التعديل الآن بصورة صحيحة كل عمود مطلوب لكل فهرس تخطٍ وإسقاط موجودين مسبقًا في الجزء أثناء إعادة الحساب القسرية. [#105039](https://github.com/ClickHouse/ClickHouse/pull/105039) ([groeneai](https://github.com/groeneai)).
* إصلاح نقص صامت في العدد في استعلامات `SELECT` عند استخدام `use_query_condition_cache = 1` (القيمة الافتراضية). كان استعلام بالشكل `PREWHERE pk_prefix = X WHERE non_pk IN (...)` على عمود ذي فهرس تخطٍ بمرشح Bloom يفسد `QueryConditionCache` للمسند `pk_prefix = X`، لذا كان استعلام سليم لاحق من الشكل `SELECT count() ... WHERE pk_prefix = X` يعيد نتيجة غير صحيحة بعدد أقل من الفعلي. تأثرت جميع إصدارات 26.x. [#105686](https://github.com/ClickHouse/ClickHouse/pull/105686) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء يحدث عندما يستخدم استعلام بحث متجهي فهرسًا متجهيًا وفهرس تخطٍ آخر مثل `minmax` مع `use_skip_indexes_on_data_read = 1`. [#106473](https://github.com/ClickHouse/ClickHouse/pull/106473) ([shankar-iyer](https://github.com/shankar-iyer)).
* إصلاح خطأ "عدد كبير جدًا من العلامات" لفهرس نصي على جزء مدمج فارغ. [#106867](https://github.com/ClickHouse/ClickHouse/pull/106867) ([azat](https://github.com/azat)).
* إصلاح نتائج خاطئة عند الاستعلام عن جدول `ReplacingMergeTree` باستخدام `FINAL` ومرشح على فهرس نصي، عندما يكون `query_plan_optimize_lazy_final` مفعّلًا. أنشأ تحسين `FINAL` الكسول خطوات قراءة لم تُحاكِ القراءة المباشرة من الفهرس النصي، مما أدى إلى إسقاط المرشح جميع الصفوف المطابقة. [#106894](https://github.com/ClickHouse/ClickHouse/pull/106894) ([Ergus](https://github.com/Ergus)).
* إصلاح `LOGICAL ERROR` (`Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`) عند مقارنة قيمة ثابتة من نوع `Variant` تحتوي على عضو `LowCardinality` بعمود مفتاح يكون تعبير مفتاحه دالة حتمية غير رتيبة (مثل فهرس تخطٍ من نوع `minmax` على `sipHash64(col)`). [#107111](https://github.com/ClickHouse/ClickHouse/pull/107111) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة (والفارغة غالبًا) من `ORDER BY <col> LIMIT n` عندما يكون تحسين `use_skip_indexes_for_top_k` نشطًا، وكان جزء يحتوي على فهرس تخطٍ من نوع `minmax` على عمود الفرز قد حُذفت منه صفوف باستخدام `DELETE` خفيف. لم يعد التحسين يرتب قيمة minmax القديمة في الأجزاء التي حُذفت منها صفوف باستخدام `DELETE` خفيف قبل الأجزاء التي تحتوي على أعلى الصفوف الحالية. [#107320](https://github.com/ClickHouse/ClickHouse/pull/107320) ([groeneai](https://github.com/groeneai)).
* إصلاح عدم تقليم فهرس التخطي Set للحبيبات في أعمدة LowCardinality. [#107868](https://github.com/ClickHouse/ClickHouse/pull/107868) ([thevar1able](https://github.com/thevar1able)).
* يمكن الآن إعادة الإعداد `use_skip_indexes_on_data_read` إلى قيمته الافتراضية السابقة للإصدار 26.1 (`false`) عبر إعداد `compatibility`، مما يوفر حلًا مؤقتًا لتراجع في الأداء، حيث يمنع مسار القراءة من البيانات تقليم نطاقات العلامات بواسطة فهارس التخطي `minmax`/`set`/`bloom_filter`. [#108330](https://github.com/ClickHouse/ClickHouse/pull/108330) ([egor-click](https://github.com/egor-click)).
* أُصلحت القراءة المباشرة من عدة فهارس نصية مجسّدة جزئيًا. [#108607](https://github.com/ClickHouse/ClickHouse/pull/108607) ([CurtizJ](https://github.com/CurtizJ)).
* أُصلحت مشكلة عدم استخدام فهرس نصي مُعرّف على `mapValues(map)` أو `mapKeys(map)` بصمت عند الاستعلام عن جدول عبر جدول بمحرك `Distributed` باستخدام المحلّل. كان الفهرس يُستخدم للجدول المحلي وعبر `cluster()`/`remote()`، لكن الاستعلام عبر جدول بمحرك `Distributed` كان يتجاهله (ويفشل بالخطأ `INDEX_NOT_USED` عند استخدام `force_data_skipping_indices`). [#109188](https://github.com/ClickHouse/ClickHouse/pull/109188) ([groeneai](https://github.com/groeneai)).
* أُصلح تعطل الخادم عند استخدام `CREATE HYPOTHETICAL INDEX ... TYPE set` (و`ngrambf_v1`/`tokenbf_v1`) في حال حذف وسيطة الفهرس المطلوبة. تُرفض هذه العبارات الآن برسالة خطأ واضحة. [#109294](https://github.com/ClickHouse/ClickHouse/pull/109294) ([groeneai](https://github.com/groeneai)).
* أُصلحت النتائج غير الصحيحة للدوال `has` و`mapContainsKey` و`mapContainsValue` عند استخدام إبرة فارغة مع وجود فهرس نصي. [#110246](https://github.com/ClickHouse/ClickHouse/pull/110246) ([rschu1ze](https://github.com/rschu1ze)).
* أُصلح الخطأ `ATTEMPT_TO_READ_AFTER_EOF` عند دمج الأجزاء التي تحتوي على فهرس نصي، إذا كان أحد الأجزاء المدمجة فارغًا، مثلًا بعد طفرة حذفت جميع صفوف الجزء. [#112490](https://github.com/ClickHouse/ClickHouse/pull/112490) ([CurtizJ](https://github.com/CurtizJ)).
* أُصلح تعليق تحسين خطة الاستعلام عندما تحتوي عبارة `WHERE` على ثابت سلسلة كبير يحوي عددًا كبيرًا من النقاط، ويحتوي الجدول على فهرس تخطٍ من نوع `bloom_filter` أو `tokenbf_v1` أو `ngrambf_v1` أو `text`. كانت مطابقة اسم عمود التصفية مع أعمدة الفهرس `JSONAllPaths(...)` تُعدّد كل تقسيم للاسم عند النقاط، مما جعل بناء شرط فهرس التخطي ذا تعقيد تربيعي بالنسبة إلى طول الثابت. [#113289](https://github.com/ClickHouse/ClickHouse/pull/113289) ([groeneai](https://github.com/groeneai)).
* أُصلحت مشكلة إرجاع `ORDER BY ... LIMIT` لصفوف أقل من المطلوب، وربما دون أي صفوف، عندما كانت سياسة الصفوف عامل التصفية الوحيد في الاستعلام وكان عمود الفرز يحتوي على فهرس تخطٍ `minmax`. كان تحسين أعلى K يضيّق نطاق القراءة قبل تطبيق سياسة الصفوف. [#114073](https://github.com/ClickHouse/ClickHouse/pull/114073) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h3 id="data-lake-fixes">
  إصلاحات مستودع البيانات
</h3>

* إصلاح استثناء خطأ منطقي عند قراءة جداول Iceberg التي تمت ترقية إصدار تنسيقها بواسطة أداة خارجية (مثل Spark). [#100407](https://github.com/ClickHouse/ClickHouse/pull/100407) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء (`LOGICAL_ERROR: 'PREWHERE passed to format that doesn't support it'`) عند قراءة جداول Iceberg التي تحتوي على ملفات بيانات ORC مع تفعيل تحسين PREWHERE. [#101206](https://github.com/ClickHouse/ClickHouse/pull/101206) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناءات `LOGICAL_ERROR` عند قراءة جداول بحيرة البيانات `Iceberg` أو `DeltaLake` عبر مسارات قد تصل إلى مسار القراءة دون تثبيت `datalake_table_state`، مثل تحديثات البيانات الوصفية المتزامنة لـ `Iceberg` أو قراءات `merge` لجداول `DeltaLake`. [#102033](https://github.com/ClickHouse/ClickHouse/pull/102033) ([groeneai](https://github.com/groeneai)).
* إصلاح الظهور المتقطع للخطأ `Logical error: 'Database <name> not found'` من `DataLakeConfiguration::getCatalog` عند تحميل جدول بمحرك `Iceberg` داخل قاعدة بيانات عادية أثناء التحميل غير المتزامن للبيانات الوصفية. [#103775](https://github.com/ClickHouse/ClickHouse/pull/103775) ([groeneai](https://github.com/groeneai)).
* إصلاح قراءات مفرطة للبيانات الوصفية من الكتالوج وS3 عندما تشير عبارة INSERT أو DDL إلى جدول غير موجود في قاعدة بيانات كتالوج DataLake مع تفعيل `show_data_lake_catalogs_in_system_tables`. كان مسار اقتراح تصحيح الأخطاء المطبعية يحمّل البيانات الوصفية الكاملة لـ Iceberg لكل جدول في الكتالوج بأكمله، مما قد يستنفد الذاكرة في الكتالوجات الكبيرة. [#104124](https://github.com/ClickHouse/ClickHouse/pull/104124) ([il9ue](https://github.com/il9ue)).
* إصلاح تضخم `read_bytes` (والبايتات/ث المشتقة المعروضة في `system.query_log` وشريط التقدم وغير ذلك) عند قراءة ملفات Parquet. كان التنفيذ السابق يبلّغ عن إجمالي الحجم المضغوط لمجموعة الصفوف في كل مقطع، لذا كانت قراءة K من أصل N من الأعمدة تؤدي إلى احتساب زائد بمقدار `N / K`. ويُجمع الآن عبر الأعمدة المحددة فقط. كما يُصلح تتبع التقدم على مستوى الملف لجداول Iceberg، الذي لم يكن يبلّغ سابقًا عن حجم ملف البيانات مطلقًا. [#105413](https://github.com/ClickHouse/ClickHouse/pull/105413) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة عند قراءة جدول Iceberg مع `iceberg_use_version_hint = 1` بعد أن يقوم كاتب آخر، مثل دالة الجدول `icebergLocal`/`icebergS3`، بتحديث الجدول دون هذا الإعداد. يُبقى `version-hint.text` الآن متزامنًا بواسطة كل كاتب بمجرد وجود الملف، لذا يرى القراء اللاحقون الذين يستخدمون التلميح أحدث لقطة. [#105682](https://github.com/ClickHouse/ClickHouse/pull/105682) ([groeneai](https://github.com/groeneai)).
* تحافظ عمليات الكتابة إلى Iceberg الآن على قيم NULL في أعمدة التقسيم `Nullable(T)`. سابقًا، كانت قيمة NULL التي يكتبها ClickHouse تظهر كالقيمة الافتراضية للنوع الداخلي (`0` لـ `int`) عند قراءتها مجددًا بواسطة Spark أو قارئات Iceberg الأخرى. [#105862](https://github.com/ClickHouse/ClickHouse/pull/105862) ([groeneai](https://github.com/groeneai)).
* إصلاح عمليات حذف المواضع في `Iceberg` v2 بنمط الدمج عند القراءة، التي كانت تعيد صفوفًا خاطئة عندما يشير ملف حذف واحد إلى عدة ملفات بيانات وتنطبق عدة ملفات حذف على ملف البيانات نفسه. تُرشّح إدخالات الحذف الآن بحسب مسار الملف المشار إليه. [#105888](https://github.com/ClickHouse/ClickHouse/pull/105888) ([groeneai](https://github.com/groeneai)).
* إصلاح تحوّل محرك الجدول `IcebergLocal` إلى وضع القراءة فقط بعد دورة `DETACH` + `ATTACH` أو إعادة تشغيل الخادم، مما كان يؤدي إلى فشل كل عملية `INSERT` لاحقة بالرسالة `Local object storage Local is readonly. (READONLY)`. [#106016](https://github.com/ClickHouse/ClickHouse/pull/106016) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطيل ذاكرة التخزين المؤقت لنظام الملفات بصمت في Azure Blob Storage (مثل جداول Delta Lake على Azure) لأن البيانات الوصفية للكائن لم تتضمن قيمة ETag للـ blob. [#106091](https://github.com/ClickHouse/ClickHouse/pull/106091) ([thewisenerd](https://github.com/thewisenerd)).
* أُضيف التحقق من صحة المسار لجداول Delta Lake لمنع البيانات الوصفية من الوصول إلى كائنات خارج موقع التخزين المُهيّأ. [#106115](https://github.com/ClickHouse/ClickHouse/pull/106115) ([scanhex12](https://github.com/scanhex12)).
* أصبح تقليم أقسام Iceberg يتعامل بصورة صحيحة مع عوامل التصفية `WHERE partition_col = (SELECT ... FROM ...)`، حيث يغلّف المحلّل نتيجة الاستعلام الفرعي القيَمي داخليًا في `_CAST(Const, 'TargetType')` عندما يتطابق نوعا المصدر والهدف. في السابق، كانت عوامل التصفية هذه تعطّل تقليم الأقسام وتؤدي إلى فحص كامل للجدول. [#106204](https://github.com/ClickHouse/ClickHouse/pull/106204) ([groeneai](https://github.com/groeneai)).
* أُصلحت مشكلة الإبلاغ خطأً عن كتالوجات REST لـ `Iceberg` التي تحتوي على جداول على أنها فارغة. [#106301](https://github.com/ClickHouse/ClickHouse/pull/106301) ([LefterisXefteris](https://github.com/LefterisXefteris)).
* أُصلح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند الاستعلام عن جدول Iceberg أو S3 باستخدام شرط `WHERE` مركّب يتضمن `IS NOT NULL` لعمود غير مدرج في قائمة `SELECT`، عند استخدام قارئ Parquet V3 الأصلي. [#106443](https://github.com/ClickHouse/ClickHouse/pull/106443) ([tiandiwonder](https://github.com/tiandiwonder)).
* أُصلح الإبلاغ المتضخم عن التقدم عند القراءة من جداول Iceberg باستخدام عوامل تصفية `_file` أو `_path`. في السابق، كان تقدم `total_bytes_to_read` يتضمن جميع الملفات في البيان بغض النظر عن التصفية. [#106491](https://github.com/ClickHouse/ClickHouse/pull/106491) ([PedroTadim](https://github.com/PedroTadim)).
* أُصلح استثناء في الخادم (خطأ منطقي `std::out_of_range`) عند الإدراج في جدول `Iceberg` لا تتطابق فيه أسماء أعمدة كتلة الكتابة مع معرّفات الحقول في أحدث مخطط للجدول (مثلًا، بعد أن يعيد كاتب متزامن تسمية عمود ضمن نافذة `iceberg_metadata_staleness_ms`). يفشل الإدراج الآن بخطأ استعلام واضح بدلًا من إيقاف الخادم. [#107279](https://github.com/ClickHouse/ClickHouse/pull/107279) ([groeneai](https://github.com/groeneai)).
* أُصلح احتمال تجاوز مكدس الخادم (تعطله) عند قراءة مخطط أو قيمة متداخلة بعمق في تنسيقات MsgPack وBSON وORC وParquet وJSON وDeltaLake وIceberg وPaimon. ويُرفض الآن هذا الإدخال المتداخل بعمق مع إصدار استثناء. [#107341](https://github.com/ClickHouse/ClickHouse/pull/107341) ([Algunenano](https://github.com/Algunenano)).
* أُصلح تعطل (`LOGICAL_ERROR` في إصدارات التصحيح) وخطأ صامت يؤدي إلى نتائج غير صحيحة (في إصدارات الإنتاج) عند قراءة جدول Iceberg تعيد بياناته الوصفية ربط `schema-id` موجود بمخطط مختلف عبر إصدارات البيانات الوصفية. وتُرفض الآن هذه البيانات الوصفية باستخدام `ICEBERG_SPECIFICATION_VIOLATION`. [#107370](https://github.com/ClickHouse/ClickHouse/pull/107370) ([groeneai](https://github.com/groeneai)).
* أُصلحت قراءة جداول Iceberg v3 التي تحتوي ملفات بيانات Parquet فيها على أعمدة نسب الصفوف المحجوزة (مثل `_row_id`)؛ لم يعد قارئ Parquet الأصلي يثير `ICEBERG_SPECIFICATION_VIOLATION` لمعرّفات الحقول المحجوزة التي لا تشكل جزءًا من مخطط الجدول. [#107377](https://github.com/ClickHouse/ClickHouse/pull/107377) ([gregakinman](https://github.com/gregakinman)).
* أُصلح استثناء زائف `filesystem error: in last_write_time: No such file or directory` عند سرد دليل تخزين كائنات على قرص محلي (مثل جدول Iceberg على قرص `local`) أثناء استبدال الملفات بشكل متزامن. ويُستبعد الآن الإدخال الذي أُزيل بشكل متزامن من القائمة بدلًا من إيقاف عملية السرد. [#107432](https://github.com/ClickHouse/ClickHouse/pull/107432) ([groeneai](https://github.com/groeneai)).
* أُصلح الخطأ 'يجب تحديد الحساب' عند قراءة جدول Delta Lake عبر Azure. [#107620](https://github.com/ClickHouse/ClickHouse/pull/107620) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح تعطل عند قراءة جداول Iceberg التي تحتوي على ملفات حذف بالمساواة. إذا كان عمود في ملف الحذف بالمساواة يقبل NULL بينما لا يقبله في مخطط الجدول (أو العكس)، كانت القيم المقروءة من ملف الحذف تُدرج في عمود من نوع مختلف عبر تحويل غير متحقق منه (التباس في نوع العمود)، مما يفسد العمود ويتسبب في تعطل الخادم. [#109551](https://github.com/ClickHouse/ClickHouse/pull/109551) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح خطأ `ICEBERG_SPECIFICATION_VIOLATION` غير صحيح عند قراءة جدول Iceberg يُسلسَل فيه النوع العشري (أو أي نوع أساسي آخر ذو معلمات) بمسافات بيضاء مختلفة في ملفات البيانات الوصفية، مثل `decimal(20,0)` في البيانات الوصفية للجدول و`decimal(20, 0)` في البيان. تُقارَن الآن سلاسل الأنواع المتكافئة وفقًا للمواصفة مع تجاهل المسافات البيضاء. [#109676](https://github.com/ClickHouse/ClickHouse/pull/109676) ([groeneai](https://github.com/groeneai)).
* إصلاح قراءة جداول Iceberg التي يشير ترتيب الفرز الافتراضي فيها إلى عمود يحتاج إلى اقتباس (مثل `@timestamp`). كانت هذه الجداول غير قابلة للقراءة لأن عبارة `ORDER BY` الخاصة بالتخزين المُنشأة كانت تُبنى من اسم العمود الخام، ولم يكن بالإمكان تحليلها بسبب `SYNTAX_ERROR`. [#110233](https://github.com/ClickHouse/ClickHouse/pull/110233) ([groeneai](https://github.com/groeneai)).
* إصلاح قراءة جداول Paimon التي تحتوي على عمود `ARRAY` أو `MAP` يقبل NULL. لم يكن بالإمكان قراءة هذه الجداول إطلاقًا، لأن محوّل المخطط كان يغلّف النوع المركب في `Nullable`، وهو ما لا يسمح به ClickHouse، لذا كان كل من `DESC` و`SELECT` يفشل بالرسالة `Nested type Array(Nullable(Int32)) cannot be inside Nullable type`. يُعيَّن الآن العمود المركب الذي يقبل NULL إلى نوع مركب غير `Nullable`، وتُقرأ قيمة `NULL` كقيمة فارغة. [#113450](https://github.com/ClickHouse/ClickHouse/pull/113450) ([groeneai](https://github.com/groeneai)).
* تسجيل مساحة اسم Iceberg في الكتالوج قبل كتابة ملفات الجدول (مطلوب لـ SeaweedFS) [#114285](https://github.com/ClickHouse/ClickHouse/pull/114285) ([azat](https://github.com/azat)).

<h3 id="s3-azure-object-storage-fixes">
  إصلاحات S3/Azure/التخزين الكائني
</h3>

* إصلاح الاستثناء "Distributed task iterator is not initialized" عند استخدام دوال الجدول `url` أو `s3` أو ما شابهها في استعلامات تكون فيها النسخ المتماثلة المتوازية مفعّلة. [#100146](https://github.com/ClickHouse/ClickHouse/pull/100146) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل محتمل للخادم في دوال جدول الكتلة (`s3Cluster`، `urlCluster`، `fileCluster`، ...) عندما يُنشئ المخطط عبارة `SELECT` بعلامة `recursive_with` مفعّلة، ولكن من دون تعبير `WITH`. [#105433](https://github.com/ClickHouse/ClickHouse/pull/105433) ([groeneai](https://github.com/groeneai)).
* إصلاح دفع عامل التصفية لـ `Parquet` و`ORC` لمسندات `IN (subquery)`، مما يتيح استبعاد مجموعات الصفوف والصفحات ومرشحات Bloom عند القراءة من `file` و`url` و`s3` والتخزين الكائني. [#105863](https://github.com/ClickHouse/ClickHouse/pull/105863) ([arsenmuk](https://github.com/arsenmuk)).
* إصلاح استثناء `LOGICAL_ERROR` أثناء التنزيل المسبق إلى الذاكرة المؤقتة عندما يُستبدل كائن S3 بعيد بمحتوى أقصر بين الإدراج والقراءة. [#106375](https://github.com/ClickHouse/ClickHouse/pull/106375) ([fm4v](https://github.com/fm4v)).
* إصلاح تجاهل دالة الجدول `s3` بصمت لقيمة موضعية من `partition_strategy` مكتوبة بأحرف صغيرة (مثل `hive`). [#107297](https://github.com/ClickHouse/ClickHouse/pull/107297) ([jkartseva](https://github.com/jkartseva)).
* إصلاح انحدار كان يؤدي فيه تعيين `compatibility = '26.6'` (الذي يفعّل ضمنيًا استراتيجية التقسيم `hive`) إلى قبول `{_partition_id}` بصمت في مسارات جداول `S3` والتخزين الكائني بدلًا من إطلاق `BAD_ARGUMENTS`. [#107437](https://github.com/ClickHouse/ClickHouse/pull/107437) ([LefterisXefteris](https://github.com/LefterisXefteris)).
* إصلاح قيام دالة الجدول `s3` ودوال جداول التخزين الكائني الأخرى بإطلاق `LOGICAL_ERROR` بدلًا من `BAD_ARGUMENTS` عند تكرار وسيطة مفتاح-قيمة، مثل `s3('http://...', format = 'CSV', format = 'TSV')`. [#107670](https://github.com/ClickHouse/ClickHouse/pull/107670) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء في الخادم (`Logical error: 'index >= result.start'`) عند تنسيق استعلام غير صالح يمزج بين صيغتي الوسيطة السرية الموضعية والمسمّاة لدوال الجدول `s3`/`gcs`، مثل `s3('url', 'a', 'b', secret_access_key = 'c')`. [#107818](https://github.com/ClickHouse/ClickHouse/pull/107818) ([groeneai](https://github.com/groeneai)).
* إصلاح أولوية إعدادات S3 بحيث تكون لكتلة نقطة النهاية `<s3>` المقيّدة بـ URL أسبقية على إعدادات `<s3>` الافتراضية في المستوى الأعلى. [#109251](https://github.com/ClickHouse/ClickHouse/pull/109251) ([bharatnc](https://github.com/bharatnc)).
* إصلاح أخطاء `411 Length Required` الصادرة من خدمات Azure: إذ يعيّن الآن نقل Azure عبر HTTP المستند إلى Poco قيمة `Content-Length` استنادًا إلى متن الطلب لعملاء SDK الذين لا يعيّنون الترويسة بأنفسهم (مثل Azure Key Vault). [#110299](https://github.com/ClickHouse/ClickHouse/pull/110299) ([thevar1able](https://github.com/thevar1able)).

<h3 id="s3queue-fixes">
  إصلاحات S3Queue
</h3>

* إصلاح تعطل الخادم (وصول خارج النطاق) في `S3Queue`/`AzureQueue` عند استخدام `enable_hash_ring_filtering = 1`، إذا كانت الدفعة تحتوي على ملف غير قابل للمعالجة وفشل في الوقت نفسه طلب Keeper لتعيين الدفعة قيد المعالجة. [#108977](https://github.com/ClickHouse/ClickHouse/pull/108977) ([groeneai](https://github.com/groeneai)).
* إصلاح تسرّب بيانات الاعتماد في `SHOW CREATE` و`system.query_log` وسجلات الخادم ومخرجات `EXPLAIN`. تخفي جميع صيغ محددات `S3` الآن `session_token` وأسرار Google ADC وقيم `extra_credentials`/`headers` في أي موضع للوسيط، ومفاتيح الأسرار المكررة أو المُنشأة بتعبير، والصيغ الموضعية غير الصالحة (تُرفض بأمان)، وبيانات الاعتماد المضمّنة في عناوين URL الخاصة بـ S3. ويشمل ذلك دوال الجدول `s3`/`s3Cluster` ذات عنوان URL الصريح والمجموعة المسماة، ومحركات الجداول المستندة إلى S3 (`S3` و`GCS` ومحركات بحيرة البيانات و`S3Queue`)، ومحرك قاعدة البيانات `S3`، و`BACKUP ... TO S3`، ومحرك قاعدة البيانات `Backup`. بالإضافة إلى ذلك، أصبحت وسائط الأسرار في `encrypt`/`decrypt`/HMAC المُنشأة بتعبير (بما في ذلك المضمّنة من SQL UDF) مخفية في أسماء الإسقاطات و`EXPLAIN QUERY TREE` و`EXPLAIN actions`. [#109768](https://github.com/ClickHouse/ClickHouse/pull/109768) ([Algunenano](https://github.com/Algunenano)).
* إصلاح وضع `Ordered` في `S3Queue`/`AzureQueue` مع عُقد المعالجة المستمرة: تُحدَّث أقفال الحاويات الآن أثناء البث، بحيث لا تؤدي عملية تنظيف TTL (`persistent_processing_node_ttl_seconds`) إلى إزالة أقفال معالج نشط. وإذا فُقدت ملكية القفل رغم ذلك، يُكتشف الأمر ويُبلَّغ عنه (خطأ منطقي وحدث ملف التعريف `ObjectStorageQueueBucketLockLostOwnership`)، ويستأنف البث باستخدام مكرّر ملفات جديد. [#110292](https://github.com/ClickHouse/ClickHouse/pull/110292) ([kssenii](https://github.com/kssenii)).

<h3 id="security-and-access-control-fixes">
  إصلاحات الأمان والتحكّم بالوصول
</h3>

* إصلاح تعطل في الخادم (SIGSEGV) يمكن لأي مستخدم لديه صلاحية `CREATE TABLE` استغلاله عند إرسال `CREATE TABLE ... TO INNER UUID '...'` دون عبارة `ENGINE` عبر HTTP أو البروتوكول الأصلي. وكان الخطأ نفسه يؤدي أيضًا إلى تعطل العميل. يُبلغ المحلل الآن عن خطأ `BAD_ARGUMENTS` مناسب بدلًا من فك إشارة مرجع لمؤشر فارغ. [#105579](https://github.com/ClickHouse/ClickHouse/pull/105579) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل في الخادم عند الاستعلام عن جداول DeltaLake مع تفعيل `allow_experimental_delta_kernel_rs` ووجود بيانات اعتماد أو خيار يتضمن بايتات غير صالحة (إذ حدث ذعر في Rust FFI عبر حد `extern "C"`). [#106109](https://github.com/ClickHouse/ClickHouse/pull/106109) ([Algunenano](https://github.com/Algunenano)).
* إصلاح عدة عمليات قراءة خارج حدود الكومة في قارئ تنسيق Arrow IPC (`ArrowColumnToCHColumn`). كان يمكن لملف Arrow مشوه أن يعلن عددًا من الصفوف أكبر مما تحتويه مخازنه المؤقتة، أو يعلن أطوالًا لعناصر تابعة من نوع قائمة/بنية/خريطة لا تتسق مع العنصر الأصل، أو يوفر إزاحات قوائم غير رتيبة، أو يقتطع خريطة بتات صلاحية تابعة، مما يؤدي إلى قراءات تتجاوز نهاية تخصيصات الكومة. يمكن لأي مستخدم لديه امتياز `SELECT` الوصول إلى ذلك عبر `file()` أو `format()` أو دوال الجداول أو مدخلات ArrowFlight. يجري الآن التحقق من جميع مخازن البيانات والإزاحات وview-struct وخرائط بتات الصلاحية قبل أي وصول إلى مؤشر خام، كما تُفحص أشكال وإزاحات القائمة/البنية/الخريطة للتأكد من اتساقها. [#106395](https://github.com/ClickHouse/ClickHouse/pull/106395) ([Algunenano](https://github.com/Algunenano)).
* إصلاح خطأ كان يسمح لعمودي `used_privileges` و`missing_privileges` في `system.query_log` باحتواء سلاسل امتيازات متسربة من استعلامات سابقة غير مرتبطة لمستخدم أو قاعدة بيانات أو جلسة مختلفة. [#106425](https://github.com/ClickHouse/ClickHouse/pull/106425) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاوز سعة المخزن المؤقت للكومة (تعطل الخادم) في `decodeHTMLComponent` عند فك ترميز سلاسل تحتوي على كيانات HTML الموسعة `&nGt;` أو `&nLt;`، ويمكن لأي مستخدم تنفيذ ذلك باستعلام `SELECT` واحد. [#106741](https://github.com/ClickHouse/ClickHouse/pull/106741) ([Algunenano](https://github.com/Algunenano)).
* إصلاح نتائج استعلامات خاطئة تسبب فيها التخزين المؤقت لشروط الاستعلام عندما كانت الطفرات الفورية (`apply_mutations_on_fly`) أو أجزاء التصحيح ترشح الصفوف قبل `PREWHERE`. كان استعلام يقرأ باستخدام `apply_mutations_on_fly = 1` قد يفسد التخزين المؤقت بحيث يتخطى استعلام لاحق يستخدم `apply_mutations_on_fly = 0` والمسند نفسه علاماتٍ كان ينبغي قراءتها، ويُرجع عددًا قليلًا جدًا من الصفوف. يغطي الإصلاح نفسه أيضًا سياسات الأمان على مستوى الصفوف، التي تُضاف كعامل تصفية قبل `PREWHERE`: إذ كان استعلام يُشغَّل ضمن سياسة صفوف تقييدية قد يفسد التخزين المؤقت لاستعلام لاحق يستخدم المسند نفسه دون تلك السياسة. [#107145](https://github.com/ClickHouse/ClickHouse/pull/107145) ([groeneai](https://github.com/groeneai)).
* إصلاح تجاوز سعة المخزن المؤقت للكومة (تعطل الخادم) في `windowFunnel` عند إنهاء حالة مُعدّة لدالة تجميع تتضمن نوع حدث خارج النطاق، ويمكن لأي مستخدم تنفيذ ذلك باستعلام `SELECT` واحد. [#107412](https://github.com/ClickHouse/ClickHouse/pull/107412) ([uwezkhan](https://github.com/uwezkhan)).
* إصلاح تقييم `currentUser()` و`user()` و`SESSION_USER` و`authenticatedUser()` كسلسلة فارغة في مسار تفريغ الإدراج غير المتزامن (مع `async_insert = 1`). أثر ذلك في تعبيرات الأعمدة `DEFAULT`/`MATERIALIZED` والعروض المادية التي تشير إلى هذه الدوال، والتي كانت تخزن بصمت سلسلة فارغة بدلًا من المستخدم الذي ينفذ الإدراج. [#107541](https://github.com/ClickHouse/ClickHouse/pull/107541) ([groeneai](https://github.com/groeneai)).
* عند تعيين عدة حصص للمستخدم أو الدور نفسه، تُفرض الآن جميعها معًا (يُرفض الاستعلام إذا تم تجاوز أي منها)، بدلًا من فرض حصة واحدة فقط واختيارها بطريقة غير حتمية. يعرض `SHOW QUOTA` و`system.quota_usage` الآن جميع الحصص المفروضة على المستخدم الحالي. [#107664](https://github.com/ClickHouse/ClickHouse/pull/107664) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* يتطلب `SYSTEM RESET DDL WORKER` الآن امتياز `SYSTEM RESET DDL WORKER` الجديد. سابقًا، كان بإمكان أي مستخدم تمت مصادقته، بما في ذلك مستخدمي `readonly`، تشغيله وإعادة تعيين حالة عامل DDL مرارًا، مما يؤدي إلى حظر DDL عبر `ON CLUSTER`. [#108460](https://github.com/ClickHouse/ClickHouse/pull/108460) ([groeneai](https://github.com/groeneai)).
* أُصلح تحديد هوية المستخدم عبر `ssl_certificate` بحيث يطابق الرمز البديل الواحد `*` مكوّنًا واحدًا من الاسم فقط (RFC 6125 6.4.3). سابقًا، كان الرمز البديل في موضوع `CN` أو SAN من نوع `DNS:` (مثل `*.corp.example.com`) يطابق أيضًا الأسماء متعددة المكوّنات مثل `evil.deep.corp.example.com`، مما يتيح لحامل شهادة لنطاق فرعي أعمق المصادقة بصفته مستخدم الرمز البديل. لم تتغير مطابقة SAN من نوع `URI:`. [#108472](https://github.com/ClickHouse/ClickHouse/pull/108472) ([groeneai](https://github.com/groeneai)).
* تفرض أوامر بروتوكول MySQL السلكي `COM_FIELD_LIST` (`mysql_list_fields`) و`COM_INIT_DB` (`USE database`) الآن نفس ضوابط الوصول التي تفرضها مكافئاتها في SQL، وهي (`SHOW COLUMNS`/`DESCRIBE` و`USE`). سابقًا، كان بإمكانها كشف أسماء أعمدة الجداول التي لا يملك المستخدم سوى امتيازات جزئية على أعمدتها، وتغيير قاعدة البيانات الحالية دون امتياز `SHOW DATABASES`. [#108508](https://github.com/ClickHouse/ClickHouse/pull/108508) ([groeneai](https://github.com/groeneai)).
* طابق `http_forbid_headers` دون حساسية لحالة الأحرف. أسماء ترويسات HTTP غير حساسة لحالة الأحرف، لذا فإن حظر `Authorization` يحظر الآن أيضًا `authorization` و`AUTHORIZATION` وغيرها من اختلافات حالة الأحرف. تُطابق الآن أنماط `header_regexp` المُهيأة دون حساسية لحالة الأحرف، دون الحاجة إلى علامة `(?i)` صريحة. [#108509](https://github.com/ClickHouse/ClickHouse/pull/108509) ([groeneai](https://github.com/groeneai)).
* أُصلحت ثغرة لكشف البيانات الوصفية، إذ كان `DESCRIBE loop('db', 'table')` و`DESCRIBE loop(<inner table function>)` يتجاوزان فحص `SHOW COLUMNS` / الوصول إلى المصدر، مما يتيح لمستخدم غير مخوّل قراءة مخطط أعمدة جدول. [#108624](https://github.com/ClickHouse/ClickHouse/pull/108624) ([groeneai](https://github.com/groeneai)).
* أُصلح فشل عند بدء التشغيل، إذ تعذّر إرفاق قاعدة بيانات `DataLakeCatalog` أُنشئت بإصدار أقدم (25.12 أو أقدم) مع `auth_header` مشوّه بعد الترقية إلى 26.2 أو أحدث، مما منع بدء تشغيل الخادم. يُتحقق الآن من `auth_header` عند `CREATE` فقط، وعند `ATTACH` يُنشأ الكتالوج عند أول استخدام بدلًا من إنشائه أثناء بدء التشغيل، لذا لم تعد قاعدة بيانات كتالوج واحدة مهيأة بشكل خاطئ أو غير قابلة للوصول تمنع بدء تشغيل الخادم. [#108674](https://github.com/ClickHouse/ClickHouse/pull/108674) ([groeneai](https://github.com/groeneai)).
* عُزّزت اتصالات RabbitMQ ضد إطارات AMQP الكبيرة على نحو ضار، وطُبقت فحوصات `remote_url_allow_hosts` بصورة متسقة على `rabbitmq_address`. [#112479](https://github.com/ClickHouse/ClickHouse/pull/112479) ([kssenii](https://github.com/kssenii)).
* أُصلحت حالة كان فيها `CREATE TABLE ... ENGINE = Distributed(...)` دون قائمة أعمدة يكشف بنية جدول محلي لا يُسمح للمستخدم المنشئ برؤيتها. عند تنفيذ `CREATE`، ينفذ الخادم المحلي العملية بنفسه، وتُستنتج البنية الآن ضمن سياق المستخدم نفسه، لذا يلزم امتياز `SHOW COLUMNS` على الجدول الهدف، كما هو مطلوب بالفعل لمحرك `Remote`. لا يشمل ذلك `CREATE` المُعاد تشغيله من قائمة انتظار DDL، سواء عبر `ON CLUSTER` أو ضمن قاعدة بيانات `Replicated`. [#113220](https://github.com/ClickHouse/ClickHouse/pull/113220) ([groeneai](https://github.com/groeneai)).
* أُصلحت حالة كان فيها `CREATE TABLE ... ENGINE = Buffer(...)` من دون قائمة أعمدة قد يكشف بنية جدول وجهة لا يملك المستخدم المُنشئ صلاحية رؤيتها. بالنسبة إلى `CREATE` الذي ينفّذه الخادم المحلي بنفسه، تُستنتج البنية الآن ضمن سياق المستخدم نفسه، لذا يلزم امتلاك صلاحية `SHOW COLUMNS` على الوجهة، كما هو مطلوب بالفعل لـ `Merge` و`Remote`. لا يشمل ذلك `CREATE` المُعاد تشغيله من قائمة انتظار DDL (`ON CLUSTER` أو داخل قاعدة بيانات `Replicated`). [#113372](https://github.com/ClickHouse/ClickHouse/pull/113372) ([groeneai](https://github.com/groeneai)).
* حُدِّد حجم رسالة بدء التشغيل لبروتوكول PostgreSQL السلكي، والتي تُقرأ قبل المصادقة. [#115708](https://github.com/ClickHouse/ClickHouse/pull/115708) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<h3 id="backup-and-restore-fixes">
  إصلاحات النسخ الاحتياطي والاستعادة
</h3>

* إصلاح توقف الخادم أثناء تنفيذ `RESTORE` لنسخ احتياطية تحتوي على جداول ذات تبعيات دورية. [#103824](https://github.com/ClickHouse/ClickHouse/pull/103824) ([thevar1able](https://github.com/thevar1able)).
* إصلاح تجاهل فئة تخزين S3 (`s3_storage_class` / `s3_storage_class_name`) للكائنات المكتوبة عبر التحميل متعدد الأجزاء على أقراص `S3` والتخزين الكائني، مما كان يؤدي إلى إنشاء الكائنات الكبيرة بالفئة الافتراضية `STANDARD`. يُقبل اسم الخيار الآن بصيغتي `s3_storage_class` و`s3_storage_class_name` للأقراص والتخزين الكائني والنسخ الاحتياطية. [#106214](https://github.com/ClickHouse/ClickHouse/pull/106214) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاهل `SYSTEM RELOAD CONFIG` لإعدادات Azure Blob Storage الخاصة بكل نقطة نهاية (مثل `use_native_copy`)، مما كان يؤدي إلى تجاهل إعدادات القرص المهيأة لعمليتي `BACKUP`/`RESTORE` حتى إعادة تشغيل الخادم. [#106357](https://github.com/ClickHouse/ClickHouse/pull/106357) ([jkartseva](https://github.com/jkartseva)).
* إصلاح فشل النسخ الاحتياطية بالخطأ `FILE_DOESNT_EXIST` عند جمع هدف `REPLACE` لعرض مادي قابل للتحديث على قاعدة بيانات Replicated أو Shared، عندما لم يكن العرض المادي قد أُنشئ بعد على النسخة المتماثلة التي بدأت النسخ الاحتياطي. [#106411](https://github.com/ClickHouse/ClickHouse/pull/106411) ([jkartseva](https://github.com/jkartseva)).
* إصلاح تجاهل Azure `BACKUP`/`RESTORE` لإعدادات نقطة النهاية لأقراص `azure_blob_storage` ذات الصيغة القديمة. [#106784](https://github.com/ClickHouse/ClickHouse/pull/106784) ([jkartseva](https://github.com/jkartseva)).
* إصلاح `BACKUP` إلى `AzureBlobStorage`: كان نسخ ملف بيانات داخل نسخة احتياطية يكتب كائن الوجهة خارج دليل النسخ الاحتياطي. تستخدم عمليات التحقق من وجود كائنات النسخ الاحتياطي على وجهات `S3` الآن طلبات `HeadObject` دقيقة بدلاً من سرد البادئات، مما يمنع المطابقات الخاطئة للمفاتيح ذات البادئات المتشابهة. [#107153](https://github.com/ClickHouse/ClickHouse/pull/107153) ([pamarcos](https://github.com/pamarcos)).
* لم تعد النسخ الاحتياطية التزايدية تخزن بيانات اعتماد `S3` في محدد موقع `<base_backup>` ضمن ملف البيانات الوصفية `.backup`. تخزن النسخ الاحتياطية التي أُنشئت باستخدام `use_same_s3_credentials_for_base_backup = 1`، أو ببيانات اعتماد صريحة للنسخة الاحتياطية الأساسية تطابق محدد موقع هذه النسخة الاحتياطية، علامة غير سرية وتُستعاد دون إعدادات إضافية وقت الاستعادة؛ أما النسخ الاحتياطية التي أُنشئت ببيانات اعتماد صريحة مختلفة للنسخة الاحتياطية الأساسية أو بوسيطات مصادقة إضافية للنسخة الأساسية، فمررها إلى `RESTORE` باستخدام إعداد `base_backup`. تظل النسخ الاحتياطية التي أنشأتها الإصدارات الأقدم ببيانات اعتماد مضمنة قابلة للاستعادة. [#107357](https://github.com/ClickHouse/ClickHouse/pull/107357) ([pamarcos](https://github.com/pamarcos)).
* إصلاح `RESTORE` لجداول `ReplicatedMergeTree` بحيث تُحفظ الأجزاء ذات المحتوى المكرر من النسخة الاحتياطية بدلاً من إزالة تكرارها بصمت. [#107652](https://github.com/ClickHouse/ClickHouse/pull/107652) ([pamarcos](https://github.com/pamarcos)).
* يشير عنصر نائب `{_partition_id}` في مسار محرك شبيه بالملفات (`S3` أو `AzureBlobStorage` أو `URL`، إلخ) دون `partition_strategy` صريح إلى استراتيجية `wildcard` مجددًا، بغض النظر عن `file_like_engine_default_partition_strategy`. يعيد هذا التوافق مع الإصدارات السابقة لعبارات DDL السابقة للإصدار 26.6، التي بدأت تفشل بالخطأ `BAD_ARGUMENTS` ("لا يمكن استخدام استراتيجية التقسيم hive مع حرف بدل '\_partition\_id' في المسار"). [#111279](https://github.com/ClickHouse/ClickHouse/pull/111279) ([fm4v](https://github.com/fm4v)).

<h3 id="clickhouse-keeper-fixes">
  إصلاحات ClickHouse Keeper
</h3>

* إصلاح تنظيف اللقطات في `Keeper` بعد فشل عمليات الكتابة، بحيث تُنظَّف اللقطات الجزئية بأمان ويمكن إعادة محاولة الكتابة دون تقديم `latest_snapshot_meta`. [#105779](https://github.com/ClickHouse/ClickHouse/pull/105779) ([antonio2368](https://github.com/antonio2368)).
* إصلاح حالات فشل `Keeper` أثناء لحاق العقدة التابعة، إذ كان يمكن أن تمتلئ قائمة انتظار استجابات موزّع الطلبات الجديد قبل بدء خيط الاستجابة. [#106049](https://github.com/antonio2368]\(https://github.com/antonio2368\)).
* إصلاح تعلّق Keeper أحيانًا عند بدء التشغيل عند ضبط الإعداد `nuraft_max_log_gap_in_stream` على قيمة غير افتراضية (القيمة الافتراضية هي 0، أي تعطيل تمرير طلبات `append_entries` عبر خط الأنابيب). [#106220](https://github.com/ClickHouse/ClickHouse/pull/106220) ([al13n321](https://github.com/al13n321)).
* أصبح TLS الداخلي لـ Keeper Raft يراعي الآن الإعداد `openSSL.client.verificationMode`. سابقًا، كان التحقق من شهادة النظير مفعّلًا دائمًا لاتصالات Raft بين عقد Keeper بغض النظر عن هذا الإعداد، لذا كان يتم تجاهل `none` بصمت. الآن، يعطّل `none` صراحةً التحقق من شهادات نظراء Raft، بينما يحافظ غياب الإعداد على السلوك السابق الآمن افتراضيًا. ستتوقف التهيئات التي تضبط `none` صراحةً عن التحقق من شهادات نظراء Raft بعد الترقية، بما يتوافق مع الإعداد المقصود. [#106726](https://github.com/ClickHouse/ClickHouse/pull/106726) ([antonio2368](https://github.com/antonio2368)).
* إصلاح إعادة إنشاء جلسة ZooKeeper دون داعٍ عند إعادة تحميل التهيئة. [#107096](https://github.com/ClickHouse/ClickHouse/pull/107096) ([azat](https://github.com/azat)).
* إصلاح خطأ في ClickHouse Keeper كانت فيه البيانات الوصفية للّقطة المُبلّغ عنها عبر `last_snapshot` (و`zk_latest_snapshot_size` في `mntr`) قد تتراجع بعد تثبيت لقطة قديمة أو مكررة، مما كان قد يسمح أيضًا للقطة محلية ذات الفهرس نفسه بالكتابة فوق ملف لقطة مسجّل في مكانه بينما كان لا يزال يُبث إلى نظير أو يُرفع إلى S3. [#107321](https://github.com/ClickHouse/ClickHouse/pull/107321) ([antonio2368](https://github.com/antonio2368)).
* إصلاح تعلّق عرض مادي قابل للتحديث إذا فُقد اتصال ZooKeeper في توقيت غير مناسب. [#108234](https://github.com/ClickHouse/ClickHouse/pull/108234) ([al13n321](https://github.com/al13n321)).
* إصلاح الطفرات التي تستخدم معلمة استعلام كقسم (`ALTER TABLE ... UPDATE/DELETE ... IN PARTITION {param:Type}`): كانت قيمة القسم المستبدلة تُسلسَل ضمن إدخال الطفرة بصيغة لا يمكن تحليلها مجددًا، مما كان يعطل تحميل الجدول (بالنسبة إلى الجداول المنسوخة، على كل نسخة متماثلة). أصبحت أوامر الطفرات تُتحقق أيضًا من إمكانية تحليلها مجددًا قبل كتابتها إلى ZooKeeper أو القرص، بحيث يفشل استعلام `ALTER` عند حدوث عدم تطابق مشابه بدلًا من تعطيل الجدول. [#111518](https://github.com/ClickHouse/ClickHouse/pull/111518) ([al13n321](https://github.com/al13n321)).
* إصلاح تجاوز عددي أثناء تحليل البيانات لـ `system.zookeeper_info`. [#111629](https://github.com/ClickHouse/ClickHouse/pull/111629) ([kssenii](https://github.com/kssenii)).

<h3 id="crash-and-stability-fixes">
  إصلاحات الأعطال وتحسينات الاستقرار
</h3>

* إصلاح استثناء NOT\_FOUND\_COLUMN\_IN\_BLOCK عند استخدام LIMIT BY مع أعمدة ثابتة بالتزامن مع DISTINCT وORDER BY في المحلل الجديد. [#93195](https://github.com/ClickHouse/ClickHouse/pull/93195) ([ashrithb](https://github.com/ashrithb)).
* تحسين استقرار اتصال HiveCatalog بإضافة آلية لإعادة المحاولة تلقائيًا ومنطق لإعادة الاتصال لمعالجة أخطاء TTransportException عند التواصل مع Hive Metastore. [#98471](https://github.com/ClickHouse/ClickHouse/pull/98471) ([otselnik](https://github.com/otselnik)).
* إصلاح طيّ الثوابت أثناء التحليل للدوال ذات التقييم المختصر (`if`، `multiIf`، `and`، `or`، إلخ)، بحيث لم تعد الفروع التي يتعذر الوصول إليها بصورة ثابتة تثير استثناءات أثناء التحليل. على سبيل المثال، يعيد `WITH 0 AS n SELECT multiIf(n = 0, 0, intDiv(100, n))` الآن `0` بشكل صحيح بدلًا من الفشل بسبب خطأ القسمة على صفر. [#103157](https://github.com/ClickHouse/ClickHouse/pull/103157) ([fastio](https://github.com/fastio)).
* إصلاح إنهاء الخادم عند استدعاء `runningAccumulate` على دالة تجميعية تعيد حالتها الخاصة. [#105085](https://github.com/ClickHouse/ClickHouse/pull/105085) ([antaljanosbenjamin](https://github.com/antaljanosbenjamin)).
* إصلاح `getServerSetting` ليعيد القيمة السارية الفعلية لإعدادات الخادم القابلة للتغيير أثناء التشغيل (مثل `max_server_memory_usage` و`mark_cache_size` و`max_concurrent_queries` وأحجام تجمعات الخيوط، إلخ)، بما يطابق ما يعرضه `system.server_settings`. [#105172](https://github.com/ClickHouse/ClickHouse/pull/105172) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند الجمع بين `ORDER BY ... WITH FILL INTERPOLATE` و`LIMIT N BY` مع تمكين المحلل. [#105481](https://github.com/ClickHouse/ClickHouse/pull/105481) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح استثناء في الخادم (خطأ منطقي `Trying to execute PLACEHOLDER action`) عند استخدام تعبير جدول شائع `MATERIALIZED` يتضمن استعلامًا فرعيًا مترابطًا بوصفه الطرف الأيمن من `IN`. ويُرفض هذا التعبير الآن أثناء التحليل، اتساقًا مع رفض النمط نفسه عند الإشارة إلى تعبير الجدول الشائع مباشرةً في `FROM`. [#105518](https://github.com/ClickHouse/ClickHouse/pull/105518) ([groeneai](https://github.com/groeneai)).
* إصلاح عدم التقاط `variant_throw_on_type_mismatch/dynamic_throw_on_type_mismatch=false` للاستثناءات أثناء تنفيذ الدالة. [#105543](https://github.com/ClickHouse/ClickHouse/pull/105543) ([Avogar](https://github.com/Avogar)).
* إصلاح استثناء NOT\_FOUND\_COLUMN\_IN\_BLOCK عندما يشير تعبير TTL إلى عمود فرعي. [#105578](https://github.com/ClickHouse/ClickHouse/pull/105578) ([Avogar](https://github.com/Avogar)).
* إصلاح تعطل للخادم قد يحدث عند إلغاء استعلام يقرأ من PostgreSQL — عبر دالة الجدول postgresql، أو محرك جدول PostgreSQL، أو قاموس بمصدر PostgreSQL — (مثلًا باستخدام KILL QUERY) وفشل إلغاء استعلام PostgreSQL البعيد. [#105949](https://github.com/ClickHouse/ClickHouse/pull/105949) ([rorylshanks](https://github.com/rorylshanks)).
* إصلاح تعطل محتمل بسبب سلسلة حرفية كبيرة جدًا مُرسلة ضمن الاستعلام. [#105996](https://github.com/ClickHouse/ClickHouse/pull/105996) ([nickitat](https://github.com/nickitat)).
* إصلاح استثناء `INVALID_WITH_FILL_EXPRESSION` عند استخدام `INTERPOLATE ()` (فارغ) مع بادئة فرز في `ORDER BY` وتمكين `use_with_fill_by_sorting_prefix`. تُستبعد الآن أعمدة بادئة الفرز بشكل صحيح من مجموعة الاستيفاء الضمنية، بما يطابق سلوك `INTERPOLATE (col)` المحدد صراحةً. [#106001](https://github.com/ClickHouse/ClickHouse/pull/106001) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تُرفض الآن حالات `AggregateFunction(uniqTheta, ...)` غير الصالحة الواردة من إدخال `RowBinary` أو معاملات الاستعلام باستخدام `CORRUPTED_DATA` بدلًا من إنهاء الخادم. [#106260](https://github.com/ClickHouse/ClickHouse/pull/106260) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل وخطأ محتمل `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام التحسين المستند إلى القيود (`optimize_using_constraints`) مع الاستعلامات الفرعية المترابطة. [#106349](https://github.com/ClickHouse/ClickHouse/pull/106349) ([Algunenano](https://github.com/Algunenano)).
* إصلاح استثناء `NUMBER_OF_COLUMNS_DOESNT_MATCH` عند الاستعلام عن جدول `Distributed` يحتوي على عمودين أو أكثر من نوع ALIAS تتوسع إلى التعبير نفسه (مثلًا عند تعريف كليهما كـ `toString(x)`)، أو عند كتابة التعبير نفسه كمرجع لعمود ALIAS ومباشرةً في قائمة SELECT، مع عبارة `ORDER BY`. [#106404](https://github.com/ClickHouse/ClickHouse/pull/106404) ([yakov-olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح خطأ `LOGICAL_ERROR` ‏"Trying to get name of not a column: `ExpressionList`" الذي تثيره الاستعلامات التي تمرر علامة النجمة داخل `multiIf` إلى وسيطة دالة جدول، مثل `numbers(multiIf(*, ...), 2)`. يُرفض الآن المُطابِق غير القابل للحل باستخدام `UNSUPPORTED_METHOD`. [#106647](https://github.com/ClickHouse/ClickHouse/pull/106647) ([groeneai](https://github.com/groeneai)).
* رفض أنماط glob غير السليمة لـ `file` التي قد تؤدي إلى تكرار غير محدود عند سرد الدليل. يُفرض الآن حد أقصى لعمق التكرار قدره 1000؛ وتُثير الاستعلامات التي تتجاوزه `TOO_DEEP_RECURSION` بدلًا من إيقاف الخادم بسبب تجاوز سعة المكدس. [#106676](https://github.com/ClickHouse/ClickHouse/pull/106676) ([groeneai](https://github.com/groeneai)).
* إصلاح الاستثناء `'Trying to read from input() twice.'` الذي يظهر عند تغليف دالة الجدول `input` في تعبير جدول شائع غير MATERIALIZED يُشار إليه من أكثر من موضع في الاستعلام. يُرفض الاستعلام الآن بخطأ واضح `INVALID_USAGE_OF_INPUT` في وقت التخطيط. يُعد `input` تدفقًا أحادي الاستخدام من العميل، ولا يمكن أن يستهلكه سوى مصدر واحد في خطة الاستعلام. [#106682](https://github.com/ClickHouse/ClickHouse/pull/106682) ([groeneai](https://github.com/groeneai)).
* إصلاح الأعمدة غير المتسقة (التي تؤدي لاحقًا إلى LOGICAL\_ERROR) عند حدوث استثناء (مثل MEMORY\_LIMIT\_EXCEEDED) أثناء التحليل. [#106802](https://github.com/ClickHouse/ClickHouse/pull/106802) ([azat](https://github.com/azat)).
* إصلاح تعطل الخادم (SIGSEGV) عند قراءة بيانات Protobuf مقتطعة مع `input_format_allow_errors_num > 0`. [#106905](https://github.com/ClickHouse/ClickHouse/pull/106905) ([atsarevskiy](https://github.com/atsarevskiy)).
* إصلاح تعطل الخادم (إلغاء مرجع لمؤشر فارغ) عند تشغيل `TRUNCATE` أو `DROP` على جدول `EmbeddedRocksDB` تم تحرير مقبض RocksDB الخاص به، مثل جدول `read_only` أُفرغ دليل بياناته بواسطة `TRUNCATE` سابق. [#106940](https://github.com/ClickHouse/ClickHouse/pull/106940) ([groeneai](https://github.com/groeneai)).
* إصلاح استثناء (`std::length_error` يُبلّغ عنه بوصفه `LOGICAL_ERROR`) عند القراءة من دالة جدول `*Cluster` مثل `urlCluster` مع إعداد `max_streams_for_files_processing_in_cluster_functions` كبير جدًا. أصبح عدد التدفقات محدودًا الآن بقيمة معقولة. [#106946](https://github.com/ClickHouse/ClickHouse/pull/106946) ([groeneai](https://github.com/groeneai)).
* إصلاح إنهاء الخادم عند إلغاء استعلام موزع مباشرةً قبل إرساله إلى جزء. [#106950](https://github.com/ClickHouse/ClickHouse/pull/106950) ([groeneai](https://github.com/groeneai)).
* أُصلح استثناء في الخادم (خطأ منطقي `this->visited_views == right->visited_views`) عند تنفيذ `INSERT` عندما تكتب طريقتا عرض مادي على جدول المصدر نفسه في جدول الهدف نفسه، بينما تقرأ طريقة عرض تابعة ذلك الجدول، مع تمكين `materialized_views_squash_parallel_inserts`. [#107027](https://github.com/ClickHouse/ClickHouse/pull/107027) ([groeneai](https://github.com/groeneai)).
* أُصلح استثناء `LOGICAL_ERROR` عند الإدراج في جدول DeltaLake بأعمدة لا تطابق مخطط الكتابة الخاص به (مثل عمود `Nested` يُسطَّح إلى أعمدة فرعية، أو دالة جدول ذات مجموعة فرعية صريحة من الأعمدة). تفشل عمليات الإدراج هذه الآن بخطأ `INCOMPATIBLE_COLUMNS` ظاهر للمستخدم بدلاً من ذلك. [#107058](https://github.com/ClickHouse/ClickHouse/pull/107058) ([groeneai](https://github.com/groeneai)).
* أُصلح `LOGICAL_ERROR` ("Table expression ... data must be initialized") الذي كان يظهر عندما يشير محدِّد النجمة المؤهَّل (مثل `x.*`) إلى تعبير جدول شائع تعاودي باسمه ضمن الجزء التعاودي الخاص به. توسِّع هذه المحددات الآن أعمدة الجدول التعاودي، تماماً كما يفعل عمود مؤهَّل (`x.a`) أو محدِّد غير مؤهَّل (`*`) في هذا الموضع. [#107144](https://github.com/ClickHouse/ClickHouse/pull/107144) ([groeneai](https://github.com/groeneai)).
* أُصلح `LOGICAL_ERROR` ("Unexpected exception in refresh scheduling") كان يمكن أن يُدخل الخادم في حلقة تعطل عند إعادة التشغيل عندما تحتوي طريقة عرض مادية قابلة للتحديث على تبعية `REFRESH ... DEPENDS ON <name>` يطابق اسمها غير المؤهَّل جدولاً مؤقتاً أو اسم تعبير جدول شائع. [#107156](https://github.com/ClickHouse/ClickHouse/pull/107156) ([groeneai](https://github.com/groeneai)).
* أُصلح `LOGICAL_ERROR` (`Variant N (T) has size X, but expected Y`) عند تطبيق دالة مثل `toString` أو `concat` على عمود `Variant` أو `Dynamic` يحتوي على متغير واحد غير فارغ إلى جانب قيم NULL، بينما تُرجع الدالة عمود الإدخال دون تغيير. [#107374](https://github.com/ClickHouse/ClickHouse/pull/107374) ([groeneai](https://github.com/groeneai)).
* أُصلح `LOGICAL_ERROR` (`block.rows() == getRows()`) الذي كان يظهر عند تنفيذ `INSERT` غير متزامن في جدول `Alias` مع تمكين `use_strict_insert_block_limits`. [#107400](https://github.com/ClickHouse/ClickHouse/pull/107400) ([groeneai](https://github.com/groeneai)).
* أُصلح استثناء في الخادم (`Logical error: Not-ready Set is passed as the second argument for function 'in'`) عندما احتوى تعبير مفتاح (`ORDER BY` أو `PRIMARY KEY` أو `PARTITION BY` أو `INDEX` للتخطي) على عامل التشغيل `IN` مع جدول في الطرف الأيمن، مثل `ORDER BY (x IN some_table)`. تُرفض تعبيرات المفاتيح هذه الآن عند إنشاء الجدول. [#107424](https://github.com/ClickHouse/ClickHouse/pull/107424) ([groeneai](https://github.com/groeneai)).
* أُصلح تعطل نادر للخادم أثناء معالجة `DISTINCT` كان يمكن أن يحدث عند فشل تخصيص الذاكرة (مثل بلوغ حد الذاكرة) أثناء تهيئة مجموعة المفاتيح المميزة. [#107467](https://github.com/ClickHouse/ClickHouse/pull/107467) ([groeneai](https://github.com/groeneai)).
* أُصلحت عمليات `DeltaLake` التي كانت تفشل بعد انتهاء صلاحية بيانات اعتماد S3 المؤقتة، وذلك بتحديث بيانات الاعتماد المخزنة مؤقتاً قبل العملية التالية. كما تُحدَّث بيانات اعتماد STS لتولي الدور بعد فشل المصادقة. [#107480](https://github.com/ClickHouse/ClickHouse/pull/107480) ([ahmadov](https://github.com/ahmadov)).
* أُصلح الخطأ `Not-ready Set is passed as the second argument for function 'in'` (`LOGICAL_ERROR`) عند الاستعلام عن جدول بمفتاح `PARTITION BY` واستعلام فرعي `IN`/`NOT IN` مُغلَّف داخل تعبير أكبر، مثل `WHERE (c0 IN (SELECT ...)) != 0`. [#107515](https://github.com/ClickHouse/ClickHouse/pull/107515) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل (إلغاء الإشارة إلى مؤشر فارغ) قد يحدث عند تنفيذ خطة استعلام موزّع محليًا (`make_distributed_plan` + `distributed_plan_execute_locally`) مع `log_formatted_queries = 1`. [#107570](https://github.com/ClickHouse/ClickHouse/pull/107570) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل الخادم عند قراءة عرض مادي يكون هدفه جدول `Distributed` أثناء تشغيل الاستعلام مع `enable_analyzer = 0`. [#107653](https://github.com/ClickHouse/ClickHouse/pull/107653) ([groeneai](https://github.com/groeneai)).
* إصلاح تعطل الخادم (SIGSEGV) عند قراءة بيانات Protobuf مع `input_format_allow_errors_num > 0`، عندما تسبق رسالة صالحة رسالةً تالفة قابلة للتخطي ضمن الكتلة نفسها. [#107739](https://github.com/ClickHouse/ClickHouse/pull/107739) ([atsarevskiy](https://github.com/atsarevskiy)).
* إصلاح تعليق دوال الجدول `odbc` و`jdbc` لعدة دقائق وتجاهلها إلغاء الاستعلام (`KILL QUERY`، `max_execution_time`) عندما يصبح الجسر غير مستجيب أثناء استنتاج بنية الجدول البعيد. [#107809](https://github.com/ClickHouse/ClickHouse/pull/107809) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل محتمل (إلغاء الإشارة إلى مؤشر فارغ) عندما لا يكون تجاوز `database`/`db` في مجموعة مسماة مُمرَّرة إلى `remote()`/`remoteSecure()` اسم قاعدة بيانات ثابتًا، مثل `remote(nc, database = (SELECT 1))`. يفشل الاستعلام الآن برسالة خطأ واضحة بدلًا من التعطل. [#108271](https://github.com/ClickHouse/ClickHouse/pull/108271) ([groeneai](https://github.com/groeneai)).
* تُرجع استعلامات البحث المتجهي التي تنفذ SELECT على العمود `_distance` الآن خطأً مناسبًا بدلًا من الفشل مع `LOGICAL_ERROR`. [#108423](https://github.com/ClickHouse/ClickHouse/pull/108423) ([rschu1ze](https://github.com/rschu1ze)).
* إصلاح تعطل محتمل (تجاوز سعة المخزن المؤقت في الكومة) عند استخدام عمود حالة دالة تجميع من عائلة `quantileTDigest` كمفتاح `GROUP BY` وتسلسله بالتزامن من عدة خيوط. [#110263](https://github.com/ClickHouse/ClickHouse/pull/110263) ([groeneai](https://github.com/groeneai)).
* إصلاح الاستبعاد غير الصحيح الناتج عن تحليل فهرس المفتاح الأساسي في الجداول ذات مفتاح فرز عكسي (تنازلي) (`ORDER BY (g, r DESC)`). إذ كان يمكن استبعاد حبيبة تمتد عبر تغيير في عمود مفتاح رئيسي يليه عمود مفتاح تنازلي بصورة غير صحيحة، ما يؤدي إلى إسقاط صفوف مطابقة. [#111059](https://github.com/ClickHouse/ClickHouse/pull/111059) ([nihalzp](https://github.com/nihalzp)).
* إصلاح خطأ منطقي `block.rows() == getRows()` (قراءة خارج الحدود وتعطل إزالة تكرار الإدراج في إصدارات الإنتاج) عندما يمر `INSERT` عبر عرض مادي تابع يكون هدفه `Alias` ويغيّر استعلامه الداخلي عدد الصفوف، مع وجود جدول يدعم إزالة التكرار يمكن الوصول إليه بعد الاسم المستعار. [#111103](https://github.com/ClickHouse/ClickHouse/pull/111103) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ تجزئة ناتج عن وصول إلى ذاكرة خارج الحدود عند إلغاء تسلسل حالة دالة تجميع تالفة تحتوي على قيمة `String`. ويجري الآن التحقق من هذه الحالات ورفضها بدلًا من أن تؤدي إلى أخطاء تجزئة. [#111606](https://github.com/ClickHouse/ClickHouse/pull/111606) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح تعطل عند قراءة ملف Parquet يحتوي على بيانات وصفية غير متسقة لمرشح بلوم. وكان يمكن لهذه الملفات أيضًا أن تُرجع بصمت عددًا من الصفوف أقل مما ينبغي. [#112498](https://github.com/ClickHouse/ClickHouse/pull/112498) ([tiandiwonder](https://github.com/tiandiwonder)).
* يُصلح خطأ segfault وفسادًا صامتًا للبيانات عند إلحاق `INSERT` إلى محرك `File` أو دالة الجدول `file` بملف غير فارغ بتنسيق لا يدعم الإلحاق، مثل `Avro`. كانت الكتابة عبر واصف ملف أو مسار مُقسَّم تتجاوز الفحص الحالي، مما يؤدي إلى حذف بادئة التنسيق وكتابة رأس ثانٍ بعد البايتات الموجودة، فيصبح الملف غير قابل للقراءة. يُرفض الآن `INSERT` من هذا النوع بالخطأ `CANNOT_APPEND_TO_FILE`، كما هو الحال بالفعل عند استخدام مسار عادي. [#112839](https://github.com/ClickHouse/ClickHouse/pull/112839) ([groeneai](https://github.com/groeneai)).
* يُصلح تعليق `DROP TABLE` و`SYSTEM STOP VIEW` عندما تكون طريقة العرض المادية القابلة للتحديث محظورة أثناء تخطيط استعلام تحديثها. [#113188](https://github.com/ClickHouse/ClickHouse/pull/113188) ([evillique](https://github.com/evillique)).
* أُصلح إنهاء نادر للخادم عندما كانت إدخالات قائمة انتظار الإدراج غير المتزامن ذات مواعيد نهائية متطابقة. [#113363](https://github.com/ClickHouse/ClickHouse/pull/113363) ([mstetsyuk](https://github.com/mstetsyuk)).
* أُصلح فساد في ذاكرة الكومة عند قراءة Parquet عبر صيغة إدخال تملك مخزن القراءة المؤقت الخاص بها، مثل قاموس يحتوي على `SOURCE(FILE(... format 'Parquet'))`. كان يمكن لمهام الجلب المسبق وفك الترميز في الخلفية متابعة القراءة والكتابة عبر المخزن المؤقت بعد أن حرره خط الأنابيب، مما قد يؤدي إلى إنهاء الخادم. [#114668](https://github.com/ClickHouse/ClickHouse/pull/114668) ([groeneai](https://github.com/groeneai)).
* أُصلح تعليق عند حذف جدول `TimeSeries` يكون اسمه مرتبًا معجميًا قبل أسماء جداولِه الداخلية، مثل جدول باسم `-ts`، أو عند حذف طريقة عرض مادية معلنة باستخدام `ENGINE = TimeSeries`. كان الحذف يتسبب في تعطل ذاتي بسبب قفل حماية DDL، ولم يكن بالإمكان إلغاؤه باستخدام `KILL QUERY`. [#114953](https://github.com/ClickHouse/ClickHouse/pull/114953) ([groeneai](https://github.com/groeneai)).

<h3 id="other-bug-fixes">
  إصلاحات أخرى للأخطاء
</h3>

* تدعم الدوال `like` و`ilike` و`notLike` و`notILike` و`match` الآن سلسلة البحث الثابتة مع نمط غير ثابت (مثل `'foo' LIKE pattern_column`)، بعد أن كان ذلك يؤدي سابقًا إلى ظهور `ILLEGAL_COLUMN`. [#100479](https://github.com/ClickHouse/ClickHouse/pull/100479) ([Onyx2406](https://github.com/Onyx2406)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند الاختيار من VIEW فوق جدول يحتوي على إسقاط عادي. [#101218](https://github.com/ClickHouse/ClickHouse/pull/101218) ([amosbird](https://github.com/amosbird)).
* رفض قيم Float64 السالبة (مثل `-100.5`) في إعدادات عبء العمل، مثل `max_bytes_per_second` و`max_cpus` وغيرها. سابقًا، كان التحقق يقتصر على الأعداد الصحيحة السالبة، مما سمح للقيم العشرية السالبة بإنشاء عقد مجدول معطلة بصمت. [#101842](https://github.com/ClickHouse/ClickHouse/pull/101842) ([groeneai](https://github.com/groeneai)).
* تستجيب عمليات القراءة من تخزين الكائنات الآن بسرعة لإلغاء الاستعلام. [#103016](https://github.com/ClickHouse/ClickHouse/pull/103016) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح تجاهل `input_format_max_block_size_bytes` بصمت أثناء تحليل `INSERT` عندما تكون قيمة `max_insert_block_size_bytes` هي `0` (القيمة الافتراضية). يحد الإعداد الآن بشكل صحيح من حجم الكتل التي تنتجها تنسيقات إدخال الصفوف. [#103068](https://github.com/ClickHouse/ClickHouse/pull/103068) ([Fgrtue](https://github.com/Fgrtue)).
* إصلاح إنتاج ClickHouse أحيانًا لرموز GSSAPI غير صالحة بسبب إزالة غير صحيحة لبايتات null اللاحقة. [#103114](https://github.com/ClickHouse/ClickHouse/pull/103114) ([EmeraldShift](https://github.com/EmeraldShift)).
* يوسّع EXPLAIN SYNTAX العروض ذات المعلمات. [#103263](https://github.com/ClickHouse/ClickHouse/pull/103263) ([jrdi](https://github.com/jrdi)).
* إصلاح تلف البيانات عند كتابة Parquet (والتنسيقات الأخرى ذات التذييل، مثل ORC وArrow) إلى HDFS عبر `INSERT INTO FUNCTION hdfs(...)`. منذ الإصدار 26.1، لم يكن `WriteBufferFromHDFS` يفرغ المخزن المؤقت العامل عند `finalize()`، لذلك كانت تُفقد بصمت آخر بايتات كل ملف، حتى `DBMS_DEFAULT_BUFFER_SIZE` بايت، بما في ذلك تذييل Parquet `PAR1`. وكانت قراءة هذه الملفات تُرجع `Not a Parquet file (wrong magic bytes at the end of file)`. [#103268](https://github.com/ClickHouse/ClickHouse/pull/103268) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة واحتمال حدوث خطأ منطقي في الاستعلامات الفرعية المترابطة عند تعيين حد لحجم join (`max_rows_in_join` / `max_bytes_in_join`) مع `join_overflow_mode = 'break'`. يتجاهل join الذي يُنشأ داخليًا لتقييم استعلام فرعي مترابط الآن حدود المستخدم هذه، لذلك لم يعد بإمكانه التوقف مبكرًا وإسقاط الصفوف. [#103322](https://github.com/ClickHouse/ClickHouse/pull/103322) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة أو عدم استخدام الإسقاط عندما يحتوي إسقاط تجميعي على عدة تجميعات `sumIf` بشروط `IN (...)` مختلفة. [#104765](https://github.com/ClickHouse/ClickHouse/pull/104765) ([Ergus](https://github.com/Ergus)).
* إصلاح إرجاع `deltaSumTimestamp` لنتائج خاطئة لأنواع الأعداد الصحيحة الموقعة عند عبورها الصفر. [#104830](https://github.com/ClickHouse/ClickHouse/pull/104830) ([thevar1able](https://github.com/thevar1able)).
* إصلاح الخطأ `Logical error: 'Metadata is not initialized'` الذي يظهر عند تنفيذ `DELETE FROM` على جدول `Iceberg` أو `DeltaLake` أو `Hudi` مرفق حديثًا وملف البيانات الوصفية الخاص به تالف أو يتعذر تحميله. يُبلّغ عن استثناء عادي ظاهر للمستخدم بدلًا من ذلك، ويستمر الخادم في العمل. [#104917](https://github.com/ClickHouse/ClickHouse/pull/104917) ([groeneai](https://github.com/groeneai)).
* أصبحت استعلامات `ATTACH TABLE name <clauses>;` التي تتضمن عبارات تخزين (`ORDER BY` أو `PARTITION BY` أو `PRIMARY KEY` أو `SAMPLE BY` أو `TTL` أو `UNIQUE KEY` أو `SETTINGS` الخاصة بالمحرك) من دون `ENGINE` تُصدر الآن الخطأ `BAD_ARGUMENTS` بدلًا من إعادة إرفاق الجدول بصمت باستخدام تعريفه المخزن وتجاهل العبارات التي يحددها المستخدم. ولا تزال `SETTINGS` على مستوى جلسة الاستعلام (مثل `log_comment`) تُطبَّق. استخدم `ATTACH TABLE t;` لإعادة الإرفاق باستخدام البيانات الوصفية المخزنة، أو استخدم `ALTER TABLE t MODIFY SETTING ...` بعد `ATTACH` لتغيير الإعدادات. [#105068](https://github.com/ClickHouse/ClickHouse/pull/105068) ([groeneai](https://github.com/groeneai)).
* أُصلح تجاوز سعة المخزن المؤقت في الكومة عند قراءة ملفات Arrow أو ArrowStream التي تحتوي على إزاحات وسيطة تالفة في عمود ثنائي أو نصي، وكذلك إلغاء مرجعية مؤشر فارغ عند قراءة أعمدة Arrow الموسومة جغرافيًا. [#105449](https://github.com/ClickHouse/ClickHouse/pull/105449) ([Algunenano](https://github.com/Algunenano)).
* أُصلح توقف الخادم عند قراءة الأعمدة الفرعية `Dynamic` من جدول `Memory` مضغوط بعد `ALTER`. [#105464](https://github.com/ClickHouse/ClickHouse/pull/105464) ([Avogar](https://github.com/Avogar)).
* تضمين `skip_first_lines` في مفتاح ذاكرة التخزين المؤقت للمخطط لتنسيقات `WithNames`. [#105469](https://github.com/ClickHouse/ClickHouse/pull/105469) ([Avogar](https://github.com/Avogar)).
* إصلاح إنتاج `histogram` لنتائج غير صحيحة عند استخدام مدخلات صغيرة غير مرتبة. [#105548](https://github.com/ClickHouse/ClickHouse/pull/105548) ([Avogar](https://github.com/Avogar)).
* إصلاح استخدام جدول الإدراج في دوال الجداول عند تفعيل `optimize_trivial_insert_select`. [#105555](https://github.com/ClickHouse/ClickHouse/pull/105555) ([Avogar](https://github.com/Avogar)).
* إصلاح فقدان الدالة الإطارية `estimateCompressionRatio` للبيانات المتراكمة بين الصفوف. [#105581](https://github.com/ClickHouse/ClickHouse/pull/105581) ([Avogar](https://github.com/Avogar)).
* أصبح استخراج قيم أقسام Hive يراعي الآن الإعداد `cast_string_to_date_time_mode`، ويقبل افتراضيًا الطوابع الزمنية بتنسيق ISO 8601 ذات لواحق المنطقة الزمنية (مثل `+0000` و`+00:00` و`Z`) في مفاتيح التقسيم. [#105584](https://github.com/ClickHouse/ClickHouse/pull/105584) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح استرداد الأخطاء في تنسيق الإدخال `Template` بعد الصفوف غير الصحيحة. [#105735](https://github.com/ClickHouse/ClickHouse/pull/105735) ([niyue](https://github.com/niyue)).
* إصلاح تنسيق `SYSTEM INSTRUMENT ADD` بحيث تفصل مسافة واحدة بين وسيطات المعالج، ورفض قوائم وسيطات instrumentation غير الصالحة لـ `SLEEP` التي تحتوي على أكثر من قيمتين أو على نطاق يكون حده الأدنى أكبر من حده الأقصى. [#105984](https://github.com/ClickHouse/ClickHouse/pull/105984) ([pamarcos](https://github.com/pamarcos)).
* إصلاح فشل عمليات أقسام `ALTER TABLE` بصمت عند استخدام مفاتيح تقسيم من نوع Bool. [#106004](https://github.com/ClickHouse/ClickHouse/pull/106004) ([Avogar](https://github.com/Avogar)).
* إصلاح `JSONExtractRaw` و`JSONHas` لمسارات JSON محددة النوع ذات قيم افتراضية. [#106005](https://github.com/ClickHouse/ClickHouse/pull/106005) ([Avogar](https://github.com/Avogar)).
* أُصلحت بادئة `/` غير الصحيحة لمسارات الأساس الفارغة في تهيئات بحيرة البيانات. [#106013](https://github.com/ClickHouse/ClickHouse/pull/106013) ([thewisenerd](https://github.com/thewisenerd)).
* إصلاح إرجاع `system.dictionaries` لصفر من الصفوف عند وجود إلغاء جزئي لصلاحية `SHOW DICTIONARIES`. [#106105](https://github.com/ClickHouse/ClickHouse/pull/106105) ([Avogar](https://github.com/Avogar)).
* إصلاح النتائج غير الصحيحة للاستعلامات على الجداول التي يحتوي `ORDER BY` فيها على دالة رتيبة تناقصية مثل `(c0 / -42)` أو `intDiv(c0, -42)`. كان من الممكن أن تؤدي الشروط على العمود الأساسي (مثل `c0 < 0`) إلى استبعاد حبيبات تحتوي على صفوف مطابقة بالخطأ، ما يؤدي إلى فقدان نتائج. [#106136](https://github.com/ClickHouse/ClickHouse/pull/106136) ([nihalzp](https://github.com/nihalzp)).
* أُضيف التحقق من حالات التجميع `DDSketch` غير الصالحة أثناء الإدراج. [#106236](https://github.com/ClickHouse/ClickHouse/pull/106236) ([yariks5s](https://github.com/yariks5s)).
* إصلاح اتساق ذاكرة التخزين المؤقت لنظام الملفات بعد عمليات التخفيض الفاشلة لـ `SLRU`، لمنع بقاء الإدخالات عالقة في حالة إخلاء. كما أُصلح تغيير حجم ذاكرة التخزين المؤقت المنقسمة `System`/`Data` وتنظيف المساحة الحرة، بحيث تُحدَّث الحدود ذرّيًا ويمكن استعادة المساحة من كلا مقطعي ذاكرة التخزين المؤقت. [#106286](https://github.com/ClickHouse/ClickHouse/pull/106286) ([kssenii](https://github.com/kssenii)).
* إصلاح تحويل غير صحيح لقيم `Float16` دون العادية إلى `Float32` (مثلًا عند قراءتها من ملفات Numpy `.npy`) بسبب إزاحة المانتيسا بمقدار واحد. [#106343](https://github.com/ClickHouse/ClickHouse/pull/106343) ([jh0x](https://github.com/jh0x)).
* إصلاح `regexpExtract(haystack, pattern)` بحيث تُرجع الأنماط التي لا تحتوي على مجموعة التقاط التطابق كاملًا بدلًا من إصدار `INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE`. [#106374](https://github.com/ClickHouse/ClickHouse/pull/106374) ([groeneai](https://github.com/groeneai)).
* إصلاح خطأ منطقي عند إنشاء قاموس مضلعات من بيانات مصدر تحتوي على إحداثيات نقاط `NaN` أو لا نهائية. تُرفض هذه الإحداثيات الآن برسالة خطأ واضحة. [#106423](https://github.com/ClickHouse/ClickHouse/pull/106423) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* يمكن لقواميس HTTP الآن تحديد رؤوس الطلبات عبر المجموعات المسماة. [#106459](https://github.com/ClickHouse/ClickHouse/pull/106459) ([ZelvaMan](https://github.com/ZelvaMan)).
* يجري الآن التحقق من قيم التعداد `Avro` غير الصالحة ورفضها باستثناء، بدلًا من أن تتسبب في قراءة ذاكرة خارج الحدود وإنهاء الخادم. [#106476](https://github.com/ClickHouse/ClickHouse/pull/106476) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح عدم مراعاة `LIMIT WITH TIES` و`LIMIT WITH TIES` الكسري لقواعد المقارنة من `ORDER BY ... COLLATE` عند تحديد التعادلات. كانت الصفوف المتساوية وفقًا لقواعد المقارنة (مثل `'1'` و`'01'` ضمن ترتيب رقمي) تُقارن بايتًا ببايت، لذا حُذفت بعض الصفوف المتعادلة من النتيجة بالخطأ. [#106539](https://github.com/ClickHouse/ClickHouse/pull/106539) ([nihalzp](https://github.com/nihalzp)).
* إصلاح تحسينات `DISTINCT` بالترتيب و`LIMIT BY` بالترتيب (بما في ذلك `LIMIT BY` السالب) التي كانت تُرجع نتائج خاطئة عندما يكون الإدخال مرتبًا وفق قواعد مقارنة (`ORDER BY ... COLLATE`). تُرتب الصفوف المتساوية وفقًا لقواعد المقارنة (مثل `'a'` و`'A'` ضمن ترتيب غير حساس لحالة الأحرف) بحسب مفتاح المقارنة، ولا تكون متجاورة بحسب القيمة؛ لذلك يُتخطى الآن التحسين بالترتيب عند استخدام مُقارِن. [#106564](https://github.com/ClickHouse/ClickHouse/pull/106564) ([nihalzp](https://github.com/nihalzp)).
* إصلاح حالة سباق أثناء إيقاف مستهلك NATS، كان من الممكن أن تؤدي إلى إنهاء الخادم. [#106692](https://github.com/ClickHouse/ClickHouse/pull/106692) ([mstetsyuk](https://github.com/mstetsyuk)).
* إصلاح عدة مشكلات تتعلق بأمان الذاكرة واستنفاد الموارد في قارئات التنسيقات التي يمكن الوصول إليها عبر إدخال غير موثوق: قراءة خارج حدود الكومة في معالجة طول مستويات التعريف/التكرار لـ `DataPageV2` في قارئ Parquet الأصلي، وتجاوز سعة المكدس في ملفات Parquet ذات المخططات المتداخلة بعمق، وعمليات تخصيص تتجاهل `max_memory_usage` عند تحليل هندسة GeoParquet بتنسيق WKB/WKT وسلاسل/بايتات Avro. [#106739](https://github.com/ClickHouse/ClickHouse/pull/106739) ([Algunenano](https://github.com/Algunenano)).
* تم إصلاح قيام `keeper_server.http_control.secure_port` بإرسال استجابات HTTP بنص عادي إلى عملاء HTTPS. وأصبح المنفذ الآمن يقدّم HTTPS بشكل صحيح. [#106822](https://github.com/ClickHouse/ClickHouse/pull/106822) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* تم إصلاح إصدار `SHOW CREATE ROW POLICY` للقيمتين `restrictive`/`permissive` بأحرف صغيرة بدلًا من الأحرف الكبيرة، على نحو لا يتسق مع الكلمات المفتاحية الأخرى. [#106865](https://github.com/ClickHouse/ClickHouse/pull/106865) ([valerypetrov](https://github.com/valerypetrov)).
* تم إصلاح وضع علامة «تالف» على الأجزاء وفصلها عند أي إعادة تحميل للجزء (إعادة تشغيل الخادم، أو `DETACH`، أو `ATTACH`) في الجداول التي تحتوي على عمود `LowCardinality(Nullable(...))` ضمن مفتاح التقسيم. منذ الإصدار 26.5، لم يكن ملف فهرس minmax الخاص بكل جزء يُكتب عندما كانت القيمتان الدنيا والعظمى لهذا العمود هما `NULL`، بينما كان فحص اتساق الجزء لا يزال يتطلب وجود الملف. تفتقر الأجزاء التي أنشأتها الإصدارات المتأثرة إلى ملف فهرس minmax، ولا تزال بحاجة إلى إعادة إرفاقها يدويًا. [#106945](https://github.com/ClickHouse/ClickHouse/pull/106945) ([PedroTadim](https://github.com/PedroTadim)).
* تم إصلاح كون `elapsed_us` يساوي صفرًا دائمًا، واحتساب `read_rows`/`read_bytes` بأقل من قيمتهما الفعلية، في `system.processors_profile_log` و`system.query_log` لاستعلامات تفريغ الإدراج غير المتزامن (`AsyncInsertFlush`). [#106982](https://github.com/ClickHouse/ClickHouse/pull/106982) ([cwurm](https://github.com/cwurm)).
* تم إصلاح خطأ منطقي `Block structure mismatch in UnionStep stream` (توقف الخادم في إصدارات التصحيح/المعقّم، وظهور `Code: 49` في إصدارات الإنتاج) كان يحدث عندما يقرأ أحد فروع `UNION`/`INTERSECT`/`EXCEPT` عمودًا مُسلسلًا بـ`Sparse`، بينما يقرأ الفرع الآخر العمود نفسه كاملًا (مثلًا عند الدفع إلى عرض مادي). [#107041](https://github.com/ClickHouse/ClickHouse/pull/107041) ([groeneai](https://github.com/groeneai)).
* تم إصلاح ترتيب الصفوف غير الصحيح في استعلامات `ORDER BY` على `UNION ALL` عند تمكين `optimize_read_in_order` و`read_in_order_use_virtual_row`. [#107053](https://github.com/ClickHouse/ClickHouse/pull/107053) ([vdimir](https://github.com/vdimir)).
* تم إصلاح خطأ في البنية عند اتباع `SHOW ROW POLICIES` أو `SHOW MASKING POLICIES` ببند `FORMAT` أو `SETTINGS` أو `INTO OUTFILE` (مثلًا `SHOW ROW POLICIES FORMAT TabSeparated`). [#107061](https://github.com/ClickHouse/ClickHouse/pull/107061) ([groeneai](https://github.com/groeneai)).
* تم إصلاح قيام `trimLeft` و`trimRight` و`trimBoth` (والأسماء المستعارة `ltrim` و`rtrim` و`trim`) بإلقاء `TOO_LARGE_STRING_SIZE` عندما تكون مجموعة محارف الإزالة المخصصة أطول من 16 محرفًا. وأصبحت مجموعات الإزالة بأي طول مدعومة مجددًا. [#107071](https://github.com/ClickHouse/ClickHouse/pull/107071) ([fm4v](https://github.com/fm4v)).
* تم إصلاح تجاوز في الأعداد الصحيحة الموقعة في `quantileExactExclusive` و`quantilesExactExclusive` و`quantileExactInclusive` و`quantilesExactInclusive` كان يمكن أن ينتج عنه نتائج خاطئة لمدخلات `Int64` التي تمتد على نطاق واسع. [#107154](https://github.com/ClickHouse/ClickHouse/pull/107154) ([groeneai](https://github.com/groeneai)).
* لم تعد عمليات إعادة تحميل الإعدادات تعيد تشغيل نصوص البدء، مما يمنع إعادة تنفيذ إجراءات البدء التي تُنفَّذ مرة واحدة. [#107187](https://github.com/ClickHouse/ClickHouse/pull/107187) ([mstetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح ترتيب النتائج غير الصحيح لـ`ORDER BY` على `UNION ALL` عند تمكين `optimize_read_in_order`، عندما كان خط أنابيب الاتحاد يُقلَّص بسبب إعدادات `max_streams_for_union_step`؛ إذ يُتخطى هذا التقليص الآن عندما تعتمد الخطة على تدفقات إخراج `UNION` المرتبة. [#107208](https://github.com/ClickHouse/ClickHouse/pull/107208) ([vdimir](https://github.com/vdimir)).
* تم إصلاح احتمال إلغاء مرجع مؤشر فارغ أثناء تحليل إعدادات الوكيل خلال المراحل المتأخرة من إيقاف الخادم. [#107231](https://github.com/ClickHouse/ClickHouse/pull/107231) ([PedroTadim](https://github.com/PedroTadim)).
* إصلاح مشكلة في `ORDER BY ... WITH FILL` كانت تؤدي إلى إنشاء صفوف إضافية عندما يستخدم عمود `ORDER BY` الذي يسبق عمود التعبئة ترتيبًا `COLLATE`. تُجمَّع الصفوف الآن حسب بادئة الفرز باستخدام ذلك الترتيب، بما يتوافق مع ترتيب الفرز. [#107365](https://github.com/ClickHouse/ClickHouse/pull/107365) ([groeneai](https://github.com/groeneai)).
* إصلاح سلوك غير معرّف عند تمرير قيمة فاصلة عائمة غير منتهية (مثل `nan` أو `inf`) بوصفها وسيطة الطابع الزمني أو المدة لدالتي الجدول `prometheusQuery` / `prometheusQueryRange`. تؤدي هذه الوسيطة الآن إلى ظهور `BAD_ARGUMENTS` بدلًا من إنتاج طابع زمني غير صالح. [#107417](https://github.com/ClickHouse/ClickHouse/pull/107417) ([groeneai](https://github.com/groeneai)).
* إصلاح النتائج غير الصحيحة الناتجة عن التحسين `optimize_rewrite_aggregate_function_with_if` للدوال التجميعية التي تحافظ على قيم حمولة `NULL` (عائلة `*_respect_nulls`: `anyRespectNulls` و`first_value_respect_nulls` و`anyLast_respect_nulls` و`last_value_respect_nulls`). لم يعد التحسين يعيد كتابة `f(if(cond, x, NULL))` إلى صيغة `-If` لهذه الدوال. [#107430](https://github.com/ClickHouse/ClickHouse/pull/107430) ([groeneai](https://github.com/groeneai)).
* إضافة تحقق من الحدود غير الصحيحة في إدخال ORC. [#107580](https://github.com/ClickHouse/ClickHouse/pull/107580) ([al13n321](https://github.com/al13n321)).
* إصلاح ثغرة رفض خدمة غير موثَّقة بسبب استنفاد الذاكرة على منفذ بروتوكول MySQL. [#107599](https://github.com/ClickHouse/ClickHouse/pull/107599) ([tiandiwonder](https://github.com/tiandiwonder)).
* إصلاح مشكلة كانت تجعل واجهة MySQL غير قابلة للاستخدام مع `MySQL Connector/J` 8.2.0 والإصدارات الأحدث، بما فيها 9.x. أصبح حقل `info` في حزمة `OK` الآن مرمّزًا بالطول، بما يتوافق مع خادم MySQL، بحيث يتمكن برنامج تشغيل JDBC من الاتصال. [#107693](https://github.com/ClickHouse/ClickHouse/pull/107693) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ المنطقي `Block structure mismatch in UnionStep stream` (توقف الخادم في إصدارات debug/sanitizer، و`Code: 49` في إصدارات الإصدار) الذي كان يحدث عندما تختلف الفروع الشقيقة لـ`UNION`/`INTERSECT`/`EXCEPT` فقط في مسند `WHERE`، وكان مسند أحد الفروع يُطوى إلى ثابت في عمود `Const`. [#107719](https://github.com/ClickHouse/ClickHouse/pull/107719) ([groeneai](https://github.com/groeneai)).
* لم تعد قراءة بيانات `Arrow` و`ArrowStream` ذات أعمدة `String` أو `Binary` فارغة، والتي ينتجها Apache Arrow Java قبل الإصدار 19.0.0، بما في ذلك Apache Spark، تؤدي إلى ظهور `INCORRECT_DATA`. [#107764](https://github.com/ClickHouse/ClickHouse/pull/107764) ([Algunenano](https://github.com/Algunenano)).
* أصبحت كتل Native غير الصحيحة التي يشير فيها مميّز `Variant` إلى متغير غير موجود تُرفض بأمان. [#107991](https://github.com/ClickHouse/ClickHouse/pull/107991) ([uwezkhan](https://github.com/uwezkhan)).
* إصلاح تراجع في الأداء عند قراءة أعمدة `Dynamic` باستخدام عدة خيوط. [#107997](https://github.com/ClickHouse/ClickHouse/pull/107997) ([Avogar](https://github.com/Avogar)).
* أصبح إعداد data lake المتقادم `storage_catalog_url` يُرفض الآن بشكل صحيح بواسطة حارس الكتالوج (إذ كان يُتحقق سابقًا من `storage_catalog_type` و`storage_aws_access_key_id` فقط)، وتسرد رسالة الخطأ جميع الإعدادات المتقادمة. [#108040](https://github.com/ClickHouse/ClickHouse/pull/108040) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة رفض دالة/محرك الجدول `ArrowFlight` لمجموعة مسماة لا تتضمن المفتاح الاختياري `dataset`، مع ظهور الخطأ `No such key 'dataset'`. [#108041](https://github.com/ClickHouse/ClickHouse/pull/108041) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* أصبحت الأسرار وبيانات الاعتماد الآن محجوبة في `system.query_views_log.view_query` بدلاً من كشفها في SQL للعرض المسجّل. [#108214](https://github.com/ClickHouse/ClickHouse/pull/108214) ([Fidelaggio](https://github.com/Fidelaggio)).
* إصلاح عدم عمل `type_json_allow_duplicated_key_with_literal_and_nested_object` مع المسارات المحددة النوع في JSON. [#108218](https://github.com/ClickHouse/ClickHouse/pull/108218) ([Avogar](https://github.com/Avogar)).
* إصلاح سلوك غير معرّف (تمرير مؤشر فارغ إلى `memcpy`) في الدالتين `detectCharset` و`detectLanguageUnknown` عندما تتجاوز سلسلة الإدخال 32768 بايت ولا يمكن اكتشاف أي مجموعة محارف. [#108250](https://github.com/ClickHouse/ClickHouse/pull/108250) ([groeneai](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` في الاستعلامات التي تستخدم الأعمدة الافتراضية `_part_starting_offset/_part_offset` في WHERE مع التجسيد المؤجل. [#108287](https://github.com/ClickHouse/ClickHouse/pull/108287) ([vdimir](https://github.com/vdimir)).
* إخفاء الوسائط السرية للدوال مثل `encrypt` و`decrypt` و`HMAC` في مخرجات `EXPLAIN actions` و`EXPLAIN header` و`EXPLAIN PIPELINE` عند تعطيل `format_display_secrets_in_show_and_select` (وهو الإعداد الافتراضي). [#108386](https://github.com/ClickHouse/ClickHouse/pull/108386) ([Algunenano](https://github.com/Algunenano)).
* ينجح `CREATE OR REPLACE` الآن لعرض مادي قابل للتحديث عندما يكون هدفه في `TO` مملوكاً بالفعل للعرض نفسه. وتظل الأهداف المملوكة لعرض آخر مرفوضة. [#108392](https://github.com/ClickHouse/ClickHouse/pull/108392) ([evillique](https://github.com/evillique)).
* قُيّد مسار نموذج `catboostEvaluate` بدليل `user_files`، على غرار `file()` ومصادر القواميس. في السابق، كانت الدالة تقبل مساراً عشوائياً في نظام الملفات دون التحقق من بقائه ضمن الدليل، مما أتاح التحقق من وجود ملفات خارج `user_files` وتحفيز قراءتها. ويجب الآن أن توجد النماذج داخل `user_files`. [#108463](https://github.com/ClickHouse/ClickHouse/pull/108463) ([groeneai](https://github.com/groeneai)).
* إصلاح مشكلة كانت تجعل `CREATE OR REPLACE MATERIALIZED VIEW ... POPULATE` يترك العرض الجديد غير مرتبط بجدول المصدر، مما كان يؤدي بصمت إلى إسقاط كل صف يُدرج بعد الاستبدال. [#108728](https://github.com/ClickHouse/ClickHouse/pull/108728) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ تجزئة عند دمج حالات التجميع `uniqExact` مع `GROUPING SETS` أو `ROLLUP` أو `CUBE` و`max_threads > 1`. [#108928](https://github.com/ClickHouse/ClickHouse/pull/108928) ([Algunenano](https://github.com/Algunenano)).
* إصلاح خطأ منطقي محتمل "تدفق فرعي غير متوقع ... للعمود ..." أثناء رفع إعداد التوافق. [#109496](https://github.com/ClickHouse/ClickHouse/pull/109496) ([Avogar](https://github.com/Avogar)).
* تتعامل الدالة `getClientHTTPHeader` الآن مع أسماء الترويسات بوصفها غير حساسة لحالة الأحرف، وفقاً لـ[RFC 9110](https://www.rfc-editor.org/info/rfc9110/#section-5.1)؛ وبالتحديد، تُرشّح ترويسة `authorization` الآن بغض النظر عن حالة الأحرف. [#109791](https://github.com/ClickHouse/ClickHouse/pull/109791) ([Felixoid](https://github.com/Felixoid)).
* إصلاح فقدان صامت للبيانات مع عمليات الإدراج غير المتزامنة وإزالة التكرار (`async_insert=1`, `async_insert_deduplicate=1`). عندما كانت عدة إدخالات async-insert ذات قيم مميزة لـ`insert_deduplication_token` تُدمج في عملية flush واحدة تكتب إلى أقسام منفصلة، كان كل رمز يُسجّل في سجل إزالة التكرار لكل قسم لمسته عملية flush، وليس فقط القسم الذي وصلت إليه صفوفه. ثم كانت عملية إدراج لاحقة تعيد استخدام أحد هذه الرموز في قسم لم تُكتب فيه أي صفوف بهذا الرمز تُزال كتكرار بصمت. تُسجّل الرموز الآن فقط للقسم الذي وصلت إليه صفوفها فعلياً. [#111049](https://github.com/ClickHouse/ClickHouse/pull/111049) ([groeneai](https://github.com/groeneai)).
* تم إصلاح عمليات الإدراج غير المتزامنة بتنسيق Native، بحيث لم يعد إدخال واحد مخزّن مؤقتًا يصبح غير متوافق بعد `ALTER ... MODIFY COLUMN` يتسبب في فشل الدفعة بأكملها. [#111108](https://github.com/ClickHouse/ClickHouse/pull/111108) ([Felixoid](https://github.com/Felixoid)).
* تم إصلاح مشكلة `CREATE OR REPLACE` لقاموس باستخدام كائن من نوع آخر، إذ كان يفشل بالخطأ `CANNOT_DETACH_DICTIONARY_AS_TABLE` بعد تثبيت الاستبدال، تاركًا جدول `_tmp_replace_*` يتيمًا. [#111142](https://github.com/ClickHouse/ClickHouse/pull/111142) ([evillique](https://github.com/evillique)).
* تم إصلاح تسرّب في ذاكرة شهادة النظير أثناء مصافحات TLS مع تفعيل التحقق من الشهادات. [#111425](https://github.com/ClickHouse/ClickHouse/pull/111425) ([thevar1able](https://github.com/thevar1able)).
* تم إصلاح خطأ منطقي `Block structure mismatch in IntersectOrExceptStep stream: different number of columns` قد يحدث عند تشغيل تحسين تقسيم عامل التصفية (`query_plan_split_filter`) على عبارة `WHERE` يكون فيها اسم عمود عامل التصفية هو نفسه اسم عمود إدخال. كان التحسين يترك العمود الداخلي `__split_filter` في ترويسة مخرجات الفرع، فتختلف عن ترويسة الفرع الشقيق في عملية مجموعات مثل `INTERSECT` أو `UNION`. [#111930](https://github.com/ClickHouse/ClickHouse/pull/111930) ([groeneai](https://github.com/groeneai)).
* تم إصلاح النتائج غير الصحيحة لعوامل التصفية أو تعبيرات `ORDER BY` التي تستخدم `toString` مع قيم `Time` أو `Time64` أو `DateTime` في المناطق الزمنية التي تطبق التوقيت الصيفي. كما استُعيد تحسين القراءة بالترتيب لـ `ORDER BY` على بادئة من مفتاح فرز الجدول، وللتحويلات من `String` إلى `Nullable(String)`. [#113291](https://github.com/ClickHouse/ClickHouse/pull/113291) ([vdimir](https://github.com/vdimir)).
* تم إصلاح `ATTACH` لجدول `Kafka` عندما يتجاوز `kafka_num_consumers` الحد المستمد من عدد أنوية CPU. [#113390](https://github.com/ClickHouse/ClickHouse/pull/113390) ([evillique](https://github.com/evillique)).
* تم تعطيل تحليل الفهرس الموزع عند استخدام الإسقاطات لمنع نتائج الاستعلامات غير الصحيحة. [#115132](https://github.com/ClickHouse/ClickHouse/pull/115132) ([azat](https://github.com/azat)).
* تم إصلاح خطأ في الدالة `formatRowNoNewline` قد يؤدي إلى نتائج غير صحيحة أو خطأ منطقي عند تنسيق صف إلى نتيجة فارغة. [#115669](https://github.com/ClickHouse/ClickHouse/pull/115669) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* لم تعد نتيجة قيمة حرفية لسلسلة ثنائية لا يكون طولها مضاعفًا للثمانية، أو مفكك ضغط LZ4 عند عدم احتواء كتلة مضغوطة على جسم، تُرجع ذاكرة غير مهيأة. [#115704](https://github.com/ClickHouse/ClickHouse/pull/115704) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* تم تضمين مسارات الكائنات في تجزئات إزالة التكرار لمنع إزالة تكرار قيم الكائنات المختلفة بشكل غير صحيح. [#115866](https://github.com/ClickHouse/ClickHouse/pull/115866) ([Felixoid](https://github.com/Felixoid)).
