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

> سجل التغييرات لعام 2026

# سجل التغييرات 2026

<div id="268">
  ### إصدار ClickHouse 26.8 LTS، 2026-08-27، FIXME (قيد الإعداد)
</div>

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

* تُفسَّر أرقام JSON غير المقتبسة لأعمدة `DateTime` و`DateTime64` في `JSONEachRow` والتنسيقات المشابهة الآن كطوابع زمنية بتنسيق Unix، مع دقة اختيارية لأجزاء الثانية، بما يتوافق مع `Values` و`CAST` و`toDateTime64`. سابقًا، كان يُرفض العدد الكسري مثل `1703363853.035`، بينما كان العدد الصحيح غير المقتبس مثل `1703363853` يُقرأ باعتباره القيمة الأولية المُحجَّمة لـ `DateTime64`، ما ينتج عنه طابع زمني `1970-...`. لا تتأثر السلاسل النصية المقتبسة ومخرجات JSON الخاصة بـ ClickHouse. [#108091](https://github.com/ClickHouse/ClickHouse/pull/108091) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تغيّرت القيمة الافتراضية لـ `max_insert_threads` من `1` إلى `auto`، التي تُحوَّل إلى عدد أنوية CPU المتاحة للخادم. يؤدي ذلك إلى تنفيذ `INSERT SELECT` بالتوازي افتراضيًا، ويمكن لـ `max_insert_threads` الآن أيضًا تنفيذ جانب الكتابة في عملية `INSERT` عادية بالتوازي عندما يمكن لمسار الكتابة إلى الوجهة أن يتفرع بأمان. قد يغيّر ذلك عدد الأجزاء التي تنشئها هذه الاستعلامات وترتيب الصفوف المُدرجة. لاستعادة السلوك السابق، اضبط `max_insert_threads` على `1`، أو اضبط `compatibility` على إصدار أقدم من `26.8`. [#109000](https://github.com/ClickHouse/ClickHouse/pull/109000) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109006](https://github.com/ClickHouse/ClickHouse/pull/109006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحترم محركات قواعد البيانات `PostgreSQL` و`MaterializedPostgreSQL` الآن `remote_url_allow_hosts`، شأنها شأن محرك الجداول `PostgreSQL` ودالة الجدول `postgresql` والقواميس المنشأة عبر DDL. عند تهيئة `remote_url_allow_hosts`، يرفض `CREATE DATABASE` و`ATTACH DATABASE` الذي ينفذه المستخدم الآن قواعد بيانات `PostgreSQL` و`MaterializedPostgreSQL` التي تشير إلى مضيفين غير مسموح بهم، مع الخطأ `UNACCEPTABLE_URL`. ولا تزال قواعد البيانات الحالية تُحمَّل عند بدء تشغيل الخادم. [#111135](https://github.com/ClickHouse/ClickHouse/pull/111135) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُجري برنامج الترميز التجريبي `ALP(STD)` الآن العمليات الحسابية لتحجيم `Float32` باستخدام `Float64`. يؤدي ذلك إلى تحسين نسب الضغط وإزالة الضغط الذي يكثر فيه توليد الاستثناءات للبيانات العشرية، لكن قد تُفك ترميز قيم `Float32` التي كتبتها الإصدارات السابقة بفارق 1 ULP. [#111627](https://github.com/ClickHouse/ClickHouse/pull/111627) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أُزيل مصدر القاموس `library`. يفشل `SOURCE(LIBRARY(...))` الآن بالخطأ `UNKNOWN_ELEMENT_IN_CONFIG`، وأصبح إعداد الخادم `dictionaries_lib_path` متقادمًا وليس له أي تأثير. [#111980](https://github.com/ClickHouse/ClickHouse/pull/111980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* TODO: @Mikhail Artemenko كيف يُعد هذا تغييرًا غير متوافق مع الإصدارات السابقة؟ لا يوضح إدخال سجل التغييرات ذلك: تستخدم معاملات قرص تخزين الكائنات الآن معاملات تخزين البيانات الوصفية الأصلية افتراضيًا بدلًا من المعاملات الوهمية السابقة. [#89658](https://github.com/ClickHouse/ClickHouse/pull/89658) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أُزيل القارئ والكاتب المستندان إلى مكتبة Apache Arrow لتنسيقات `Arrow` و`ArrowStream`. وأصبح تنفيذ ClickHouse الأصلي، الذي كان التنفيذ الافتراضي منذ 26.7، هو التنفيذ الوحيد الآن. أصبحت الإعدادات `input_format_arrow_use_native_reader` و`output_format_arrow_use_native_writer` متقادمة: لا تزال مقبولة، لكنها بلا تأثير؛ لذا فإن الاستعلام الذي كان يضبطها على `0` لفرض تنفيذ Apache Arrow يستخدم الآن التنفيذ الأصلي. [#111996](https://github.com/ClickHouse/ClickHouse/pull/111996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* TODO: اشرح عدم التوافق مع الإصدارات السابقة: ارفض قيم إعدادات المدة الزمنية (مللي ثانية/ثوانٍ) التي تتجاوز سعة Int64 بالميكروثواني. [#112757](https://github.com/ClickHouse/ClickHouse/pull/112757) ([Azat Khuzhin](https://github.com/azat)).
* لم يعد بالإمكان تحديد بيانات اعتماد TLS لمصدر `MySQL` (`ssl_ca`، `ssl_cert`، `ssl_key`) كمسارات ملفات من خلال SQL، مثل `CREATE NAMED COLLECTION` أو وسائط الاستعلام أو `CREATE DICTIONARY`، لأن الخادم يفتح تلك الملفات باستخدام امتيازاته الخاصة. تظل المسارات مدعومة في ملف تكوين الخادم. في الحالات الأخرى، مرّر محتوى الشهادة أو المفتاح ضمن المعلمات الجديدة `ssl_ca_pem` و`ssl_cert_pem` و`ssl_key_pem`، والتي تُحجب في السجلات واستعلامات `SHOW` كما تُحجب كلمات المرور. [#112070](https://github.com/ClickHouse/ClickHouse/pull/112070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تستخدم عمليات التحقق من الامتيازات لأوامر `SYSTEM ... CACHE ON CLUSTER` الآن الامتياز الخاص بكل أمر بدلًا من مجموعة امتيازات `SYSTEM DROP CACHE`. يتيح ذلك لحاملي امتياز محدد لذاكرة تخزين مؤقت تشغيل الأمر المطابق له، ويمنع حامل المجموعة من تشغيل `SYSTEM SYNC FILESYSTEM CACHE ON CLUSTER` دون امتياز `SYSTEM SYNC FILESYSTEM CACHE`. [#114042](https://github.com/ClickHouse/ClickHouse/pull/114042) ([Groene AI](https://github.com/groeneai)).
* بالنسبة إلى العروض التي يكون جسمها عبارة عن `SELECT` بسيط على جدول `Distributed` واحد، يُدفع الآن الاستعلام الخارجي بالكامل إلى الشظايا (الإعداد الجديد `optimize_trivial_view_pushdown_to_distributed` مفعّل افتراضيًا). يغيّر ذلك السلوك المرئي لهذه العروض: إذ يُمرَّر الآن `FINAL` و`SAMPLE` المكتوبان في مرجع العرض إلى الجدول المحلي للشظية بدلًا من تجاهلهما، ولا يتم الإبلاغ عن `extremes` في العناقيد ذات الشظية الواحدة. اضبط `optimize_trivial_view_pushdown_to_distributed = 0` لاستعادة السلوك السابق. [#101791](https://github.com/ClickHouse/ClickHouse/pull/101791) ([simonmichal](https://github.com/simonmichal)).
* TODO: انتظر التراجع عن التراجع. تستخدم أجزاء تصحيح `UPDATE` خفيفة الوزن الآن تنسيق v2 جديدًا على القرص، مرتبًا وفقًا لـ (`sorting_key..., _block_number, _block_offset`) ويُطبّق باستخدام خوارزمية دمج جديدة. تقتصر ذروة الذاكرة على أكبر سلسلة ذات مفتاح فرز متساوٍ بدلًا من التصحيح بالكامل، ولم تعد التحديثات التي تتجاوز حدود الدمج تعود إلى تطبيق Join داخل الذاكرة. تظل أجزاء التصحيح بالتنسيق القديم قابلة للقراءة. أثناء ترقية متدرجة من إصدار سابق لـ 26.8، أبقِ `patch_parts_version = 'v1'` أو استخدم إعداد `compatibility` إلى أن تتم ترقية جميع النسخ المتماثلة. [#103182](https://github.com/ClickHouse/ClickHouse/pull/103182) ([Anton Popov](https://github.com/CurtizJ)).
* أُضيفت عبارة `VALID FOR <interval>` إلى `CREATE USER` و`ALTER USER` كاختصار لعبارة `VALID UNTIL`. يُحتسب الموعد النهائي لانتهاء الصلاحية عند تنفيذ الاستعلام، وذلك بإضافة الفاصل الزمني المحدد إلى الوقت الحالي، ويُخزَّن بصيغة `VALID UNTIL`. أصبح العمود `valid_until` في جدول `system.users` من النوع `Array(DateTime64(0))` بدلًا من `Array(DateTime)`، لكي تُمثَّل المواعيد النهائية بعد عام 2106 بدقة؛ وينبغي للأدوات التي تقرأ هذا العمود التعامل مع النوع الجديد. [#110171](https://github.com/ClickHouse/ClickHouse/pull/110171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يعيد `EXPLAIN SYNTAX` الآن الاستعلام المُعاد تنسيقه كسجل `String` واحد (يتضمن أسطرًا جديدة مضمنة) بدلًا من سجل لكل سطر، لذا يصبح خرجه صفًا واحدًا قابلًا للاسترجاع ويمكن استخدامه مباشرةً (مثلًا، يعيد `SELECT count() FROM (EXPLAIN SYNTAX ...)` القيمة `1`). يتحكم الخيار الجديد `single_record` في ذلك، وقيمته الافتراضية `1`؛ اضبط `single_record = 0` لاستعادة الخرج السابق بسجل واحد لكل سطر. تحتفظ أنواع `EXPLAIN` الأخرى (`PLAN`/`PIPELINE`/`AST`) بخرجها الشجري سطرًا بسطر. [#110479](https://github.com/ClickHouse/ClickHouse/pull/110479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* وُسِّع النطاق المدعوم لـ `Date32` من `[1900-01-01, 2299-12-31]` إلى `[0000-01-01, 9999-12-31]` ليتطابق مع `DateTime64`. يقبل التحليل والتحويلات الآن النطاق الموسّع بدلًا من حصره بصمت ضمن الحدود القديمة. ملاحظات التوافق مع الإصدارات السابقة: في التحويل الرقمي `toDate32(N)`، تُفسَّر القيم ضمن `[120530, 2932896]` الآن كأرقام أيام (تواريخ من `2300-01-01` إلى `9999-12-31`) بدلًا من طوابع Unix الزمنية في أوائل عام 1970، بما يتوافق مع القاعدة القائلة إن الرقم الذي يقع ضمن نطاق أرقام الأيام يُعد رقم يوم؛ وتُشبَع الأرقام الأقل من رقم يوم `0000-01-01` والطوابع الزمنية التي تلي `9999-12-31` عند الحدود الجديدة. [#111534](https://github.com/ClickHouse/ClickHouse/pull/111534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد `arrayIntersect` و`arraySymmetricDifference` تعاملان القيمة المكررة ضمن وسيطة واحدة كما لو أنها ظهرت في عدة وسيطات. قد تُرجع الاستعلامات التي تعتمد على السلوك السابق نتائج مختلفة الآن: تُرجع `arrayIntersect([1], [2], [1, 1])` القيمة `[]` بدلًا من `[1]`، وتُرجع `arrayIntersect([1, 2], [2], [1, 1, 2])` القيمة `[2]` بدلًا من `[1, 2]`، وتُرجع `arraySymmetricDifference([1], [2], [1, 1])` القيمة `[2, 1]` بدلًا من `[2]`. تكفي وسيطتان بالفعل لـ `arraySymmetricDifference`: تُرجع `arraySymmetricDifference([1], [2, 2])` القيمة `[2, 1]` بدلًا من `[1]`. لا تُحتسب القيمة ضمن وسيطة الآن إلا إذا كانت موجودة في كل الوسيطات السابقة، لذا تحتوي النتيجة على القيم الموجودة في جميع الوسيطات فقط. وكجزء من التغيير نفسه، تنشئ `arrayIntersect` جدول التجزئة الخاص بها من أصغر وسيطة بدلًا من جميع الوسيطات، ما يجعلها أسرع بما يصل إلى 1.85 مرة وتستهلك ذاكرة أقل بمقدار الثلث عندما تختلف أحجام الوسيطات بدرجة كبيرة. لا تتأثر `arrayUnion`. [#113021](https://github.com/ClickHouse/ClickHouse/pull/113021) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمنع `disable_insertion_and_mutation` الآن الاستهلاك في الخلفية من جداول `Kafka` و`RabbitMQ` و`NATS`، مع الاستمرار في السماح بالكتابة المباشرة إلى التخزين الخارجي. لا تهيئ جداول `Kafka2` و`NATS` و`RabbitMQ` المحكومة مستهلكين لعمليات `SELECT` المباشرة. يتطلب إعداد `message_queue_disable_insertion` المُضاف مؤخرًا الآن إعادة تشغيل الخادم. [#113660](https://github.com/ClickHouse/ClickHouse/pull/113660) ([Christoph Wurm](https://github.com/cwurm)).
* يُرفض الآن استخدام `PARTITION BY` أو `ORDER BY` في دالة نافذة على عمود `AggregateFunction` مع الخطأ `ILLEGAL_COLUMN`، كما كان الحال بالفعل مع `ORDER BY` ذي المستوى الأعلى على مثل هذا العمود. سابقًا، كان هذا الاستعلام يُقبل لدى محلل واحد على الأقل، وكان `PARTITION BY` في دالة النافذة يقسم البيانات بصورة مختلفة وفقًا لـ `max_threads`. يشمل الرفض أيضًا حالة متداخلة في `Array` أو `Tuple` أو `Map` أو `Variant` أو `SimpleAggregateFunction`. لا تتأثر `SimpleAggregateFunction` على نوع عادي، ولا `QBit`، ولا `GROUP BY` و`DISTINCT` على حالة. [#113878](https://github.com/ClickHouse/ClickHouse/pull/113878) ([Groene AI](https://github.com/groeneai)).
* لم يعد الإعداد `include_from` يستخدم `/etc/metrika.xml` افتراضيًا. سابقًا، كان هذا الملف يُستخدم لإجراء استبدالات التكوين كلما كان موجودًا، رغم عدم وجود أي إشارة إليه في تكوين ClickHouse. إذا كنت تعتمد على ملف الاستبدالات الضمني هذا، فأضف `<include_from>/etc/metrika.xml</include_from>` صراحةً إلى كل ملف تكوين متأثر؛ وتحتاج ملفات `users.xml` المحمّلة بصورة منفصلة وتكوينات قواميس XML إلى عنصر `include_from` خاص بها. [#114161](https://github.com/ClickHouse/ClickHouse/pull/114161) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يقبل محرك الجدول `NATS` الآن بيانات اعتماد مضمنة في الإعداد الجديد `nats_credentials` (بالحمولة نفسها لملف `.creds`)، ولم يعد يقبل `nats_credential_file` عبر SQL: إذ يشير المسار إلى ملف على نظام ملفات الخادم، يفتحه الخادم بصلاحياته الخاصة؛ لذلك لا يمكن تحديده إلا ضمن مجموعة مسماة معرّفة في ملف تهيئة الخادم، أو باسم `nats.credential_file` في تهيئة الخادم نفسها. يمكن للاستعلام استبدال هذا المسار المُهيأ بـ `nats_credentials` المضمنة، ما لم يثبّته المشغّل باستخدام `<nats_credential_file overridable="false">`. تظل الجداول التي أُنشئت قبل هذا التقييد تعمل بعد الترقية. [#114644](https://github.com/ClickHouse/ClickHouse/pull/114644) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن أن تستخدم المقاييس غير المتزامنة الآن نوع البيانات `Map`، كما حُوِّلت المقاييس لكل نواة CPU ولكل جهاز إلى مقاييس مفتاح-قيمة مفردة: أصبحت `OSUserTimeCPU0` و`OSUserTimeCPU1` و... مقياسًا واحدًا باسم `OSUserTimeCPU`، يتضمن خريطة تربط رقم نواة CPU بالقيمة (وينطبق الأمر نفسه على مقاييس `OS*TimeCPU*` الأخرى، و`CPUFrequencyMHz_*`، و`Temperature*`، و`EDAC*`، و`Block*_*`، و`Network(Receive|Send)*_*`، و`Disk*_*`، و`*BlobsQueueEstimate`، و`AsyncLogging*QueueSize`). يحتوي `system.asynchronous_metrics` على عمود جديد هو `key_values Map(LowCardinality(String), Float64)` (وتكون قيمة العمود `value` هي `NaN` لهذه المقاييس)، ويسجلها `system.asynchronous_metric_log` في صف واحد لكل مفتاح باستخدام عمود `key` جديد، وتصدّرها نقطة نهاية Prometheus مع تسمية، مثل `ClickHouseAsyncMetrics_BlockReadBytes{device="sda"}`، بينما يرسلها `MetricsTransmitter` في Graphite بالصيغة `<prefix>.<Metric>.<key>`. [#115333](https://github.com/ClickHouse/ClickHouse/pull/115333) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* أُضيفت تعليمات `CREATE HANDLER` و`ALTER HANDLER` و`DROP HANDLER` لتعريف معالجات HTTP مخصصة من SQL، تُخزَّن محليًا أو في Keeper. وأُضيفت الدالتان `currentHandler` و`currentRequestURL`، والجدول `system.handlers`، والعمودان `http_handler_name` / `http_request_url` في `system.query_log`. [#106231](https://github.com/ClickHouse/ClickHouse/pull/106231) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت طريقة للوصول إلى الجداول وقواعد البيانات عبر مسارات URL في واجهة HTTP (مثلًا \`/database/table.format.gz?filter=a>0\`)، بالإضافة إلى إعدادات جديدة (\`http\_allow\_database\_as\_path\`، \`http\_allow\_table\_as\_file\`، \`http\_allow\_filters\_as\_path\`، \`http\_allow\_filters\_as\_unrecognized\_url\_parameters\`، \`select\`، \`order\`، \`sort\`، \`filter\`، \`page\`، \`compression\`، \`format\`، \`input\_format\`، \`output\_format\`، \`default\_format\`، \`database\`) يمكن تركيبها معًا ومع معامل URL الحالي \`query\`. [#105249](https://github.com/ClickHouse/ClickHouse/pull/105249) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت تنسيقات التأطير التي يحددها الإعداد الجديد `framing_output_format`: إذ تجمع أجزاء الاستجابة المختلفة للاستعلام ضمن تدفق استجابة HTTP واحد — مقاطع البيانات، والإجماليات والقيم القصوى، وحزم التقدم، وأحداث التوصيف، وسجلات الخادم، والاستثناءات. تشمل تنسيقات التأطير المنفذة: `None` (الافتراضي، حيث يعمل كل شيء كما كان سابقًا)، و`EventStream` (أحداث HTTP التي يرسلها الخادم)، و`JSONEachPacketBase64`، و`JSONEachPacketString` (كائن JSON لكل حزمة، ببيانات مرمَّزة بـBase64 أو كسلسلة نصية). [#110127](https://github.com/ClickHouse/ClickHouse/pull/110127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف إعداد الخادم `default_session_user`: وهو المستخدم الذي تتم المصادقة باسمه عند اتصال عميل دون تحديد اسم مستخدم (كان محددًا برمجيًا سابقًا بالقيمة `default`؛ وتقبل الآن البروتوكولات الأصلية وMySQL وPostgreSQL اسم مستخدم فارغًا بدلًا من رفضه، بينما يراعي Arrow Flight هذا الإعداد بدلًا من استخدام القيمة `default` المحددة برمجيًا لديه). يمكن لنقاط نهاية البروتوكولات القابلة للتركيب في قسم `protocols` تجاوز هذا الإعداد لكل نقطة نهاية باستخدام المفتاح `default_session_user`، بحيث يمكن لمنافذ الاستماع المختلفة خدمة مستخدمين مجهولين مختلفين. يؤدي تعيينه إلى سلسلة فارغة إلى منع الاتصالات التي لا تحدد اسم مستخدم. لا تستخدم الاتصالات بين الخوادم مستخدم الجلسة الافتراضي مطلقًا. [#110179](https://github.com/ClickHouse/ClickHouse/pull/110179) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم عوامل الأنبوب في استعلامات SQL: `FROM t |> WHERE x > 1 |> AGGREGATE count() AS c GROUP BY y |> ORDER BY c DESC |> LIMIT 10`، على غرار صياغة الأنبوب في GoogleSQL. يمكن أن يتبع أي استعلام `SELECT` سلسلة من عوامل `|>`، ويلف كل عامل الاستعلام السابق في استعلام فرعي، لذا تكون شجرة AST الناتجة مماثلة لتلك الخاصة بالاستعلام المكافئ ذي الاستعلامات الفرعية المتداخلة. في الاستعلام الذي يبدأ بعبارة `FROM`، أصبحت عبارة `SELECT` اختيارية وتكون افتراضيًا `SELECT *`. [#111151](https://github.com/ClickHouse/ClickHouse/pull/111151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الدالتان `parseQueryToJSON` و`formatQueryFromJSON` لتسلسل AST وإلغاء تسلسلها بصيغة JSON، ولهجة `clickhouse_json` تجريبية تُفعَّل بواسطة `enable_json_ast_dialect`. [#100412](https://github.com/ClickHouse/ClickHouse/pull/100412) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#113480](https://github.com/ClickHouse/ClickHouse/pull/113480) ([Nikita Fomichev](https://github.com/fm4v)).
* إعداد جديد `run_query_in_background`. يقبل الخادم الاستعلام ويعيد نتيجة فارغة فورًا، ثم ينفّذه حتى اكتماله بغض النظر عمّا يحدث للاتصال. تُهمَل النتيجة. تتبّع الاستعلام باستخدام `query_id` الخاص به في `system.processes` و`system.query_log`. مخصص للاستعلامات الطويلة، مثل `INSERT ... SELECT` أو `CREATE TABLE … AS SELECT` أو `CREATE MATERIALIZED VIEW … POPULATE`، التي يجب ألا تتوقف عند انقطاع الاتصال. [#112816](https://github.com/ClickHouse/ClickHouse/pull/112816) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيف جدول نظام جديد، `system.user_query_log`، يتيح لكل مستخدم عرض سجلات استعلاماته الخاصة دون الحاجة إلى صلاحية الوصول إلى جدول سجل الاستعلامات. يعود التنفيذ الأصلي والفكرة إلى Yue Ni (@niyue)، [#104462](https://github.com/ClickHouse/ClickHouse/issues/104462). [#110156](https://github.com/ClickHouse/ClickHouse/pull/110156) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* اكتمل تنفيذ العناصر المتبقية من توحيد عناوين URL (المشكلة [#59617](https://github.com/ClickHouse/ClickHouse/issues/59617)). يحل الإعداد الجديد `s3_base` عناوين URL النسبية في دالة الجدول `s3` ومحرك الجدول `S3` (والدوال التي تشترك في إعداداتهما: `s3Cluster` و`gcs` و`oss`) على نحو مماثل لـ`url_base`. يعامل محرك قاعدة البيانات الجديد `URL` أسماء الجداول على أنها عناوين URL، ويحلّها بالاستناد إلى عنوان URL أساسي اختياري، ويوجّهها وفق مخطط URL، بحيث تُعالَج الملفات والويب والتخزين الكائني بصورة موحّدة. ويستبدل `Filesystem` في قاعدة البيانات الافتراضية (`Overlay`) لـ`clickhouse-local` بعنوان URL أساسي `file://`، بحيث تستمر أسماء الملفات البسيطة في العمل، ويمكنك أيضًا كتابة `SELECT * FROM 'https://example.com/data.csv'`. [#111512](https://github.com/ClickHouse/ClickHouse/pull/111512) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت دالة الجدول `bigquery` ومحرك الجدول `BigQuery` للقراءة من جداول Google BigQuery والكتابة إليها، بما في ذلك مجموعات البيانات العامة. يُستنتج مخطط الجدول من مخطط جدول BigQuery. يدعم الاستيثاق رمز وصول OAuth، ومفتاح حساب خدمة بتنسيق `JSON`، وعميل OAuth مزودًا برمز تحديث. [#110166](https://github.com/ClickHouse/ClickHouse/pull/110166) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `CREATE MATERIALIZED VIEW ... POPULATE` العادي ذريًا محليًا: يُشترَك العرض في عمليات الإدراج الجديدة في الجدول المصدر، وتُلتقط لقطة للبيانات الموجودة معًا ضمن قفل حصري قصير على المصدر، لذا لم تعد الصفوف المُدرجة عبر الخادم نفسه بالتزامن مع التعبئة تُفقَد أو تتكرر (الإعداد الجديد `materialized_views_populate_atomically`، مفعّل افتراضيًا). يغطي الضمان مسار الإدراج المحلي فقط؛ أما عمليات الإدراج الواصلة إلى نسخة متماثلة أخرى أو عبر مسار كتابة موزّع، فهي خارج هذا النطاق، ويتطلب ذلك مصدرًا قادرًا على توفير لقطة مثبّتة (عائلة `MergeTree` و`Memory`). أما المصادر الأخرى، وكذلك `CREATE OR REPLACE` / `REPLACE` والعروض المنشأة في قواعد بيانات `Replicated`، فتحتفظ بالتعبئة القديمة غير الذرية. يمكن الآن أيضًا استخدام `POPULATE` مع `TO` لتعبئة الجدول الهدف بالبيانات السابقة. [#108715](https://github.com/ClickHouse/ClickHouse/pull/108715) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن لـKeeper الآن تخزين البيانات على القرص ضمن شجرة LSM مخصصة. ويقدم أداءً مماثلًا للتخزين السابق. استخدم إعداد التنسيق `use_lsmt_storage = true` للتمكين، و`storage_memory_only = false` لتخزين الملفات على القرص، وأضف `data_storage_path` أو `data_storage_disk` إلى التهيئة لتحديد مكان تخزين الملفات. للكتابة إلى S3، وجّه `data_storage_disk` إلى قرص من النوع `s3_plain`. [#113903](https://github.com/ClickHouse/ClickHouse/pull/113903) ([Michael Kolupaev](https://github.com/al13n321)).
* فهرس محرك "جداول S3" لبحيرات البيانات، كما في [#103220](https://github.com/ClickHouse/ClickHouse/pull/103220)، ولكن مع `INSERT` يعمل. [#113505](https://github.com/ClickHouse/ClickHouse/pull/113505) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُضيف دعم Snowflake Horizon. يمكنك الآن الاستعلام عن جداول Iceberg الموجودة خلف كتالوج Horizon، كما يمكنك الكتابة إلى جداول Iceberg عبر الكتالوج. [#114547](https://github.com/ClickHouse/ClickHouse/pull/114547) ([Melvyn Peignon](https://github.com/melvynator)).
* أُضيف دعم تنسيق الملفات `Puffin`. يمكن استخدامه مع دوال الجداول `file` و`url` و`s3` وغيرها من الدوال المشابهة. [#103936](https://github.com/ClickHouse/ClickHouse/pull/103936) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُضيف دعم وضع الإطار `GROUPS` للدوال الإطارية (SQL:2011)، مثل `any(price) OVER (PARTITION BY symbol ORDER BY ts GROUPS BETWEEN CURRENT ROW AND 1 FOLLOWING)`. في إطار `GROUPS`، تُحتسب الحدود حسب مجموعات النظراء بأكملها، وهي مجموعات من الصفوف التي تتساوى في مفتاح `ORDER BY`؛ لذا تعني `N PRECEDING`/`N FOLLOWING` عدد `N` من مجموعات النظراء قبل/بعد مجموعة نظراء الصف الحالي، بدلًا من الصفوف الفعلية (`ROWS`) أو فروق قيم `ORDER BY` (`RANGE`). [#108653](https://github.com/ClickHouse/ClickHouse/pull/108653) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أُضيفت دالة الجدول `mergeTreeCodecBlockCounts`، التي تعرض، لكل جزء وعمود وتيار فرعي في جدول `MergeTree`، عدد الكتل المضغوطة التي تستخدم كل codec. [#109623](https://github.com/ClickHouse/ClickHouse/pull/109623) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أُضيف نوع البيانات الجغرافية `MultiPoint`، ويُخزّن كـ `Array(Point)`، وأُدرج ضمن النوع `Geometry`. [#109951](https://github.com/ClickHouse/ClickHouse/pull/109951) ([David Meng](https://github.com/davidmenggx)).
* أُضيف العمود الافتراضي `_etag` لتخزين `HDFS`. [#108255](https://github.com/ClickHouse/ClickHouse/pull/108255) ([Zhang Yifan](https://github.com/zhangyifan27)).
* يدعم قارئ `ORC` الأصلي وتنسيق الإخراج الآن `uniontype`، إذ يُعيَّن إلى النوع `Variant` في ClickHouse. سابقًا، كانت قراءة هذه الأعمدة تفشل بالرسالة `Unsupported ORC type`، وكانت كتابتها تفشل بالرسالة `ILLEGAL_COLUMN`. [#110078](https://github.com/ClickHouse/ClickHouse/pull/110078) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#110085](https://github.com/ClickHouse/ClickHouse/pull/110085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف محلل رموز `japanese` للفهارس النصية والدوال `tokens` و`hasAnyTokens` و`hasAllTokens`، ويستخدم المحلل الصرفي MeCab. يُحمَّل القاموس وقت التشغيل من موقع محدد في تهيئة الخادم، ويُتحقق من مطابقته لقيمة تحقق SHA-256 قبل استخدامه. [#111420](https://github.com/ClickHouse/ClickHouse/pull/111420) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* أُضيف محلل رموز `chinese` للدالة `tokens` والفهارس النصية في `MergeTree`. يقسم النص الصيني إلى كلمات باستخدام قاموس ونموذج ماركوف المخفي (تتبع الخوارزمية [jieba](https://github.com/fxsjy/jieba))، وبمستويي دقة `coarse_grained` (الافتراضي) و`fine_grained`. امتدادًا لـ [#80174](https://github.com/ClickHouse/ClickHouse/issues/80174). [#89945](https://github.com/ClickHouse/ClickHouse/pull/89945) ([Amos Bird](https://github.com/amosbird)).
* أُضيف محلل رموز جديد `icu` للفهارس النصية والدوال `tokens` و`hasAnyTokens` و`hasAllTokens`، ويوفر تقسيم كلمات Unicode المراعي للإعدادات المحلية، بما في ذلك التقسيم المستند إلى القاموس للغات مثل الصينية واليابانية والتايلاندية. [#109940](https://github.com/ClickHouse/ClickHouse/pull/109940) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* أُضيف مُقسِّم الرموز `splitByRegexp` لفهارس النصوص ودالة `tokens`. يقسم الإدخال إلى رموز باستخدام تعبير منتظم كفاصل، مثل `tokenizer = splitByRegexp('[^\p{L}\p{N}#+]+')`، ما يتيح الحفاظ على الرموز التي تحتوي على أحرف خاصة، مثل `C++` أو `C#`، والتي كانت مُقسِّمات الرموز الأخرى ستجزئها. [#110002](https://github.com/ClickHouse/ClickHouse/pull/110002) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تتضمن لوحة معلومات Keeper عبر HTTP الآن علامة تبويب Cluster تعرض أعضاء Raft في رسم بياني للطوبولوجيا بألوان تشير إلى الحالة الصحية والتأخر والأولوية، ما يتيح لك معرفة العُقد السليمة أو المتأخرة أو التي يتعذر الوصول إليها، وفتح لوحة معلومات القائد مباشرةً. [#111655](https://github.com/ClickHouse/ClickHouse/pull/111655) ([yanglongwei](https://github.com/ylw510)).
* يطلب قسم جديد في تهيئة الخادم، `create_union_system_log_tables`، إنشاء جداول `all_...` وصيانتها تلقائيًا (مثل `system.all_query_log`) لإجراء استعلامات اتحاد على جدول سجل النظام وإصداراته المُدوّرة و/أو الجداول نفسها عبر جميع النسخ المتماثلة في مجموعة. تقبل دوال الجداول `remote` و`remoteSecure` و`cluster` و`clusterAllReplicas` الآن عبارة `SETTINGS` لاحقة تتضمن إعدادات تخزين `Distributed` الذي تنشئه، مثل `clusterAllReplicas('default', system.query_log, SETTINGS skip_unavailable_shards = 1)`. [#112670](https://github.com/ClickHouse/ClickHouse/pull/112670) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإعداد `nats_credentials` إلى محرك جداول NATS، مما يتيح للمستخدمين تحديد بيانات اعتماد NATS مباشرةً كسلسلة نصية (مطابقة لمحتوى ملف `.creds`). [#110733](https://github.com/ClickHouse/ClickHouse/pull/110733) ([addshore](https://github.com/addshore)).
* أُضيفت خوارزمية `IEJoin` المعتمدة على الفرز لعمليات الربط التي تحتوي عبارة `ON` فيها على مقارنتَي عدم مساواة (`<` أو `<=` أو `>` أو `>=`) بين الجدولين المربوطين، وتُفعَّل بإضافة `ie_join` إلى الإعداد `join_algorithm`. الأنواع المدعومة هي `ALL INNER/LEFT/RIGHT/FULL JOIN` و`SEMI`/`ANTI LEFT/RIGHT JOIN`. سابقًا، كانت هذه الاستعلامات تُنفَّذ باعتبارها `CROSS JOIN` مع عامل تصفية (`INNER` فقط)، وهو أبطأ بكثير مع الجداول الكبيرة. [#109920](https://github.com/ClickHouse/ClickHouse/pull/109920) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أُضيفت الدالة التجميعية `gini`، التي تحسب معامل Gini للقيم العددية المنتهية وغير السالبة، بما في ذلك التجميعات المجمعة والموزعة. [#112280](https://github.com/ClickHouse/ClickHouse/pull/112280) ([Amirreza Akhondi](https://github.com/amirreza1307)). [#114643](https://github.com/ClickHouse/ClickHouse/pull/114643) ([Groene AI](https://github.com/groeneai)).
* أُضيف تنسيق الإخراج `HiveText`، الذي يكتب نصوص Apache Hive بتنسيق `LazySimpleSerDe`. تُفصل الحقول بواسطة `\x01`، والصفوف بواسطة الإعداد `format_hive_text_rows_delimiter` (القيمة الافتراضية `\n`)، وتستخدم قيم `Array` و`Map` و`Tuple` المتداخلة قائمة الفواصل الخاصة بـ Hive. يستهدف الإخراج `LazySimpleSerDe` الافتراضي في Hive، ولا يتطابق تماثليًا مع إدخال `HiveText` في ClickHouse للقيم المتداخلة أو فواصل الصفوف المخصصة. [#107582](https://github.com/ClickHouse/ClickHouse/pull/107582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم للتسميات الثابتة في نقطة نهاية مقاييس Prometheus: يضيف قسم `<labels>` جديد داخل `<prometheus>` التسميات المهيأة إلى كل مقياس مكشوف، مما يساعد على التمييز بين مجموعات متعددة يجمع Prometheus مقاييسها. تدعم قيم التسميات استبدالات التهيئة القياسية مثل `from_env`. يُغلق [#85969](https://github.com/ClickHouse/ClickHouse/issues/85969). [#111672](https://github.com/ClickHouse/ClickHouse/pull/111672) ([Valery Petrov](https://github.com/valerypetrov)).
* أُضيف الإعداد `always_fetch_mutated_part`. عند تفعيله، يمكن لنسخة متماثلة تنزيل الأجزاء المُعدَّلة من نسخة متماثلة أخرى بدلاً من تنفيذ عمليات التعديل محلياً. [#113020](https://github.com/ClickHouse/ClickHouse/pull/113020) ([Rory Shanks](https://github.com/rorylshanks)).
* أُضيفت الدالة التجميعية `mergedJSONPatch` لتجميع تصحيحات الدمج بأسلوب RFC 7396 عبر قيم `JSON`، بما في ذلك دعم دمج الحالة واستخدام `AggregatingMergeTree`. يمكن للمستخدمين تجميع عمود `JSON` باستخدام طابع زمني أو عمود ترتيب آخر كمفتاح فرز لحساب أحدث حالة. [#108349](https://github.com/ClickHouse/ClickHouse/pull/108349) ([larryluogit](https://github.com/larryluogit)).
* أُضيفت الدالة `aiSimilarity` التي تحسب التشابه الدلالي بين نصين باستخدام نموذج تضمين. وتُرجع `Nullable(Float32)` ضمن `[-1, 1]`، حيث تعني `1` أن النصين متطابقان، أو `NULL` إذا كان أحد المعاملات `NULL` أو فارغاً، أو إذا فشل إنشاء تضمينه. [#110777](https://github.com/ClickHouse/ClickHouse/pull/110777) ([David Meng](https://github.com/davidmenggx)).
* أُضيفت إعدادات الاستعادة `restore_table_data` و`restore_access_entities` و`restore_functions` للتحكم الدقيق في العناصر التي تُستعاد. يمكن لهذه الإعدادات تجاوز `structure_only` لفئات محددة — على سبيل المثال، يستعيد `structure_only=true, restore_access_entities=true` تعريفات الجداول وكيانات الوصول دون بيانات الجداول. [#102402](https://github.com/ClickHouse/ClickHouse/pull/102402) ([Nikita Fomichev](https://github.com/fm4v)).
* يدعم عامل الفهرسة للمصفوفات مصفوفةً من الأعداد الصحيحة كفهرس: تُرجع `arr[indexes]` العناصر الموجودة في جميع المواضع المحددة، بما يعادل `arrayMap(i -> arr[i], indexes)`. [#108371](https://github.com/ClickHouse/ClickHouse/pull/108371) ([folly](https://github.com/ucasfl)).
* أُضيفت الدالة `notHas`، وهي نفي `has` للمصفوفات والخرائط وJSON. عندما تكون مصفوفة البحث مصفوفة ثابتة، يُعاد تحويل `notHas(constant_array, x)` إلى `x NOT IN constant_array` بواسطة `optimize_rewrite_has_to_in` (المفعّل افتراضياً)، لذا تُنفَّذ عبر بحث في مجموعة ويمكنها استبعاد البيانات باستخدام فهرس المفتاح الأساسي، مثل `NOT IN`. [#109926](https://github.com/ClickHouse/ClickHouse/pull/109926) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تعمل الدالتان `arrayElement` (عامل التشغيل `vec[n]`) و`arraySlice` الآن مع نوع البيانات `QBit`: تُرجع `qbit[n]` العنصر رقم n من المتجه بالدقة الكاملة، وتُرجع `arraySlice(qbit, offset, length)` إسقاطاً على مجموعة فرعية من الأبعاد. تقرأ كلتاهما مستويات البت لمجموعات `stride` التي تحتاجان إليها فقط، وتعيد الشرائح المحاذية لحدود مجموعة `stride` استخدام التدفقات المخزنة دون نسخ. يحل هذا المشكلة [#109942](https://github.com/ClickHouse/ClickHouse/issues/109942). [#109953](https://github.com/ClickHouse/ClickHouse/pull/109953) ([Utkal Singh](https://github.com/Utkal059)).
* دعم PNG المتحرك في تنسيق الإخراج `PNG`. يحوّل عمود `t` نتيجة استعلام إلى رسم متحرك، ويُضبط المقياس الزمني لـ `t` بواسطة `output_format_image_time_multiplier_seconds` و`output_format_image_time_divisor_seconds`، بينما يتيح `output_format_image_streaming_animation` كتابة الإطارات أثناء إنتاج الاستعلام لها بدلاً من تخزينها مؤقتاً في الذاكرة. [#112846](https://github.com/ClickHouse/ClickHouse/pull/112846) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دالة جديدة `aiRedact` تكتشف معلومات تحديد الهوية الشخصية (PII) في النص وتحجبها باستخدام موفر LLM. حدّد الفئات المطلوب حجبها (مثل `['email', 'name']`) أو مرر مصفوفة فارغة لاستخدام مجموعة افتراضية من فئات معلومات تحديد الهوية الشخصية. تُستبدل القيم المطابقة برمز مميز (`[REDACTED]` افتراضياً). [#110464](https://github.com/ClickHouse/ClickHouse/pull/110464) ([David Meng](https://github.com/davidmenggx)).
* أُضيفت دالة `aiFilter` لتقييم شرط مكتوب بلغة طبيعية على نص باستخدام نموذج لغوي كبير (LLM)، وتُرجع `UInt8` لاستخدامها في `WHERE` و`PREWHERE` و`JOIN ... ON`. [#110594](https://github.com/ClickHouse/ClickHouse/pull/110594) ([yanglongwei](https://github.com/ylw510)).
* دعم اتصالات TLS/SSL بـ PostgreSQL لمحرك الجدول `PostgreSQL`، ودالة الجدول `postgresql`، ومحركَي قاعدة البيانات `PostgreSQL` و`MaterializedPostgreSQL`، وقواميس `PostgreSQL`: ‏`sslmode` إلى جانب الشهادات والمفتاح، سواءً كمحتويات حرفية (`sslrootcert_pem` و`sslcert_pem` و`sslkey_pem`؛ تُخفى مثل كلمات المرور) أو كمسارات (`sslrootcert` و`sslcert` و`sslkey`؛ لا تُقبل إلا من مجموعة مسماة محددة في ملف تهيئة الخادم). [#110615](https://github.com/ClickHouse/ClickHouse/pull/110615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يتضمن ClickHouse server الآن منفذًا للاستبطان. وهو مستمع TCP للبروتوكول الأصلي يبدأ قبل أن يشرع الخادم في إرفاق الجداول، ولا يتوقف إلا بعد اكتمال فصلها. خلال هذه الفترة، يمكن للمشغّل الاتصال به باستخدام `clickhouse client` وتشغيل استعلامات مثل `SHOW PROCESSLIST` أو `SELECT * FROM system.stack_trace` أو `SYSTEM INSTRUMENT ADD 'QueryMetricLog::startQuery' SLEEP ENTRY 0.5`. بالإضافة إلى ذلك، زادت القيمة الافتراضية لإعداد الخادم `shutdown_wait_unfinished` من 5 إلى 120 ثانية. كانت القيمة الافتراضية السابقة أقل من فترة استطلاع الاتصالات، لذا كان بإمكان الخادم الخروج قسرًا أثناء الإيقاف بدلًا من انتظار اكتمال الاتصالات المعلّقة. [#110838](https://github.com/ClickHouse/ClickHouse/pull/110838) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إضافة مقاييس ZooKeeper محاكية إلى أمر `mntr` في Keeper: `zk_leader_uptime` و`zk_sum_election_time` و`zk_cnt_election_time` و`zk_sum_leader_unavailable_time` و`zk_cnt_leader_unavailable_time`؛ وإضافة مقاييس مرتبطة بالقائد لـ Keeper فقط: `KeeperLastLeaderElectionTime` و`KeeperLastLeaderUnavailableTime`. [#113334](https://github.com/ClickHouse/ClickHouse/pull/113334) ([Maxim Orlovsky](https://github.com/UberDever)).
* دعم ALTER TABLE ... MODIFY PROJECTION لتغيير إعدادات مستوى الإسقاط، مثل index\_granularity، لإسقاط موجود دون إعادة بنائه. تُطبَّق الإعدادات الجديدة تدريجيًا عبر عمليات الدمج. [#113343](https://github.com/ClickHouse/ClickHouse/pull/113343) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* أُضيف عمود `finish_time` إلى `system.mutations` لتسجيل وقت اكتمال العملية التحويرية. وتعرض العمليات التحويرية غير المكتملة، وكذلك تلك التي لا يُعرف وقت اكتمالها، القيمة صفر. [#113474](https://github.com/ClickHouse/ClickHouse/pull/113474) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أُضيف مستوى ميزات جديد `private preview` بين `experimental` و`beta`، فأصبح ترتيب مستويات الميزات: `experimental < private preview < beta < production`. أُضيف مستوى جديد إلى إعداد الخادم `allow_feature_tier`: تسمح القيمة `0` بجميع المستويات، وتستبعد القيمة `1` الميزات التجريبية، وتستبعد القيمة `2` أيضًا المعاينة الخاصة، بينما تسمح القيمة `3` بإعدادات الإنتاج فقط. يجب على التهيئات التي كانت تثبّت `allow_feature_tier = 2` سابقًا للسماح بإعدادات الإنتاج فقط استخدام القيمة `3` الآن. يغلق [#113481](https://github.com/ClickHouse/ClickHouse/issues/113481). [#113581](https://github.com/ClickHouse/ClickHouse/pull/113581) ([Groene AI](https://github.com/groeneai)).
* تتيح واجهة Web SQL UI المضمّنة (`/play`) الآن فرز النتائج حسب أعمدتها، وتصفيتها بحسب قيمها، والتنقّل بين صفحاتها دون تحرير الاستعلام. تظهر أسهم الفرز وحقل إدخال للتصفية في رأس كل عمود، وتعرض الخلية المحددة المقارنات المناسبة لقيمتها، ويظهر مرقّم صفحات بحجم صفحة قابل للضبط أسفل النتائج التي لا تتسع في شاشة واحدة. ينفّذ الخادم كل ذلك باستخدام إعدادات إنشاء الاستعلام `order` و`filter` و`limit` و`page`، بحيث تُشكَّل النتيجة كاملةً، لا الصفوف المعروضة حاليًا فقط؛ ويُضمَّن الفرز وعوامل التصفية والصفحة المختارة في URL الصفحة، لذا يعيد الرابط المشترك إنتاج النتيجة نفسها. [#115540](https://github.com/ClickHouse/ClickHouse/pull/115540) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `chdig` [v26.8.1](https://github.com/azat/chdig/releases/tag/v26.8.1): ratatui، وأجزاء tmux، وجلسات tmuxinator، ومشاركة السجلات بالألوان، و[جولة في الميزات](https://github.com/azat/chdig/blob/v26.8.1/Documentation/Features.md). [#115216](https://github.com/ClickHouse/ClickHouse/pull/115216) ([Azat Khuzhin](https://github.com/azat)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* أُضيف مُحسِّن Cascades تجريبي قائم على التكلفة لخطط الاستعلامات الموزعة، ويُفعَّل عبر `enable_cascades_optimizer = 1` مع `make_distributed_plan = 1`. ويختار بناءً على التكلفة المقدّرة بين استراتيجيات الربط shuffle وbroadcast وreplicated وlocal، واستراتيجيات التجميع ثنائي الطور وshuffle وlocal، وtop-N الموزع على مرحلتين، والقراءات المتوازية والمنسوخة، مع إدراج عوامل exchange عند الحاجة. [#86353](https://github.com/ClickHouse/ClickHouse/pull/86353) ([Alexander Gololobov](https://github.com/davenger)).
* أُضيف إعداد `MergeTree` تجريبي باسم `enable_adaptive_codec_selection`. عند تفعيله، تختار عمليات الدمج والتعديلات codec الذي ينتج أصغر حجم لكل block للأعمدة التي تستخدم codec الافتراضي. [#111834](https://github.com/ClickHouse/ClickHouse/pull/111834) ([Raufs Dunamalijevs](https://github.com/rienath)). \* أصبح اختيار codec التكيفي يضغط الآن بكل codec مرشح مرة واحدة على الأكثر لكل block، بدلًا من قياس جميع المرشحين ثم إعادة ضغط الفائز. [#113511](https://github.com/ClickHouse/ClickHouse/pull/113511) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أصبح من الممكن بناء الملف التنفيذي `clickhouse` لـ WebAssembly (`wasm64`، عبر Emscripten)، ويشغّل `clickhouse local` الاستعلامات، بما فيها جداول `MergeTree`، ضمن Node.js ≥ 24 وفي المتصفح. وتثبّت مهمة CI جديدة باسم `Build (wasm64)` مسار البناء ومسار التنفيذ في Node.js (ولا يزال مسار المتصفح غير مغطّى بواسطة CI)، وتوفّر وحدة WebAssembly كـ artifact. [#113404](https://github.com/ClickHouse/ClickHouse/pull/113404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يختار `parallel_replicas_plan_based` الآن الحد الفاصل بين التنفيذ المحلي والبعيد عبر تحسين خطة الاستعلام، ويمكنه موازاة الاستعلامات على views تحتوي على `UNION` دون `parallel_replicas_allow_view_over_mergetree`، ويعود إلى الخطة المحلية لاستعلامات `IN (subquery)` بدلًا من الفشل، كما يوزّع الآن عمليات `JOIN` المؤهلة (`INNER` و`LEFT` و`RIGHT`، بما فيها `SEMI`/`ANTI`). [#111063](https://github.com/ClickHouse/ClickHouse/pull/111063) ([Igor Nikonov](https://github.com/devcrafter)). [#112268](https://github.com/ClickHouse/ClickHouse/pull/112268) ([Igor Nikonov](https://github.com/devcrafter)). [#112443](https://github.com/ClickHouse/ClickHouse/pull/112443) ([Igor Nikonov](https://github.com/devcrafter)).
* تدعم خطط الاستعلامات الموزعة (`make_distributed_plan`) الآن أيضًا الاستعلامات التي يُعرف وقت التخطيط أن مصدرها لن ينتج أي صفوف، مثل القراءات من جدول `MergeTree` فارغ. [#111941](https://github.com/ClickHouse/ClickHouse/pull/111941) ([Groene AI](https://github.com/groeneai)).
* أُضيف إعداد `use_projection_index_in_read_pools`، وهو معطّل افتراضيًا. عند تفعيله، تُستبعد النطاقات التي ترشّحها projection أو skip index بالكامل داخل مجموعات القراءة لـ `MergeTree` قبل إنشاء مهام قراءة لها، بدلًا من تخطيها granule تلو الآخر أثناء القراءة. ويجنب ذلك إنشاء مهام القراءة وإعداد القارئات للبيانات التي لن تُقرأ. [#110291](https://github.com/ClickHouse/ClickHouse/pull/110291) ([Nikolai Kochetov](https://github.com/KochetovNicolai)). [#112296](https://github.com/ClickHouse/ClickHouse/pull/112296) ([Anton Popov](https://github.com/CurtizJ)).
* PromQL: أُصلحت العمليات على المتجهات الفورية من دون tags، مثل `vector(1) + vector(2)` و`topk(1, vector(1))` و`label_replace(vector(1), ...)` والعوامل الثنائية مع `on()`، التي كانت تفشل بسبب خطأ في النوع. [#111872](https://github.com/ClickHouse/ClickHouse/pull/111872) ([Valery Petrov](https://github.com/valerypetrov)).
* PromQL: نُفِّذت الدالتان `changes` و`resets`. [#112352](https://github.com/ClickHouse/ClickHouse/pull/112352) ([Valery Petrov](https://github.com/valerypetrov)).
* الإبلاغ عن الخطأ الذي أدى إلى إلغاء استعلام موزع (`make_distributed_plan = 1`) بدلًا من الاكتفاء بـ `QUERY_WAS_CANCELLED`. في السابق، لم يكن الخطأ الفعلي لمهمة العامل التي فشلت ظاهرًا إلا في سجل الخادم. [#112590](https://github.com/ClickHouse/ClickHouse/pull/112590) ([Alexander Gololobov](https://github.com/davenger)).
* عند استخدام `make_distributed_plan = 1`، يعطّل ClickHouse الآن الميزات التي لا تدعمها خطط الاستعلام الموزعة بعد، بدلًا من السماح بفشلها لاحقًا. يغلق [#109476](https://github.com/ClickHouse/ClickHouse/issues/109476). [#112463](https://github.com/ClickHouse/ClickHouse/pull/112463) ([alesapin](https://github.com/alesapin)).
* تستخدم خطط الاستعلام الموزعة (`make_distributed_plan`) الآن التحقيق الكسول لاستعلامات `ORDER BY ... LIMIT k`. [#113111](https://github.com/ClickHouse/ClickHouse/pull/113111) ([Shankar Iyer](https://github.com/shankar-iyer)).
* دعم دوال النافذة غير المقسمة (`OVER (ORDER BY ...)`) في خطط الاستعلام الموزعة (`make_distributed_plan`). في السابق، كان أي استعلام يتضمن دالة نافذة يفشل لأن `WindowStep` لم يكن قابلًا للتسلسل من أجل التنفيذ عن بُعد؛ ولا تزال النوافذ التي تتضمن `PARTITION BY` مرفوضة حاليًا. [#109802](https://github.com/ClickHouse/ClickHouse/pull/109802) ([Vighnesh Pathrikar](https://github.com/VighneshPath)).
* أُضيف الإعداد `use_query_condition_cache_for_top_k`، الذي يفعّل ذاكرة التخزين المؤقت لشروط الاستعلام لاستعلامات `ORDER BY ... LIMIT n` (TopK). [#111492](https://github.com/ClickHouse/ClickHouse/pull/111492) ([Alexey Milovidov](https://github.com/alexey-milovidov)). أصبحت [ذاكرة التخزين المؤقت لشروط الاستعلام](/ar/operations/query-condition-cache) مفعّلة افتراضيًا للاستعلامات التي تستخدم تحسين `ORDER BY <column> LIMIT n` (TopK). ويمكن تعطيلها مجددًا باستخدام الإعداد `use_query_condition_cache_for_top_k`. [#114539](https://github.com/ClickHouse/ClickHouse/pull/114539) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت ألفة ثابتة بين الأقسام والشظايا لـ `StorageKafka2` عبر الإعدادين `kafka_partition_shard_num` و`kafka_shard_count`، ما يتيح لعدة شظايا في ClickHouse استهلاك مجموعات فرعية منفصلة من أقسام Kafka بصورة حتمية. [#108886](https://github.com/ClickHouse/ClickHouse/pull/108886) ([johnjing](https://github.com/JingYanchao)).
* تعزيز أمان دوال AI التجريبية: رفض نقاط النهاية غير الآمنة (`http`) للمضيفين البعيدين افتراضيًا (الإعداد الجديد `ai_function_allow_insecure_endpoint`)، وتقييد استدعاءات واجهة برمجة التطبيقات الصادرة لكل استعلام افتراضيًا (أصبحت القيمة الافتراضية لـ `ai_function_max_api_calls_per_query` هي `1000`)، وتنقية استجابات أخطاء المزوّد المكتوبة في السجلات. [#111286](https://github.com/ClickHouse/ClickHouse/pull/111286) ([George Larionov](https://github.com/george-larionov)).
* PromQL: تُرجع `quantile` ذات مستوى كمي خارج \[0, 1] الآن -Inf/+Inf/NaN، كما في Prometheus، بدلًا من إلقاء خطأ، وتتجاهل `histogram_quantile` الآن سلاسل الإدخال التي تكون تسمية `le` فيها مفقودة أو غير قابلة للتحليل، كما في Prometheus. [#111871](https://github.com/ClickHouse/ClickHouse/pull/111871) ([Valery Petrov](https://github.com/valerypetrov)).
* السماح بالمعرّفات متعددة المكونات في جداول TimeSeries. [#112799](https://github.com/ClickHouse/ClickHouse/pull/112799) ([Vitaly Baranov](https://github.com/vitlibar)).
* أُضيف إعدادا `TimeSeries`، وهما `samples_index_granularity` و`tags_inner_granularity`، للتحكم في دقة الفهرس للجداول الداخلية. [#113075](https://github.com/ClickHouse/ClickHouse/pull/113075) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL: أُضيفت الدالة `deriv` وأُصلح خطأ كانت فيه دالة التجميع الداعمة لها تُرجع قيمًا أصغر بمقدار 1000 مرة مع الطوابع الزمنية بدقة المللي ثانية. [#112360](https://github.com/ClickHouse/ClickHouse/pull/112360) ([Valery Petrov](https://github.com/valerypetrov)).
* PromQL: رفض تسلسلات الهروب غير الصالحة عبر المحددات في السلاسل النصية ونقاط شيفرة Unicode البديلة غير الصالحة. [#113587](https://github.com/ClickHouse/ClickHouse/pull/113587) ([Minh Vu](https://github.com/fallintoplace)). [#113203](https://github.com/ClickHouse/ClickHouse/pull/113203) ([Minh Vu](https://github.com/fallintoplace)).
* PromQL: الحفاظ على القيم المنتهية عند استخدام باقي القسمة مع قاسم لا نهائي. [#113746](https://github.com/ClickHouse/ClickHouse/pull/113746) ([Minh Vu](https://github.com/fallintoplace)).
* PromQL: يمكن الآن استدعاء دوال التاريخ والوقت `hour` و`minute` و`month` و`year` و`day_of_week` و`day_of_month` و`day_of_year` و`days_in_month` دون وسيطات، بحيث تستخدم `vector(time())` افتراضيًا كما في Prometheus. [#111869](https://github.com/ClickHouse/ClickHouse/pull/111869) ([Valery Petrov](https://github.com/valerypetrov)).
* يدعم PromQL الآن المعلمة `lookback_delta` في واجهة برمجة تطبيقات HTTP لـ Prometheus للاستعلامات الفورية واستعلامات النطاق. [#113971](https://github.com/ClickHouse/ClickHouse/pull/113971) ([Minh Vu](https://github.com/fallintoplace)).
* تدعم خطط الاستعلامات الموزعة (`make_distributed_plan`) الآن `IN (subquery)` دون إعادة كتابتها إلى `JOIN`: تُبنى المجموعة مرة واحدة على العقدة البادئة وتُرسل قيمها مع مهام العاملين. أُزيل التجاوز الإجباري `rewrite_in_to_join`، بينما تظل إعادة الكتابة متاحة كإعداد صريح. [#113826](https://github.com/ClickHouse/ClickHouse/pull/113826) ([Alexander Gololobov](https://github.com/davenger)).
* تدعم استعلامات البث العلامات المائية. [#106169](https://github.com/ClickHouse/ClickHouse/pull/106169) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أُضيفت ذاكرة تخزين مؤقت لنظام الملفات للقراءة العابرة إلى مسار القراءة التجريبي `ReaderExecutor` (`use_reader_executor`، معطّل افتراضيًا). [#110029](https://github.com/ClickHouse/ClickHouse/pull/110029) ([Sema Checherinda](https://github.com/CheSema)).
* PromQL: تنفيذ الدوال `clamp` و`clamp_min` و`clamp_max` و`round`. [#111870](https://github.com/ClickHouse/ClickHouse/pull/111870) ([Valery Petrov](https://github.com/valerypetrov)).
* جمع إحصاءات عمليات الإدراج والاستعلامات بشكل صحيح عبر نقطة نهاية Prometheus remote-write. [#112825](https://github.com/ClickHouse/ClickHouse/pull/112825) ([James Cunningham](https://github.com/JTCunning)).
* تقبل عوامل التجميع في PromQL الآن استخدام الأحرف الكبيرة والصغيرة معًا، بما يتوافق مع Prometheus. [#114076](https://github.com/ClickHouse/ClickHouse/pull/114076) ([Minh Vu](https://github.com/fallintoplace)).
* TimeSeries: تخزين جميع الوسوم في العمود `tags`. [#114300](https://github.com/ClickHouse/ClickHouse/pull/114300) ([Vitaly Baranov](https://github.com/vitlibar)).
* تطبيق تحسين القراءة بالترتيب على استعلامات `ORDER BY` عند تمكين `parallel_replicas_plan_based`: يُرسل الفرز الآن إلى النسخ المتماثلة ويُدمج على العقدة البادئة، بحيث تقرأ كل نسخة متماثلة وفق ترتيب مفتاح الفرز. كما يُصلح الخطأ `Unknown function __topKFilter` عند استخدام `ORDER BY` على عمود ليس ضمن المفتاح الأساسي مع تمكين هذا الإعداد. [#114315](https://github.com/ClickHouse/ClickHouse/pull/114315) ([Igor Nikonov](https://github.com/devcrafter)).
* رفض محارف تغذية السطر الحرفية في سلاسل PromQL العادية المقتبسة. [#114381](https://github.com/ClickHouse/ClickHouse/pull/114381) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح مفاتيح `GROUP BY` المكررة في استراتيجية التجميع الجزئي لـ `make_distributed_plan`، والسماح بهذه الاستراتيجية للتجميعات عبر قراءة موزعة. [#114523](https://github.com/ClickHouse/ClickHouse/pull/114523) ([Alexander Gololobov](https://github.com/davenger)).
* طرح استثناء عند مخالفة قائمة السماح الخاصة بأنواع الفهارس الافتراضية في WHATIF. [#114646](https://github.com/ClickHouse/ClickHouse/pull/114646) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* استعادة قراءة الأعمدة الفرعية المُكمَّمة للبحث المتجهي (أُضيفت في 26.7). [#114763](https://github.com/ClickHouse/ClickHouse/pull/114763) ([Shankar Iyer](https://github.com/shankar-iyer)).
* لم يعد محرك الجدول التجريبي `TimeSeries` يطبّق برنامج الترميز `Gorilla` على أعمدة `value` المُنشأة تلقائيًا في جدول العينات الداخلي؛ إذ تستخدم الآن `CODEC(ZSTD(1))` افتراضيًا. تحتفظ الأعمدة المُعرَّفة صراحةً ببرامج الترميز التي حدّدها المستخدم. ولم يتغير الإعداد الافتراضي للعمود `timestamp` (`CODEC(DoubleDelta, ZSTD(1))`). [#114790](https://github.com/ClickHouse/ClickHouse/pull/114790) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبح استعلام الخطة الموزعة (`make_distributed_plan`) يوقف مراحله السابقة عند استيفاء `LIMIT`، بدلًا من حساب النتيجة كاملةً ثم تجاهلها. [#114806](https://github.com/ClickHouse/ClickHouse/pull/114806) ([Alexander Gololobov](https://github.com/davenger)).
* أُضيفت طبقة لذاكرة التخزين المؤقت للصفحات في مساحة المستخدم إلى مسار القراءة في `ReaderExecutor` التجريبي (`use_reader_executor`، معطلة افتراضيًا). وعند عدم العثور على البيانات، يملأ المنفذ الآن ذاكرة التخزين المؤقت للصفحات في مساحة المستخدم ويخدم القراءات اللاحقة منها دون نسخ. [#114890](https://github.com/ClickHouse/ClickHouse/pull/114890) ([Sema Checherinda](https://github.com/CheSema)).
* دعم `ROLLUP` و`CUBE` و`GROUPING SETS` والدالة `grouping` في الاستعلامات المنفذة باستخدام `make_distributed_plan = 1`. [#114950](https://github.com/ClickHouse/ClickHouse/pull/114950) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح الخطأ `Illegal type Decimal(18, 0) of argument of function toIntervalNanosecond` عندما يستخدم استعلام PromQL‏ `offset` داخل محدد نطاق، مثل `rate(m[2m] offset 5m)`. [#114997](https://github.com/ClickHouse/ClickHouse/pull/114997) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* لم يعد ضبط `distributed_plan_workers_num` على قيمة كبيرة جدًا يتسبب في إنهاء الخادم بسبب `std::length_error` عند تمكين الميزتين التجريبيتين `make_distributed_plan` و`enable_cascades_optimizer`. ويُرفض الآن عدد العُقد هذا باستخدام `INVALID_SETTING_VALUE`. [#115398](https://github.com/ClickHouse/ClickHouse/pull/115398) ([Groene AI](https://github.com/groeneai)).
* دعم تجميع `GROUPING SETS` في الخطط الموزعة التي ينشئها مُحسِّن Cascades (`make_distributed_plan = 1, enable_cascades_optimizer = 1`). [#115426](https://github.com/ClickHouse/ClickHouse/pull/115426) ([Alexander Gololobov](https://github.com/davenger)).
* يمكن لجداول `TimeSeries` الآن الاحتفاظ بجدول "عينات حديثة": عندما يكون إعداد المحرك الجديد `recent_samples_ttl_seconds` غير صفري، ينشئ المحرك نسخة من جدول العينات مزودة بـ TTL (مقسمة حسب `recent_samples_partition_by`، وبحسب اليوم افتراضيًا) ويكتب إليها عند كل إدراج. وتقرأ استعلامات PromQL التي يقع نطاقها الزمني ضمن نافذة TTL منها تلقائيًا، مما يجعل قواعد التنبيه والتسجيل ولوحات المعلومات ذات النطاق الزمني القصير أسرع عدة مرات في الجداول الكبيرة. يمكن تعطيل هذا التفضيل باستخدام الإعداد الجديد على مستوى الاستعلام `time_series_prefer_recent_samples_table`. [#115441](https://github.com/ClickHouse/ClickHouse/pull/115441) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تنفيذ استعلام SELECT من TimeSeries. [#115622](https://github.com/ClickHouse/ClickHouse/pull/115622) ([Vitaly Baranov](https://github.com/vitlibar)).
* تنفيذ نقطة النهاية `/api/v1/series` من واجهة برمجة تطبيقات HTTP لـ Prometheus لجداول `TimeSeries`: محددات السلاسل `match[]` (تُعامل القيم المتكررة كاتحاد)، ونطاق زمني اختياري `start`/`end`، ومعلمة `limit` اختيارية. [#115676](https://github.com/ClickHouse/ClickHouse/pull/115676) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبحت خطط الاستعلامات الموزعة (`make_distributed_plan`) توقف المراحل السابقة الخاملة بسرعة بعد استيفاء `LIMIT`: إذ يقرأ مستقبِل التبادل الخامل `NoMoreDataNeeded` فور وصولها، بينما يلاحظ مصدر التبادل الخامل إغلاق مخرجه ويمرّر الإيقاف إلى المراحل السابقة. في السابق، كانت هذه المراحل تواصل قراءة البيانات ومعالجتها رغم عدم استهلاكها. [#115690](https://github.com/ClickHouse/ClickHouse/pull/115690) ([Alexander Gololobov](https://github.com/davenger)).
* يمكن الآن للنسخ المتماثلة المتوازية التلقائية جمع إحصاءات وقت التشغيل وتمكين النسخ المتماثلة المتوازية للاستعلامات المدعومة عند تمكين `parallel_replicas_plan_based`. [#115788](https://github.com/ClickHouse/ClickHouse/pull/115788) ([Igor Nikonov](https://github.com/devcrafter)).
* تسجيل جدول العينات الحديثة الخارجي لجدول TimeSeries باعتباره تبعية مرجعية. [#115944](https://github.com/ClickHouse/ClickHouse/pull/115944) ([Groene AI](https://github.com/groeneai)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* خوارزمية تكيفية جديدة لـ `GROUP BY` المتوازي (يتحكم بها الإعداد `enable_adaptive_aggregator`، وهي مفعّلة افتراضيًا): يُجمّع كل خيط تنفيذ في جدول التجزئة الخاص به إلى أن يبلغ `adaptive_aggregator_freeze_threshold` مفتاحًا، ثم يجمّده. وبذلك تواصل المفاتيح المتكررة تحديث الجداول الصغيرة المقيمة في الذاكرة المؤقتة دون حاجة إلى تنسيق، بينما تُوجَّه المفاتيح النادرة وفق تجزئتها إلى قوائم انتظار متراكمة خاصة بكل حاوية، وتُجمّع مرة واحدة فقط ضمن الدمج المتوازي للحاويات. [#111459](https://github.com/ClickHouse/ClickHouse/pull/111459) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تقليل استخدام الذاكرة في جداول `MergeTree` التي تضم العديد من أجزاء البيانات، عبر مشاركة بيانات التعريف الخاصة بكل جزء والمشتقة من المخطط (قائمة الأعمدة، وأوصاف الأعمدة، والتسلسلات، والتدفقات الفرعية للأعمدة) بين أجزاء الجدول بدلًا من نسخها إلى كل جزء. ويكون التأثير أكبر في الجداول العريضة التي تضم العديد من الأجزاء الصغيرة. [#109816](https://github.com/ClickHouse/ClickHouse/pull/109816) ([Raúl Marín](https://github.com/Algunenano)).
* تحسين استعلامات `GROUP BY ... ORDER BY ... LIMIT` و`GROUP BY ... LIMIT` عبر الاحتفاظ بكومة محدودة أثناء التجميع لاستبعاد المجموعات التي لا يمكن أن تظهر في النتيجة، مما يقلل استخدام الذاكرة ووقت التنفيذ بدرجة كبيرة عند التجميع عالي الكاردينالية. يتحكم بذلك الإعداد `enable_group_by_top_k_optimization`. استنادًا إلى التنفيذ الأولي من [Dmitriy Terenichev](https://github.com/Dmitry909) ([#78553](https://github.com/ClickHouse/ClickHouse/pull/78553)). [#96630](https://github.com/ClickHouse/ClickHouse/pull/96630) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تقليل حجم خلايا جدول التجزئة لمفاتيح التجميع المفردة من نوع `String`، مما يحسن أعباء عمل `GROUP BY` كثيفة السلاسل النصية. الإعداد الجديد `enable_packed_string_keys_in_aggregation` مفعّل افتراضيًا؛ ويؤدي تعطيله، أو ضبط `compatibility` على قيمة أقل من `26.8`، إلى استعادة أسلوب `StringHashTable` القديم، الذي قد يظل أسرع للتجميع منخفض الكاردينالية جدًا عندما تزيد المفاتيح على 11 بايتًا. [#110573](https://github.com/ClickHouse/ClickHouse/pull/110573) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)). [#112089](https://github.com/ClickHouse/ClickHouse/pull/112089) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* موازاة الدمج النهائي لجداول تجزئة التجميع أحادية المستوى باستخدام الإعداد الجديد `enable_parallel_single_level_merge`، المفعّل افتراضيًا. يسرّع ذلك استعلامات `GROUP BY` التي تبقى فيها جداول التجزئة الخاصة بكل خيط تنفيذ دون عتبة المستوى الثنائي، لكن يهيمن دمجها على زمن التنفيذ. [#110395](https://github.com/ClickHouse/ClickHouse/pull/110395) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تحسين أداء `DISTINCT` عندما يكون تدفق الإدخال مرتبًا حسب بادئة من أعمدة التمييز، مثل `SELECT DISTINCT a, b FROM table ORDER BY a`. يمكن أن تعمل هذه الاستعلامات بسرعة أكبر تصل إلى 2.4 مرة. [#110170](https://github.com/ClickHouse/ClickHouse/pull/110170) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع استعلامات `DISTINCT` وتقليل استخدامها للذاكرة في جداول `MergeTree` المقسّمة، عبر إبقاء صفوف كل قسم ضمن تدفق واحد، بحيث يعمل `DISTINCT` الأولي لكل تدفق على مجموعة مفاتيح منفصلة، بدلًا من ظهور مجموعة المفاتيح نفسها في عدة عمليات `DISTINCT` أولية. ينطبق ذلك عندما يكون تعبير التقسيم دالة حتمية لأعمدة `DISTINCT`، ويخضع لآلية استدلالية للتكلفة تستند إلى عدد الأقسام والانحراف (يمكن تفعيلها أو تعطيلها عبر الإعداد `force_distinct_partitions_independently`، وهو معطّل افتراضيًا). ويُمرَّر هذا الانفصال بين الأقسام عبر خطوات `Expression` و`Filter` و`ARRAY JOIN` إلى مستهلكات `DISTINCT` و`LIMIT BY` و`GROUP BY` النهائية، بحيث يمكنها أيضًا تجاوز الدمج. يتحكم بذلك الإعدادان الجديدان `allow_distinct_partitions_independently` (مفعّل افتراضيًا) و`max_number_of_partitions_for_independent_distinct` لضبط الآلية الاستدلالية. [#108326](https://github.com/ClickHouse/ClickHouse/pull/108326) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم تحسين الدوال `uniq` و`uniqExact` و`uniqHLL12` في عمليات التجميع دون مفتاح. [#110150](https://github.com/ClickHouse/ClickHouse/pull/110150) ([Anton Popov](https://github.com/CurtizJ)).
* أصبح بإمكان قارئ `Parquet` V3 تجاوز مجموعات الصفوف بالكامل باستخدام صفحة القاموس، إلى جانب إحصاءات الحد الأدنى/الحد الأقصى ومرشحات Bloom، في شروط المساواة و`IN` عندما يكون جزء العمود مرمّزًا بالكامل بالقاموس. يتحكم في ذلك الإعداد الجديد `input_format_parquet_dictionary_filter_push_down`. [#106952](https://github.com/ClickHouse/ClickHouse/pull/106952) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#110567](https://github.com/ClickHouse/ClickHouse/pull/110567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* المَوضعة الكسولة عند قراءة ملفات `Parquet` من تخزين الكائنات، بما في ذلك جداول `Iceberg`: في استعلامات `ORDER BY ... LIMIT n`، لا تُقرأ الأعمدة غير اللازمة للفرز والتصفية إلا للصفوف `n` التي تبقى بعد تطبيق `LIMIT`. في ملف `Parquet` بحجم 200 MB على `S3`، يقرأ `SELECT k, s ... ORDER BY k DESC LIMIT 10` مقدار 3.3 MB بدلًا من 171 MB (عمليات I/O أقل بـ51 مرة وأسرع بـ8 مرات). يتحكم في ذلك الإعداد الجديد `query_plan_optimize_lazy_materialization_for_object_storage` (مفعّل افتراضيًا، ويتطلب أيضًا `query_plan_optimize_lazy_materialization`). [#110970](https://github.com/ClickHouse/ClickHouse/pull/110970) ([Alexey Milovidov](https://github.com/alexey-milovidov)). \* تنطبق المَوضعة الكسولة لاستعلامات `ORDER BY ... LIMIT n` ([#110970](https://github.com/ClickHouse/ClickHouse/issues/110970)) الآن أيضًا على ملفات Parquet المحلية المقروءة باستخدام دالة الجدول `file` ومحرك الجدول `File`: لا تُقرأ الأعمدة غير اللازمة للفرز والتصفية إلا للصفوف `n` التي تبقى بعد تطبيق `LIMIT`. تفشل القراءة الثانية لملف باقٍ بأمان مع الخطأ الجديد `FILE_CHANGED_DURING_READ` إذا عُدّل الملف بين المرحلتين. يتحكم في ذلك الإعداد الجديد `query_plan_optimize_lazy_materialization_for_file` (مفعّل افتراضيًا). كما يُصلح فشل المَوضعة الكسولة لتخزين الكائنات مع الخطأ `Not found column or subcolumn ... in block` عند تأجيل عمود فرعي مطلوب (مثل عمود فرعي من عمود `JSON`). [#114262](https://github.com/ClickHouse/ClickHouse/pull/114262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تُجرى مَوضعة إحصاءات الأعمدة الآن عند `INSERT` افتراضيًا إذا كان مجموع الحجم النشط الحالي للجدول وحجم الكتلة المكتوبة لا يتجاوز الإعداد الجديد `materialize_statistics_on_insert_max_table_size` (القيمة الافتراضية 25 GiB)؛ ويُفحص ذلك لكل كتلة مكتوبة، لذا قد تستمر أول عملية تحميل مجمّع إلى جدول فارغ في مَوضعة الإحصاءات لكل كتلة مكتوبة. يتيح ذلك لمُحسّن الربط المستند إلى التكلفة تقديرات دقيقة لجداول الأبعاد المحمّلة حديثًا، ويتجنب ترتيبات الربط غير المثلى (فعلى سبيل المثال، لم يعد TPC-H Q5 وQ8 ينتهيان بمهلة عند عامل مقياس 40)، بينما تستمر جداول الحقائق الكبيرة القائمة في مَوضعة الإحصاءات أثناء عمليات الدمج. [#109454](https://github.com/ClickHouse/ClickHouse/pull/109454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع الدوال النافذة في جداول `MergeTree` المقسّمة بقراءة كل قسم عبر تدفقه الخاص وتقييم النوافذ لكل قسم، مع تجاوز إعادة التوزيع باستخدام التجزئة التي تعيد عادةً خلط كل صف بين الخيوط قبل فرز النافذة. ينطبق ذلك عندما يكون تعبير تقسيم الجدول دالة حتمية لأعمدة `PARTITION BY` الخاصة بالنافذة، ويخضع لنفس آلية استدلالية للتكلفة الخاصة بـ `GROUP BY` / `DISTINCT` لكل قسم (عدد كافٍ من الأقسام مقارنةً بـ`max_threads`، وعدم وجود قسم مهيمن). تتحكم في ذلك الإعدادات الجديدة `allow_window_partitions_independently` (مفعّل افتراضيًا) و`force_window_partitions_independently` و`max_number_of_partitions_for_independent_window`. [#114783](https://github.com/ClickHouse/ClickHouse/pull/114783) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تقليل استخدام الذاكرة عند كتابة الأجزاء المعبأة عبر بث الأرشيف النهائي مباشرةً إلى الملف الوجهة بدلًا من الاحتفاظ بنسخة كاملة ثانية في الذاكرة أثناء تثبيت الجزء. [#111995](https://github.com/ClickHouse/ClickHouse/pull/111995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت قيمة جديدة لـ `join_algorithm` هي `parallel_full_sorting_merge`: بالنسبة إلى عمليات الربط بالمساواة المتوافقة مع التجزئة، تُقسِّم عملية ربط دمج بفرز كامل حسب تجزئة مفاتيح الربط إلى عمليات ربط دمج مستقلة لكل جزء، تعمل على جميع الخيوط. وتحافظ على انخفاض استخدام الذاكرة بأسلوب البث في ربط الدمج مع إتاحتها بالتوازي (في اختبار معياري، أسرع بنحو 2.4x وتستهلك ذاكرة أقل بنحو 3.3x من `parallel_hash`). تعود عمليات ربط `ASOF` إلى `full_sorting_merge` واحد؛ أما أنواع المفاتيح غير المتوافقة مع التجزئة (ذات الفاصلة العائمة، `JSON`، `Object`، `Dynamic`) فتتخطى فقط إعادة كتابة التوزيع بالتجزئة، ويمكن مع ذلك تقسيمها عند المصدر حسب نطاقات المفتاح الأساسي عند تمكين `query_plan_join_shard_by_pk_ranges`. النتيجة غير مرتبة. [#109005](https://github.com/ClickHouse/ClickHouse/pull/109005) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة تقليم مكاني لـ GeoParquet على مستويي مجموعات الصفوف والصفحات إلى قارئ `Parquet`. يتخطى تقليم مجموعات الصفوف مجموعات الصفوف كاملةً عندما لا يتداخل صندوقها المحيط مع هندسة الاستعلام. ويستخدم التقليم على مستوى الصفحة فهرس العمود `covering.bbox` لتخطي الصفحات غير ذات الصلة داخل مجموعات الصفوف، كما يُطبَّق الآن دفع المسندات المكانية أيضًا أثناء قراءة صفوف `Parquet`. [#104435](https://github.com/ClickHouse/ClickHouse/pull/104435) ([Vasily Chekalkin](https://github.com/bacek)).
* يدعم دفع المرشحات في Parquet (تقليم مجموعات الصفوف وفهرس الأعمدة) المزيد من تحويلات الأنواع: `DateTime64(x) <-> DateTime64(y)`، `Decimal(x) <-> Decimal(y)`، `Float32 <-> Float64`. [#110457](https://github.com/ClickHouse/ClickHouse/pull/110457) ([Michael Kolupaev](https://github.com/al13n321)).
* تقليل طلبات القراءة المكررة على الأقراص البعيدة عندما تكون نطاقات العلامات مجزأة، مثلًا بسبب الفهارس الأساسية أو فهارس التخطي. [#113584](https://github.com/ClickHouse/ClickHouse/pull/113584) ([Anton Popov](https://github.com/CurtizJ)).
* تسريع تنفيذ `IN` على الأعمدة المجمعة (مثلًا، المرتبة حسب المفتاح الأساسي) عبر إعادة استخدام نتيجة الصف السابق للصفوف المتتالية المتساوية. [#114853](https://github.com/ClickHouse/ClickHouse/pull/114853) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* لم يعد التجميع دون مفاتيح `GROUP BY` يوزع مخرجه المكوَّن من صف واحد على تدفقات `max_threads`، لذا تحصل الاستعلامات التي تستمر خطتها بعد هذا التجميع على مسار تنفيذ أصغر بكثير (معالجات أقل للإنشاء والجدولة وقياس الأداء) من دون فقدان أي توازٍ. [#115170](https://github.com/ClickHouse/ClickHouse/pull/115170) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* يقرأ Keeper الآن إدخالات سجل التغييرات مع تنازع أقل على القفل: تُخطَّط قراءات الاستدراك تحت قفل مشترك وتُنفَّذ عمليات إدخال/إخراج القرص دون قفل، كما يمكن لكل من استدراك المتابع ومسار الالتزام فك ترميز الإدخالات مسبقًا في تجمع خيوط خلفي، مما يقلل قراءات القرص الزائدة وفك الترميز على المعالج في القائد. [#108473](https://github.com/ClickHouse/ClickHouse/pull/108473) ([Antonio Andelic](https://github.com/antonio2368)).
* تسريع بدء تشغيل Keeper بقراءة عدة ملفات سجل التغييرات بالتوازي بدلًا من قراءتها تسلسليًا، ويتحكم في ذلك الإعدادان الجديدان `log_startup_read_max_streams` و`log_startup_read_buffer_size`. [#109881](https://github.com/ClickHouse/ClickHouse/pull/109881) ([Antonio Andelic](https://github.com/antonio2368)).
* إضافة نوع مخطط جديد `bucketed` لـ `system.metric_log`، يخزن جميع المقاييس في عمود واحد من نوع `Map(Enum16(...), Int64)` باستخدام تسلسل `Map` المقسم إلى حاويات مع 128 حاوية، بالإضافة إلى عمود `ALIAS` لكل مقياس للتوافق: يتكون الجدول من بضعة أعمدة بدلًا من آلاف الأعمدة، ولا تُخزَّن القيم الصفرية، وعند قراءة مقياس واحد لا تُقرأ سوى حاوية واحدة من الحاويات الـ128. بالإضافة إلى ذلك، يمكن الآن فهرسة `Map` بمفاتيح `Enum` باستخدام الاسم النصي لقيمة التعداد، مثل `map['name']`. [#115380](https://github.com/ClickHouse/ClickHouse/pull/115380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف تحسين لخطة الاستعلام يدفع الدوال التي تقلل حجم البيانات (`length`، `lengthUTF8`، `empty`، `notEmpty`) إلى ما قبل خطوتَي `Sorting` و`Filter`، باستبدال وسيطة `String` / `FixedString` كبيرة الحجم بنتيجتها ثابتة الحجم، بحيث لا تُخزَّن مؤقتًا أثناء الفرز ولا تُنسخ أثناء التصفية. يتحكم في ذلك الإعداد الجديد `query_plan_push_down_volume_reducing_functions`، وهو مفعّل افتراضيًا. [#106199](https://github.com/ClickHouse/ClickHouse/pull/106199) ([Peng](https://github.com/fastio)).
* أصبح `read_in_order_use_virtual_row` مفعّلًا افتراضيًا. عند القراءة وفق ترتيب المفتاح الأساسي (مثلًا `ORDER BY primary_key LIMIT n`) من جدول يحتوي على أجزاء كثيرة، لا تُقرأ إلا الأجزاء التي يمكن أن تسهم فعليًا في النتيجة، إلى جانب نافذة قراءة استباقية لا تتجاوز `max_threads` جزءًا للحفاظ على توازي القراءة، مما يقلل استهلاك الذاكرة الأقصى بدرجة كبيرة. [#106215](https://github.com/ClickHouse/ClickHouse/pull/106215) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تستخدم الآن استعلامات التجميع التي لا تتضمن دوال تجميع أساليب تستند إلى `HashSet` بدلًا من `HashMap` لأنواع المفاتيح المدعومة. ولوحظت تحسينات في السرعة تصل إلى 1.8x. [#108862](https://github.com/ClickHouse/ClickHouse/pull/108862) ([Nikita Taranov](https://github.com/nickitat)).
* تجنّب الحمل الإضافي لمرشح وقت التشغيل في `JOIN` عندما يُقدَّر أن جانب الفحص صغير. يتحكم الإعداد الجديد `join_runtime_filter_min_probe_rows` في العتبة (القيمة الافتراضية `1000`). [#104860](https://github.com/ClickHouse/ClickHouse/pull/104860) ([Vladimir Cherkasov](https://github.com/vdimir)).
* يمكن الآن للاستعلامات ذات المسندات مثل `nullIf(key, sentinel) = const` الاستفادة من استبعاد البيانات استنادًا إلى المفتاح الأساسي والتقسيم وفهرس التخطي. [#107308](https://github.com/ClickHouse/ClickHouse/pull/107308) ([Aditya Kumar](https://github.com/adityaksolves)).
* أُضيف إعداد الخادم `jemalloc_merge_tree_arenas` للتحكم في مناطق Arena المخصصة في jemalloc لبيانات تعريف الأجزاء والجداول في `MergeTree`. في الخوادم متعددة الأنوية، يمكن لمجمع لكل CPU تقليل تنازع أقفال المخصص بين عمليات الدمج المتزامنة، كما أن المنطقة المخصصة لا تحتفظ الآن إلا ببيانات التعريف طويلة العمر. [#109490](https://github.com/ClickHouse/ClickHouse/pull/109490) ([Raúl Marín](https://github.com/Algunenano)).
* سُرّع فك ضغط ZSTD على `x86_64` للأعمدة ذات إزاحات المطابقة الصغيرة، مثل أعمدة الأعداد الصحيحة ثابتة العرض، عبر توجيه عمليات النسخ المتداخلة قصيرة الإزاحة باستخدام SSSE3 `pshufb`. على سبيل المثال، أصبح فك ضغط عمود `UInt64` أسرع بما يصل إلى \~1.2x على AMD Zen 5. [#110909](https://github.com/ClickHouse/ClickHouse/pull/110909) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* سُرّعت `groupUniqArray` للأنواع الرقمية بما يصل إلى 3x باستخدام تجزئة CRC32، كما في `uniqExact`، ومن خلال تضمين عملية الإدراج لكل صف. [#110917](https://github.com/ClickHouse/ClickHouse/pull/110917) ([Manuel](https://github.com/raimannma)).
* أصبحت `estimateCompressionRatio` أسرع مع برنامج الترميز `NONE`. [#111107](https://github.com/ClickHouse/ClickHouse/pull/111107) ([Raufs Dunamalijevs](https://github.com/rienath)).
* خُفِّضت القيمة الافتراضية لـ `max_snapshot_commit_thread_pool_size` إلى `16`، لتتوافق مع `backup_threads`، بهدف تقليل تقييد CFS عند تثبيت لقطات الجداول ذات الأجزاء الكثيرة. [#111417](https://github.com/ClickHouse/ClickHouse/pull/111417) ([Han Fei](https://github.com/hanfei1991)).
* خُفِّض استخدام CPU عند تثبيت لقطات الجداول التي تحتوي على أعداد هائلة من الملفات. [#112297](https://github.com/ClickHouse/ClickHouse/pull/112297) ([Han Fei](https://github.com/hanfei1991)).
* تخطَّ التسخين المسبق لتجزئات إزالة التكرار في async-insert عند تعطيل إزالة التكرار. [#111549](https://github.com/ClickHouse/ClickHouse/pull/111549) ([Sema Checherinda](https://github.com/CheSema)).
* لم يعد `JOIN` الذي يكون شرط `ON` فيه خاطئًا دائمًا، مثل `ON 1 = 2` أو `ON NULL` أو `a.t = 'A' AND a.t = 'B'`، يقرأ الطرف الذي لا يساهم في النتيجة. يتحكم في ذلك الإعداد `query_plan_short_circuit_constant_false_join` (مفعّل افتراضيًا). [#110234](https://github.com/ClickHouse/ClickHouse/pull/110234) ([Groene AI](https://github.com/groeneai)).
* تسريع قراءة جداول `Iceberg` عبر الجلب المسبق لملف البيان التالي أثناء تحليل ملف البيان الحالي، بما يتيح تداخل عمليات الإدخال/الإخراج مع عمل وحدة المعالجة المركزية. [#108543](https://github.com/ClickHouse/ClickHouse/pull/108543) ([Asya Shneerson](https://github.com/asya-ch)).
* لم تعد الاستعلامات التي تستخدم `FINAL` وتقرأ بترتيب المفتاح الأساسي مع `LIMIT` صغير تستخدم `split_intersecting_parts_ranges_into_layers_final`. [#110431](https://github.com/ClickHouse/ClickHouse/pull/110431) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تحسين أداء `RIGHT` و`FULL JOIN` باستخدام خوارزمية `parallel_hash` عندما يحتوي الطرف الأيمن على مفاتيح ربط بقيمة `NULL` أو صفوف تمت تصفيتها بواسطة تعبير `ON`، وذلك بتجنب إعادة بناء خريطة القيم الفارغة. [#111258](https://github.com/ClickHouse/ClickHouse/pull/111258) ([Hechem Selmi](https://github.com/m-selmi)).
* تسريع `countSubstringsCaseInsensitiveUTF8` بإصلاح التعقيد التربيعي الذي كان قد يجعل الدالة تستغرق دقائق عند البحث في نص بحجم بضعة ميغابايتات مع عدد كبير من المطابقات. [#112003](https://github.com/ClickHouse/ClickHouse/pull/112003) ([Groene AI](https://github.com/groeneai)).
* تُنفّذ الآن واجهة برمجة تطبيقات استعلامات Prometheus (`/api/v1/query`, `/api/v1/query_range`) لمحرك `TimeSeries` التجريبي الاستعلامات بالتوازي بدلًا من خيط واحد. [#112108](https://github.com/ClickHouse/ClickHouse/pull/112108) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تستخدم أعمدة `timestamp` و`value` التي تُنشأ تلقائيًا في الجدول الداخلي لعينات `TimeSeries` الآن، افتراضيًا، `CODEC(DoubleDelta, ZSTD(1))` و`CODEC(Gorilla, ZSTD(1))` على التوالي. [#112110](https://github.com/ClickHouse/ClickHouse/pull/112110) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* إصلاح تراجع في أداء استيعاب `system.query_log`. كان بناء عمودي الخريطة `Settings` و`asynchronous_read_counters` أبطأ بنحو ست مرات من السابق، ما قد يؤدي إلى تجاوز `SYSTEM FLUSH LOGS query_log` مهلة 180 ثانية على الخوادم التي تسجل عددًا كبيرًا من الاستعلامات ذات الإعدادات المعدّلة. يغلق [#112191](https://github.com/ClickHouse/ClickHouse/issues/112191). [#112210](https://github.com/ClickHouse/ClickHouse/pull/112210) ([Groene AI](https://github.com/groeneai)).
* تحسين أداء عمليات `RIGHT` و`FULL JOIN` باستخدام خوارزمية التجزئة عند وجود عدة عبارات `OR` في قسم `ON`، وكذلك أداء عمليات `RIGHT/FULL JOIN` ذات الشروط المتبقية (عدم المساواة). [#111590](https://github.com/ClickHouse/ClickHouse/pull/111590) ([Hechem Selmi](https://github.com/m-selmi)).
* تقليل استخدام الذاكرة في `UNLOCK SNAPSHOT` عبر عدم تحميل البيانات الوصفية لكل جزء بيانات لا يستخدمها مسار إلغاء القفل، لتجنب نفاد الذاكرة في اللقطات التي تحتوي على عدد كبير جدًا من الأجزاء. [#111849](https://github.com/ClickHouse/ClickHouse/pull/111849) ([Julia Kartseva](https://github.com/jkartseva)).
* استعادة التخصيص المسبق للذاكرة للمسارات الديناميكية لعمود `JSON` أثناء تفريغ عمليات `INSERT` غير المتزامنة، لتجنب إعادة التخصيص المتكررة أثناء إلحاق الصفوف المجمّعة. [#112222](https://github.com/ClickHouse/ClickHouse/pull/112222) ([Groene AI](https://github.com/groeneai)).
* إعادة تفعيل تحسين المفاتيح المتتالية لتجميع `TTL ... GROUP BY` أثناء عمليات الدمج. كان هذا التحسين قد عُطّل عن طريق الخطأ في ذلك المسار، لذا ظلت النتائج صحيحة، لكن عمليات الدمج كانت تنفذ عملًا أكثر من اللازم. [#112314](https://github.com/ClickHouse/ClickHouse/pull/112314) ([Groene AI](https://github.com/groeneai)).
* تسريع قراءة الأعمدة `Nested` من الأنواع المرمّزة ثنائياً، مثل `Native` و`RowBinary`، عند تمكين `input_format_binary_decode_types_in_binary_format`، والإبلاغ عن أسماء الأنواع `Tuple` المتداخلة غير الصحيحة كأخطاء في البنية بدلاً من استغراق وقت أُسّي في تحليلها. [#112560](https://github.com/ClickHouse/ClickHouse/pull/112560) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء دمج الكتل الصغيرة ودمج الأعمدة `Dynamic` و`Object` التي تحتوي على عدد كبير من المتغيرات الديناميكية أو مسارات JSON. [#110583](https://github.com/ClickHouse/ClickHouse/pull/110583) ([Christoph Viebig](https://github.com/cv4g)).
* تسريع `min` و`max` للأنواع ذات 128 و256 بت (`Int128` و`UInt128` و`Int256` و`UInt256` و`Decimal128` و`Decimal256`). أسرع بما يصل إلى 1.8 مرة للأعداد الصحيحة العريضة، وبما يصل إلى 3.4 مرة للأعداد العشرية العريضة. [#111965](https://github.com/ClickHouse/ClickHouse/pull/111965) ([Manuel](https://github.com/raimannma)).
* تم تمكين ميزتين على القرص افتراضياً وترقيتهما إلى الإصدار بيتا: 1) `packed_skip_index_max_bytes = '1M'`: تُكتب الآن التدفقات الفرعية لفهارس التخطي التي يصل حجمها إلى 1 MiB في أرشيف `skp_idx.packed` واحد لكل جزء، مما يقلل عدد الكائنات وطلبات الكتابة في تخزين الكائنات. التوافق: تتأثر الأجزاء المكتوبة حديثاً فقط، وتبقى قابلة للقراءة بالكامل في الإصدارات الأقدم؛ أما الإصدارات السابقة لـ 26.6، فلا تستخدم الفهارس المعبأة للتقليم فحسب، إذ تُعامل على أنها غير مُجسَّدة. اضبط `packed_skip_index_max_bytes = 0` للإبقاء على التخطيط المستقل لكل ملف. 2) `compute_exact_num_defaults_for_sparse_columns` مع `optimize_trivial_count_with_sparsity_filter`: تُحفَظ عدادات `num_defaults` الدقيقة لكل عمود وتُستخدم للإجابة عن `SELECT count() FROM t WHERE <pred>` دون فحص البيانات عندما يقسم الشرط الصفوف إلى قيم افتراضية وغير افتراضية. التوافق: تتجاهل الإصدارات الأقدم العلامة `exact_num_defaults` في `serialization.json`، لذا تبقى الأجزاء قابلة للقراءة بالكامل بعد الرجوع إلى إصدار أقدم؛ ولا تنطبق إعادة كتابة العد إلا على الأجزاء التي تحتوي على عدادات دقيقة، لذلك تظل النتائج صحيحة في الجداول ذات الأجزاء المختلطة. [#111816](https://github.com/ClickHouse/ClickHouse/pull/111816) ([Raúl Marín](https://github.com/Algunenano)).
* إضافة تخزين مؤقت اختياري للرموز غير الموجودة في فهارس النص. [#112742](https://github.com/ClickHouse/ClickHouse/pull/112742) ([Rory Shanks](https://github.com/rorylshanks)).
* إصلاح إعادة التخصيص التربيعية عند نسخ `Array` تحتوي عناصرها على قيم `JSON` في البيانات المشتركة، مثل `Array(JSON)` ثابتة تُمرر إلى دالة تجميعية. كانت هذه الاستعلامات تنسخ عدداً من البايتات ينمو تربيعياً مع عدد الصفوف. [#112897](https://github.com/ClickHouse/ClickHouse/pull/112897) ([Groene AI](https://github.com/groeneai)).
* استخدام فهرس المفتاح الأساسي مع `pointInPolygon` عندما تكون وسيطة النقطة عمود مفتاح كاملاً من النوع `Point` (أو `Tuple` أخرى تضم عنصرين رقميين)، مثل `pointInPolygon(coord, [...])` لجدول مرتب حسب `coord`. سابقاً، لم يكن يُحلَّل سوى النموذج `pointInPolygon((x, y), [...])` الذي يتضمن عمودي مفتاح قياسيين. يغلق [#54805](https://github.com/ClickHouse/ClickHouse/issues/54805). [#112956](https://github.com/ClickHouse/ClickHouse/pull/112956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تخطي خطوة قراءة البيانات بالكامل لعمليات دمج `TTLDrop` لتقليل استخدام الذاكرة، خصوصاً لمخازن القراءة والجلب المسبق. يغلق [#105639](https://github.com/ClickHouse/ClickHouse/issues/105639). [#105859](https://github.com/ClickHouse/ClickHouse/pull/105859) ([Pavel Kruglov](https://github.com/Avogar)).
* تقليل تخصيصات الذاكرة عند قراءة البيانات الوصفية للنسخ الاحتياطية عبر نقل إدخالات الملفات إلى خرائط في الذاكرة بدلاً من نسخها. [#111718](https://github.com/ClickHouse/ClickHouse/pull/111718) ([Julia Kartseva](https://github.com/jkartseva)).
* استخدام الفهرس النصي عندما يتضمن تعبيره مقارنة بسلسلة فارغة، مثل `arrayFilter(s -> s != '', ...)`، حتى عند إعادة كتابة `optimize_empty_string_comparisons = 1` لها إلى `notEmpty`. إغلاق [#111788](https://github.com/ClickHouse/ClickHouse/issues/111788). [#112115](https://github.com/ClickHouse/ClickHouse/pull/112115) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* استعادة تقليم ذاكرة التخزين المؤقت لشروط الاستعلام بعد `lightweight DELETE`: لم تعد الاستعلامات الانتقائية المتكررة على جدول سبق أن تأثر بـ `lightweight DELETE` تعود إلى قراءة كل علامة. [#112947](https://github.com/ClickHouse/ClickHouse/pull/112947) ([Nikita Fomichev](https://github.com/fm4v)).
* لم تعد الدوال عالية الرتبة تنسخ الأعمدة الملتقطة ماديًا لكل عنصر في المصفوفة عند تمكين `enable_lazy_columns_replication`، ما يقلل استخدام الذاكرة ووقت النسخ لتعبيرات لامبدا التي تلتقط أعمدة كبيرة. [#111581](https://github.com/ClickHouse/ClickHouse/pull/111581) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* إصلاح تراجع في الأداء بمقدار \~1.5x أُضيف في الإصدار 26.5 ضمن `GROUP BY` على مفاتيح `Dynamic` والأعمدة الفرعية لمسارات `JSON`. [#112316](https://github.com/ClickHouse/ClickHouse/pull/112316) ([Utkal Singh](https://github.com/Utkal059)).
* أصبحت القيمة الافتراضية لـ `text_index_posting_list_apply_mode` هي `lazy`، لذا تفك استعلامات الفهرس النصي ترميز قوائم النشر عند الطلب، على مستوى الكتل المعبأة وباستخدام مؤشر، بدلًا من تجسيدها مسبقًا في خرائط بتية للفهارس النصية التي ضُبط فيها `posting_list_codec`. [#113521](https://github.com/ClickHouse/ClickHouse/pull/113521) ([Anton Popov](https://github.com/CurtizJ)).
* تسريع استعلامات PromQL على جداول `TimeSeries`: تعيد `timeSeriesIdToGroup` الآن استخدام مجموعة الصف السابق عندما تحمل الصفوف المتتالية معرّف السلسلة نفسه، متجاوزة تسلسل المعرّف والبحث بالتجزئة لكل صف. [#113580](https://github.com/ClickHouse/ClickHouse/pull/113580) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تستخدم عوامل التجميع في PromQL، وهي `topk` و`bottomk` و`limitk`، الآن خطة تنفيذ متدفقة ومتوازية بذاكرة محدودة بدلًا من جمع جميع السلاسل في صف واحد. وأصبحت الاستعلامات على المقاييس عالية الكاردينالية التي كانت تفشل سابقًا بسبب `MEMORY_LIMIT_EXCEEDED` تعمل الآن بذاكرة محدودة. [#113656](https://github.com/ClickHouse/ClickHouse/pull/113656) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)). [#114409](https://github.com/ClickHouse/ClickHouse/pull/114409) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع قسمة الأعداد الصحيحة ذات 256 بت (`Int256` و`UInt256` و`Decimal256`)، ما يؤثر في `intDiv` و`modulo` وحسابات `Decimal256` وتحويل هذه الأنواع إلى نص. [#112477](https://github.com/ClickHouse/ClickHouse/pull/112477) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحسين أداء قراءة `MergeTree` للأعمدة الفرعية في `JSON` بإعادة استخدام البيانات الوصفية المحلولة للأعمدة الفرعية أثناء التحويلات المطلوبة. [#113008](https://github.com/ClickHouse/ClickHouse/pull/113008) ([Rory Shanks](https://github.com/rorylshanks)).
* تسريع بناء فهارس التخطي النصية والمعتمدة على مرشح بلوم باستخدام محلل النصوص `sparseGrams`. [#110541](https://github.com/ClickHouse/ClickHouse/pull/110541) ([UnamedRus](https://github.com/UnamedRus)).
* يستخدم إنشاء اللقطات الآن تجمع خيوط مخصصًا، لذا لم تعد عملية `BACKUP` ثقيلة ومتزامنة تستنزف موارده. [#113509](https://github.com/ClickHouse/ClickHouse/pull/113509) ([Han Fei](https://github.com/hanfei1991)).
* قيِّم التعبيرات الفرعية في PromQL المشتركة بين عدة خطوات في الخطة (مُعاملات `topk`/`bottomk`/`limitk` والطرف الأيسر من `or`) مرة واحدة بدلًا من مرتين: إذ يُجسِّد SQL المُولَّد من PromQL الآن الاستعلامات الفرعية المشتركة. يؤدي ذلك إلى إزالة فحص مكرر لجدول العينات؛ ويصبح `topk` على `rate` أسرع بنحو الضعف في الحالة الباردة، كما تتحسن استعلامات قواعد kubernetes-mixin بنسبة 10-29%. [#113772](https://github.com/ClickHouse/ClickHouse/pull/113772) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* يمكنك الآن تمكين الطيّ المبكر قصير الدائرة للعمليتين المضمنَتين `and` و`or` أثناء التحليل باستخدام الإعداد `enable_function_early_short_circuit`. يمكن أن يؤدي ذلك إلى تخطي تنفيذ الاستعلامات الفرعية ذات القيمة المفردة `count()` غير المستخدمة، مع الحفاظ على استنتاج الأنواع المعتاد والتحقق الدلالي. يحل [#83017](https://github.com/ClickHouse/ClickHouse/issues/83017). [#83505](https://github.com/ClickHouse/ClickHouse/pull/83505) ([fhw12345](https://github.com/fhw12345)).
* ادمج تكلفة الإدخال/الإخراج مع الانتقائية عند ترتيب شروط `PREWHERE`. يعالج ذلك تراجعًا في أداء تنفيذ `PREWHERE` في بعض الحالات ظهر بعد [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275). جزء من [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110695](https://github.com/ClickHouse/ClickHouse/pull/110695) ([Pavel Kruglov](https://github.com/Avogar)).
* حُسِّن أداء `levenshteinDistance` (و`editDistance`) للسلاسل متوسطة الطول على ARM عبر تجنب تخصيصات الكومة لكل صف في مسار كود Myers المحظور. [#108185](https://github.com/ClickHouse/ClickHouse/pull/108185) ([Groene AI](https://github.com/groeneai)).
* أُضيف إعداد `merge_use_batch_sorting_queue` الخاص بـ `MergeTree` لإتاحة استخدام قائمة انتظار فرز الدُفعات اختياريًا في عمليات دمج `MergeTree` العادية، مما يقلل وقت CPU ووقت الساعة الفعلي لأحمال عمل الدمج التي تشكل فيها عملية الدمج المرتب تكلفة كبيرة. [#108468](https://github.com/ClickHouse/ClickHouse/pull/108468) ([Rory Shanks](https://github.com/rorylshanks)).
* أُضيف الإعداد `merge_tree_min_bytes_per_read_stream` لتقليل تدفقات القراءة المفرطة وأعباء خط الأنابيب لعمليات فحص `MergeTree` العادية المحلية غير المرتبة ذات الأعمدة الضيقة على الخوادم ذات العدد الكبير من الأنوية. [#109035](https://github.com/ClickHouse/ClickHouse/pull/109035) ([Jiebin Sun](https://github.com/jiebinn)).
* سرِّع الدالة `toStartOfInterval` (الأسماء المستعارة `time_bucket` و`date_bin`) بما يصل إلى 5 أضعاف لفواصل `SECOND` و`MINUTE` و`HOUR`. [#109729](https://github.com/ClickHouse/ClickHouse/pull/109729) ([Manuel](https://github.com/raimannma)).
* يرسل البروتوكول الأصلي الآن أعمدة `String` كتدفق منفصل من إزاحات البايتات التراكمية (بالتخطيط نفسه الذي يستخدمه `Array` لإزاحاته)، يتبعه البيانات المتصلة، بدلًا من بادئة طول varint لكل قيمة، عند استخدام كلا الطرفين مراجعة البروتوكول 54489 أو أحدث. يمكن للعميل حينها قراءة أعمدة `String` بتخصيص مسبق دقيق للمخزن المؤقت وعملية نسخ مجمع واحدة، بسرعة تزيد بنحو 4 مرات عن تخطيط كل قيمة. لا تتأثر العملاء والخوادم القديمة، إذ يُتفاوض على التخطيط عبر مراجعة البروتوكول. يتوفر التخطيط نفسه في تنسيقي `Native` و`Buffers` عبر الإعدادين الجديدين `output_format_native_write_string_with_size_stream` / `input_format_native_read_string_with_size_stream` (وهما متوقفان افتراضيًا، ليبقى التنسيقان قابلين للنقل). [#110320](https://github.com/ClickHouse/ClickHouse/pull/110320) ([vahid-sohrabloo](https://github.com/vahid-sohrabloo)).
* تجنب التسلسل المبكر إلى JSON لإدخالات بيان Iceberg عندما يكون iceberg\_metadata\_log\_level أقل من عتبة موضع الاستدعاء. [#110437](https://github.com/ClickHouse/ClickHouse/pull/110437) ([Andy Bradshaw](https://github.com/andybradshaw)).
* حسِّن أداء full sorting merge join بما يصل إلى 1.5-3 أضعاف في السيناريوهات المتفرقة. [#111200](https://github.com/ClickHouse/ClickHouse/pull/111200) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تحسين كفاءة إحصاءات minmax وإحصاءات الأعمدة الأساسية للأعمدة ذات الفاصلة العائمة. [#111221](https://github.com/ClickHouse/ClickHouse/pull/111221) ([Christoph Viebig](https://github.com/cv4g)).
* تمكين `join_runtime_filter_from_fixed_hash_table` عندما تختلف أنواع مفاتيح الربط في مرحلتي probe وbuild (مثلًا، مفتاح probe من نوع Nullable ومفتاح build ليس من نوع Nullable). [#111244](https://github.com/ClickHouse/ClickHouse/pull/111244) ([Hechem Selmi](https://github.com/m-selmi)).
* إرجاع نتائج استعلامات `COUNT()` مباشرةً من البيانات الوصفية لتعددية text index. [#111494](https://github.com/ClickHouse/ClickHouse/pull/111494) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تسريع حساب التجزئة على مستوى الصفوف لقيم أعمدة JSON/`Object` المخزنة في البيانات المشتركة (المستخدمة مثلًا بواسطة `uniq`/`uniqExact` على عمود JSON، وبواسطة مفاتيح `GROUP BY`/`DISTINCT` المعتمدة على hash) من خلال تجنب إعادة إنشاء `ColumnDynamic` لكل قيمة. تظل قيم hash دون تغيير. [#111501](https://github.com/ClickHouse/ClickHouse/pull/111501) ([Valery Petrov](https://github.com/valerypetrov)).
* تستهلك الدوال `mapContainsKeyLike` و`mapContainsValueLike` و`mapExtractKeyLike` و`mapExtractValueLike` ذات pattern غير الثابت ذاكرة ووقتًا أقل عند تمكين enable\_lazy\_columns\_replication. لم يعد يُنسخ pattern مسبقًا لكل إدخال في map وقت الالتقاط؛ بل يُؤجَّل النسخ إلى تنفيذ lambda الداخلية ويُحرَّر في وقت أبكر، لذا تقل نسخة موسعة واحدة من pattern عند الذروة. [#111749](https://github.com/ClickHouse/ClickHouse/pull/111749) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* تسريع الفرز والعمليات الأخرى المعتمدة على المقارنة في أعمدة `JSON` التي تُخزَّن مساراتها في البيانات المشتركة. سابقًا، كانت كل مقارنة بين قيمتين تُنشئ عمود `Dynamic` مؤقتًا وتنفذ إلغاء تسلسل ثنائي كاملًا لكلا الطرفين، مما جعل `ORDER BY` على هذه الأعمدة بطيئًا للغاية. [#111894](https://github.com/ClickHouse/ClickHouse/pull/111894) ([Groene AI](https://github.com/groeneai)).
* لم يعد `clickhouse-client` يرسل Ping إلى server قبل كل query، مما يلغي رحلة ذهاب وإياب عبر الشبكة لكل query. ولم يعد يعيد إنشاء connection، فيبدأ session جديدة بصمت ويفقد بذلك temporary tables وcurrent database وsession settings، لمجرد أن server كان بطيئًا جدًا في الرد على Ping. [#111990](https://github.com/ClickHouse/ClickHouse/pull/111990) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدام تحسين الشروط المتعدية بصورة أكثر حكمة: لا يُستخدم filter الإضافي الناتج عن التعدية الآن إلا لتحليل index عندما يتعذر تطبيق filter بالكامل. راجع الإعداد `optimize_and_compare_chain`. [#112076](https://github.com/ClickHouse/ClickHouse/pull/112076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تمت إضافة إعدادين، `shrink_over_allocated_columns_min_waste_ratio` و`shrink_over_allocated_columns_min_waste_bytes`، يجعلان عمليات INSERT تقلّص الأعمدة المخصصة بإفراط (التي تتجاوز ذاكرتها المحجوزة الذاكرة المستخدمة بسبب نمو الأعمدة متغيرة الطول وفق قوى العدد اثنين) لتلائم حجمها قبل materialization وكتابة part، مما يقلل ذروة استخدام الذاكرة. تكون هذه الإعدادات معطلة افتراضيًا. [#112161](https://github.com/ClickHouse/ClickHouse/pull/112161) ([Pavel Kruglov](https://github.com/Avogar)).
* لم يعد تكرار الأعمدة الكسول لـ `ARRAY JOIN` يُفقد عند تسلسل خطة الاستعلام. عند استخدام `serialize_query_plan = 1`، كانت العقدة التي تنفذ جزءًا بعيدًا من الخطة تتجاهل `enable_lazy_columns_replication` وتُحوّل دائمًا كل نسخة مكررة إلى نسخة مادية، رغم أن هذا الإعداد مفعّل افتراضيًا. [#112330](https://github.com/ClickHouse/ClickHouse/pull/112330) ([Groene AI](https://github.com/groeneai)).
* أصبح تنسيق قيم `Decimal` كنص أسرع بكثير — بما يصل إلى 190 مرة لـ `Decimal256` ذي مقياس كبير، ونحو 1.6 مرة لـ `Decimal64`. وعلى المعالجات المزودة بـ AVX-512 IFMA، أصبح تحويل الأعداد الصحيحة ذات 64 بت إلى نص أسرع بنحو 1.4 مرة. أُصلح أيضًا تقريب `toDecimalString`، الذي كان يُسقط ترحيلاً من الجزء الكسري: كانت `toDecimalString(toDecimal64('9.995', 3), 2)` تُرجع `9.00` وأصبحت الآن تُرجع `10.00`. [#112457](https://github.com/ClickHouse/ClickHouse/pull/112457) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبح شرط المساواة في `WHERE` يُدمج الآن في شرط `JOIN` عندما تكون معاملاته من أنواع مختلفة، لكن لها نوع فائق مشترك، مثل `Int32` و`Nullable(Int32)`. يتيح ذلك تحويل CROSS JOIN إلى INNER JOIN. [#112630](https://github.com/ClickHouse/ClickHouse/pull/112630) ([Hechem Selmi](https://github.com/m-selmi)).
* أصبحت الاستعلامات على جداول Iceberg التي تضم عددًا كبيرًا من ملفات الحذف تبدأ بسرعة أكبر. يقرأ ClickHouse ملفات بيان الحذف ويفك ترميزها بالتزامن بدلًا من معالجتها واحدًا تلو الآخر، بحيث تتداخل عمليات القراءة من التخزين. يتحكم الإعداد الجديد `iceberg_delete_manifest_decode_concurrency` (القيمة الافتراضية `4`) في عدد الملفات التي يُفك ترميزها في الوقت نفسه. [#112679](https://github.com/ClickHouse/ClickHouse/pull/112679) ([Asya Shneerson](https://github.com/asya-ch)).
* يستخدم التسجيل غير المتزامن الآن طابورًا محدودًا بلا أقفال: لا تُحجب الخيوط التي تكتب رسائل السجل على mutex، ولا توقظ خيوط التسجيل. [#112803](https://github.com/ClickHouse/ClickHouse/pull/112803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `randomHadamardTransform` لمتجه ثابت يُقيَّم مرة واحدة بدلًا من مرة لكل صف. يسرّع ذلك استعلامات البحث المتجهي التي تدوّر متجه الاستعلام باستخدام `randomHadamardTransform` قبل مقارنته بعمود `QBit`. [#112921](https://github.com/ClickHouse/ClickHouse/pull/112921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استُعيدت مشاركة المجموعات بين مهام الأجزاء الخاصة بطفرة واحدة تُجري تصفية باستخدام `IN (subquery)` على عمود مفتاح أساسي. يكون `enable_sharing_sets_for_mutations` مفعّلًا افتراضيًا، لكن المجموعة المُنشأة لتحليل المفتاح الأساسي توقفت عن المشاركة في ذاكرة التخزين المؤقت المشتركة، لذا كان جدول يحتوي على N أجزاء يُحوّل المجموعة نفسها إلى نسخة مادية N مرات. [#112941](https://github.com/ClickHouse/ClickHouse/pull/112941) ([Groene AI](https://github.com/groeneai)).
* أُصلح التعقيد التكعيبي لتخطيط استعلام JOIN مع جدول `Merge` يعتمد على العديد من الجداول ذات البنى المختلفة. كان من الممكن سابقًا أن تقضي مثل هذه الاستعلامات دقائق في تخطيط الاستعلام دون الاستجابة لـ `max_execution_time` أو `KILL QUERY`. [#113140](https://github.com/ClickHouse/ClickHouse/pull/113140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت ذاكرة التخزين المؤقت لمنطقة الحاوية في عميل `S3` تعمل الآن أيضًا مع كتالوجات بحيرة البيانات؛ إذ كان كل طلب إليها يعيد تحديد المنطقة سابقًا. [#113330](https://github.com/ClickHouse/ClickHouse/pull/113330) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُصلح تراجع في الأداء كان يحدث عندما يقوم تجميع بلا مفاتيح `GROUP BY` بتسلسل الشجرة الفرعية الكاملة لخطة الإدخال، بما في ذلك المحتويات الكاملة للثوابت المطوية، عند كل تنفيذ لحساب مفتاح لذاكرة تخزين مؤقت لحجم جدول تجزئة لا يمكنه استخدامه مطلقًا. كان استعلام مثل `SELECT quantileMerge(arrayJoin(arrayMap(x -> state, range(5000000))))` يقضي نحو 63 مللي ثانية لكل تنفيذ في تحسين خطة الاستعلام، ويقضي الآن 0.15 مللي ثانية. [#113333](https://github.com/ClickHouse/ClickHouse/pull/113333) ([Groene AI](https://github.com/groeneai)).
* أضف تسلسلاً اختياريًا لقيم UInt128/UInt256/Int128/Int256 بتنسيق Parquet كنوع DECIMAL لتمكين تشذيب مجموعات الصفوف والصفحات. [#113347](https://github.com/ClickHouse/ClickHouse/pull/113347) ([Ivan Babrou](https://github.com/bobrik)).
* سرّع تخطيط الاستعلامات عند استخدام إحصاءات الأعمدة `uniq_v2`. إذ أصبح العدد التقديري للقيم المميزة يُخزَّن مؤقتًا بدلًا من إعادة حسابه لكل طلب، وهي عملية يُجريها تخطيط الاستعلامات مرات عديدة لكل استعلام. (مشكلة [#113038](https://github.com/ClickHouse/ClickHouse/issues/113038)). [#113357](https://github.com/ClickHouse/ClickHouse/pull/113357) ([Groene AI](https://github.com/groeneai)).
* لا تجلب مسبقًا التدفقات الفرعية غير المطلوبة عند قراءة مسار JSON كامل من البيانات المشتركة المتقدمة. [#113380](https://github.com/ClickHouse/ClickHouse/pull/113380) ([Pavel Kruglov](https://github.com/Avogar)).
* أصبح دفع المرشحات يعمل الآن مع الأعمدة الفرعية `Tuple` في ملفات Parquet وORC. إذ يؤدي مسند مثل `WHERE tup.1 = 555555` عبر `file()` أو `s3()` أو `url()` الآن إلى تشذيب مجموعات الصفوف وخطوات فهرس الصفوف باستخدام إحصاءات عنصر الـ tuple نفسه، بدلًا من قراءة الملف كاملًا. [#113383](https://github.com/ClickHouse/ClickHouse/pull/113383) ([Groene AI](https://github.com/groeneai)).
* استُبدلت خريطة التجزئة لكل حاوية داخل الدالات التجميعية `timeSeries*ToGrid` بمصفوفة مسطحة ومرتبة من العينات: يصبح استيعاب العينات عملية إلحاق O(1) للمدخلات المرتبة زمنيًا (وهي الحالة الأكثر شيوعًا بفارق كبير)، ولم تعد هناك حاجة إلى النسخ والفرز لكل حاوية عند الإنهاء. [#113681](https://github.com/ClickHouse/ClickHouse/pull/113681) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* حسّن أداء استعلامات PromQL عبر محرك TimeSeries: إذ تقرأ SQL الداخلية للمحدد الآن أعمدة المفتاح الأساسي لجدول العينات مباشرةً، من دون تحويلات غير مؤثرة، وتتحقق من نطاق الطابع الزمني قبل مجموعة معرّفات السلاسل، مما يجعل الاستعلامات الباردة الكثيفة بالمحددات أسرع بنسبة 30-44%. [#113768](https://github.com/ClickHouse/ClickHouse/pull/113768) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* استخدم خرائط معرّفات محددة النوع في جامع وسوم السلاسل الزمنية. [#113839](https://github.com/ClickHouse/ClickHouse/pull/113839) ([Vitaly Baranov](https://github.com/vitlibar)).
* تخطَّ فحص الترتيب الزائد عند كتابة أجزاء MergeTree التي تكون مفاتيح ترتيبها ثابتة كلها. [#113899](https://github.com/ClickHouse/ClickHouse/pull/113899) ([Perfloop Agent](https://github.com/perfloop-agent)).
* أصبحت محددات PromQL التي تطابق جميع سلاسل مقياس واحد ترشّح جدول العينات لجدول `TimeSeries` بنطاق متصل من المفتاح الأساسي على `id` أثناء تحليل الفهرس، بدلًا من شرط كبير من النوع `id IN <set>`، عندما يكون تخطيط المعرّف عبارة عن tuple من مكوّنين مع مولّد المعرّفات القياسي. يزيل ذلك التكلفة الرئيسية أحادية الخيط لتحليل الفهرس في استعلامات PromQL الكثيفة بالمحددات: انخفاض يصل إلى 45% في زمن الاستجابة البارد لأنماط استعلامات لوحات المعلومات والقواعد، وانخفاض قدره 11% في المتوسط الهندسي البارد عبر المجموعة الكاملة على جدول يضم 62 مليار عينة. [#114131](https://github.com/ClickHouse/ClickHouse/pull/114131) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* سرّع تحويلات وسوم TimeSeries المتجهة باستبدال إعادة التعيين المعتمدة على التجزئة بالفهرسة المباشرة عندما تشغل معرّفات مجموعات الوسوم نطاقًا مضغوطًا. [#114244](https://github.com/ClickHouse/ClickHouse/pull/114244) ([Minh Vu](https://github.com/fallintoplace)).
* تُقيّم نقاط نهاية واجهة برمجة تطبيقات HTTP لـ Prometheus، `/api/v1/query` و`/api/v1/query_range`، الآن استعلامًا فرعيًا من PromQL مشتركًا بين عدة خطوات في الخطة مرة واحدة، كما كانت تفعل بالفعل دالتا الجدول `prometheusQuery` و`prometheusQueryRange`. في السابق، كان الطلب المُرسل مع `enable_analyzer = 0`، أو من مستخدم يضبط ملفه الشخصي هذا الإعداد، يعيد فحص الاستعلام الفرعي المشترك مرة لكل خطوة تشير إليه. [#114261](https://github.com/ClickHouse/ClickHouse/pull/114261) ([Groene AI](https://github.com/groeneai)).
* تم الحدّ من تكلفة تقدير انتقائية `col IN (...)` استنادًا إلى إحصاءات الأعمدة، والتي كان يمكن أن تضيف مئات المللي ثانية إلى تخطيط استعلام واحد. لم يعد المُقدِّر يشغّل الاستعلام الفرعي في `col IN (subquery)` لملء مجموعة لا يحتاج منها إلا إلى قيمة انتقائية واحدة، بل يتخطى المجموعة غير المُنشأة. بالنسبة إلى المجموعات التي يتجاوز حجمها الإعداد الجديد `statistics_max_set_size_for_exact_selectivity_estimation` (القيمة الافتراضية 10000)، تُستمد الانتقائية الآن من حجم المجموعة ونطاق حدودها. [#114389](https://github.com/ClickHouse/ClickHouse/pull/114389) ([Nikita Taranov](https://github.com/nickitat)).
* لم يعد تحليل طلب HTTP يحتوي على عدد كبير من معلمات الاستعلام أو الرؤوس التي تحمل الاسم نفسه (مثل آلاف معلمات `role=` المكررة) يستغرق وقتًا تربيعيًا. [#114410](https://github.com/ClickHouse/ClickHouse/pull/114410) ([James](https://github.com/sanjams2)).
* تم إصلاح تراجع في الإصدار 26.7: في جدول `MergeTree` المرتب حسب `toUnixTimestamp` (أو تحويل صحيح آخر) لعمود `DateTime64`، لم يعد مرشح نطاق بسيط على ذلك العمود يستخدم المفتاح الأساسي ويقرأ جميع الحبيبات من الأجزاء المطابقة. بالإضافة إلى ذلك، يستخدم الآن مرشح مثل `toInt64(ts) >= c` في جدول مرتب حسب عمود `DateTime64` الأصلي المفتاح الأساسي. [#114413](https://github.com/ClickHouse/ClickHouse/pull/114413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُجرى فحص الاتساق المكثف في `ColumnArray` الآن في إصدارات التصحيح فقط. [#114469](https://github.com/ClickHouse/ClickHouse/pull/114469) ([Anton Popov](https://github.com/CurtizJ)).
* لا تُجرِ فرز دمج لتجميع موزع يكون وصف الفرز فيه ثابتًا بالكامل. [#114626](https://github.com/ClickHouse/ClickHouse/pull/114626) ([Groene AI](https://github.com/groeneai)).
* تسريع بناء المجموعات لـ `IN (subquery)` في جداول `MergeTree` المقسمة إلى أقسام، عبر إبقاء صفوف كل قسم ضمن تدفق واحد وإزالة التكرارات من كل تدفق بشكل مستقل، بحيث لا يرى تحويل ملء المجموعة الوحيد — الذي كان يحسب سابقًا تجزئة كل صف تسلسليًا — سوى الصفوف الفريدة. ينطبق ذلك عندما يكون تعبير التقسيم دالة حتمية لأعمدة إخراج الاستعلام الفرعي. لا يُطبَّق هذا التحسين عندما يحتوي أكبر قسم على أكثر من ضعف عدد صفوف القسم المتوسط؛ ويتجاوز الإعداد الجديد `force_creating_set_partitions_independently` (المعطّل افتراضيًا) هذا الفحص. ويتحكم فيه الإعداد الجديد `allow_creating_set_partitions_independently` (المفعّل افتراضيًا). [#114645](https://github.com/ClickHouse/ClickHouse/pull/114645) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* موازاة التحويل من مستوى واحد إلى مستويين لحالات التجميع لكل خيط قبل دمجها. يعالج ذلك تراجعًا بمقدار 2-3 مرات في استعلامات `GROUP BY` القصيرة ذات حالات التجميع الثقيلة (مثل `COUNT(DISTINCT ...)` وClickBench Q10/Q11) على الأجهزة ذات العدد الكبير جدًا من الأنوية، والذي ظهر في إصدارات تطوير 26.7 عند جعل احتساب ذاكرة التجميع دقيقًا. [#114691](https://github.com/ClickHouse/ClickHouse/pull/114691) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع الدالات التجميعية `timeSeries*ToGrid`: تتجنب حسابات الحاويات لكل عينة الآن قسمة Int128، وتتخطى العينات المتتالية في الحاوية نفسها البحث في خريطة التجزئة. [#114889](https://github.com/ClickHouse/ClickHouse/pull/114889) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* لم تعد الإضافة إلى قائمة انتظار سجل النظام تتطلب نسخ القائمة بأكملها نسخًا عميقًا عند نموها. [#115030](https://github.com/ClickHouse/ClickHouse/pull/115030) ([Groene AI](https://github.com/groeneai)).
* معالجة عينات الدالات التجميعية `timeSeries*ToGrid` على دفعات من العينات المتتالية التي تقع ضمن حاوية شبكة واحدة، مما يسرّع مرحلة إدخال العينات في `timeSeriesRateToGrid` والدالات ذات الصلة بمقدار 1.2-2 مرة لبيانات السلاسل الزمنية المرتبة. [#115041](https://github.com/ClickHouse/ClickHouse/pull/115041) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* استخدام أقنعة وجود مدمجة لعوامل المجموعات في PromQL. [#115224](https://github.com/ClickHouse/ClickHouse/pull/115224) ([Minh Vu](https://github.com/fallintoplace)).
* تسريع تقييم استعلامات PromQL الفورية: تستخدم الدوال التجميعية `timeSeries*ToGrid` مسار تصنيف العينات المتجه للشبكات ذات النقطة الواحدة، بينما يملأ `timeSeriesIdToGroup` عمود النتيجة مباشرةً. [#115267](https://github.com/ClickHouse/ClickHouse/pull/115267) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* لم يعد `JOIN` الذي يحتوي قسم `ON` فيه على عدة مقارنات مساواة مرتبطة بـ `OR` يُجسِّد أعمدة المفاتيح في الجانب الأيمن التي لا يحددها الاستعلام. [#115465](https://github.com/ClickHouse/ClickHouse/pull/115465) ([Nikita Taranov](https://github.com/nickitat)).
* لم تعد تسمية نوع `DateTime` أو `DateTime64` تنشئ جدول بحث لمنطقة UTC الزمنية لا يُستخدم، مما يسرّع إنشاء هذه الأنواع — وبالتالي بدء `clickhouse local` و`clickhouse client`. [#115488](https://github.com/ClickHouse/ClickHouse/pull/115488) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* لم يعد إرفاق جداول النظام ينسخ البيانات الوصفية لكل جدول، بما في ذلك وصف العمود الكامل، مرتين لمجرد تعيين تعليق الجدول. [#115490](https://github.com/ClickHouse/ClickHouse/pull/115490) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* يُحلّ اسم مضيف العميل الآن عند الإبلاغ عنه للمرة الأولى، بدلاً من حله عند كل استدعاء لـ `clickhouse client` و`clickhouse local`. [#115491](https://github.com/ClickHouse/ClickHouse/pull/115491) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تم إصلاح تعقيد زمني تربيعي عند إنشاء الدوال `h3kRing` و`h3ToChildren` و`h3PolygonToCells` و`h3PolygonToCellsWithContainment` نتائجها عبر عدد كبير من الصفوف. كان استعلام على 196 000 صف يستغرق 838 ثانية في نسخ الذاكرة أثناء تشغيل ضغط في CI؛ أما الآن فيستغرق نحو 5 ثوانٍ. [#115773](https://github.com/ClickHouse/ClickHouse/pull/115773) ([Groene AI](https://github.com/groeneai)).
* تسريع التحقق من السلاسل المكررة لمتجهات شروط PromQL التي تتكون بالكامل من أصفار. [#115822](https://github.com/ClickHouse/ClickHouse/pull/115822) ([Minh Vu](https://github.com/fallintoplace)).
* تسريع `GROUP BY` دون دوال تجميعية على مفاتيح `String` و`FixedString` و`LowCardinality`: لم يعد الاستعلام يعيد كتابة عنصر نائب غير مستخدم في جدول التجزئة لكل صف، بل للصفوف التي تضيف مفتاحًا جديدًا فقط. [#115834](https://github.com/ClickHouse/ClickHouse/pull/115834) ([Nikita Taranov](https://github.com/nickitat)).
* تسريع `toUTCTimestamp`/`to_utc_timestamp` و`fromUTCTimestamp`/`from_utc_timestamp` للوسائط من نوع `DateTime64`، مع استعادة معدل النقل السابق لإصلاح التجاوز في [#109738](https://github.com/ClickHouse/ClickHouse/issues/109738). لم تتغير النتائج. يغلق [#115802](https://github.com/ClickHouse/ClickHouse/issues/115802). [#115838](https://github.com/ClickHouse/ClickHouse/pull/115838) ([Groene AI](https://github.com/groeneai)).
* تقليل استخدام الذاكرة ووقت تحسين خطة الاستعلام للتجميعات ذات المفاتيح على القيم الحرفية الكبيرة المطوية كثوابت. يُجزّأ مفتاح ذاكرة التخزين المؤقت لإحصاءات جدول تجزئة التجميع الآن أثناء تسلسله بدلاً من تجميعه في الذاكرة أولاً، لذا لم تعد الخطة التي تحمل قيمة حرفية كبيرة تحتفظ بنسخة منها أثناء التحسين. بالنسبة إلى قيمة حرفية بحجم 80 MB، تنخفض ذروة استخدام الذاكرة بنحو 250 MB ووقت التحسين بنحو 2.5x. يبقى المفتاح المحسوب دون تغيير. [#115847](https://github.com/ClickHouse/ClickHouse/pull/115847) ([Groene AI](https://github.com/groeneai)).

<div id="268-improvement">
  #### تحسينات
</div>

* تُوسَم الآن طلبات HTTP الصادرة بتنسيق OpenAI باسم SQL لدالة الذكاء الاصطناعي المستدعية، لتحديد نقطة النهاية الأولية. [#110449](https://github.com/ClickHouse/ClickHouse/pull/110449) ([George Larionov](https://github.com/george-larionov)).
* تقليل زمن استجابة الإلغاء للصيغ الإيجابية من `LIMIT BY`: أصبح `KILL QUERY` وCtrl+C يوقفان التنفيذ ضمن كتلة واحدة بدلًا من انتظار اكتمال الخطوة بأكملها. [#106070](https://github.com/ClickHouse/ClickHouse/pull/106070) ([Roman Vasin](https://github.com/rvasin)).
* عند فشل `INSERT` لأن جدول الهدف `TO` لعرض مادي يرفض الكتابة أثناء إنشاء مسار الإدراج، تعرض رسالة الخطأ الآن اسم العرض المادي وجدول هدفه بدلًا من الإبلاغ عن خطأ التخزين المجرد فقط. [#107234](https://github.com/ClickHouse/ClickHouse/pull/107234) ([Groene AI](https://github.com/groeneai)).
* مع `input_format_protobuf_oneof_presence`، لم يعد ClickHouse يتطلب أن يسرد تعداد وجود `oneof` العلامات المعرّفة في مخطط Protobuf بدقة: يُسمح الآن بعلامات إضافية لا تقابلها أعمدة في جدول الهدف، مما يسهّل إجراء تغييرات على المخطط. [#109174](https://github.com/ClickHouse/ClickHouse/pull/109174) ([Ilya Golshtein](https://github.com/ilejn)).
* تقبل دوال المسافة المنقولة على `QBit` (`L2DistanceTransposed` و`cosineDistanceTransposed` و`dotProductTransposed` ومتغيراتها المكمّاة) الآن متجهًا مرجعيًا أطول من عدد الأبعاد التي يجري البحث فيها، مع تجاهل العناصر الزائدة في نهايته. يتيح ذلك إعادة استخدام متجه استعلام كامل الحجم لبحث Matryoshka منخفض الأبعاد دون تقطيعه مسبقًا. [#109388](https://github.com/ClickHouse/ClickHouse/pull/109388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُعيدت تسمية الإحصائية الفرعية `NullCount` ضمن إحصاءات `basic` إلى `DefaultCount`، وأصبحت تحسب الصفوف التي تساوي القيمة الافتراضية لنوع العمود، لا صفوف `NULL` فقط في أعمدة `Nullable`. [#109977](https://github.com/ClickHouse/ClickHouse/pull/109977) ([Han Fei](https://github.com/hanfei1991)).
* دعم الكتابة المتزامنة في جداول `Iceberg` على قرص محلي: ينفذ `LocalObjectStorage` الآن عمليات كتابة شرطية، لذا تعمل عملية المقارنة والاستبدال التي تنشر لقطة جديدة عبر `version-hint.text` فيه، ولا يفقد الكتّاب المتزامنون تحديثات بعضهم البعض. [#112556](https://github.com/ClickHouse/ClickHouse/pull/112556) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُطلق `ALTER TABLE ... MOVE/REPLACE PARTITION` بين جدولي `MergeTree` ذوي مستوى تفصيل غير متوافق الخطأ `BAD_ARGUMENTS` الآن بدلًا من `LOGICAL_ERROR`. [#110535](https://github.com/ClickHouse/ClickHouse/pull/110535) ([Groene AI](https://github.com/groeneai)).
* لم يعد تنسيق `Values` يسجل أخطاء تحليل زائفة في `system.errors` و`system.error_log` عندما ينتقل التحليل المتدفق بنجاح إلى تحليل تعبير SQL. [#111141](https://github.com/ClickHouse/ClickHouse/pull/111141) ([Pablo Marcos](https://github.com/pamarcos)).
* أُضيف `ProfileEvent` باسم `DuplicationDataHashComputations`، والذي يحسب عمليات احتساب تجزئة البيانات لكل عمود التي تُجرى أثناء إزالة تكرار كتل `INSERT` في جداول `*MergeTree`. [#111173](https://github.com/ClickHouse/ClickHouse/pull/111173) ([Valery Petrov](https://github.com/valerypetrov)).
* إبراز أمري `./clickhouse` و`sudo ./clickhouse install` في مخرجات برنامج التثبيت العام. [#111514](https://github.com/ClickHouse/ClickHouse/pull/111514) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد عمليات الربط الديكارتية وعمليات الربط ذات الشرط الثابت التي يخطط لها المحلل تفشل بسبب إعداد `join_algorithm` غير متوافق عند استخدام المحلل. [#108289](https://github.com/ClickHouse/ClickHouse/pull/108289) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* تدعم `bitmaskToArray` و`bitmaskToList` الآن الوسائط `Int128` و`UInt128` و`Int256` و`UInt256`. كما أصبحت `bitPositionsToArray` أسرع للوسائط ذات الأعداد الصحيحة الكبيرة، لأنها تتناسب الآن مع عدد البتات المضبوطة بدلاً من موضع أعلى بت مضبوط. [#110743](https://github.com/ClickHouse/ClickHouse/pull/110743) ([Manuel](https://github.com/raimannma)).
* أُصلح تعطل في التعبيرات المُصرَّفة بأسلوب JIT في إصدارات macOS/aarch64 الأصلية المبنية من المصدر، وذلك باستخدام LLVM host triple الصحيح لنظام التشغيل المضيف. [#111591](https://github.com/ClickHouse/ClickHouse/pull/111591) ([Raúl Marín](https://github.com/Algunenano)).
* أُصلحت `JSON_EXISTS` و`JSON_VALUE` و`JSON_QUERY` مع إدخال `Dynamic` عندما تحتوي وسائط مسار tuple على عناصر `LowCardinality`، مما يمنع استثناءات `LOGICAL_ERROR`. يغلق [#110345](https://github.com/ClickHouse/ClickHouse/issues/110345). [#109944](https://github.com/ClickHouse/ClickHouse/pull/109944) ([Groene AI](https://github.com/groeneai)).
* أصبحت ملفات `ORC` التالفة التي تعلن شجرة أنواعها عن أعمدة أكثر مما يحتويه تذييل الشريط تفشل في استنتاج المخطط بالخطأ `CANNOT_EXTRACT_TABLE_STRUCTURE` بدلاً من الإنهاء المفاجئ في إصدارات التصحيح أو sanitizer. [#110967](https://github.com/ClickHouse/ClickHouse/pull/110967) ([Groene AI](https://github.com/groeneai)).
* يمكن الآن وسم جداول سجلات النظام التي خضعت للتدوير، مثل `system.metric_log`، بأنها `table_readonly` حتى عندما تتجاوز بياناتها الوصفية `max_query_size`، لذا لم يعد التدوير يسجل `QUERY_IS_TOO_LARGE` ويستمر بصورة طبيعية. [#111703](https://github.com/ClickHouse/ClickHouse/pull/111703) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في Play، أُضيف زر لإغلاق جميع علامات التبويب باستثناء علامة التبويب الحالية. [#111835](https://github.com/ClickHouse/ClickHouse/pull/111835) ([Mikhail Artemenko](https://github.com/Michicosun)). وأُصلح تركيز لوحة المفاتيح بعد تفعيله بمفتاح Enter أو Space عندما يخفي الزر نفسه. [#111899](https://github.com/ClickHouse/ClickHouse/pull/111899) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في Play، يؤدي الضغط باستمرار على `Ctrl` (`Cmd` على Mac) أثناء تمرير المؤشر فوق خلية جدول قيمتها عنوان URL لصورة إلى عرض معاينة للصورة. [#109347](https://github.com/ClickHouse/ClickHouse/pull/109347) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* على Linux، يضيف ClickHouse الآن إدخالاً إلى `system.warnings` عند بدء التشغيل إذا كان `rseq` غير متاح، لأن عدادات ملف التعريف لكل CPU تعود حينها إلى مسار `sched_getcpu` الأبطأ. [#109283](https://github.com/ClickHouse/ClickHouse/pull/109283) ([Azat Khuzhin](https://github.com/azat)).
* لم يعد `COUNT(*)` عبر دالة الجدول `file` يطلق استثناءً عندما يغلّف استنتاج المخطط الأعمدة في `Nullable`. يغلق [#102044](https://github.com/ClickHouse/ClickHouse/issues/102044). [#102509](https://github.com/ClickHouse/ClickHouse/pull/102509) ([Rory Shanks](https://github.com/rorylshanks)).
* تعمل الدوال `L1Normalize` و`L2Normalize` و`LinfNormalize` و`LpNormalize` (وأسماؤها المستعارة) الآن مع وسائط `Array`، وليس فقط وسائط `Tuple`، بما يتسق مع `L2Norm` ودوال المسافة. [#110052](https://github.com/ClickHouse/ClickHouse/pull/110052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُزيل قارئ `ORC` القديم المعتمد على Apache Arrow. يستخدم تنسيق الإدخال `ORC` الآن دائماً مفكك الترميز الأصلي في ClickHouse، والذي كان بالفعل الخيار الافتراضي. إعداد `input_format_orc_use_fast_decoder` متقادم وليس له أي تأثير. [#110074](https://github.com/ClickHouse/ClickHouse/pull/110074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُتيحت إمكانية ضبط الوسائط الشائعة لـ `clickhouse-client` من XML (`<hints/>`, `<highlight/>`, `<echo/>`, `<echo_query_id/>`, `<echo_formatted/>`, `<print-profile-events/>`)، مع الاحتفاظ بقيم إعدادات العميل عند حذف علامات CLI المقابلة ذات القيم الافتراضية، لإعدادات مثل `history_max_entries` و`suggestion_limit` و`progress` و`progress-table` و`enable_progress_table_toggle` و`print-memory-to-stderr` و`chime-threshold-seconds` و`profile-events-delay-ms`. [#110607](https://github.com/ClickHouse/ClickHouse/pull/110607) ([Larry Snizek](https://github.com/larry-cdn77)).
* أُضيف إعداد `analyzer_compatibility_apply_final_to_all_joined_tables` لاستعادة السلوك القديم الذي يجعل `FINAL` على الجدول الواقع في أقصى يسار `JOIN` يُطبَّق أيضًا على الجداول الأخرى المنضمة. يُسجَّل الإعداد في سجل تغييرات الإعدادات، لذا تستعيد `compatibility` تلقائيًا الدلالات القديمة مع الإصدارات السابقة للإصدار 26.6. [#111589](https://github.com/ClickHouse/ClickHouse/pull/111589) ([Nikita Fomichev](https://github.com/fm4v)).
* في Play، أصبح زر `+` (علامة تبويب جديدة) يُعرض بالارتفاع الصحيح في Firefox. [#109524](https://github.com/ClickHouse/ClickHouse/pull/109524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح الاستعلام الفرعي المتداخل والمترابط `EXISTS` الذي يشير إلى عمود من نطاق يتجاوز استعلامه الخارجي المباشر يفشل بالخطأ `NOT_IMPLEMENTED` بدلًا من الاستثناء الداخلي `NOT_FOUND_COLUMN_IN_BLOCK`. [#110310](https://github.com/ClickHouse/ClickHouse/pull/110310) ([Groene AI](https://github.com/groeneai)).
* لم يعد تنسيق استعلام `EXECUTE AS` بعد إعادة كتابة AST يطرح استثناءً من جهة العميل، مثلًا في AST fuzzer. [#111725](https://github.com/ClickHouse/ClickHouse/pull/111725) ([Groene AI](https://github.com/groeneai)).
* تحسين دعم استعلام `DESCRIBE` للعروض ذات المعلمات، ودعم العروض ذات المعلمات في التعبيرات القياسية في المحلل الجديد. يغلق [#66307](https://github.com/ClickHouse/ClickHouse/issues/66307). يغلق [#69598](https://github.com/ClickHouse/ClickHouse/issues/69598). [#68978](https://github.com/ClickHouse/ClickHouse/pull/68978) ([Dmitry Novik](https://github.com/novikd)).
* أصبحت تعبيرات `CREATE INDEX` و`CREATE HYPOTHETICAL INDEX` غير الصالحة التي لا يمكنها اجتياز دورة تنسيق-تحليل-تنسيق تُبلغ عن استثناء بدلًا من التسبب في خطأ منطقي `Inconsistent AST formatting` في إصدارات التصحيح والإصدارات المبنية باستخدام أدوات sanitizer. [#109175](https://github.com/ClickHouse/ClickHouse/pull/109175) ([Groene AI](https://github.com/groeneai)).
* واجهة الويب: إصلاح بقاء حقل اسم المستخدم/كلمة المرور باللون الأحمر حتى عند صحة بيانات الاعتماد وإمكانية الوصول إلى الخادم، وإعادة التحقق من بيانات الاعتماد بعد تعديل الاتصال لكي تتحول القيمة الصحيحة إلى اللون الأخضر. [#109414](https://github.com/ClickHouse/ClickHouse/pull/109414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف إعدادا `text_index_max_processed_tokens_before_flush` و`text_index_max_memory_usage_before_flush` للتحكم في وقت قيام منشئي فهارس النص بتفريغ المقاطع المؤقتة. [#111573](https://github.com/ClickHouse/ClickHouse/pull/111573) ([Rory Shanks](https://github.com/rorylshanks)).
* أُضيف إعداد `system_cache_extensions` للتحكم في امتدادات الملفات التي تُخزَّن في ذاكرة التخزين المؤقت للنظام عند تمكين `use_split_cache`. [#111575](https://github.com/ClickHouse/ClickHouse/pull/111575) ([Kirill](https://github.com/kirillgarbar)).
* تعرض رسائل الخطأ في الإصدارات المبنية على musl الآن نص `strerror` المقروء بشريًا بدلًا من قيمة فارغة أو رقمية مثل `strerror: 0`. [#111620](https://github.com/ClickHouse/ClickHouse/pull/111620) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبح نوع تخزين المجموعات المُسمّاة الفعّال متاحًا الآن باسم `named_collections_storage.type` في `system.server_settings` ومن خلال `getServerSetting('named_collections_storage_type')`. [#111806](https://github.com/ClickHouse/ClickHouse/pull/111806) ([Pablo Marcos](https://github.com/pamarcos)).
* يخفّف التحقق المفرط في صرامته من حجم التبديل في `ColumnReplicated::permute` بحيث يتوافق مع عقد `IColumn::permute` العام، الذي يسمح بأن يكون التبديل أقصر من العمود عند تعيين حد. [#109897](https://github.com/ClickHouse/ClickHouse/pull/109897) ([Groene AI](https://github.com/groeneai)).
* يحسّن تخطيط استعلامات البث عبر توحيد خطة القراءة الداخلية للبث، ما يتجنب التحسين المزدوج لقراءات فهرس النص المباشرة. [#111821](https://github.com/ClickHouse/ClickHouse/pull/111821) ([Mikhail Artemenko](https://github.com/Michicosun)).
* واجهة الويب: أصبحت المسافة بين زري `Run one` و`Run all` مساوية للهامش الأيسر قبل الزر الأول. [#111988](https://github.com/ClickHouse/ClickHouse/pull/111988) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد جدولة حجز الذاكرة (تجريبية) تُخلي تخصيصًا عندما يوفّر تحرير ذاكرة معلّق المساحة اللازمة لزيادة حجز تتجاوز الحد؛ إذ ينتظر قرار الإخلاء الآن تطبيق التخفيضات قيد الإرسال، ما يجنب إنهاء الاستعلامات دون داعٍ تحت ضغط الذاكرة. [#112299](https://github.com/ClickHouse/ClickHouse/pull/112299) ([Sergei Trifonov](https://github.com/serxa)).
* يتطلب Iceberg v2 وجود `sequence_number` في ملفات البيان، لكن محركات أخرى مثل BigQuery يمكنها كتابة ملفات بيان بدونه. ويمكن لـ ClickHouse الآن قراءة هذه الجداول. [#112431](https://github.com/ClickHouse/ClickHouse/pull/112431) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إظهار تحذير عند غياب الإحصاءات اللازمة لإعادة ترتيب الربط. [#107666](https://github.com/ClickHouse/ClickHouse/pull/107666) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أُضيفت أعمدة للتوافق مع MySQL إلى عروض `INFORMATION_SCHEMA`: `SCHEMATA.DEFAULT_COLLATION_NAME` و`DEFAULT_ENCRYPTION`؛ و`TABLES.ENGINE` وأعمدة MySQL ذات الصلة؛ و`COLUMNS.COLUMN_KEY` و`PRIVILEGES` و`GENERATION_EXPRESSION` و`SRS_ID`. يتيح ذلك للعملاء المتوافقين مع MySQL تشغيل استعلامات استبطان الكتالوج دون مواجهة `UNKNOWN_IDENTIFIER`. [#109351](https://github.com/ClickHouse/ClickHouse/pull/109351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد يُبلّغ عن المرجع غير المؤهل إلى مفتاح `INNER JOIN` المساوى في شرط `ON` (مثلًا `SELECT id FROM a INNER JOIN b ON a.id = b.id`) باعتباره معرّفًا ملتبسًا، إذ يُضمن أن يحمل الطرفان القيمة نفسها. [#109366](https://github.com/ClickHouse/ClickHouse/pull/109366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إرجاع رمز HTTP `403 Forbidden` (بدلًا من `500 Internal Server Error`) لاستثناءات `ACCESS_DENIED` عبر واجهة HTTP. [#111043](https://github.com/ClickHouse/ClickHouse/pull/111043) ([Schum](https://github.com/Schum-io)).
* كتابة SST لفهرس UNIQUE KEY مباشرةً إلى تخزين الجزء بدلًا من وضعه مؤقتًا في ملف محلي، ما يزيل الاعتماد على وحدة تخزين مؤقتة محلية ويتجنب إنشاء نسخة إضافية. [#111189](https://github.com/ClickHouse/ClickHouse/pull/111189) ([johnjing](https://github.com/JingYanchao)).
* تقبل `UTMToGeo` الآن حرف نطاق خط العرض في MGRS الذي تُرجعه `geoToUTM` كوسيط رابع لها، بالإضافة إلى علامة نصف الكرة الأرضية الصحيحة، بحيث يمكن تمرير نتيجة `geoToUTM` مباشرةً إلى `UTMToGeo` وإعادتها دون فقدان البيانات. [#111521](https://github.com/ClickHouse/ClickHouse/pull/111521) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` ("تم إنشاء فهرس Min-Max على مستوى الجزء من مجموعة أعمدة غير متوقعة") كان يمكن أن يؤدي إلى إيقاف عملية دمج في الخلفية في إصدارات debug/sanitizer بعد خفض `part_minmax_index_columns` (مثلًا من `with_block_number_offset` إلى `partition_key_only`). [#111511](https://github.com/ClickHouse/ClickHouse/pull/111511) ([Groene AI](https://github.com/groeneai)).
* يُصلح نقص الإبلاغ في `ProfileEvents['JoinResultRowCount']` عن حجم نتيجة `JOIN` التي تُرحَّل إلى القرص. كانت الصفوف الصادرة من الحاويات المؤجَّلة تُحتسب فقط ضمن `JoinDelayedJoinedTransformRowCount` ولا تُضاف إلى الإجمالي. كانت نتائج الاستعلام صحيحة دائمًا؛ وكان الخطأ مقتصرًا على حدث ملف التعريف. [#112673](https://github.com/ClickHouse/ClickHouse/pull/112673) ([Groene AI](https://github.com/groeneai)).
* أصبح `SYSTEM DISABLE FAILPOINT` يرفض اسم نقطة فشل غير موجود ويطرح `BAD_ARGUMENTS`، كما كان `SYSTEM ENABLE FAILPOINT` يفعل بالفعل. سابقًا، كان الاسم المكتوب خطأً يُبلّغ عن النجاح مع إبقاء نقطة الفشل المقصودة مفعّلة، دون أي إشارة إلى عدم تعطيل أي شيء. [#112680](https://github.com/ClickHouse/ClickHouse/pull/112680) ([Groene AI](https://github.com/groeneai)).
* أُضيف عمود جديد `skipping_indices_types` إلى جدول `system.tables`. ويحتوي على الأنواع المميزة لفهارس تخطي البيانات المعرّفة لكل جدول. [#106388](https://github.com/ClickHouse/ClickHouse/pull/106388) ([Anton Popov](https://github.com/CurtizJ)).
* أُضيف فحص اتساق للتأكد من أن الاستعلام الموزع يحمل دائمًا إصدار عميل معروفًا، بحيث يُطرح خطأ منطقي بدلًا من تمرير إصدار صفري بصمت إلى الأجزاء البعيدة. أصبحت الاستعلامات التي يبدأها الخادم (عمليات تفريغ الخلفية، والمستهلكات المتدفقة، وإعادة تحميل القواميس، وعمليات تفريغ الإدراج غير المتزامن) تُبلّغ الآن عن إصدار الخادم نفسه باعتباره إصدار المُبادِر. [#109408](https://github.com/ClickHouse/ClickHouse/pull/109408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* خُفّض مستوى تفصيل تشخيصات البحث الثنائي عن المفتاح الأساسي لكل جزء في `MergeTree` من تسجيل التتبع إلى تسجيل الاختبارات. [#110324](https://github.com/ClickHouse/ClickHouse/pull/110324) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح مسار نموذج تقسيم Hive لجداول تخزين الكائنات (مثل `S3`) يُحدَّد عند أول استخدام للجدول بدلًا من `CREATE`/`ATTACH`، لذا لم تعد نقطة نهاية يتعذر الوصول إليها تمنع إنشاء الجدول وبدء تشغيل الخادم. [#111842](https://github.com/ClickHouse/ClickHouse/pull/111842) ([Nikolay Degterinsky](https://github.com/evillique)).
* أُصلح `ReadBufferFromPocoSocketBase::setReceiveTimeout` الذي كان يتعامل مع وسيطه بوصفه ثوانٍ بدلًا من ميكروثوانٍ، كما أُصلحت البُنى المهيأة باستخدام `-DENABLE_LIBFIU=OFF` التي لم تكن تُجمَّع. في البُنى التي لا تتضمن libfiu، أصبحت `SYSTEM ENABLE FAILPOINT` والأوامر ذات الصلة تطرح استثناءً بدلًا من عدم تنفيذ أي إجراء بصمت. [#112767](https://github.com/ClickHouse/ClickHouse/pull/112767) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُصلح `clickhouse-local` نقص الإبلاغ عن `rows_read` وعدادات التقدم الأخرى في `statistics` لمخرجات `JSON`/`XML` وفي شريط التقدم: إذ كانت زيادة التقدم التي تصل أثناء تجميع حزمة التقدم تُهمل. [#112958](https://github.com/ClickHouse/ClickHouse/pull/112958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح الخطأ المُبلّغ عنه عندما يحتاج `INSERT` غير متزامن إلى جدول `Distributed` إلى دليل قائمة انتظار يتجاوز طول اسمه حد نظام الملفات البالغ 255 بايتًا (ويمكن الوصول إلى هذه الحالة باستخدام `use_compact_format_in_distributed_parts_names = 0`). كان الخطأ `LOGICAL_ERROR` لجزء ذي `internal_replication`، و`Code: 1001. std::exception` دون إسناد في الحالات الأخرى؛ ويُبلّغ كلاهما الآن عن `ARGUMENT_OUT_OF_BOUND` مع ذكر الجدول والعنقود والحد. [#113083](https://github.com/ClickHouse/ClickHouse/pull/113083) ([Groene AI](https://github.com/groeneai)).
* ارفض حدود حصة `execution_time` الخارجة عن النطاق باستخدام `BAD_ARGUMENTS` بدلًا من الاعتماد على سلوك غير معرّف عند تحويلها إلى نانوثوانٍ داخلية. [#113178](https://github.com/ClickHouse/ClickHouse/pull/113178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تدعم النسخ المتماثلة المتوازية التلقائية الآن استعلامات `JOIN`. [#106073](https://github.com/ClickHouse/ClickHouse/pull/106073) ([Nikita Taranov](https://github.com/nickitat)).
* دعم مصادقة رمز التحديث لكتالوج `OneLake`. [#110413](https://github.com/ClickHouse/ClickHouse/pull/110413) ([alesapin](https://github.com/alesapin)).
* أصبح إعداد Keeper `write_snapshot_version` قابلاً لإعادة التحميل أثناء التشغيل. [#112150](https://github.com/ClickHouse/ClickHouse/pull/112150) ([alesapin](https://github.com/alesapin)).
* تنفيذ `SYSTEM DROP FILESYSTEM CACHE` بالتوازي. [#112532](https://github.com/ClickHouse/ClickHouse/pull/112532) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أصبح التداخل غير المدعوم لطريقة عرض `SQL SECURITY DEFINER` أو `SQL SECURITY NONE` فوق `s3Cluster` أو `urlCluster` أو `fileCluster` يُرفض بخطأ استعلام عادي بدلاً من ظهور `LOGICAL_ERROR` في إصدارات التصحيح والبناء باستخدام sanitizer. [#113371](https://github.com/ClickHouse/ClickHouse/pull/113371) ([Groene AI](https://github.com/groeneai)).
* أُضيف الإعداد `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) ([Dmitry Novik](https://github.com/novikd)).
* أُعيدت تسمية `allow_experimental_delta_kernel_rs` إلى `allow_delta_kernel_rs`. ويُحتفظ بالاسم القديم كاسم مستعار. [#113476](https://github.com/ClickHouse/ClickHouse/pull/113476) ([Kseniia Sumarokova](https://github.com/kssenii)).
* عند تمرير مجموعة مسماة غير موجودة إلى دوال الجدول `remote`/`remoteSecure` أو محركات الجدول `Remote`/`RemoteSecure` مع تجاوز `key = value`، يُبلغ ClickHouse الآن عن المجموعة المسماة غير الموجودة بدلاً من إعادة تحليل الاستدعاء موضعيًا والإبلاغ عن خطأ غير ذي صلة. [#113510](https://github.com/ClickHouse/ClickHouse/pull/113510) ([Groene AI](https://github.com/groeneai)).
* لم يعد بدء shell مع إكمال `clickhouse-bootstrap` يطبع متغيرات البيئة عند تحميل الإكمال من خطاف إكمال المستخدم. [#113694](https://github.com/ClickHouse/ClickHouse/pull/113694) ([Azat Khuzhin](https://github.com/azat)).
* أُضيفت القيمة `sainte_lague` إلى الإعداد `shared_merge_tree_merge_coordinator_distribution_algorithm`، وأصبحت القيمة الافتراضية بدلاً من `water_filling`. [#113442](https://github.com/ClickHouse/ClickHouse/pull/113442) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أُضيف الإعداد `filesystem_cache_wait_for_concurrent_download_timeout_milliseconds` لتحديد أقصى مدة انتظار لقراءةٍ ما ريثما يُنزّل استعلام آخر من ذاكرة التخزين المؤقت لنظام الملفات جزءًا واحدًا (نحو 1 MiB)، وليس شريحة ملف كاملة. [#113322](https://github.com/ClickHouse/ClickHouse/pull/113322) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أُضيف إعداد Keeper `min_time_between_fsyncs_ms` (قيمته الافتراضية `5` مللي ثانية)، الذي يجمع عمليات الإلحاق بسجل التغييرات التي تصل بعد وقت قصير من التفريغ السابق بدلاً من بدء عملية تفريغ أخرى فورًا. [#113749](https://github.com/ClickHouse/ClickHouse/pull/113749) ([Michael Kolupaev](https://github.com/al13n321)).
* تُصدر جداول Kafka ذات الإزاحات المخزنة في Keeper (`kafka_keeper_path`) الآن الخطأ `ABORTED` بدلاً من `LOGICAL_ERROR` عندما يصبح الجدول غير نشط بعد فقدان جلسة Keeper، مثلًا أثناء قراءة مباشرة أو بث materialized-view. [#113913](https://github.com/ClickHouse/ClickHouse/pull/113913) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح عدم اتساق تنسيق AST في `viewIfPermitted`: لم يعد نموذج دالة الجدول ينسّق عاملًا مثل `not` بشكل غير صحيح في فرع `ELSE`، ولم يعد نموذج التعبير `viewIfPermitted(...)` يتلقى `ELSE` زائدًا. [#113652](https://github.com/ClickHouse/ClickHouse/pull/113652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ زائف `Failed to drop temporary table after refresh. Table ... is left behind and requires manual cleanup.` كان يُسجَّل عند إلغاء تحديث عرض مادي قابل للتحديث (مثلًا عند إيقاف الخادم) مع تمكين `database_atomic_wait_for_drop_and_detach_synchronously`. كان الجدول المؤقت قد حُذف بالفعل، لذا لم تكن هناك حاجة إلى تنظيف يدوي. [#113957](https://github.com/ClickHouse/ClickHouse/pull/113957) ([Groene AI](https://github.com/groeneai)).
* يُطلق الخادم الآن الخطأ `UNKNOWN_ELEMENT_IN_CONFIG` عند وجود خيارات تهيئة غير معروفة في تهيئة الخادم، مما يساعد على اكتشاف الأخطاء المطبعية وخيارات التهيئة الخاطئة مبكرًا. يمكن تعطيل هذا الفحص باستخدام `<skip_check_for_incorrect_settings>`. [#100332](https://github.com/ClickHouse/ClickHouse/pull/100332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب، لم يعد سجل المتصفح وعنوان URL يُحدَّثان عند كل ضغطة مفتاح؛ بل يُسجَّلان عند تنفيذ استعلام بنجاح أو عند تغيير علامة التبويب. [#113596](https://github.com/ClickHouse/ClickHouse/pull/113596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُبلّغ ClickHouse الآن عن تجاوز سعة المكدس بدلًا من التوقف بصمت: تعمل معالجات الإشارات الفادحة على مكدس إشارات بديل، لذا تُنتج `SIGSEGV` و`SIGABRT` و`SIGILL` و`SIGBUS` و`SIGSYS` و`SIGFPE` و`SIGTRAP` تتبع مكدس حتى عندما يكون الخيط المتسبب في الخطأ قد استنفد مكدسه. [#113927](https://github.com/ClickHouse/ClickHouse/pull/113927) ([Groene AI](https://github.com/groeneai)).
* أصبح `ALTER TABLE ... MODIFY COLUMN <col> Tuple(...)` على `Tuple` مُسمّى عمليةً للبيانات الوصفية فقط عند إضافة حقول فرعية فقط، وبسرعة مماثلة لـ `ADD COLUMN` على المستوى الأعلى. يتطلب تفعيله ضبط `SET `allow\_metadata\_only\_named\_tuple\_alter` = 1`. [#107305](https://github.com/ClickHouse/ClickHouse/pull/107305) ([Amos Bird](https://github.com/amosbird)).
* أُضيف الإعداد `input_format_json_max_object_size` للحد من حجم كائن JSON أثناء التحليل. يُغلق [#106704](https://github.com/ClickHouse/ClickHouse/issues/106704). [#107669](https://github.com/ClickHouse/ClickHouse/pull/107669) ([Pavel Kruglov](https://github.com/Avogar)).
* تجنب تسجيل `sasl.kerberos.kinit.cmd configuration parameter is ignored.` لتهيئات محرك `Kafka` التي لا تستخدم مصادقة Kerberos عبر keytab. [#108235](https://github.com/ClickHouse/ClickHouse/pull/108235) ([Ivan Shelestov](https://github.com/Shelestov7)).
* أُضيف system.s3(azure)\_queue\_metadata. [#108522](https://github.com/ClickHouse/ClickHouse/pull/108522) ([Kseniia Sumarokova](https://github.com/kssenii)).
* سجّل إخفاقات الاتصال المقبولة بقواعد بيانات MySQL/PostgreSQL البعيدة كتحذيرات بدلًا من أخطاء. [#109472](https://github.com/ClickHouse/ClickHouse/pull/109472) ([Shaohua Wang](https://github.com/tiandiwonder)).
* عندما لا يكون أي من `port` أو `secure` محددًا، يحاول `clickhouse-client` المنفذين الافتراضي 9000 والآمن 9440 بالتزامن ويستخدم أول منفذ يستجيب، لذا يتصل `clickhouse-client --host play.clickhouse.com --user play` عبر TLS دون `--secure`، رغم أن المنفذ غير الآمن لذلك الخادم يُسقط الاتصالات بصمت بدلًا من رفضها. إذا اتضح أن المنفذ المستجيب غير قابل للاستخدام — كمنفذ آمن بشهادة غير موثوقة مثلًا — يعود العميل إلى المنفذ الآخر، لأن البروتوكول لم يُطلب صراحةً. [#110130](https://github.com/ClickHouse/ClickHouse/pull/110130) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يؤدي النقر على شعار السحابة في Playground الآن إلى فتح موقع ClickHouse في علامة تبويب جديدة، كي لا تفقد تقدمك أثناء تشغيل الاستعلامات. [#110422](https://github.com/ClickHouse/ClickHouse/pull/110422) ([William Hatcher](https://github.com/williamhatcher)).
* أُضيف المعدِّل STREAM BOUNDED، الذي يقرأ اللقطة الأولى فقط من الاستعلام المتدفق ثم ينهي التنفيذ بدلاً من الاشتراك في التحديثات. [#110653](https://github.com/ClickHouse/ClickHouse/pull/110653) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* أُضيفت معلومات عن الحالة الداخلية لعمليات الربط إلى `EXPLAIN ANALYZE`. [#110892](https://github.com/ClickHouse/ClickHouse/pull/110892) ([Kirill Kopnev](https://github.com/Fgrtue)).
* عند فشل تأكيد إعادة الدخول في `RWLockImpl::getLock()` ‏(`RWLock is already locked in exclusive mode` / `Cannot acquire exclusive lock while RWLock is already locked`)، تعرض رسالة الخطأ الآن معرّفات `query_id` الأخرى التي تمتلك القفل حالياً، وعدد الأقفال التي يحتفظ بها `query_id` الطالب بالفعل، لتسهيل تشخيص أخطاء ترتيب الأقفال هذه. [#110971](https://github.com/ClickHouse/ClickHouse/pull/110971) ([Groene AI](https://github.com/groeneai)).
* يسجل ClickHouse Keeper الآن حدث "Client has not sent any data" بمستوى `Information` بدلاً من `Warning`، بما يتوافق مع معالج TCP في الخادم. يتجنب هذا التحذيرات الزائفة الناتجة عن مجسات التحقق من سلامة TCP (مثل مجسات الحيوية `tcpSocket` في Kubernetes) التي تفتح اتصالاً بمنفذ عميل Keeper ثم تغلقه فوراً. [#111217](https://github.com/ClickHouse/ClickHouse/pull/111217) ([Zeynel](https://github.com/ZeynelKoca)).
* يحتفظ `MaterializedPostgreSQL` الآن بقيم `TOAST` غير المتغيرة في PostgreSQL أثناء التحديثات بدلاً من استبدالها بالقيم الافتراضية. [#111552](https://github.com/ClickHouse/ClickHouse/pull/111552) ([OrpheusAgent](https://github.com/OrpheusAgent)).
* keeper: رُفعت القيمة الافتراضية لـ `write_snapshot_version` إلى 8، وأصبح بالإمكان إعادة تحميلها أثناء التشغيل. [#111715](https://github.com/ClickHouse/ClickHouse/pull/111715) ([Michael Kolupaev](https://github.com/al13n321)).
* أُضيف المعدِّل STREAM UNORDERED: يتخطى الفرز حسب ترتيب الالتزام لكل لقطة. [#111794](https://github.com/ClickHouse/ClickHouse/pull/111794) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* أُضيف إعداد MergeTree جديد باسم `text_index_version` يتحكم في إصدار التنسيق على القرص لفهارس النص: `v0_initial` أو `v1_with_codec` أو `v2_with_positions`. أثناء الترقية المتدرجة أو قبل الرجوع إلى إصدار أقدم، اضبطه على إصدار أقدم لكي تستمر الخوادم الأحدث في كتابة أجزاء فهرس النص بتنسيق لا تزال الخوادم الأقدم قادرة على قراءته؛ ويضبطه إعداد التوافق تلقائياً. [#111803](https://github.com/ClickHouse/ClickHouse/pull/111803) ([Anton Popov](https://github.com/CurtizJ)).
* ترفض دوال النص المدعومة بالذكاء الاصطناعي (`aiGenerate` و`aiClassify` و`aiExtract` و`aiTranslate`) الآن استجابات المزوّد المقتطعة أو غير المكتملة بأي شكل آخر (مثل عندما يصل النموذج إلى حد `max_tokens`) بدلاً من إرجاع مخرجات جزئية بصمت. يتبع السلوك الإعداد `ai_function_throw_on_error`. [#111830](https://github.com/ClickHouse/ClickHouse/pull/111830) ([George Larionov](https://github.com/george-larionov)).
* حُسِّنت `L2DistanceTransposedQuantized` و`cosineDistanceTransposedQuantized` و`dotProductTransposedQuantized` منخفضة الدقة عبر إعادة بناء رموز `QBit(Int8)` ذات `p < 8` باستخدام مراكز بادئة ذات متوسط شرطي غاوسي. تظل الدقة الكاملة (`p = 8`) مطابقة على مستوى البت؛ وقد تتغير المسافات التقريبية منخفضة الدقة، بينما تعتمد مكاسب الاستدعاء وزمن الاستجابة على عبء العمل. [#111867](https://github.com/ClickHouse/ClickHouse/pull/111867) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* تم إصلاح عدم تعبئة *ذاكرة التخزين المؤقت لشروط الاستعلام* للحبيبات التي استُبعدت بواسطة أي اقتران غير الأخير في عبارة `WHERE` التي تحتوي على عدة شروط `AND`. [#112083](https://github.com/ClickHouse/ClickHouse/pull/112083) ([Shankar Iyer](https://github.com/shankar-iyer)).
* أُضيف إعداد جديد `input_format_json_max_string_column_growth_step` يقيّد نمو مخازن String الداخلية، وفق قوى العدد اثنين، عند إنشاء عمود JSON، مما يقلل ذروة استخدام الذاكرة عند إدراج مستندات JSON كبيرة. ويكون معطّلًا افتراضيًا. [#112159](https://github.com/ClickHouse/ClickHouse/pull/112159) ([Pavel Kruglov](https://github.com/Avogar)).
* خُفِّضت ذروة استخدام الذاكرة عند كتابة أعمدة JSON التي تستخدم تسلسل البيانات المشتركة القائم على buckets (`map_with_buckets` والمتقدم)، وذلك بتقسيم البيانات المشتركة إلى buckets واحدًا تلو الآخر أثناء الكتابة بدلًا من مَوضعة جميع buckets في وقت واحد. يفيد ذلك خصوصًا أعمدة Array(JSON): ففي JSON القياسي تُقسَّم البيانات المشتركة لكل granule (بحد أقصى index\_granularity\_bytes)، لذا يكون التوفير محدودًا، بينما قد يحتوي granule واحد من Array(JSON) على العديد من الصفوف المتداخلة، وبالتالي على كمية كبيرة من البيانات المشتركة، حيث يخفض التقسيم bucket تلو الآخر ذروة استخدام الذاكرة بشكل ملحوظ. [#112172](https://github.com/ClickHouse/ClickHouse/pull/112172) ([Pavel Kruglov](https://github.com/Avogar)).
* تتضمن وثائق الإعداد في `system.documentation` — التي تعرضها صفحة `/docs` المضمنة والأمر `help` — الآن سجل تغييرات قيمته الافتراضية: الإصدار الذي أُضيف فيه الإعداد، وكل تغيير لاحق لقيمته الافتراضية، مع القيمة السابقة والقيمة الجديدة وسبب التغيير. [#112177](https://github.com/ClickHouse/ClickHouse/pull/112177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يعمل `EXPLAIN ANALYZE` الآن مع الاستعلامات المتدفقة. [#112445](https://github.com/ClickHouse/ClickHouse/pull/112445) ([Kirill Kopnev](https://github.com/Fgrtue)).
* يمكن الآن كتابة مُعدِّلات تعريف العمود — `COMMENT` و`CODEC` و`STATISTICS` و`TTL` و`COLLATE` و`PRIMARY KEY` و`SETTINGS` لكل عمود — بأي ترتيب في `CREATE TABLE`، وبحد أقصى مرة واحدة لكل منها. سابقًا، لم يكن يُقبل سوى ترتيب ثابت واحد، وكان مثلًا `x UInt64 CODEC(ZSTD) COMMENT 'text'` خطأً نحويًا. في `ALTER TABLE ... ADD COLUMN` / `MODIFY COLUMN`، يمكن أيضًا كتابة المُعدِّلات المدعومة — `COMMENT` و`CODEC` و`STATISTICS` و`TTL` و`SETTINGS` لكل عمود — بأي ترتيب؛ وتُطبَّق الآن `SETTINGS` لكل عمود في `ADD COLUMN` و`STATISTICS` المُعلنة في `ADD COLUMN` / `MODIFY COLUMN` بدلًا من إسقاطها بصمت، كما أن `COLLATE` و`PRIMARY KEY` في أوامر `ALTER` هذه يطلقان الآن استثناءً بدلًا من تجاهلهما بصمت. [#112788](https://github.com/ClickHouse/ClickHouse/pull/112788) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تتطلب طريقة القراءة `pread_threadpool` استدعاء النظام `preadv2` مع العلامة `RWF_NOWAIT` لقراءة البيانات الموجودة أصلًا في ذاكرة التخزين المؤقت للصفحات دون إحالة القراءة إلى thread pool. يُتحقق الآن عند بدء التشغيل مما إذا كان يمكن استخدام استدعاء النظام هذا، وإذا تعذّر ذلك — لأن نواة Linux أقدم من 5.11، أو لأن ملف تعريف `seccomp` لبيئة تشغيل حاويات يرفض استدعاء النظام — تُغيَّر القيمة الافتراضية لـ`local_filesystem_read_method` إلى `pread`، ويُبلّغ عن السبب في سجل الخادم. سابقًا، كانت كل قراءة تتحمل تكلفة إحالتها إلى thread pool على هذه الأنظمة، وكان ملف تعريف `seccomp` الذي يُرجع `EPERM` يتسبب في فشل الاستعلامات بالخطأ `CANNOT_READ_FROM_FILE_DESCRIPTOR`. [#112945](https://github.com/ClickHouse/ClickHouse/pull/112945) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أبلغ عن بيانات تعريف thrift غير الصحيحة الخاصة بـ Parquet باعتبارها INCORRECT\_DATA. [#113311](https://github.com/ClickHouse/ClickHouse/pull/113311) ([Groene AI](https://github.com/groeneai)).
* أُصلح تعامل codec ‏GCD مع القيم الموقعة ذات العرض الثابت والأرقام السالبة. سابقًا، كان يحسب المقسوم عليه من القيم الموقعة مباشرةً، ما قد يفوّت القاسم المشترك ويقلل كفاءة الضغط بدرجة كبيرة للأعمدة الصحيحة والعشرية الموقعة. يحسب الآن المقسوم عليه من القيم المطلقة للأنواع الموقعة، مع الحفاظ على السلوك الحالي للأنواع غير الموقعة وفك الضغط. [#113798](https://github.com/ClickHouse/ClickHouse/pull/113798) ([Kirill Shcherbatov](https://github.com/kshcherbatov)).
* أضف الإعدادات `enable_alp_codec` و`enable_sz3_codec` و`enable_zxc_codec` و`enable_quantized_codec` لتمكين كل codec ضغط تجريبي على حدة. [#113824](https://github.com/ClickHouse/ClickHouse/pull/113824) ([Raufs Dunamalijevs](https://github.com/rienath)).
* اسمح باستخدام `ALTER TABLE ... MODIFY COLUMN` لعمود تُستخدم أعمدته الفرعية في المفتاح الأساسي أو مفتاح التقسيم، ما دامت الأعمدة الفرعية المستخدمة في المفتاح تحتفظ بنوع متوافق على القرص. سابقًا، كان أي ALTER من هذا النوع محظورًا. [#113862](https://github.com/ClickHouse/ClickHouse/pull/113862) ([Pavel Kruglov](https://github.com/Avogar)).
* أضف لوحة المعلومات `Filesystem cache` إلى `system.dashboards`. [#113884](https://github.com/ClickHouse/ClickHouse/pull/113884) ([Kseniia Sumarokova](https://github.com/kssenii)).
* اجعل سجلات cache لكل إعادة تعبئة للمخزن المؤقت خاضعة للإعداد `filesystem_cache_verbose_logging`. [#113885](https://github.com/ClickHouse/ClickHouse/pull/113885) ([Groene AI](https://github.com/groeneai)).
* عندما يختلف النوع المعلن للعمود عن بياناته أثناء قراءة `MergeTree` (بسبب مصادر بيانات بأنواع مختلطة، مثلًا بعد `ALTER TABLE ... MODIFY COLUMN` لم تكتمل عمليته بعد)، يُبلغ الخادم الآن عن استثناء واضح يحدد العمود والبنيتين، بدلًا من إجراء تحويل نوع غير متحقق منه: كانت إصدارات التصحيح وsanitizer تتوقف سابقًا برسالة `Bad cast from type A to B` مقتضبة لا تذكر أي عمود، بينما كانت إصدارات الإنتاج تتعامل بصمت مع ذاكرة غير متطابقة. [#114087](https://github.com/ClickHouse/ClickHouse/pull/114087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تعمل الآن دالة نافذة مع `PARTITION BY` ضمن `make_distributed_plan`. وعندما يسمح شكل الخطة بذلك، تُنفَّذ دالة النافذة بالتوازي عبر حاويات تتلقى كل منها أقسامًا كاملة. [#114111](https://github.com/ClickHouse/ClickHouse/pull/114111) ([Vighnesh Pathrikar](https://github.com/VighneshPath)).
* واجهة الويب: أصبح مؤشر التحميل على شكل ساعة رملية في لوحة قواعد البيانات متحركًا مجددًا. [#114187](https://github.com/ClickHouse/ClickHouse/pull/114187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تُستخدم الآن دالة hash ذات 64 بت لأساليب aggregation الخارجية Nullable ثابتة العرض، لتجنب مشكلة التصادمات عند aggregation ذات cardinality مرتفعة جدًا. [#114210](https://github.com/ClickHouse/ClickHouse/pull/114210) ([Nikita Taranov](https://github.com/nickitat)).
* تستنتج جداول `Distributed` و`Buffer` التي لا تحدد قائمة أعمدة الآن البنية دائمًا وفقًا لـ access rights الخاصة بالمستخدم الذي أنشأها. [#114211](https://github.com/ClickHouse/ClickHouse/pull/114211) ([Pedro Ferreira](https://github.com/PedroTadim)).
* يعيد `x IN (subquery)` على عمود `LowCardinality` الآن `LowCardinality(UInt8)` — وهو النوع نفسه الذي يعيده `x IN (literal list)`. سابقًا، كان الشكلان يعيدان نوعين مختلفين، وكانت الخطط الموزعة التي تتضمن `IN` من هذا النوع تحتاج إلى حالة خاصة عند التحقق من نوع الخطة. [#114229](https://github.com/ClickHouse/ClickHouse/pull/114229) ([Alexander Gololobov](https://github.com/davenger)).
* تم تمكين `ie_join` افتراضيًا: أصبحت القيمة الافتراضية لـ `join_algorithm` هي `direct,parallel_hash,hash,ie_join`. يُنفَّذ الآن `JOIN` الذي لا يحتوي قسم `ON` فيه إلا على شروط عدم مساواة (مقارنتان باستخدام `<` أو `<=` أو `>` أو `>=` بين تعبيرات الجداول الموصولة) باستخدام خوارزمية IEJoin القائمة على الفرز بدلًا من `CROSS JOIN` مع عامل تصفية، كما أصبحت عمليات الربط `LEFT`/`RIGHT`/`FULL`/`SEMI`/`ANTI` بهذه الشروط مدعومة. وبما أن `ie_join` يأتي أخيرًا في القائمة، فلا يُستخدم إلا عندما لا تنطبق الخوارزميات الأخرى. [#114327](https://github.com/ClickHouse/ClickHouse/pull/114327) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح المخططات في واجهة الويب التي كانت تعرض بيانات نقطة متناظرة في تلميح التمرير لنتيجة مرتبة حسب `x` ترتيبًا تنازليًا. يمكن الآن رسم الأعمدة `Date` و`Date32` و`DateTime` و`DateTime64` بيانيًا؛ إذ كانت طوابع Unix الزمنية الصحيحة فقط مدعومة سابقًا. تُعرض التواريخ على المحاور وفي التلميحات بتنسيق ISO 8601، وكذلك الكميات ذات اللاحقات `K`/`M`/`G`/...، كما في لوحة المعلومات المتقدمة. [#114349](https://github.com/ClickHouse/ClickHouse/pull/114349) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم تحليل الأعداد الصحيحة التي تتجاوز نطاق 64 بت في نوع البيانات `JSON` و`JSONExtract` و`isValidJSON`. تُقرأ هذه القيم في أنواع أعداد صحيحة واسعة مثل `Int128`/`UInt256` بدلًا من رفض المستند بأكمله. [#114379](https://github.com/ClickHouse/ClickHouse/pull/114379) ([Pavel Kruglov](https://github.com/Avogar)).
* أصبحت جداول QueryRunner تبدأ خيوط التنفيذ العاملة عند الطلب وتحررها عند خمولها، بدلًا من شغل خيوط التنفيذ طوال عمر الجدول. [#114522](https://github.com/ClickHouse/ClickHouse/pull/114522) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيفت قابلية الرصد لمكدسات الألياف، التي تُستخدم للاتصال غير المتزامن بالنسخ المتماثلة البعيدة: أحداث ملف التعريف `FiberStackAllocs` و`FiberStackAllocBytes` و`FiberStackAllocNanoseconds` و`FiberStackFreeNanoseconds`، والمقاييس `FiberStacks` و`FiberStackBytes`. [#114541](https://github.com/ClickHouse/ClickHouse/pull/114541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* PromQL: دعم معدّلات الطابع الزمني `@ start()` و`@ end()`. [#114558](https://github.com/ClickHouse/ClickHouse/pull/114558) ([Minh Vu](https://github.com/fallintoplace)).
* نقل سياق التتبّع في OpenTelemetry إلى الألياف المستخدمة لإنشاء الاتصالات غير المتزامن وتنفيذ الاستعلامات عن بُعد (الطلبات المحوطة، `async_socket_for_remote`، `async_query_sending_for_remote`). أصبحت امتدادات الاستعلامات عن بُعد ضمن استعلام موزع تُربط بشكل صحيح تحت امتداد `Connection::sendQuery` الخاص بالعقدة البادئة، بدلًا من ربطها مباشرةً بسياق التتبّع الذي يقدمه العميل، وينتج كل تنفيذ لمهمة غير متزامنة امتدادًا خاصًا به. [#114813](https://github.com/ClickHouse/ClickHouse/pull/114813) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* مع هذا التغيير، عند استخدام فهارس WHATIF، يُبلغ خط الأساس المعروض عبر الإسقاطات عن `not_applicable` لكل مرشح بدلًا من فشل التعليمة. [#114846](https://github.com/ClickHouse/ClickHouse/pull/114846) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أصبح `DROP DATABASE` يحذف الجداول بالترتيب الطوبولوجي العكسي لتبعيات التحميل والتبعيات المرجعية معًا (سابقًا تبعيات التحميل فقط)، لذا لا يمكن لتعطل في منتصف `DROP DATABASE` أن يترك جدولًا حُذفت تبعياته بالفعل. [#114952](https://github.com/ClickHouse/ClickHouse/pull/114952) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في لوحات المعلومات بواجهة الويب، استُبدلت شاشة الخطأ العامة بملاحظة فوق لوحات المعلومات، لذا لم يعد تعطل مخطط واحد يخفي الصفحة بأكملها. [#115019](https://github.com/ClickHouse/ClickHouse/pull/115019) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إفراغ جداول مرحلة التعلّم الخاصة بالمجمّع التكيفي إلى القرص عند ضغط الذاكرة. [#115038](https://github.com/ClickHouse/ClickHouse/pull/115038) ([Groene AI](https://github.com/groeneai)).
* أصبح `clickhouse-local` يجيب عن طلبات Preflight لـ CORS بالرؤوس المتساهلة نفسها التي يستخدمها `clickhouse-server`، لذا يمكن استخدام واجهة HTTP التي يفتحها `SYSTEM START LISTEN HTTP` من المتصفح دون إعداد إضافي، بما في ذلك واجهة الويب المفتوحة من عنوان URL من نوع `file://`. [#115045](https://github.com/ClickHouse/ClickHouse/pull/115045) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم معاملات مطابقة التعبيرات النمطية بأسلوب PostgreSQL: `~` (اسم مستعار للدالة `match`)، و`~*` (مطابقة غير حساسة لحالة الأحرف)، و`!~` و`!~*` (النفي). تعمل الآن أوامر `\d` و`\dt` و`\dv` في `psql` عند الاتصال بـ ClickHouse عبر بروتوكول توافق PostgreSQL، ولم يعد الاستعلام الفاشل ينهي الاتصال. [#115066](https://github.com/ClickHouse/ClickHouse/pull/115066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد `clickhouse-client` يطبع الرسالة `Connecting to ...` مرتين عند طلب كلمة المرور تفاعلياً. [#115081](https://github.com/ClickHouse/ClickHouse/pull/115081) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يوضح `EXPLAIN WHATIF` الآن سبب تجاوز التقدير التجريبي في سطر جديد باسم `empirical_reason`، يظهر عندما تكون قيمة `empirical_status` هي `unsupported`. [#115140](https://github.com/ClickHouse/ClickHouse/pull/115140) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* عندما لا تتمكن أي خوارزمية ربط مفعّلة بإعداد `join_algorithm` من تنفيذ `JOIN`، تسرد رسالة الخطأ الآن الخوارزميات التي جرت تجربتها، ودرجة الصرامة ونوع `JOIN` الذي فشل، بدلاً من الاكتفاء بالإبلاغ عن عدم نجاح أي منها. [#115226](https://github.com/ClickHouse/ClickHouse/pull/115226) ([Alexey Elkin](https://github.com/elkinal)).
* يمكن لاستعلامات البحث المتجهي الآن استخدام فهرس تشابه المتجهات عندما يكون المتجه المرجعي قيمة حرفية لمصفوفة أعداد صحيحة، مثل `ORDER BY L2Distance(vec, [1, 2])`. سابقاً، كانت هذه الاستعلامات تعود بصمت إلى فحص بالقوة الغاشمة. [#115255](https://github.com/ClickHouse/ClickHouse/pull/115255) ([Robert Schulze](https://github.com/rschu1ze)).
* يُعاد الآن محاولة فشل الشبكة من جهة العميل في Azure (إعادة تعيين الاتصال أو رفضه، وأخطاء DNS وTLS) بوصفه أخطاء نقل بدلاً من إظهاره كخطأ `500` اصطناعي، بما يتوافق مع عميل S3. [#115269](https://github.com/ClickHouse/ClickHouse/pull/115269) ([Arsen Muk](https://github.com/arsenmuk)).
* يمكن الآن استرداد توثيق جميع عبارات SQL (مثل الاسم والبنية والوصف والأمثلة) من جدول النظام `system.statements`. [#115341](https://github.com/ClickHouse/ClickHouse/pull/115341) ([Robert Schulze](https://github.com/rschu1ze)).
* لم يعد `BACKUP` يترك ملف قفل في وجهته إذا فشلت المحاولة التي أنشأته قبل كتابة أي شيء، سواء أثناء حجز الوجهة أو عند فتح أرشيف. لم يكن بإمكان أي نسخة احتياطية لاحقة مطابقة هذا القفل، لذا كانت كل إعادة محاولة للوجهة نفسها تفشل إلى أن يُحذف الملف يدوياً. تنشئ النسخ الاحتياطية إلى وجهات `S3` و`Azure` القفل أيضاً بشكل حصري، ويُبلّغ عن القفل التابع لنسخة احتياطية أخرى باعتباره نسخة احتياطية متزامنة، بدلاً من أي خطأ تُرجعه وحدة التخزين. [#115387](https://github.com/ClickHouse/ClickHouse/pull/115387) ([Julia Kartseva](https://github.com/jkartseva)).
* دعم مصادقة رمز الحامل في BuilderRWBufferFromHTTP (المحاولة 2). [#115400](https://github.com/ClickHouse/ClickHouse/pull/115400) ([Sergei Trifonov](https://github.com/serxa)).
* إضافة بعض المقاييس ذات الأبعاد إلى S3Queue. [#115422](https://github.com/ClickHouse/ClickHouse/pull/115422) ([Bharat Nallan](https://github.com/bharatnc)).
* أُضيف `keyword` كاسم مستعار لمُجزّئ النص `array` الخاص بفهرس النصوص، لتحسين التوافق مع OpenSearch وElasticsearch وSolR وLucene. [#115507](https://github.com/ClickHouse/ClickHouse/pull/115507) ([Robert Schulze](https://github.com/rschu1ze)).
* السماح بإنشاء جداول S3 خاصة. [#115652](https://github.com/ClickHouse/ClickHouse/pull/115652) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* عدم تسجيل الذاكرة غير المتتبعة لكل خيط في أخطاء MEMORY\_LIMIT\_EXCEEDED التي لا تشمل الخادم بأكمله. [#115658](https://github.com/ClickHouse/ClickHouse/pull/115658) ([Azat Khuzhin](https://github.com/azat)).
* يدعم بروتوكول Prometheus remote-write الآن عمليات الإدراج غير المتزامنة: تُجمَّع البيانات الواردة من عدة طلبات remote-write متزامنة قبل تكوين الأجزاء، وفقًا لإعداد `async_insert` (مفعّل افتراضيًا؛ أضف `async_insert=0` إلى URL المعالج للحفاظ على السلوك المتزامن). ولا يُقَرّ الطلب إلا بعد تفريغ البيانات إلى جميع الجداول الداخلية لجدول `TimeSeries` الهدف. [#115688](https://github.com/ClickHouse/ClickHouse/pull/115688) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبحت جميع الدالات التجميعية `timeSeries*` تتعامل مع الطوابع الزمنية المكررة وفق قاعدة واحدة (تُعتمد القيمة الأكبر، وتخسر NaN أمام أي قيمة أخرى)، مما يصلح النتائج التي تعتمد على الترتيب في `timeSeriesInstantRateToGrid` و`timeSeriesInstantDeltaToGrid` و`timeSeriesLastTwoSamples` و`timeSeriesResampleToGridWithStaleness` عندما تكون بعض القيم ذات الطابع الزمني نفسه NaN. والقاعدة موثقة ومختبرة الآن. [#115920](https://github.com/ClickHouse/ClickHouse/pull/115920) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاحات الأخطاء (سلوك غير صحيح يلاحظه المستخدم في إصدار مستقر رسمي)
</div>

* إصلاح تلف أسماء الأعمدة واستثناءات `BAD_ARGUMENTS` مع `inject_random_order_for_select_without_order_by`: لم تعد استعلامات `SELECT` متعددة الأعمدة تفشل، وتُحفَظ أسماء أعمدة الإخراج في `CREATE TABLE AS SELECT` و`CREATE VIEW AS SELECT` والتنسيقات المُسمّاة مثل `JSONEachRow` بدلًا من استبدالها بالأسماء المستعارة الداخلية `__subquery_column_<UUID>`. إغلاق [#102812](https://github.com/ClickHouse/ClickHouse/issues/102812). إغلاق [#101107](https://github.com/ClickHouse/ClickHouse/issues/101107). [#105896](https://github.com/ClickHouse/ClickHouse/pull/105896) ([Groene AI](https://github.com/groeneai)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` في قارئ `Parquet` V3 الأصلي عندما يحتوي `PREWHERE` على شروط مترافقة تشترك في تعبير وسيط. [#107059](https://github.com/ClickHouse/ClickHouse/pull/107059) ([Groene AI](https://github.com/groeneai)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` للاستعلامات التي تستخدم الأعمدة الافتراضية `_part_starting_offset` أو `_part_offset` في `WHERE` مع التجسيد الكسول. [#108287](https://github.com/ClickHouse/ClickHouse/pull/108287) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح `Not found column or subcolumn c.null in block` عند تشغيل `WHERE col IS NULL` أو `IS NOT NULL` على عمود `Iceberg` خضع لتطور المخطط وأُضيف بعد كتابة ملفات بيانات أقدم، مع `optimize_functions_to_subcolumns = 1` (الإعداد الافتراضي). [#109515](https://github.com/ClickHouse/ClickHouse/pull/109515) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء `ICEBERG_SPECIFICATION_VIOLATION` الزائفة عند قراءة جدول `Iceberg` يُسلسَل فيه نوع عشري أو نوع بدائي آخر ذي معلمات بمسافات بيضاء مختلفة بين ملفات البيانات الوصفية، مثل `decimal(20,0)` في البيانات الوصفية للجدول و`decimal(20, 0)` في ملف البيان. [#109676](https://github.com/ClickHouse/ClickHouse/pull/109676) ([Groene AI](https://github.com/groeneai)).
* إصلاح `PREWHERE` المؤجل مع `optimize_move_to_prewhere = 1` عندما يُطبَّق `PREWHERE` بعد `FINAL`: لم تعد شروط `WHERE` تُنقل قبل سياسة صفوف مؤجلة، إذ كان ذلك قد يغيّر نتائج الاستعلام. [#109703](https://github.com/ClickHouse/ClickHouse/pull/109703) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح `BAD_GET` عند مقارنة عمود `Array(String)` بحرفية مصفوفة مثل `arr = ['x']` وكان للعمود فهرس تخطٍ من نوع `text` أو `tokenbf_v1` أو `ngrambf_v1`. تعود هذه المقارنات الآن إلى فحص كامل بدلًا من فشل الاستعلام. [#110057](https://github.com/ClickHouse/ClickHouse/pull/110057) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة للدوال `has` و`mapContainsKey` و`mapContainsValue` عند استخدام قيمة بحث فارغة بوجود فهرس نصي. [#110246](https://github.com/ClickHouse/ClickHouse/pull/110246) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح `Host is empty in S3 URI` عند استخدام استعلام فرعي قيَمي كوسيطة عنوان URL لدالة الجدول `s3`، أو كوسيطة لأي دالة جدول أخرى، في استعلامات `CREATE TABLE ... AS SELECT`. [#110254](https://github.com/ClickHouse/ClickHouse/pull/110254) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح عمليات التحقق من امتيازات `ON CLUSTER` لـ `SYSTEM STOP/START CLEANUP` و`SYSTEM STOP/START VIRTUAL PARTS UPDATE`: لم تعد تتطلب `SYSTEM PULLING REPLICATION LOG`، وأصبحت تستخدم `SYSTEM CLEANUP` أو `SYSTEM VIRTUAL PARTS UPDATE`. [#110289](https://github.com/ClickHouse/ClickHouse/pull/110289) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة عدم اكتشاف النسخة المتماثلة للقراءة فقط في تخزين الكائنات، عند ضبط `read_only = true`، للأجزاء الجديدة عبر `refresh_parts_interval`، وفشل `table_disk = true` على هذا القرص برسالة `table_disk is not supported for non-ObjectStorage disks`. [#110460](https://github.com/ClickHouse/ClickHouse/pull/110460) ([Julia Kartseva](https://github.com/jkartseva)).
* إصلاح عمليات الكتابة عبر دوال جداول بحيرة البيانات، مثل `INSERT INTO FUNCTION icebergS3(...)`، التي كانت تُنتج ملفات `Parquet` تفقد فيها الأعمدة النصية توصيف النوع `String`، مما يجعل البيانات المكتوبة غير قابلة للقراءة بواسطة قارئات خارجية مثل Spark. [#110465](https://github.com/ClickHouse/ClickHouse/pull/110465) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح فشل استنتاج المخطط مع `Map cannot have a key of type LowCardinality(Nullable(String))` عند قراءة ملفات `ORC` ذات مفاتيح الخرائط المُرمّزة بالقاموس، بما في ذلك الملفات التي يكتبها Spark والملفات التي يكتبها ClickHouse نفسه عند تمكين `output_format_orc_dictionary_key_size_threshold`. [#110492](https://github.com/ClickHouse/ClickHouse/pull/110492) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح نتائج `IS NULL` / `IS NOT NULL` / `count()` غير الصحيحة مع `optimize_functions_to_subcolumns` لعمود حُوّل إلى `Nullable` عبر `ALTER MODIFY COLUMN T` مقتصر على البيانات الوصفية إلى `Nullable(T)`. بالنسبة إلى الأجزاء المكتوبة قبل التحويل، يُشتق الآن العمود الفرعي `.null` من العمود الأب الموجود فعليًا بدلًا من القيمة الافتراضية لنوع التخزين. [#110584](https://github.com/ClickHouse/ClickHouse/pull/110584) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج الاستعلامات غير الصحيحة الناتجة عن تحسين `optimize_and_compare_chain` عندما تمزج الشروط المتعدية أنواعًا ذات دلالات مقارنة مختلفة، مثل `Enum` مع `String`، أو `Decimal` مع `Float64`، أو قيم `FixedString` ذات أطوال مختلفة. [#110621](https://github.com/ClickHouse/ClickHouse/pull/110621) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح النتائج غير الصحيحة لبعض استعلامات القراءة بالترتيب عندما يوسّع المُحسِّن بادئة مفتاح الفرز. [#110725](https://github.com/ClickHouse/ClickHouse/pull/110725) ([Groene AI](https://github.com/groeneai)).
* إصلاح عبارات `CREATE` التي تحتوي على عبارة `COMMENT` بحيث تُصدر خطأً نحويًا عند غياب سلسلة التعليق الحرفية، بدلًا من قبول استعلام فُسّر بصورة خاطئة بصمت. على سبيل المثال، لم يعد `CREATE VIEW v COMMENT AS SELECT 1` ينشئ عرضًا دون تعليق. [#111159](https://github.com/ClickHouse/ClickHouse/pull/111159) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح النتائج غير الصحيحة من `SummingMergeTree` و`CoalescingMergeTree` مع `FINAL` عندما يكون `optimize_move_to_prewhere_if_final = 1` وتكون عبارة `WHERE` شرطًا منطقيًا ضمنيًا على عمود مفتاح الفرز، مثل `WHERE k`. [#111342](https://github.com/ClickHouse/ClickHouse/pull/111342) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناءات `Directory '...' was created concurrently with remote path '...'` الزائفة في العمليات المقتصرة على البيانات الوصفية لقواعد البيانات والجداول المدعومة بتخزين الكائنات، مثل `DROP DATABASE`. [#111353](https://github.com/ClickHouse/ClickHouse/pull/111353) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تُبلغ كتالوجات REST لبحيرة البيانات الآن عن بيانات الاعتماد المنتهية الصلاحية بالاستثناء المناسب بدلًا من التعامل معها بصمت كجدول مفقود أو إرجاع `UNKNOWN_TABLE`. [#111379](https://github.com/ClickHouse/ClickHouse/pull/111379) ([alesapin](https://github.com/alesapin)).
* إصلاح تجاهل `SQL SECURITY DEFINER` و`SQL SECURITY NONE` للعروض ذات المعلمات عند تعطيل المحلل (`enable_analyzer = 0`). سابقًا، كان الاستعلام عن مثل هذا العرض بواسطة مستخدم لا يملك امتيازات على الجدول الأساسي يفشل مع `ACCESS_DENIED`، رغم أن العرض نفسه يعمل عند تمكين المحلل. [#111458](https://github.com/ClickHouse/ClickHouse/pull/111458) ([Groene AI](https://github.com/groeneai)).
* رفض إنشاء عمود `Nullable(Nothing)`، أو أي نوع آخر غير مسموح به في الجداول، عند تنفيذ `CREATE TABLE` إذا كان المخطط مستنتجًا من التخزين، مثلًا في جدول `remote` أو `Remote` أو `Distributed` بلا أعمدة فوق عرض ينفّذ `SELECT NULL`، بدلًا من حفظ بيانات وصفية يتعذر تحميلها عند إعادة تشغيل الخادم التالية وتمنع تحميل الجداول غير ذات الصلة. [#111487](https://github.com/ClickHouse/ClickHouse/pull/111487) ([Groene AI](https://github.com/groeneai)).
* إصلاح `std::bad_variant_access` والتطور غير الصحيح لمخطط `Iceberg` في أعمدة `Array(Map(...))` المتداخلة التي يتم تعديل `Struct` الداخلي فيها. [#111489](https://github.com/ClickHouse/ClickHouse/pull/111489) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح فشل `ALTER MODIFY COLUMN` عند تحويل عمود `Nullable` إلى نوع مختلف مع `DEFAULT`، مثل التحويل من `Nullable(UInt8)` إلى `String` أو `LowCardinality(String)` أو `Array(UInt8)`. [#102156](https://github.com/ClickHouse/ClickHouse/pull/102156) ([DQ](https://github.com/il9ue)).
* إصلاح ظهور `BAD_ARGUMENTS` (`Dictionary not found`) من `dictGet` بعد رفض `DETACH DICTIONARY ... PERMANENTLY` بسبب `HAVE_DEPENDENT_OBJECTS`؛ إذ يبقى القاموس الآن قابلًا للاستخدام عند رفض فصله. [#105259](https://github.com/ClickHouse/ClickHouse/pull/105259) ([Groene AI](https://github.com/groeneai)).
* تتضمن ملفات البيانات التي يكتبها ClickHouse لجداول `Iceberg` الآن معرّفات حقول `Iceberg` في `Avro` و`ORC`، وتُكتب أعمدة `String` في `ORC` بصيغة `string` بدلًا من صيغة ثنائية، وتحافظ حقول `ORC` المركبة الاختيارية (`Array` و`Map` و`Tuple`) الآن على البيانات الوصفية الصحيحة `iceberg.required`. يعالج هذا نتائج `NULL` الصامتة بعد إعادة تسمية الأعمدة ويستعيد التوافق مع القارئات المتوافقة مع المواصفة، مثل Spark و`iceberg-java`. [#109994](https://github.com/ClickHouse/ClickHouse/pull/109994) ([Groene AI](https://github.com/groeneai)). [#111775](https://github.com/ClickHouse/ClickHouse/pull/111775) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة الملفات على أقراص `plain_rewritable` بعد إعادة كتابة مسار موجود بمحتوى بحجم مختلف، إذ كان من الممكن أن تؤدي البيانات الوصفية القديمة المخزنة في الذاكرة إلى حدوث `UNEXPECTED_END_OF_FILE`. [#110304](https://github.com/ClickHouse/ClickHouse/pull/110304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح انحراف متتبع الذاكرة لكل مستخدم الناجم عن سجلات النظام، مثل `query_log` و`query_views_log`، والذي كان من الممكن أن يؤدي إلى تفعيل حد خاطئ لـ `max_memory_usage_for_user` لدى المستخدمين ذوي أعباء العمل المستمرة. [#110708](https://github.com/ClickHouse/ClickHouse/pull/110708) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح حالة تنافس نادرة كان فيها تنفيذ `ALTER` لتعديل تعليق فقط أو إعدادات فقط على جدول `ReplicatedMergeTree` قد يحذف بصمت عمودًا أضافه تنفيذ متزامن لـ `ALTER ... ADD COLUMN`، مما يترك نسخة متماثلة ببيانات وصفية قديمة للجدول. [#111029](https://github.com/ClickHouse/ClickHouse/pull/111029) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح التقليم غير الصحيح للمفتاح الأساسي في الجداول التي ينتهي مفتاح ترتيبها بترتيب تنازلي، مثل `ORDER BY (g, r DESC)`، والذي كان من الممكن أن يستبعد صفوفًا مطابقة. [#111059](https://github.com/ClickHouse/ClickHouse/pull/111059) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تسرّب ذاكرة لشهادة النظير عند كل مصافحة TLS مع تمكين التحقق من الشهادة. [#111425](https://github.com/ClickHouse/ClickHouse/pull/111425) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح الطفرات التي تستخدم معلمة استعلام كتقسيم في `ALTER TABLE ... UPDATE/DELETE ... IN PARTITION {param:Type}`: إذ يمكن الآن تحليل قيمة التقسيم المتسلسلة مجددًا بصورة صحيحة، لذا لم يعد `ALTER` يكتب إدخالات طفرات تعطل تحميل الجدول. [#111518](https://github.com/ClickHouse/ClickHouse/pull/111518) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح تعطل على macOS/aarch64 عند التقاط تتبع مكدس على مكدس coroutine أو fiber، مثلًا بواسطة محلل أداء الذاكرة. [#111656](https://github.com/ClickHouse/ClickHouse/pull/111656) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطل الخادم عند قراءة بيانات `Protobuf` باستخدام `input_format_allow_errors_num > 0`، إذا سبقت رسالة صالحة رسالة تالفة قابلة للتخطي ضمن الكتلة نفسها. [#107739](https://github.com/ClickHouse/ClickHouse/pull/107739) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` عندما يستخدم استعلام على جدول `Distributed` القيمة `_shard_num` أو `shardNum` التي تصبح `Nullable`، مثلًا ضمن `FULL JOIN` مع `join_use_nulls = 1` وبالاقتران مع `ORDER BY` والمحلل. [#109798](https://github.com/ClickHouse/ClickHouse/pull/109798) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة واستثناءات `UNKNOWN_ELEMENT_OF_ENUM` في `LEFT`/`RIGHT`/`FULL`/`ASOF JOIN` مع `join_algorithm = 'full_sorting_merge'`، إذ كان يمكن ملء الصفوف غير المرتبطة بـ `0` بدلًا من القيمة الافتراضية لنوع العمود. [#111197](https://github.com/ClickHouse/ClickHouse/pull/111197) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء `LOGICAL_ERROR` عندما يكون جسم lambda لدالة عالية الرتبة عبارة عن `if` أو `multiIf` ذي شرط ثابت، يمزج فرعًا حرفيًا من نوع `Bool` مع فرع مقارنة من نوع `UInt8`، مثلًا `arrayFilter(p -> multiIf(false, true, p = 'ALL'), ['ALL'])`. [#111245](https://github.com/ClickHouse/ClickHouse/pull/111245) ([Groene AI](https://github.com/groeneai)).
* يشير العنصر النائب `{_partition_id}` في مسار محركات `S3` و`AzureBlobStorage` و`URL` والمحركات المشابهة للملفات، عند عدم تحديد `partition_strategy` صراحةً، مجددًا إلى استراتيجية `wildcard`، مما يعيد التوافق مع عبارات DDL السابقة للإصدار 26.6 التي بدأت تفشل مع `BAD_ARGUMENTS`. [#111279](https://github.com/ClickHouse/ClickHouse/pull/111279) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح `NUMBER_OF_COLUMNS_DOESNT_MATCH` في استعلامات `GROUP BY` على جدول `Merge` يغلّف جدول `Distributed`، عندما يكون مفتاح التجميع دالةً لعمود وتقرأ دالة تجميعية العمود نفسه. [#111334](https://github.com/ClickHouse/ClickHouse/pull/111334) ([Groene AI](https://github.com/groeneai)).
* يُرفض الآن `GRANT role TO role` للدور نفسه مع `BAD_ARGUMENTS` بدلًا من إنشاء إدخال ذاتي المرجع بصمت في `system.role_grants`. [#103315](https://github.com/ClickHouse/ClickHouse/pull/103315) ([zxuhan7](https://github.com/zxuhan)).
* إصلاح عمليات الكتابة إلى جداول `Iceberg` عندما لا يحتوي ملف البيانات الوصفية على قسم `refs`. [#106896](https://github.com/ClickHouse/ClickHouse/pull/106896) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* إصلاح تعذر قراءة `system.session_log` بعد تسجيل دخول Arrow Flight: كان عمود `interface` من النوع `Enum8`، لكن القيمة `ArrowFlight` كانت مفقودة من تعداده، لذا كانت عملية تسجيل الدخول عبر بروتوكول Arrow Flight تكتب القيمة الخام `10`، وكان أي `SELECT` يقرأ هذا الصف يطرح استثناء `Unexpected value 10 in enum`. [#110758](https://github.com/ClickHouse/ClickHouse/pull/110758) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاوز عدد صحيح موقّع في `toStartOfInterval` مع فواصل زمنية دون الثانية: بالنسبة إلى قيم `DateTime64` الواقعة ضمن فاصل زمني واحد من الحد الأدنى لـ `Int64`، كانت النتيجة المقربة تلتف بصمت إلى قيمة موجبة غير صالحة؛ أما الآن، فترمي الدالة استثناء `DECIMAL_OVERFLOW`. [#111370](https://github.com/ClickHouse/ClickHouse/pull/111370) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `readWKTPoint` و`readWKT` اللذين كانا يعيدان إحداثيات غير مهيأة (في الوضع القياسي) أو إحداثيات الصف السابق (في الوضع المتجه) لنقطة فارغة موسومة ببُعد، مثل `POINT M EMPTY`. تُرفض هذه المدخلات الآن بالخطأ `CANNOT_PARSE_TEXT`، بما يتسق مع `POINT EMPTY`. [#111517](https://github.com/ClickHouse/ClickHouse/pull/111517) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناءات `Unexpected number of columns in result sample block` في `RIGHT` و`FULL JOIN` عندما يحتوي الجانب الأيسر على عمود مكرر بالاسم نفسه، مثل `1 AS b, 1 AS b`، ويستمر هذا التكرار عبر `UNION ALL`. [#111554](https://github.com/ClickHouse/ClickHouse/pull/111554) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناءات `CANNOT_CONVERT_TYPE` و`LOGICAL_ERROR` في الاستعلامات الموزعة التي تستخدم الموفّق `-Tuple` مع المعدّل `RESPECT NULLS` أو `IGNORE NULLS` ضمن موفّقات متداخلة، مثل `anyRespectNullsStateTuple(...) IGNORE NULLS`. [#111570](https://github.com/ClickHouse/ClickHouse/pull/111570) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تمييز بناء جملة SQL في Play على iPhone، إذ كان تضخيم النص التلقائي في Safari على iOS قد يؤدي إلى اختلال محاذاة طبقة التمييز المتراكبة. [#111683](https://github.com/ClickHouse/ClickHouse/pull/111683) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `UNKNOWN_QUERY_PARAMETER` عند استدعاء عرض مقيّد بمعلمات بوسيط قيمته استعلام فرعي من النوع `Array` أو `Tuple` أو `LowCardinality`، مثل `SELECT * FROM v(param = (SELECT groupArray(x) FROM t))`. [#111790](https://github.com/ClickHouse/ClickHouse/pull/111790) ([Groene AI](https://github.com/groeneai)).
* إصلاح `TYPE_MISMATCH` (`Key type for complex key ... does not match`) عندما تستخدم عملية `JOIN` على قاموس مفتاح ربط من النوع `Nullable` أو `LowCardinality` أو `LowCardinality(Nullable)`، بينما لا يكون مفتاح القاموس مغلفًا. أصبحت عملية البحث في القاموس للربط المباشر تطبّع المفتاح إلى نوع المفتاح المعلن للقاموس، كما يفعل `dictGet` و`dictHas` بالفعل، ولا يتطابق مفتاح `NULL` مطلقًا. [#111857](https://github.com/ClickHouse/ClickHouse/pull/111857) ([Groene AI](https://github.com/groeneai)).
* مع `fsync_part_directory = 1`، أصبحت إعادة تسمية دليل الجزء من اسمه المؤقت إلى اسمه النهائي دائمة بحد ذاتها عبر تنفيذ fsync للدليل الأب، وكذلك للدليل الأب المصدر عند النقل بين دليلين أبويين. سابقًا، كان يُنفّذ fsync للدليل المنقول فقط، لذا كان فقدان الطاقة مباشرة بعد تثبيت جزء قد يتركه مفقودًا على القرص ويتسبب في فقدان صفوف رغم تفعيل الإعداد. [#111861](https://github.com/ClickHouse/ClickHouse/pull/111861) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالات التعليق في `randChiSquared` و`randStudentT` و`randFisherF` و`randBinomial` عند استخدام معلمات قصوى. لم يكن بالإمكان مقاطعة هذه الاستعلامات باستخدام `max_execution_time` أو `KILL QUERY`. تُرفض هذه المعلمات الآن حتى عند ضبط `max_rand_distribution_parameter` أو `max_rand_distribution_trials` على `0`، ولم يعد بالإمكان رفع `max_rand_distribution_trials` فوق قيمته الافتراضية `10^9` لـ `randBinomial`. [#111909](https://github.com/ClickHouse/ClickHouse/pull/111909) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج الخاطئة عندما يعيد المحلل كتابة سلاسل المقارنة مثل `x = c1 OR x = c2 OR ...` أو `x != c1 AND x != c2 AND ...` أو `has(const_array, x)` إلى `IN` و`NOT IN`. كما يصلح استثناءات `Illegal type ... of argument of function in` للتعبيرات ذات البنية `Dynamic` أو `Array(Dynamic)` أو `JSON`. [#111924](https://github.com/ClickHouse/ClickHouse/pull/111924) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة وظهور `LOGICAL_ERROR` عند اختيار عمود `Nullable(Tuple(...))` مع أحد الأعمدة الفرعية لعناصره الحاملة للقيم الفارغة (`Variant` أو `Dynamic` أو `LowCardinality`) من جدول `MergeTree`. [#111949](https://github.com/ClickHouse/ClickHouse/pull/111949) ([Groene AI](https://github.com/groeneai)).
* رفض مصافحات البروتوكول الأصلي التي تستخدم `USER_INTERSERVER_MARKER` لمجموعة غير معروفة أو لمجموعة مهيأة من دون عنصر `<secret>`. كان يمكن لهذه المصافحات سابقًا الدخول في وضع الاتصال بين الخوادم قبل المصادقة وقراءة معلومات عن الجداول المحلية. [#99675](https://github.com/ClickHouse/ClickHouse/pull/99675) ([Dan Anderson](https://github.com/MillaFleurs)).
* إصلاح `JOIN` على جداول `EmbeddedRocksDB` و`Redis` و`KeeperMap`، إذ كان قد يعيد بصمت صفرًا من الصفوف عند استخدام `DirectKeyValueJoin` مع مفاتيح `String` أو `Nullable(String)`. [#105253](https://github.com/ClickHouse/ClickHouse/pull/105253) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح العروض المادية القابلة للتحديث المنسقة في قاعدة بيانات `Replicated` التي كانت تتعطل بعد إعادة الإرفاق بـ Keeper لا تتوفر فيه علامة الميزة `MULTI_READ`؛ إذ يتوقف العرض الآن بصورة سليمة بالحالة `Disabled` بدلًا من تسجيل `Unexpected exception in refresh scheduling` إلى ما لا نهاية. [#108890](https://github.com/ClickHouse/ClickHouse/pull/108890) ([Groene AI](https://github.com/groeneai)).
* إصلاح إرسال عميل ZooKeeper بادئة طول `int32` متجاوزة للسعة للطلبات الأكبر من `INT32_MAX` بايت. تُرفض الطلبات كبيرة الحجم الآن من جهة العميل. يمكن ضبط الحد عبر `max_request_size` ضمن `<zookeeper>`، وإلا فيُستمد من Keeper. يُغلق [#109165](https://github.com/ClickHouse/ClickHouse/issues/109165). [#109190](https://github.com/ClickHouse/ClickHouse/pull/109190) ([Arsen Muk](https://github.com/arsenmuk)).
* إصلاح وضع `Ordered` لـ`S3Queue`/`AzureQueue` مع عُقد المعالجة الدائمة: تُجدَّد أقفال الحاوية الآن أثناء التدفق، بحيث لا تؤدي عملية التنظيف باستخدام TTL، التي يتحكم بها `persistent_processing_node_ttl_seconds`، إلى إزالة أقفال معالج نشط. وإذا فُقدت ملكية القفل رغم ذلك، يُكتشف الأمر ويُبلَّغ عنه، ويتعافى التدفق باستخدام مكرّر ملفات جديد. [#110292](https://github.com/ClickHouse/ClickHouse/pull/110292) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح البيانات الخاطئة واحتمال القراءة خارج الحدود عند قراءة أعمدة `String` ذات `string_serialization_version = 'with_size_stream'` بعد تخطي الصفوف الأولى، وعند قراءة الكائنات الفرعية لأعمدة `JSON` المخزنة باستخدام `object_shared_data_serialization_version = 'map'`. [#110471](https://github.com/ClickHouse/ClickHouse/pull/110471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح قبول المحلل في `CREATE TABLE` و`ALTER TABLE` لتعبير `DEFAULT` أو `MATERIALIZED` يشير إلى عمود افتراضي مثل `_table` أو `_database`. تُرفض هذه التعبيرات الآن عند تعريفها بدلًا من فشلها لاحقًا عند الإدراج مع `NOT_FOUND_COLUMN_IN_BLOCK`. [#111776](https://github.com/ClickHouse/ClickHouse/pull/111776) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة تسابق في دوال UDF القابلة للتنفيذ، ومحرك الجدول `executable`، والقواميس القابلة للتنفيذ، إذ كان يمكن لـ`fcntl` على واصف ملف مغلق مسبقًا أن يفسد واصفًا غير ذي صلة لاستعلام متزامن، مما يؤدي إلى تعليق الاستعلامات إلى أجل غير مسمى. [#111779](https://github.com/ClickHouse/ClickHouse/pull/111779) ([Raúl Marín](https://github.com/Algunenano)).
* يؤدي إنشاء إحصاءات `minmax` المهجورة الآن إلى إصدار تحذير بدلًا من طرح استثناء. [#111785](https://github.com/ClickHouse/ClickHouse/pull/111785) ([Han Fei](https://github.com/hanfei1991)).
* إصلاح جداول `Iceberg` التي يكتبها ClickHouse بحيث تصبح قابلة للقراءة بواسطة قارئات خارجية مثل PyIceberg وSpark. تتضمن مخططات `Avro` لقائمة البيان والبيان الآن خصائص `field-id` المطلوبة في `Iceberg`. [#111786](https://github.com/ClickHouse/ClickHouse/pull/111786) ([Groene AI](https://github.com/groeneai)).
* أعِد إنشاء العمودين المُجسّدين داخل الجزء `block_number` و`block_offset` أثناء عمليات إرفاق الأجزاء وفصلها ونقلها واستنساخها، حتى لا تصبح قيمهما قديمة بعد معالجة الأجزاء. [#111801](https://github.com/ClickHouse/ClickHouse/pull/111801) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أصلح تحسين `query_plan_split_filter` الذي كان يترك عمودًا داخليًا باسم `__split_filter` في أحد فروع `INTERSECT` أو `UNION`، ما قد يؤدي إلى الاستثناء `Block structure mismatch in IntersectOrExceptStep stream: different number of columns`. [#111930](https://github.com/ClickHouse/ClickHouse/pull/111930) ([Groene AI](https://github.com/groeneai)).
* أصلح `AMBIGUOUS_COLUMN_NAME` في الاستعلامات التي تكرر شرط `JOIN ON` في `WHERE` عند استخدام `join_use_nulls = 1`؛ إذ تُرجع هذه الاستعلامات نتائجها الآن بدلًا من الفشل. [#112007](https://github.com/ClickHouse/ClickHouse/pull/112007) ([Groene AI](https://github.com/groeneai)).
* أصلح مصادقة DLF في كتالوج REST لـ `Paimon`: لم تعد الطلبات اللاحقة للطلب الأول تفشل برمز HTTP 401، وأصبحت عمليات التحقق من وجود الجداول تتعرف على HTTP 404 بشكل صحيح. [#112015](https://github.com/ClickHouse/ClickHouse/pull/112015) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* أصلح `LOGICAL_ERROR` أثناء التنظيف المتزامن لجداول `Kafka` في Keeper؛ فلم تعد عمليات الإنشاء أو الإزالة تفشل إذا اختفى مسار Keeper الخاص بالجدول بعد انتهاء الجلسة. [#112078](https://github.com/ClickHouse/ClickHouse/pull/112078) ([Groene AI](https://github.com/groeneai)).
* أصلح عمليات الدمج والتعديل عند تمكين فهرس الحدين الأدنى والأقصى على مستوى الجزء للعمودين `_block_number` و`_block_offset`. [#109281](https://github.com/ClickHouse/ClickHouse/pull/109281) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أصلح حالات فشل `INSERT` في جداول `DeltaLakeLocal` أو `deltaLake` التي كانت تترك ملف بيانات غير مُنهى بعد بدء الكتابة. [#109328](https://github.com/ClickHouse/ClickHouse/pull/109328) ([Groene AI](https://github.com/groeneai)).
* أصلح تسرّب بيانات الاعتماد في `SHOW CREATE` و`system.query_log` وسجلات الخادم ومخرجات `EXPLAIN` الخاصة بـ `s3`/`s3Cluster` والمحركات المعتمدة على `S3` و`BACKUP ... TO S3` ووسائط الأسرار لدوال `encrypt` و`decrypt` وHMAC المُنشأة من تعبيرات أو دوال SQL معرّفة من المستخدم. [#109768](https://github.com/ClickHouse/ClickHouse/pull/109768) ([Raúl Marín](https://github.com/Algunenano)).
* أصلح قراءة ملفات `Parquet` الكبيرة من إدخالات zip غير المضغوطة من نوع `STORED` عبر `s3` و`file`. [#110495](https://github.com/ClickHouse/ClickHouse/pull/110495) ([Eva Wuuu](https://github.com/Gudauu)).
* أصلح تعليق `EXPLAIN ANALYZE` في الاستعلامات التي تتضمن قراءة متدفقة `FROM ... STREAM` مخفية في استعلام فرعي أو تعبير الجدول الشائع أو عرض. تُرفض هذه الاستعلامات الآن باستخدام `NOT_IMPLEMENTED`، كما هي الحال بالفعل مع القراءات المتدفقة من المستوى الأعلى. [#110935](https://github.com/ClickHouse/ClickHouse/pull/110935) ([Groene AI](https://github.com/groeneai)).
* ارفض المتجهات التي يفيض مقدارها التربيعي إلى ما لا نهاية عند استخدام فهرس `vector_similarity` مع تكميم `i8`. في السابق، كانت هذه المتجهات تُنتج بيانات غير صالحة دون إصدار أي تنبيه. [#111085](https://github.com/ClickHouse/ClickHouse/pull/111085) ([Groene AI](https://github.com/groeneai)).
* نفّذ `fsync` لملفات فهرس النصوص الخاصة بجزء مدموج أو مُجسّد عند تعيين `min_rows_to_fsync_after_merge` أو `min_compressed_bytes_to_fsync_after_merge` أو `fsync_part_directory`. في السابق، كانت هذه الملفات الوحيدة في الجزء التي لا تُزامَن، لذا كان انقطاع الطاقة مباشرة بعد الدمج قد يترك جزءًا مُثبتًا لكنه معطوبًا، ما قد يؤدي إلى فقدان البيانات. [#111335](https://github.com/ClickHouse/ClickHouse/pull/111335) ([Groene AI](https://github.com/groeneai)).
* أصلح التحقق من المسارات بالنسبة إلى `user_files`. [#111442](https://github.com/ClickHouse/ClickHouse/pull/111442) ([Alexander Tokmakov](https://github.com/tavplubix)).
* إصلاح فشل `SYSTEM REFRESH` أحيانًا في استهلاك البيانات المتراكمة في قائمة الانتظار من جدول `RabbitMQ` متوقف. تنتظر عملية التحديث الآن بدء حلقة تسليم AMQP قبل استهلاك دورة البث الوحيدة خارج الترتيب. [#111480](https://github.com/ClickHouse/ClickHouse/pull/111480) ([Groene AI](https://github.com/groeneai)).
* قصر الوصول إلى الكائنات المحلية على المسار `user_files`. [#111483](https://github.com/ClickHouse/ClickHouse/pull/111483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح segfault ناتج عن وصول إلى الذاكرة خارج حدودها عند إلغاء تسلسل حالة دالة تجميعية مشوهة تحتوي على قيمة `String`. تُتحقق هذه الحالات الآن ويُرفض غير الصالح منها. [#111606](https://github.com/ClickHouse/ClickHouse/pull/111606) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح تجاوز سعة عدد صحيح أثناء تحليل `system.zookeeper_info`. [#111629](https://github.com/ClickHouse/ClickHouse/pull/111629) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح `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) ([Groene AI](https://github.com/groeneai)).
* إصلاح `INSERT` المقسّم إلى `DeltaLake` مع `allow_experimental_delta_lake_writes = 1` الذي كان يفسد قيم الأقسام التي تحتوي على محارف مسار ويرفض قيم الأقسام `NULL`. تُرمَّز قيم الأقسام الآن بترميز النسبة المئوية ضمن مقطع مسار واحد، وتُكتب قيم `NULL` أو السلاسل الفارغة بوصفها `__HIVE_DEFAULT_PARTITION__` مع إدخال `partitionValues` بقيمة null. [#111793](https://github.com/ClickHouse/ClickHouse/pull/111793) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء وتخطي بيانات بصمت عند قراءة عمود فرعي ديناميكي عبر جدول `Buffer`. [#111948](https://github.com/ClickHouse/ClickHouse/pull/111948) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فقدان `clickhouse-client` لقاعدة البيانات الحالية بعد `USE {db:Identifier}`. إذا اضطر العميل إلى إعادة الاتصال لاحقًا، كان يبدّل الجلسة بصمت إلى قاعدة البيانات `default`. [#111982](https://github.com/ClickHouse/ClickHouse/pull/111982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` (`Type mismatch when building statistics for column`) أثناء عمليات mutation في `MergeTree` بعد أن يغيّر `ALTER MODIFY COLUMN` يقتصر على البيانات الوصفية نوع عمود يحمل إحصاءات. يُعاد الآن حساب إحصاءات الأعمدة التي تعيد عملية mutation كتابتها فعليًا، بينما تحتفظ الأعمدة غير المعدلة بإحصاءاتها الحالية. [#112009](https://github.com/ClickHouse/ClickHouse/pull/112009) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءات جدول `Paimon` التي كان يمكن أن تفشل أثناء استبدال تلميح `snapshot/LATEST` القابل للتغيير بالتزامن. تُتجاهل الآن التلميحات غير الصالحة أو القديمة، ويُحمَّل snapshot من الكتالوج بدلًا من ذلك. [#112010](https://github.com/ClickHouse/ClickHouse/pull/112010) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* إصلاح قراءة ملفات `GeoParquet` و`Arrow` و`ArrowStream` التي يستخدم عمود الهندسة المُرمَّز بـ WKT فيها كلمة مفتاحية للنوع بأحرف غير كبيرة مثل `point(1 2)`، أو حاوية فارغة مثل `LINESTRING EMPTY` أو `POLYGON()`. يصلح هذا أيضًا إعادة قراءة الملفات التي تخزّن مخرجات `wkt` لهندسة فارغة. [#112020](https://github.com/ClickHouse/ClickHouse/pull/112020) ([Groene AI](https://github.com/groeneai)).
* إصلاح عدم تطبيق تجاوزات الإعدادات على مستوى الاستعلام على النسخ الأصلي لـ Azure. [#112037](https://github.com/ClickHouse/ClickHouse/pull/112037) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح إعادة `query_masking_rules` كتابة نوع عمود `EPHEMERAL`، ما قد يؤدي إلى أن يخزّن `CREATE TABLE` نوعًا خاطئًا أو يفشل. [#112048](https://github.com/ClickHouse/ClickHouse/pull/112048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد معاملات دوال الجدول تقبل حالات التجميع، إذ كانت تؤدي سابقًا إلى خطأ منطقي لأن هذه المعاملات غير مدعومة. يغلق [#112085](https://github.com/ClickHouse/ClickHouse/issues/112085). [#112087](https://github.com/ClickHouse/ClickHouse/pull/112087) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح النتائج الخاطئة في `JOIN` الذي يحتوي تعبير `ON` فيه على اقتران ثابت، مثل `ON l.id = r.id AND CAST(NULL AS Nullable(UInt8))`. [#112155](https://github.com/ClickHouse/ClickHouse/pull/112155) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح النتائج الخاطئة لعمليات البحث `hasAllTokens` وغيرها من عمليات بحث فهرس النصوص متعددة الرموز في البُنى التي لا تستخدم `simdcomp`، مثل `aarch64`، عندما يكون `text_index_posting_list_apply_mode = 'lazy'`. [#112178](https://github.com/ClickHouse/ClickHouse/pull/112178) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة عند استدعاء عرض مُعلَّم بمعاملات بوسيطة ليست تعيينًا بصيغة `parameter = value`. تُرفض هذه الاستدعاءات الآن باستخدام `UNKNOWN_QUERY_PARAMETER` في مساري التنفيذ كليهما. [#112194](https://github.com/ClickHouse/ClickHouse/pull/112194) ([Groene AI](https://github.com/groeneai)).
* إصلاح العروض المُعلَّمة بمعاملات التي يستخدم متن `SELECT` فيها `INTERSECT` أو `EXCEPT` أو سلسلة `UNION` تمزج بين `UNION DISTINCT` و`UNION ALL`، إذ كانت تُصنَّف خطأً كعروض عادية، ما جعل بياناتها الوصفية غير قابلة للتحميل. [#112211](https://github.com/ClickHouse/ClickHouse/pull/112211) ([Groene AI](https://github.com/groeneai)).
* إصلاح استنتاج المخطط لعائلة `TSV` الذي كان يستنتج `String` للقيم العشرية المكتوبة بصفر بادئ، مثل `0.0` أو `0.5`، ويعامل هذا الصف الأول كرأس. كما أُصلح `TSKV` الذي كان يستنتج نوعًا رقميًا لقيمة مرمَّزة بتسلسل هروب مثل `x=1\x2E5`. يغلق [#112105](https://github.com/ClickHouse/ClickHouse/issues/112105). [#112226](https://github.com/ClickHouse/ClickHouse/pull/112226) ([Groene AI](https://github.com/groeneai)).
* إصلاح `system.s3_queue_settings` الذي كان يبلّغ عن قيم غير صحيحة لـ `bucketing_mode` و`partitioning_mode` و`partition_regex` و`partition_component`. [#112300](https://github.com/ClickHouse/ClickHouse/pull/112300) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح النتائج الخاطئة، ومخرجات `ORDER BY` المرتبة بشكل غير صحيح، واستثناءات `BAD_TYPE_OF_FIELD` عندما يكون المفتاح الأساسي `Array` أو `Tuple` ويطبّق الاستعلام عليه `plus` أو `minus` أو `multiply` أو `divide` أو `intDiv`. [#112339](https://github.com/ClickHouse/ClickHouse/pull/112339) ([Groene AI](https://github.com/groeneai)).
* إصلاح التنفيذ عن بُعد للاستعلامات التي تحتوي على `PASTE JOIN`، مثلًا عبر جدول `Distributed` أو دالة الجدول `*Cluster`. لم يعد ClickHouse ينسّق الاستعلام بالصياغة غير الصالحة `ALL PASTE JOIN`. [#112404](https://github.com/ClickHouse/ClickHouse/pull/112404) ([Groene AI](https://github.com/groeneai)).
* إصلاح `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) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح العمود الافتراضي `_tags` لمحرك الجداول `S3Queue`: كان مُعلنًا عنه لكنه لم يُملأ مطلقًا، لذا كان `SELECT _tags` يعيد دائمًا خريطة فارغة. ويعيد الآن وسوم الكائن، كما يفعل محرك `S3` ودالة الجدول `s3`. [#108676](https://github.com/ClickHouse/ClickHouse/pull/108676) ([Groene AI](https://github.com/groeneai)).
* إصلاح فقدان بيانات عمود لا يحتوي على تعبير افتراضي عند تنفيذ عملية دمج بالتزامن مع `ALTER TABLE... RENAME COLUMN`، أو عندما تكون قيم العمود الوحيدة ناتجة من `UPDATE` خفيف. إذ كان يمكن إسقاط العمود من الجزء المدمج، فتُقرأ جميع قيمه لاحقًا على أنها NULL. [#109356](https://github.com/ClickHouse/ClickHouse/pull/109356) ([Groene AI](https://github.com/groeneai)).
* إصلاح إسقاط فهارس التخطي من جزء بيانات (أو فشل `CHECK TABLE` بالخطأ `UNEXPECTED_FILE_IN_DATA_PART`) بعد طفرة تعيد كتابة الجزء بالكامل، مثل `ALTER TABLE... DROP COLUMN` لعمود `MATERIALIZED`، في جزء `Wide`. [#109616](https://github.com/ClickHouse/ClickHouse/pull/109616) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأين في مسار `DateTime64` للدالتين `toUTCTimestamp`/`fromUTCTimestamp` (والاسمين المستعارين `to_utc_timestamp`/`from_utc_timestamp`) و`toTime64`. الأول هو تجاوز عدد صحيح موقّع قرب حد `Int64` (ويُحسب الآن باستخدام `Int128` ويُقيَّد بالنطاق القابل للتمثيل). والثاني نتيجة خاطئة للقيم الكسرية السالبة قرب حد إزاحة المنطقة الزمنية: إذ كان تقسيم الثواني يقتطع باتجاه الصفر، فتفحص `timezoneOffset()` الثانية التالية وقد تختار الجانب الخطأ من تغيير التوقيت الصيفي/الإزاحة. [#109738](https://github.com/ClickHouse/ClickHouse/pull/109738) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي ("Cannot determine row level filter; 0 columns deleted, 0 columns added") عند القراءة من جدول `Merge` كان جدوله الفرعي يملك سياسة صف يكون عامل تصفيتها عمودًا موجودًا فقط (مثلًا `CREATE ROW POLICY... USING flag`). [#109843](https://github.com/ClickHouse/ClickHouse/pull/109843) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأين يظهران عند تشغيل استعلام يحتوي على `GROUP BY GROUPING SETS` (أو استعلام فرعي قياسي أو استعلام فرعي لطفرة يتضمنه) مع `force_aggregation_in_order = 1`: الخطأ `Trying to get name of not a column: ExpressionList` في المحلل القديم (`enable_analyzer = 0`)، والخطأ `Memory bound merging of aggregated results is not supported for grouping sets.` لاستعلام موزع مع `enable_memory_bound_merging_of_aggregation_results = 1` في المحلل. [#109862](https://github.com/ClickHouse/ClickHouse/pull/109862) ([Groene AI](https://github.com/groeneai)).
* إصلاح تحليل القيمتين الرقميتين `1`/`0` كقيم `Bool` داخل أنواع الحاويات (مثل `Array(Bool)` و`Tuple(Bool,...)`). سابقًا، كان `[1,0]` يفشل بالخطأ `CANNOT_READ_ARRAY_FROM_TEXT`، بينما كان `[true,false]` يعمل. [#109976](https://github.com/ClickHouse/ClickHouse/pull/109976) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ `ILLEGAL_COLUMN` غير صحيح صادر عن `ALTER TABLE... ADD COLUMN IF NOT EXISTS` عندما يكون العمود موجودًا بالفعل وقت التطبيق. كان ذلك يحدث عند إضافة العمود نفسه مرتين باستخدام `IF NOT EXISTS` في تعليمة واحدة، أو عندما يضيف `ALTER` متزامن العمود بين مرحلتي التحضير والتطبيق. [#110080](https://github.com/ClickHouse/ClickHouse/pull/110080) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتيجة خاطئة كانت فيها `length` (وبُعد QBit) لعمود `FixedString` تعيد `0` بدلًا من الحجم الثابت `N` عند استخدام النسخ المتماثلة المتوازية، عندما يتضمن الاستعلام عامل تصفية انتقائيًا. [#110427](https://github.com/ClickHouse/ClickHouse/pull/110427) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فقدان `flipCoordinates` للنوع `Geometry`: إذ أصبحت نتيجة تمرير وسيطة من النوع `Geometry` هي `Geometry` مجددًا بدلًا من `Variant(...)` الأساسي، ما يتيح تمريرها مباشرةً إلى دوال مثل `areaCartesian`. [#110694](https://github.com/ClickHouse/ClickHouse/pull/110694) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تغيّر نتائج الاستعلامات بسبب `optimize_injective_functions_in_group_by` مع `GROUP BY GROUPING SETS` و`GROUP BY... WITH TOTALS`. يوثَّق هذا الإعداد على أنه لا يغيّر النتائج، لكن إزالة دالة حقنية لمفتاح تجميع كانت تنتج قيمة خاطئة (أو تحذف صفًا) للصفوف التي لا يكون فيها ذلك المفتاح ضمن المجموعة المجمَّعة (مجموعة غير عضو في `GROUPING SETS`) أو لصف `WITH TOTALS`. وقد تتطابق القيمة الخاطئة مع قيمة مفتاح فعلية، مما يجعل صف التجميع الفائق غير قابل للتمييز عن مجموعة فعلية ضمن مجموعة النتائج نفسها. [#110721](https://github.com/ClickHouse/ClickHouse/pull/110721) ([Groene AI](https://github.com/groeneai)).
* أصبحت القيم الرقمية `1`/`0` عند تحليل JSON كـ `Bool` تراعي إعداد `allow_special_bool_values`. سابقًا، كانت مدخلات JSON مثل `{"v":1}` لـ `Variant(Bool, UInt32)` تُقرأ كـ `Bool` حتى مع `allow_special_bool_values_inside_variant = 0`، لأن محللات JSON لـ `Bool` كانت تتجاهل الإعداد ولأن لـ `Bool` أولوية أعلى عند إلغاء تسلسل `Variant` من أنواع الأعداد الصحيحة. [#110835](https://github.com/ClickHouse/ClickHouse/pull/110835) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `block.rows() == getRows()` (قراءة خارج الحدود وتعطل إزالة تكرار عمليات الإدراج في إصدارات الإصدار) عند مرور `INSERT` عبر عرض مادي تابع يكون هدفه `Alias` ويغيّر استعلامه الداخلي عدد الصفوف، مع وجود جدول لإزالة التكرار يمكن الوصول إليه بعد الاسم المستعار. [#111103](https://github.com/ClickHouse/ClickHouse/pull/111103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ منطقي `Block structure mismatch` (في إصدارات التصحيح و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)).
* تم إصلاح `DISTINCT` مع `LIMIT`/`OFFSET` مرتّب، الذي كان يعيد صفوفًا خاطئة عندما لا يتمكن تلميح حد الإيقاف المبكر لـ `DISTINCT` من تقييد بداية النتيجة: `LIMIT` سالب (كان يعيد البداية بدلًا من النهاية)، أو `LIMIT`/`OFFSET` كسري (لا يُحسم الكسر إلا بعد قراءة كاملة)، أو `OFFSET` دون `LIMIT` (كانت تُحذف النهاية بعد الإزاحة). على سبيل المثال، كان `SELECT DISTINCT intDiv(x, 100) FROM t ORDER BY intDiv(x, 100) LIMIT -1` على جدول متعدد الأجزاء يعيد أصغر قيمة مميزة بدلًا من أكبرها. [#111326](https://github.com/ClickHouse/ClickHouse/pull/111326) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج خاطئة عندما يحتوي الاستعلام على فهرس تخطي `set` ومسند بالشكل `(x AND <null-value>) OR y`، حيث تنتج `NULL` من دالة (مثل `toInt64OrNull('x')` أو `nullIf(1, 1)` أو `CAST(NULL AS Nullable(Int64))`). كانت هذه القيمة تُغلَّف بواسطة `__bitWrapperFunc` وتنشر `NULL` بدلًا من قناع "غير معروف"، ما يسمح لفهرس `set` باستبعاد حبيبات تتطابق فعليًا، فيعيد الاستعلام صفوفًا أقل مما ينبغي. [#111604](https://github.com/ClickHouse/ClickHouse/pull/111604) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `DELETE`/`UPDATE` على جدول Iceberg، الذي كان يحذف بصمت صفوفًا خاطئة (أو يطرح `NOT_FOUND_COLUMN_IN_BLOCK`) عندما يحتوي الجدول على ملفات بيانات كُتبت قبل وبعد `ALTER TABLE... ADD COLUMN` مع تمكين `optimize_move_to_prewhere`. [#111693](https://github.com/ClickHouse/ClickHouse/pull/111693) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` ("عدد الصفوف غير صالح في Chunk") — وكذلك إجهاض ذي صلة بسبب تجاوز الحدود في البنيات المُحصّنة — عند استخدام `ORDER BY ... WITH FILL ... INTERPOLATE` على جدول `Distributed` يضم جزأين أو أكثر، أو عبر `clusterAllReplicas`، أو عبر النسخ المتماثلة المتوازية ذات المفاتيح المخصصة، بما في ذلك النتائج الفارغة. يُطبَّق `WITH FILL` الآن فقط على العقدة التي تنتج النتيجة النهائية، مما يصلح أيضًا تكرار صفوف الملء المُولَّدة عبر الأجزاء/النسخ المتماثلة. [#111919](https://github.com/ClickHouse/ClickHouse/pull/111919) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* الحفاظ على إمكانية استخدام `randBinomial` مع الاحتمالين الحديين `0` و`1` لأي عدد من التجارب. [#112021](https://github.com/ClickHouse/ClickHouse/pull/112021) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح نتائج خاطئة ناتجة عن تلويث استعلام بحث متجهي لذاكرة التخزين المؤقت لشرط الاستعلام. كان استعلام `SELECT... WHERE <condition> ORDER BY <distance function> LIMIT n` على جدول ذي فهرس `vector_similarity` قد يسجل الحبيبات على أنها لا تطابق `<condition>`، مما يؤدي إلى أن يعيد استعلام `SELECT... WHERE <condition>` عادي لاحق على الجدول نفسه عددًا أقل من الصفوف بصمت. لم تعد قراءات البحث المتجهي تكتب في ذاكرة التخزين المؤقت لشرط الاستعلام. [#112086](https://github.com/ClickHouse/ClickHouse/pull/112086) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ كان يؤدي إلى قبول `CREATE VIEW` أو `CREATE FUNCTION` يستدعي تعريفه `substr` أو `mid` أو `byteSlice` بصيغة لا تستطيع قواعد `substring` تحليلها مجددًا، لكن البيانات الوصفية التي يكتبها ClickHouse له ليست SQL صالحة. تفشل قراءة هذا التعريف لاحقًا مع `SYNTAX_ERROR`، وعند بدء الخادم يتوقف تحميل البيانات الوصفية، لذلك لا يمكن للخادم البدء مطلقًا. أصبحت هذه التعريفات الآن قابلة للتحليل والكتابة مجددًا، وأصبحت ملفات البيانات الوصفية الحالية بصيغة `substring(x, a, b, c)` قابلة للقراءة مجددًا، بحيث يبدأ الخادم المتأثر دون تدخل يدوي. [#112195](https://github.com/ClickHouse/ClickHouse/pull/112195) ([Groene AI](https://github.com/groeneai)).
* إصلاح جدول `TimeSeries` كانت بياناته الوصفية المحلية قد اختلفت عن Keeper، مما جعل استرداد النسخة المتماثلة في قاعدة بيانات `Replicated` يتعطل إلى الأبد، فلا تعود النسخة المتماثلة تخدم قاعدة البيانات وتظل معطلة بعد إعادة التشغيل. تُحذف الآن الجداول الداخلية لمثل هذا الجدول بينما لا تزال معاملة البيانات الوصفية للاسترداد متاحة، بدلًا من تأجيلها إلى مهمة خلفية لم تكن تستطيع تنفيذ `DROP` أصلًا. [#112218](https://github.com/ClickHouse/ClickHouse/pull/112218) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة عمود فرعي من عمود `Nullable(Tuple(...))` يكون عنصره `LowCardinality(T)` غير قابل للقيم الخالية، عندما يقرأ الاستعلام نفسه أيضًا العمود الفرعي الأصلي. في جزء مضغوط، كان العمود الفرعي الأصلي يعيد قيمًا خاطئة، أو يفشل الاستعلام مع `Unexpected return type from assumeNotNull`، أو يُقتل الخادم بسبب تأكيد تحصين `string_view`، لأن العمود الفرعي المستخرج كان يُفك تسلسله في مخزن مؤقت `LowCardinality(Nullable(T))` ثم تُشارك تدفقاته الفرعية مع قراءة العمود الفرعي الأصلي. [#112232](https://github.com/ClickHouse/ClickHouse/pull/112232) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعليق دائم للخادم على macOS ناتج عن فقدان `pthread_rwlock` لإشارات التنبيه عند تمكين محلل الاستعلامات بأخذ العينات (خطأ Apple FB24027930): يُستبدل `pthread_rwlock` الآن بتنفيذ متين في مواجهة الإشارات على Darwin. [#112267](https://github.com/ClickHouse/ClickHouse/pull/112267) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تجاهل `max_execution_time` و`KILL QUERY` أثناء تقييم استعلام لـ `geohashesInBox` أو `arrayFold` أو `sleep` أو `base58Decode` أو `h3PolygonToCells` أو `h3PolygonToCellsWithContainment`. كان يمكن لمثل هذه الاستعلامات الاستمرار في التشغيل لدقائق بعد الإلغاء. يشمل ذلك الآن أيضًا التقييمات داخل التعبيرات المخزنة في البيانات الوصفية للجدول، مثل مفاتيح الفرز وفهارس التخطي ومفاتيح `PARTITION BY`. [#112273](https://github.com/ClickHouse/ClickHouse/pull/112273) ([Groene AI](https://github.com/groeneai)). [#113456](https://github.com/ClickHouse/ClickHouse/pull/113456) ([Groene AI](https://github.com/groeneai)).
* يُصلح خطأً منطقيًا `Cannot add step Expression to QueryPlan because it has incompatible header with root step JoinLazyColumnsStep` في استعلام يستخدم `FINAL` ومرشح `PREWHERE` و`LIMIT` صغيرًا و`make_distributed_plan = 1`، عندما تكون الأعمدة المحددة مرتبةً على نحو يختلف عن ترتيب أعمدة الجدول. إذ كانت المادية الكسولة تستبدل عقدةً في الخطة دون الاحتفاظ بترويسة مخرجاتها، مما يجعل خطة الاستعلام غير متسقة. [#112303](https://github.com/ClickHouse/ClickHouse/pull/112303) ([Groene AI](https://github.com/groeneai)).
* يُصلح كتابة جداول Iceberg التي يتضمن مخططها Tuple متداخلًا داخل Tuple آخر. إذ كانت البيانات الوصفية المنشورة للجدول تستبدل أسماء حقول الـ Tuple الداخلي بأسماء موضعية `1`، `2`،...، ولذلك كان `INSERT` يفشل بالخطأ `INCORRECT_DATA` عند استخدام تنسيق `Parquet` الافتراضي، ولم يكن بالإمكان قراءة العمود مجددًا باستخدام `Avro`. [#112480](https://github.com/ClickHouse/ClickHouse/pull/112480) ([Groene AI](https://github.com/groeneai)).
* يُصلح الخطأ `ATTEMPT_TO_READ_AFTER_EOF` عند دمج أجزاء تحتوي على فهرس نصي إذا كان أحد الأجزاء المدمجة فارغًا، مثلًا بعد عملية mutation حذفت جميع صفوف الجزء. [#112490](https://github.com/ClickHouse/ClickHouse/pull/112490) ([Anton Popov](https://github.com/CurtizJ)).
* يُصلح نتائج غير صحيحة وخطأً منطقيًا عندما تأتي وسيطة يجب أن تكون ثابتة، مثل مقياس `toDecimal32` أو المنطقة الزمنية لـ `toDateTime`، من استعلام فرعي قيَمي مع استخدام المحلل القديم. إذ كانت هذه الوسيطة تُحلل كما لو أن قيمتها صفر أو فارغة، فتختلف النتيجة المحسوبة عن نوع النتيجة المُعلن، ويؤدي `CREATE VIEW` و`CREATE MATERIALIZED VIEW` إلى حفظ نوع عمود خاطئ. [#112492](https://github.com/ClickHouse/ClickHouse/pull/112492) ([Groene AI](https://github.com/groeneai)).
* يُصلح `LOGICAL_ERROR` ("Part... contains column... that is absent in table...") عندما تُجري نسخة متماثلة من `ReplicatedMergeTree` عملية mutation على جزء جلبته من نسخة متماثلة أخرى قبل تطبيق `ALTER... ADD COLUMN` المعلّق الخاص بها. تُؤجَّل عملية mutation هذه الآن حتى يُطبَّق تغيير البيانات الوصفية. [#112510](https://github.com/ClickHouse/ClickHouse/pull/112510) ([Groene AI](https://github.com/groeneai)).
* أصلح نتائج استعلام غير صحيحة عند استخدام GROUP BY مع ORDER BY و`arrayJoin` في الإسقاط. [#101775](https://github.com/ClickHouse/ClickHouse/pull/101775) ([Yash ](https://github.com/Onyx2406)).
* يُصلح تعطل الخادم (وصول خارج الحدود) في `S3Queue`/`AzureQueue` مع `enable_hash_ring_filtering = 1` عندما تحتوي دفعة على ملف غير قابل للمعالجة، ويفشل في الوقت نفسه طلب Keeper لتعيين الدفعة بحالة processing. [#108977](https://github.com/ClickHouse/ClickHouse/pull/108977) ([Groene AI](https://github.com/groeneai)).
* يُصلح خطأً منطقيًا `Stream <col>.variant_discr... is not found` (توقف الخادم في إصدارات debug وsanitizer) عندما يغيّر `ALTER TABLE... MODIFY COLUMN` عمودًا إلى نوع ذي أعمدة فرعية ديناميكية (مثلًا من `Variant` إلى `Dynamic`) في جدول ذي أجزاء Wide، ثم يُقرأ الجزء أو يُدمج لاحقًا. [#110204](https://github.com/ClickHouse/ClickHouse/pull/110204) ([Groene AI](https://github.com/groeneai)).
* يُصلح تجاوز سعة عدد صحيح موقّع (UBSan) عند تحويل قيمة قصوى من `DateTime64` (مثل `INT64_MIN`) إلى `Time`/`Time64` في منطقة زمنية ذات إزاحة سالبة. [#110451](https://github.com/ClickHouse/ClickHouse/pull/110451) ([Groene AI](https://github.com/groeneai)).
* أصلح مشكلة تجعل جدول MergeTree يحتوي على إسقاط `_part_offset` أو إسقاط بترتيب commit غير قابل للإرفاق بشكل دائم بعد تعطيل `allow_part_offset_column_in_projections` أو `allow_commit_order_projection` وفصل الجدول أو إعادة تشغيل الخادم. هذان الإعدادان يمثلان بوابتين عند وقت CREATE، لذا لم يعد يُعاد التحقق منهما عند ATTACH. [#110570](https://github.com/ClickHouse/ClickHouse/pull/110570) ([Groene AI](https://github.com/groeneai)).
* مع `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) ([Dmitry Novik](https://github.com/novikd)).
* يُصلح مشكلة كانت تتيح للطلبات غير الموثَّقة أن تتسبب في قيام ClickHouse بحل أسماء المضيفين الواردة في ترويسات عناوين العملاء المُمرَّرة. يقبل ClickHouse الآن عناوين IP رقمية فقط من هذه الترويسات. وتُتجاهل القيم غير الصالحة عند إسناد الحصص إلى العناوين المُمرَّرة، من دون إجراء حل DNS. وعند تمكين `auth_use_forwarded_address`، تُرفض العناوين المُمرَّرة غير الصالحة أثناء المصادقة. وتُسجَّل حالات الرفض على مستوى التصحيح. [#111060](https://github.com/ClickHouse/ClickHouse/pull/111060) ([Dmitriy Borisenko](https://github.com/otselnik)).
* يُصلح `NOT_FOUND_COLUMN_IN_BLOCK` عندما تشير سياسة صفوف و`additional_table_filters` إلى العمود نفسه الذي لا يختاره الاستعلام لولا ذلك. [#111099](https://github.com/ClickHouse/ClickHouse/pull/111099) ([Groene AI](https://github.com/groeneai)).
* يُصلح خطأ `UNKNOWN_IDENTIFIER` للأعمدة المؤهَّلة باسم تعبير الجدول الشائع (`cte_name.column`) في الاستعلامات المخزنة ضمن العروض عند تمكين المحلّل. [#111386](https://github.com/ClickHouse/ClickHouse/pull/111386) ([Dmitry Novik](https://github.com/novikd)).
* يُصلح خطأ `LOGICAL_ERROR` (`Got read request from replica N for unknown stream...`) كان قد يؤدي إلى إيقاف الخادم عند القراءة باستخدام النسخ المتماثلة المتوازية، إذا أُجيب عن الاستعلام بالكامل بواسطة تحسين إسقاط على البادئ (عدد دقيق، أو عدد minmax، أو إسقاط تجميعي/عادي مخزَّن لا يختار أي نطاقات). [#111689](https://github.com/ClickHouse/ClickHouse/pull/111689) ([Groene AI](https://github.com/groeneai)).
* أُصلح تجاوز سعة لعدد صحيح موقّع في التحميل الزائد ذي الوسائط الثلاثة للدالة `toStartOfInterval`: إذ كانت الدالة، عند وجود وسيطة `origin` قرب الحد الأدنى لـ `Int64`، تُرجع قيمة ملتفة بدلًا من الإبلاغ عن خطأ. [#112045](https://github.com/ClickHouse/ClickHouse/pull/112045) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُصلح استثناء `LOGICAL_ERROR` (`Block structure mismatch in joined block stream`) في عملية ربط متعددة الجداول، حيث لا ينتج الربطان الفرعيان أي أعمدة إخراج، مثل `SELECT count() FROM t1, t2, t3, t4 WHERE (t1.b = t2.b) AND (t3.a = t4.a)` مع ضبط `query_plan_optimize_join_order_limit` على `0` أو `1`. [#112205](https://github.com/ClickHouse/ClickHouse/pull/112205) ([Groene AI](https://github.com/groeneai)).
* أُصلحت دالة الجدول `values` التي كانت تعرض ثابت `Bool` غير حرفي (مثل `CAST(true, 'Nullable(Bool)')`) مُدرجًا في عمود `String`/نصي على هيئة `1`/`0` بدلًا من `true`/`false`. [#112308](https://github.com/ClickHouse/ClickHouse/pull/112308) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* يُصلح `LOGICAL_ERROR` (`partitions_count > 0`) عند تقسيم أجزاء بيانات `Iceberg` التي أفرغتها عمليات الحذف حسب الموضع، مثلًا أثناء ضغط جدول `Iceberg` مُقسَّم يحتوي على ملفات بيانات محذوفة بالكامل. [#112432](https://github.com/ClickHouse/ClickHouse/pull/112432) ([Pedro Ferreira](https://github.com/PedroTadim)).
* تم إصلاح استنتاج المخطط الذي كان يقترح نوعًا رقميًا لقيم نصية يتعذر على محلل القيم قراءتها مجددًا. كان الاستنتاج يقبل أسًّا غير مكتمل (`1e+`) أو مانتيسا مفقودة (`.`) أو إشارة مكررة (`++inf`)، ثم يرفضها `readFloatTextPrecise` باستخدام `CANNOT_PARSE_NUMBER` عند قراءة المخطط المستنتج؛ وكان ذلك يؤدي إلى خطأ عند INSERT في عمود `Dynamic`. يتحقق الاستنتاج الآن من الرقم باستخدام المحلل الذي يستخدمه القارئ فعليًا. ويزيل هذا أيضًا حالة كان فيها النوع المستنتج يعتمد على `max_read_buffer_size`، ويتيح لصيغ الأس الصالحة ذات الأصفار البادئة، مثل `0e5`، استنتاج `Float64` في TSV، كما هو الحال بالفعل في CSV. يتبع [#112226](https://github.com/ClickHouse/ClickHouse/issues/112226) ويغلق الجزء المتعلق بالأس من [#112105](https://github.com/ClickHouse/ClickHouse/issues/112105). [#112453](https://github.com/ClickHouse/ClickHouse/pull/112453) ([Groene AI](https://github.com/groeneai)).
* الإبلاغ عن الموضع الصحيح للأخطاء في استعلامات PromQL. [#112494](https://github.com/ClickHouse/ClickHouse/pull/112494) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح خطأ `LOGICAL_ERROR` (`Cannot add transform Resize to Pipes because it has no outputs`) الذي يحدث عند تشغيل استعلام يجمع البيانات عبر عنقود مع `serialize_query_plan = 1` والنسخ المتماثلة المتوازية المستندة إلى الخطة، بسبب قيام خطوة الدمج بتغيير حجم خط المعالجة إلى صفر من التدفقات. [#112506](https://github.com/ClickHouse/ClickHouse/pull/112506) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاوز سالب غير موقّع في التحقق من طول اسم الجدول كان يسمح بإنشاء جدول لا يمكن حذفه أبدًا. عندما بلغ اسم قاعدة البيانات المُهرَّب 214 بايتًا، حدث التفاف في الحد المحسوب لاسم الملف `metadata_dropped`، لذا تم قبول `CREATE TABLE` وفشل `DROP TABLE` أو `DROP DATABASE` اللاحق برسالة `File name too long`. يُرفض الآن هذا الاسم باستخدام `ARGUMENT_OUT_OF_BOUND`، وهو الخطأ نفسه الذي كان يُعاد بالفعل قبل ذلك الحد مباشرةً. [#112527](https://github.com/ClickHouse/ClickHouse/pull/112527) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناء `Context has expired` عند استخدام `getClientHTTPHeader` داخل استعلام فرعي. [#112533](https://github.com/ClickHouse/ClickHouse/pull/112533) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح الرفض غير الصحيح من `s3_allow_server_credentials_in_user_queries` لـ `extra_credentials(role_arn = '...')` المقدمة ضمن الاستعلام. أصبح تولّي دور عبر STS مع تحديد الدور صراحةً مسموحًا به دائمًا، لأنه لا يكشف بيانات اعتماد الخادم نفسه للاستعلام، ولأنه الطريقة الموثقة لمنح الوصول إلى حاوية S3 خاصة. [#112603](https://github.com/ClickHouse/ClickHouse/pull/112603) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح فرض رسوم زائدة على عدادات القراءة (`read_rows`، `read_bytes`، `ProfileEvents['SelectedRows']`، `ProfileEvents['SelectedBytes']`) وحصص `READ_ROWS` و`READ_BYTES` للاستعلامات التي يكتب فيها `ORDER BY` بيانات مؤقتة إلى القرص. كانت الصفوف المعاد قراءتها من الملفات المؤقتة للفرز الخارجي تُحتسب مجددًا كقراءات من المصدر، لذا كان الاستعلام الذي يكتب بيانات مؤقتة إلى القرص يبالغ في الإبلاغ عما قرأه وقد يُرفض باستخدام `QUOTA_EXCEEDED` رغم بقائه ضمن حصته. [#112645](https://github.com/ClickHouse/ClickHouse/pull/112645) ([Groene AI](https://github.com/groeneai)).
* إصلاح جدول Iceberg بتنسيق كتابة `Avro` كان يُسلسل حقلًا مُعلنًا عنه بـ `"required": false` ونوعه `list` أو `map` أو `struct` على أنه مطلوب، من دون اتحاد `["null", T]`، مما كان يجعل مخطط ملف البيانات نفسه لا يتوافق مع بيانات تعريف الجدول، ويرى قارئو Iceberg الآخرون الحقل مطلوبًا. يُكتب هذا الحقل الآن كاتحاد `["null", T]` الذي تستخدمه مواصفة Iceberg للحقل الاختياري. [#112648](https://github.com/ClickHouse/ClickHouse/pull/112648) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة في جداول `DeltaLake` كانت تؤدي إلى إرجاع عدد قليل جدًا من الصفوف عندما يحتوي مسند `WHERE` على تعبير فرعي لا يستطيع مترجم المسندات في delta-kernel التعامل معه ويقع ضمن `NOT`. يُبلّغ الآن عن هذا التعبير الفرعي إلى delta-kernel باعتباره مسندًا غير معروف صراحةً بدلًا من اعتباره نهاية مكرّر العناصر الفرعية، وهو ما كان يؤدي سابقًا إلى اقتطاع الاقتران المحيط بصمت. [#112652](https://github.com/ClickHouse/ClickHouse/pull/112652) ([Groene AI](https://github.com/groeneai)).
* إصلاح تلف في الكومة كان قد يتسبب في تعطل الخادم عند إيقاف التشغيل، وينجم عن قيام التابع `const` ‏`AccessRights::getFilters` بتعديل شجرة لحقوق الوصول تتشاركها استعلامات متزامنة. [#112692](https://github.com/ClickHouse/ClickHouse/pull/112692) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي في تنسيق الاستعلامات عندما لا تتضمن عبارة `ARRAY JOIN` أي تعبيرات. تُرفض هذه العبارة الآن أثناء التحليل باستخدام `SYNTAX_ERROR`، على غرار `USING` الفارغة، بدلًا من قبولها وتنسيقها كنص لا يمكن تحليله مجددًا. [#112699](https://github.com/ClickHouse/ClickHouse/pull/112699) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق استعلام أثناء التنفيذ المحلي لخطط الاستعلامات الموزعة (`distributed_plan_execute_locally = 1`): إذ كان قارئ التبادل داخل الذاكرة قد يحجب خيط pipeline الوحيد قبل بدء المصادر التي تنتج بياناته. [#111762](https://github.com/ClickHouse/ClickHouse/pull/111762) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح حقول `Iceberg` المعلنة باستخدام `"required": false` والتي يكون نوعها `list` أو `map` أو `struct`، إذ كانت تُكتب كـ `REQUIRED` في تذييل `Parquet`. تُكتب هذه الحقول الآن كـ `OPTIONAL`، بما يتوافق مع مخطط `Iceberg` المنشور والقارئات الأخرى. [#112669](https://github.com/ClickHouse/ClickHouse/pull/112669) ([Groene AI](https://github.com/groeneai)).
* إصلاح استخدام الكومة بعد تحريرها في منفّذ pipeline، كان قد يتسبب في تعطل الخادم عندما يزيل استعلام معالجات أثناء وقت التشغيل (مثل `FINAL` مع القراءات الكسولة أو الفرز الخارجي)، وقد اكتشفه AST fuzzer. [#111017](https://github.com/ClickHouse/ClickHouse/pull/111017) ([Groene AI](https://github.com/groeneai)).
* إصلاح استخدام بعد التحرير (خطأ تجزئة) عندما يزيل استعلام ذو لقطة تخزين مشتركة (الإعداد `enable_shared_storage_snapshot_in_query`) أجزاء بيانات من اللقطة — مثل استعلام فرعي متدفق يقرأ جدول `MergeTree` نفسه الذي يقرأه جزء آخر من الاستعلام بالتزامن. [#111192](https://github.com/ClickHouse/ClickHouse/pull/111192) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض الاستخدامات غير المدعومة لأعمدة `AggregateFunction` في تعبيرات TTL عند تنفيذ `CREATE TABLE` (مثل `TTL toDateTime(state)`) بدلًا من الفشل لاحقًا أثناء تنفيذ TTL باستخدام `ILLEGAL_TYPE_OF_ARGUMENT`. يشمل ذلك أيضًا الحالات الموجودة ضمن بدائل `Variant` وقيم `Dynamic`. وما زالت المستهلكات الصالحة المراعية للحالة، مثل `finalizeAggregation`، مقبولة. [#107366](https://github.com/ClickHouse/ClickHouse/pull/107366) ([Ria Khatoniar](https://github.com/Ria-K912)).
* إصلاح `LOGICAL_ERROR` ‏(`CTE '...' does not have query tree, but was not planned yet`) عندما يُشار إلى CTE ‏`MATERIALIZED` من أكثر من موضع في شجرة الربط (مثل استعلامين فرعيين مربوطين، أو استعلام فرعي مربوط واستعلام فرعي قيَمي في `WHERE`) ضمن استعلام على جدول `Distributed`. يُنفّذ الاستعلام الآن بدلًا من إثارة الاستثناء (إذ كان يؤدي إلى إيقاف الخادم في إصدارات debug/sanitizer). [#108924](https://github.com/ClickHouse/ClickHouse/pull/108924) ([Groene AI](https://github.com/groeneai)).
* الحفاظ على الترتيب الأصلي للمفاتيح في تسلسل Map المقسّم إلى حاويات لإصلاح عمليات المقارنة التي تعتمد عليه. [#109178](https://github.com/ClickHouse/ClickHouse/pull/109178) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح تحوّل `made_current_at` في `system.iceberg_history` إلى `1970-01-01` للقطة محتفَظ بها بعد تنفيذ `ALTER TABLE... EXECUTE expire_snapshots` على جدول Iceberg. كما تم إصلاح عدم إرجاع `system.iceberg_history` أي صفوف لجدول لا تحتوي بياناته الوصفية على `snapshot-log`. [#111781](https://github.com/ClickHouse/ClickHouse/pull/111781) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح محاولة تحليل نص من نوع `FixedString` كانت تترك بايتات مضافة جزئيًا في العمود عند فشل التحليل، ما قد يسبب الخطأ المنطقي `Sizes of nested column and null map of Nullable column are not equal` أثناء تسلسل أعمدة `Variant`/`Array`/`Nullable`، أو ينتج بايتات نتيجة مزاحة بصمت. [#111908](https://github.com/ClickHouse/ClickHouse/pull/111908) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاهل `replaceOne` و`replaceAll` و`replaceRegexpOne` و`replaceRegexpAll` لـ `max_execution_time` و`KILL QUERY`. يتحقق الاستدعاء الواحد الآن من الإلغاء أثناء تنفيذه، بحيث يتوقف الاستبدال طويل التشغيل على قيمة كبيرة أو عدد كبير من الصفوف بدلًا من شغل خيط خادم حتى اكتماله. لا يمكن لهذا الاستدعاء إرجاع نتيجة جزئية، لذا فإنه في ظل `timeout_overflow_mode = 'break'` يبلّغ عن تجاوز الموعد النهائي كخطأ: دائمًا عند الطي الثابت، وفي خط الأنابيب كلما وصلت العملية إلى نقطة التحقق هذه قبل فحص المنفّذ بين الكتل، الذي يواصل إيقاف الاستعلام بصمت. [#112483](https://github.com/ClickHouse/ClickHouse/pull/112483) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي وسجل تبعية خاطئ عندما يشير متن `VIEW` عادي إلى جدول أو قاموس عبر معامل استعلام، كما في `CREATE VIEW v AS SELECT x FROM {db:Identifier}.t`. لم يعد هذا العرض يسجل تبعية مرجعية لجدول بالاسم نفسه في قاعدة البيانات الحالية، لذا أصبح بالإمكان حذف الجداول غير المرتبطة مجددًا. [#112704](https://github.com/ClickHouse/ClickHouse/pull/112704) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة بنوع خاطئ لعمود فرعي لعنصر `Nested` حُذف عموده ثم أُضيف مجددًا. كان اختيار هذا العمود الفرعي مع العمود الأصل الخاص به يعيد العنصر كاملًا في موضع العمود الفرعي، بينما كانت الكتلة لا تزال تعلن نوع العنصر، ما كان ينتج قيمًا عشوائية في إصدارات الإنتاج وخطأً منطقيًا في إصدارات التصحيح وsanitizer. [#112769](https://github.com/ClickHouse/ClickHouse/pull/112769) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `Cannot read all data of type FixedString` عند قراءة العمود الفرعي `product_quantization_codebook` لعمود يستخدم برنامج الترميز `Quantized('product',...)`. يُكتب دفتر الشيفرات الخاص بكل جزء بعد بيانات جميع الحبيبات، ولذلك لا تحدّه العلامات، وقد تؤدي قراءة ينتهي نطاق علاماتها قبل العلامة النهائية للجزء إلى قراءته بشكل ناقص. [#112818](https://github.com/ClickHouse/ClickHouse/pull/112818) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تعطل تجزئة وفساد صامت للبيانات عند تنفيذ `INSERT` في محرك `File` أو دالة الجدول `file` لإضافة بيانات إلى ملف غير فارغ بتنسيق لا يدعم الإضافة، مثل `Avro`. كانت الكتابة عبر واصف ملف أو مسار مقسّم تتجاوز الفحص القائم، لذا كانت بادئة التنسيق تُحذف ويُكتب ترويس ثانٍ بعد البايتات الموجودة، ما يجعل الملف غير قابل للقراءة. يُرفض الآن `INSERT` من هذا النوع بالخطأ `CANNOT_APPEND_TO_FILE`، كما هو الحال بالفعل مع مسار عادي. [#112839](https://github.com/ClickHouse/ClickHouse/pull/112839) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح ظهور الخطأ `Context has expired` من `connectionId` عند استخدامها داخل استعلام فرعي، وذلك بالتقاط معرّف اتصال العميل عند إنشاء الدالة. يغلق [#112533](https://github.com/ClickHouse/ClickHouse/issues/112533). [#112870](https://github.com/ClickHouse/ClickHouse/pull/112870) ([ClickGap AI Bot](https://github.com/clickgapai)).
* أُصلح تحليل الأعداد الصحيحة التي لا تتسع في النوع الهدف في `Poco::NumberParser`، المستخدم لقراءة أرقام JSON. إذ كان هذا العدد يُحلَّل بصمت إلى قيمة خاطئة (مثلًا، كان `18446744073709551617` يصبح `1`) بدلًا من رفضه، كما أن رقم `UInt64` الذي يتجاوز الحد الأقصى لـ `Int64` لم يكن يحتفظ بقيمته بعد التحويل ذهابًا وإيابًا عبر JSON الخاص بـ AST. [#112904](https://github.com/ClickHouse/ClickHouse/pull/112904) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح `IS DISTINCT FROM` لقيم `Array` و`Map` عند مقارنتها بـ `NULL`. يغلق [#103042](https://github.com/ClickHouse/ClickHouse/issues/103042). [#103162](https://github.com/ClickHouse/ClickHouse/pull/103162) ([yanglongwei](https://github.com/ylw510)).
* منع استنفاد إعادات المحاولة في DDL الموزع المنسوخ الذي ينفذه القائد من حظر استعلامات DDL اللاحقة باستخدام `ON CLUSTER` بشكل دائم. [#108505](https://github.com/ClickHouse/ClickHouse/pull/108505) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* أُصلح `LOGICAL_ERROR` ("محاولة استخراج جزء من ChunkBuffer قبل انتهاء جميع المدخلات") عند دمج عملية مجموعات (`INTERSECT` / `UNION ALL` / `EXCEPT`) لفروع تستخدم استعلامات فرعية مترابطة و`correlated_subqueries_default_join_kind = 'left'`. [#108554](https://github.com/ClickHouse/ClickHouse/pull/108554) ([Groene AI](https://github.com/groeneai)).
* أصبح تحويل قيم الفاصلة العائمة خارج النطاق (`BFloat16`، `Float32`، `Float64`) وقيم `UInt64` التي تتجاوز `Int64::max()` إلى `DateTime` و`Time` يتشبع بصورة موثوقة عند حدود النطاق على جميع المعماريات (إذ كانت نتيجة التحويل خارج النطاق تعتمد سابقًا على المعمارية وقد تلتف على x86-64)، وأصبحت القيم غير المنتهية (`NaN`، `inf`) تطرح استثناءً بدلًا من إنتاج نتيجة عشوائية. يُطبَّق الإصلاح نفسه على مسار التحويل من الفاصلة العائمة إلى `Date` في `toDate` وعلى تحويلات `UInt64` والأعداد الصحيحة العريضة (`(U)Int128`، `(U)Int256`) إلى `Date` و`Date32`، التي كان يمكن أن تعيد يومًا سابقًا للعصر بدلًا من التشبع. كما أصبح تحويل الأرقام إلى `Time` يتشبع ضمن نطاق النوع لجميع أنواع المصادر الرقمية (إذ كانت القيم من المصادر غير الموقعة الضيقة أو مصادر الأعداد الصحيحة العريضة تُخزَّن سابقًا دون تقييد ولا تُقيَّد إلا عند طباعتها)، ولم يعد التحويل الدقيق إلى `Time` يرفض القيم السالبة التي يدعمها `Time` أو يشبع بصمت القيم التي لا تتسع فيه. ولم يعد التحويل الدقيق لعدد إلى `Date32` (`accurateCast`، `accurateCastOrNull`) يشبع بصمت قيمة خارج النطاق أو غير منتهية، بل يطرح استثناءً أو يعيد `NULL`، كما كان يفعل مع `Date` و`DateTime`، بينما تعيد صيغ `OrDefault` القيمة الافتراضية لـ `Date32` لمثل هذا الإدخال. وأصبح التحويل الدقيق لعدد ذي فاصلة عائمة غير صحيح إلى `Date` أو `Date32` أو `DateTime` أو `Time` مرفوضًا بدلًا من اقتطاعه بصمت. أُصلحت أيضًا وثائق الدالة `toDateTime32`، التي كانت تعرض خطأً أمثلة `toDateTime64` وتصف نطاق قيم `DateTime64`. [#110459](https://github.com/ClickHouse/ClickHouse/pull/110459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `ALTER TABLE... DETACH PARTITION/PART` ينفذ الآن `fsync` للنسخة التي ينشئها ضمن `detached/` (الشجرة الفرعية للجزء وسلسلة الدلائل حتى جذر القرص) عند تمكين إعداد `fsync_part_directory` للجدول، وذلك لكلٍّ من تخزين الأجزاء Full (الدليل) وPacked. سابقًا، لم يكن يُنفَّذ `fsync` للنسخة مطلقًا، بينما كان يُنفَّذ للجزء المغطي الفارغ الذي يزيل الصفوف من المجموعة النشطة؛ لذلك كان فقدان الطاقة مباشرة بعد الإقرار قد يؤدي إلى إتلاف البيانات المفصولة على btrfs (إذ تتراجع إدخالات دليل النسخة غير المتزامنة، مما يترك `detached/` فارغًا ولا شيء لتنفيذ `ATTACH` عليه). يخضع ذلك لإعداد `fsync_part_directory` الحالي، ولا يتغير السلوك الافتراضي. [#111426](https://github.com/ClickHouse/ClickHouse/pull/111426) ([Groene AI](https://github.com/groeneai)).
* إصلاح `CREATE OR REPLACE` الذي كان يترك الكائن المستبدَل باسم داخلي عندما لا يملك المستدعي صلاحية حذفه. [#111466](https://github.com/ClickHouse/ClickHouse/pull/111466) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح تعطل عند تنفيذ قراءة `STREAM` (`enable_streaming_queries = 1`) على جدول يحتوي على أكثر من قسم واحد ومُعرَّفة عليه سياسة صفوف. في إصدارات التصحيح والتنقية، كان يفشل بالخطأ المنطقي `Filter column... not found in DAG outputs`؛ وفي إصدارات الإنتاج، كان قد يؤدي إلى خطأ تجزئة. [#111572](https://github.com/ClickHouse/ClickHouse/pull/111572) ([Groene AI](https://github.com/groeneai)).
* إصلاح `count()` في جداول Iceberg التي يكون ملخص لقطة الحالة فيها غير دقيق أو تالفًا: يستمد تحسين العد البسيط الآن أعداد الصفوف الدقيقة من ملفات البيان، ويلجأ إلى مسح فعلي عندما تجعل عمليات الحذف على مستوى الصف أعداد البيانات الوصفية غير دقيقة. كما يُصلح `OPTIMIZE TABLE` في Iceberg الذي كان يكتب أعداد قائمة البيانات الوصفية وسجل الأصل بشكل غير صحيح، ويجعل البيانات الوصفية `totalBytes` أكثر متانة أمام الملخصات التالفة. [#111617](https://github.com/ClickHouse/ClickHouse/pull/111617) ([Melvyn Peignon](https://github.com/melvynator)).
* إصلاح عمود DEFAULT مفقود في جزء كان يُملأ بالقيمة الافتراضية للنوع بدلًا من تعبير DEFAULT عندما يُقسَّم شرط PREWHERE إلى عدة خطوات قراءة. يغلق [#111757](https://github.com/ClickHouse/ClickHouse/issues/111757). [#111795](https://github.com/ClickHouse/ClickHouse/pull/111795) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح الخطأين المنطقيين `Expected UInt64 column for __grouping_set, got BLOB` و`ColumnBLOB should be converted to a regular column before usage` في استعلام موزع يُنفَّذ على جزء مع تفعيل `enable_parallel_blocks_marshalling` (مُفعَّل افتراضيًا)، مثلًا عند استخدام `GROUP BY GROUPING SETS` على عنقود يتضمن نسخة متماثلة محلية، أو عند قراءة جدول `Merge` يمتد عبر جدول محلي وآخر موزع. لم تعد `BlocksMarshallingStep` تُضاف إلى الخطط التي تُستهلك كتلها ضمن العملية نفسها. [#111997](https://github.com/ClickHouse/ClickHouse/pull/111997) ([Groene AI](https://github.com/groeneai)).
* تفشل العمليات الآن عند تحميل إحصاءات MergeTree تالفة بدلًا من تجاهل الخطأ. [#112201](https://github.com/ClickHouse/ClickHouse/pull/112201) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* إصلاح خطأ منطقي عند استخدام PREWHERE على جدول Merge فوق جدول Merge آخر أو عرض مادي يختلف نوع أحد أعمدته. كما يُصلح تجاهل سياسة صفوف بصمت في الجداول التي تقرأ من خوادم بعيدة (جدول Distributed أو جدول يغلّف واحدًا)، مما قد يكشف صفوفًا كان يُفترض أن تخفيها السياسة؛ إذ تُرفض هذه الاستعلامات الآن بخطأ ILLEGAL\_PREWHERE. عرّف هذه السياسات بدلًا من ذلك على الجداول المحلية الأساسية في كل خادم بعيد؛ لاحظ أن هذه السياسة لا تزال لا تُطبَّق على القراءات المُرسلة مع `serialize_query_plan = 1`، وهذا خطأ منفصل موجود مسبقًا. [#112326](https://github.com/ClickHouse/ClickHouse/pull/112326) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح `connection_pool_max_wait_ms` بحيث تعني قيمته الموثقة والافتراضية `0` مهلة انتظار لا نهائية. كان الاستعلام الذي يجد تجمّع الاتصالات ممتلئًا يعيد المحاولة في حلقة محكمة، مستهلكًا CPU ومسجلًا `No free connections in pool. Waiting 0 ms.` في كل تكرار. وينتظر الآن حتى يُعاد اتصال إلى التجمّع. يغلق [#112053](https://github.com/ClickHouse/ClickHouse/issues/112053). [#112380](https://github.com/ClickHouse/ClickHouse/pull/112380) ([Groene AI](https://github.com/groeneai)).
* إصلاح الفقدان الصامت لعمليات كتابة Iceberg المُقَرّ بها على HDFS: ينشر التزام Iceberg كل ملف بيانات وصفية جديد بعملية كتابة مشروطة، لكن `HDFSObjectStorage` كان يتجاهل الشرط ويجري استبدالًا عاديًا، لذا كان يُقَرّ بجميع الكتّاب المتزامنين بينما تصبح لقطة أحدهم غير قابلة للوصول. يرفض HDFS الآن الكتابة المشروطة بدلًا من ذلك، ولذلك تفشل الآن عمليات كتابة Iceberg المُدارة بواسطة التخزين على HDFS، بما فيها `CREATE TABLE... ENGINE = IcebergHDFS(...)` مع قائمة أعمدة صريحة. لا تتأثر القراءات. [#112437](https://github.com/ClickHouse/ClickHouse/pull/112437) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة خارج الحدود (تؤدي إلى تعطل في إصدارات الإصدار) في إزالة تكرار عمليات الإدراج عندما تمر عملية `INSERT` عبر عرض مُجسَّد يغيّر استعلامه الداخلي عدد الصفوف، ويكون جدول الهدف لإزالة التكرار مُقسّمًا. كانت `DeduplicationInfo::filterToPartition` تُسنِد كل رمز لإزالة التكرار إلى الأقسام عبر اجتياز نطاق صفوف المصدر الخاص بالرمز ضمن محدد أقسام بحجم كتلة إخراج العرض (الأصغر)، ما يؤدي إلى القراءة بعد حدوده. وهي الآن تحتفظ بكل رمز في كل قسم لأي هدف عرض مُجسَّد — إذ لم تعد مطابقة صفوف المصدر بالأقسام متاحة بعد تغيّر عدد الصفوف — بدلًا من هذا الاجتياز خارج الحدود (وبدلًا من `NOT_IMPLEMENTED` الذي كان يثيره فحص لاحق لعملية الإدراج نفسها). [#112649](https://github.com/ClickHouse/ClickHouse/pull/112649) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح خطأ منطقي (يؤدي إلى الإيقاف في إصدارات التصحيح وبُنى أدوات التعقيم) عند تطبيق `finalizeAggregation` على عمود تأتي حالات التجميع فيه من دوال مختلفة تشترك في تمثيل الحالة لكنها تُنهي إلى أنواع مختلفة — مثل `quantileState` و`quantilesState(0.9)` اللتين تُجمعان بواسطة `UNION` أو تُنتجان عبر `arrayReduce`. تُصدر هذه الاستعلامات الآن خطأً عاديًا بدلًا من التعطل. [#112662](https://github.com/ClickHouse/ClickHouse/pull/112662) ([Zain Ul Abidin](https://github.com/zainulabidin302)).
* إصلاح `DELETE` في جداول `KeeperMap` الذي كان يحذف أول `max_block_size` صفوف متطابقة فقط، مع الإبلاغ عن اكتمال الطفرة بنجاح. وإصلاح `DELETE` أيضًا مع `keeper_map_strict_mode = 1` لكونه غير ذري؛ إذ كان يمكنه الرجوع إلى عمليات إزالة غير مُرقّمة بالإصدارات وحذف صفوف حُدّثت بالتزامن، كما كان يطبّق الصفوف المتطابقة كتلةً تلو أخرى، بحيث قد يترك التعارض الحذف مطبقًا جزئيًا. [#112777](https://github.com/ClickHouse/ClickHouse/pull/112777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تطبيق `ALTER` على جداول `MergeTree` بينما لا تزال طفرة التعديل `RENAME COLUMN` غير المكتملة قيد التنفيذ. كان ذلك قد يحدّث البيانات الوصفية للتخزين على نحو غير متوافق ويمنع الطفرات اللاحقة تمامًا. [#112783](https://github.com/ClickHouse/ClickHouse/pull/112783) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح فشل بدء الخادم و`ATTACH` برسالة `WITH RECURSIVE is not supported with the old analyzer` لعرض يحتوي على تعبير جدول شائع تعاودي عندما تكون `enable_analyzer = 0` هي القيمة الافتراضية للخادم. [#112784](https://github.com/ClickHouse/ClickHouse/pull/112784) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح خطأ منطقي عند استخدام محرك الجدول `Join` على الجانب الأيمن من عملية JOIN تحتوي عبارة `ON` فيها على شرط يشير إلى أعمدة كلا الجدولين، مثل `ON (t.key = j.key) AND (t.a < j.a)`. يُرفض هذا الاستعلام الآن باستثناء واضح بدلًا من ظهور `required columns:... but not found any in left table` أو `std::bad_variant_access`. [#112815](https://github.com/ClickHouse/ClickHouse/pull/112815) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج خاطئة لعملية `JOIN` تحتوي عبارة `ON` فيها على شرط مختلط، أي شرط متبقٍ غير تساوٍ بين الجانبين مثل `ON (t1.key = t2.key) AND (t1.a * 10 < t2.a)`. لا تقيّم هذا الشرط إلا خوارزميات عائلة التجزئة، لكن `full_sorting_merge` و`partial_merge` وربط المفتاح-القيمة المباشر كانت تدّعي قدرتها على تنفيذ عمليات الربط هذه ثم تتجاهل الشرط المتبقي بصمت، فتُرجع صفوفًا إضافية. وهي ترفضها الآن، لذا تُستخدم خوارزمية تجزئة بدلًا من ذلك. [#112831](https://github.com/ClickHouse/ClickHouse/pull/112831) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `ReadBufferFromEncryptedFile: Wrong file position` عند قراءة جزء `Compact` من قرص `encrypted` باستخدام إدخال/إخراج مباشر، والذي كان يؤدي إلى توقف عمليات الدمج في `system.replication_queue`. [#112943](https://github.com/ClickHouse/ClickHouse/pull/112943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تباطؤ تربيعي عند تحليل استعلام PromQL ذي ذيل طويل من المحارف غير المعروفة (مثل قيمة `FixedString` محشوة ببايتات NUL): كان تحليل إدخال غير صالح بحجم ميغابايت يشغل خيط تنفيذ لعشرات الدقائق دون إمكانية إلغائه، لأنه يحدث أثناء تحليل الاستعلام. يتوقف المُحلِّل الآن عند الخطأ الأول. [#112944](https://github.com/ClickHouse/ClickHouse/pull/112944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض مدد PromQL التي تتكرر فيها الوحدات أو لا تكون مرتبة من الأطول إلى الأقصر. [#112954](https://github.com/ClickHouse/ClickHouse/pull/112954) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح تعليق عند كتابة `Parquet` مع تفعيل `output_format_parquet_parallel_encoding` (وهو الإعداد الافتراضي) وكون `max_threads` أكبر من 1. إذا تعذّر على المُرمِّز جدولة خيط تنفيذ إضافي، كان عدّاد خيوط التنفيذ النشطة يتعرض لنقصان سفلي، وقد تتوقف الكتابة عن إحراز أي تقدم نهائيًا بدلًا من الاكتمال أو الإبلاغ عن خطأ. [#112959](https://github.com/ClickHouse/ClickHouse/pull/112959) ([Groene AI](https://github.com/groeneai)). [#113170](https://github.com/ClickHouse/ClickHouse/pull/113170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استهلاك `geohashesInBox` وقتًا غير محدود عند معالجة صندوق ذي مساحة صفرية، مثل `geohashesInBox(0., 0., 180., 0., 12)`. كان هذا الاستعلام يعيد geohash الصحيح الوحيد، لكنه يستهلك نحو 5e8 تكرارًا فارغًا للحلقة لكل صف ويتجاهل كلاً من `max_execution_time` و`KILL QUERY`. [#112976](https://github.com/ClickHouse/ClickHouse/pull/112976) ([Groene AI](https://github.com/groeneai)).
* إصلاح سلوك غير معرّف (تمرير مؤشر فارغ إلى `memcpy`) في `replaceRegexpOne`/`replaceRegexpAll` عندما يحل نص الاستبدال محل مجموعة التقاط لم تشارك في المطابقة، مثل `replaceRegexpAll('abc', '(a)|(b)', '\\2')`. [#113012](https://github.com/ClickHouse/ClickHouse/pull/113012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض تغيير `SETTINGS` المعلَّم على أنه مكتوب دون قيمة إذا كان يحمل قيمة غير `true`، وعدم حذف قيمة هذا التغيير مطلقًا عند تنسيق استعلام. سابقًا، كان بإمكان حمولة AST JSON مُعدّة تنفيذ إعداد `Bool` بقيمة `false`، بينما كان `system.query_log` و`formatQueryFromJSON` يعرضان الصيغة بلا قيمة. [#113025](https://github.com/ClickHouse/ClickHouse/pull/113025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح سلوك غير معرّف وخطأ جدولة صامت عند جدولة مهمة في الخلفية بتأخير كبير جدًا، مثلًا بواسطة عرض مادي قابل للتحديث بفترة `REFRESH AFTER` ضخمة. أصبحت التأخيرات الآن مقيّدة بأكبر قيمة قابلة للتمثيل بدلًا من تجاوز السعة. [#113041](https://github.com/ClickHouse/ClickHouse/pull/113041) ([Groene AI](https://github.com/groeneai)).
* إصلاح كتابة خارج الحدود عند قراءة عمود `DECIMAL` في `Parquet` يكون نوعه الفيزيائي أعرض من النوع الذي تقابله دقته المعلنة، مثل `DECIMAL(9, 2)` المخزّن بالنوع الفيزيائي `INT64`. هذه الملفات صالحة في `Parquet` وتنتجها أدوات كتابة أخرى، لكن القارئ كان يحدد حجم العمود الوجهة استنادًا إلى الدقة المعلنة، بينما كان مفكك الترميز يكتب بالعرض الفيزيائي، مما يفسد الذاكرة. تؤدي قراءة مثل هذا الملف الآن أيضًا إلى ظهور `DECIMAL_OVERFLOW` عندما لا تتسع قيمة ضمن الدقة المعلنة، بدلًا من إرجاع بيانات تالفة، وتتم القراءة دون فقدان للبيانات مع تلميح نوع بعرض لا يقل عن عرض النوع الفيزيائي. [#113046](https://github.com/ClickHouse/ClickHouse/pull/113046) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `intDiv` عند استخدامه على عمود غير ثابت مع مقسوم عليه ثابت قيمته -1، إذ كان يلتف بصمت عند قسمة أصغر عدد صحيح موقّع (مثل `intDiv(-9223372036854775808, -1)`) بدلاً من طرح استثناء `ILLEGAL_DIVISION` كما في مسارات التنفيذ الأخرى. وكان هذا الالتفاف الصامت قد يؤدي أيضاً إلى نتائج خاطئة في `ORDER BY`/`DISTINCT`، لأن تحسين القراءة بالترتيب يعامل `intDiv` مع ثابت سالب، على نحو صحيح، باعتباره رتيباً، بينما كانت القيمة الملتفة تخالف ترتيب الفرز الناتج. [#113048](https://github.com/ClickHouse/ClickHouse/pull/113048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح مشكلة عدم توافق كانت تمنع تحميل فهارس النص التي أُنشئت في ClickHouse 26.3 باستخدام محلل الكلمات `unicode_word` في الإصدارات اللاحقة. [#113061](https://github.com/ClickHouse/ClickHouse/pull/113061) ([Robert Schulze](https://github.com/rschu1ze)).
* تم إصلاح خطأ منطقي `Pipeline stuck` في الاستعلامات التي توزّع البيانات حسب التقسيم، مثل دالة نافذة تتضمن `PARTITION BY` أو عملية join تتضمن `join_algorithm = 'parallel_full_sorting_merge'`، عندما ينتهي المسار اللاحق لأحد الأجزاء الموزعة في حين تكون كتلة قد وُزّعت جزئياً فقط. [#113190](https://github.com/ClickHouse/ClickHouse/pull/113190) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج خاطئة عند استخدام hash join بمفتاح `LowCardinality` واحد من نوع أعرض من 8 بايتات (`UInt128` و`Int128` و`UInt256` و`Int256` وبدائلها `Nullable`). إذ كانت عملية join هذه تعيد بصمت صفوفاً لا تتساوى قيم مفاتيحها. [#113230](https://github.com/ClickHouse/ClickHouse/pull/113230) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة في `ALTER TABLE ... ADD PROJECTION` فوق عمود `ALIAS` على مستوى الجدول كانت تجعل الجدول غير قابل للاستخدام، وتتسبب في فشل عمليات `INSERT` اللاحقة بالخطأ `UNKNOWN_IDENTIFIER` (`Missing columns`) عندما تكون الجلسة مضبوطة على `optimize_respect_aliases = 0`. [#109091](https://github.com/ClickHouse/ClickHouse/pull/109091) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناءي `NOT_FOUND_COLUMN_IN_BLOCK` و`LOGICAL_ERROR` في `JOIN` من النوع `direct` على جدول `MergeTree` الأيمن، وكذلك حالات الإنهاء المرتبطة بها في إصدارات debug وsanitizer. [#109932](https://github.com/ClickHouse/ClickHouse/pull/109932) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح المقارنات التي كانت تطرح سابقاً `ILLEGAL_TYPE_OF_ARGUMENT` عندما لا يكون للمعاملات أصغر نوع فائق مشترك. يمكن الآن مقارنة المصفوفات مثل `Array(Int64)` مقابل `Array(UInt64)` و`Array(Int256)` مقابل `Array(UInt256)` معجمياً باستخدام `=` و`!=` و`<` و`<=` و`>` و`>=` و`IS DISTINCT FROM` و`IS NOT DISTINCT FROM`. كما أصبح `isDistinctFrom` و`isNotDistinctFrom` يقارنان أزواج الأنواع الرقمية والعشرية المدعومة غير المصفوفية حسب القيمة بدلاً من طرح استثناء، وتم أيضاً إصلاح مقارنة المساواة للمصفوفات المتداخلة داخل `Tuple(Nullable(...))`. يغلق [#33897](https://github.com/ClickHouse/ClickHouse/issues/33897). [#110245](https://github.com/ClickHouse/ClickHouse/pull/110245) ([Diego Gomes Tomé](https://github.com/diegomestre2)).
* تم إصلاح `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) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة لعملية `FULL JOIN` على جدول بمحرك `Join` باستخدام `USING` عندما يكون المفتاح الأيسر `Nullable` ومفتاح التخزين ليس كذلك: إذ كان صف أيسر غير مطابق بمفتاح `NULL` يعيد `0` بدلاً من `NULL`. [#111371](https://github.com/ClickHouse/ClickHouse/pull/111371) ([Groene AI](https://github.com/groeneai)).
* إصلاح ظهور الإصدارات القديمة والمحذوفة من الصفوف عند قراءة قاعدة بيانات `MaterializedPostgreSQL` عبر جدول `Merge`. تمر هذه القراءات الآن عبر غلاف `MaterializedPostgreSQL`، مع تطبيق ترشيح `FINAL` و`_sign = 1` نفسه المستخدم في القراءات المباشرة. [#112382](https://github.com/ClickHouse/ClickHouse/pull/112382) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `Bad cast from ColumnNullable to ColumnString` عند تشغيل طفرة تعيد كتابة الجزء بالكامل على جزء يكون نوع عموده أقدم من النوع في بيانات تعريف الجدول، مثلًا بعد `ALTER TABLE ... MODIFY COLUMN` متبوعًا بـ `ALTER TABLE ... MATERIALIZE PROJECTION`. [#112501](https://github.com/ClickHouse/ClickHouse/pull/112501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاهل تنسيقات الإدخال المستندة إلى الصفوف لـ `KILL QUERY` و`max_execution_time` لعدة دقائق أثناء تحليل كتلة. تتحقق الآن من الإلغاء كل 8192 صفًا، لذا يتوقف `INSERT` الذي تم إنهاؤه (بما في ذلك تفريغ async-insert غير المتزامن في الخلفية) فورًا بدلًا من الاستمرار حتى نهاية الكتلة. [#112646](https://github.com/ClickHouse/ClickHouse/pull/112646) ([Groene AI](https://github.com/groeneai)).
* إصلاح تحقّق `RENAME TABLE` من الحد الأقصى لطول اسم الجدول في قاعدة البيانات المصدر بدلًا من قاعدة البيانات الوجهة. كان من الممكن أن تؤدي إعادة تسمية جدول إلى قاعدة بيانات ذات اسم طويل إلى إنشاء جدول يتعذر على `DROP TABLE` حذفه، كما كان يُرفض خطأً إعادة تسمية جدول خارج قاعدة بيانات كهذه. [#113019](https://github.com/ClickHouse/ClickHouse/pull/113019) ([Groene AI](https://github.com/groeneai)).
* إصلاح `UNKNOWN_IDENTIFIER` عند الاختيار من `VIEW` تختلف أنواع أعمدته المعلنة عن الأنواع التي ينتجها استعلامه الداخلي، مثلًا `SELECT sum(length(arr)) FROM v` حيث يعلن `v` عن `arr Array(UInt8)` فوق عمود `String`. مع القيمة الافتراضية `optimize_functions_to_subcolumns = 1`، كان المُحسِّن يعيد كتابة `length(arr)` لقراءة العمود الفرعي `arr.size0` ويمرّر هذا الاسم إلى الاستعلام الداخلي الذي لا يحتوي على عمود فرعي كهذا. [#113057](https://github.com/ClickHouse/ClickHouse/pull/113057) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء (أو خطأ في إصدارات الإنتاج يمنع بدء تشغيل الخادم) عندما يستخدم مسند طفرة دالة الجدول `merge` دون اسم صريح لقاعدة البيانات. تُستخدم الآن قاعدة بيانات الجدول المُعدَّل، كما هو الحال مع أسماء الجداول. [#113185](https://github.com/ClickHouse/ClickHouse/pull/113185) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح نتائج خاطئة وخطأ `LOGICAL_ERROR` عند قراءة عمود فرعي لعضو `Nested` حُذف ثم أُعيدت إضافته مع عضو موجود من المجموعة نفسها، في جدول `MergeTree` مع `share_nested_offsets = 1`. كانت الأعضاء الموجودة تُرجع قيمًا من كتلة لاحقة عندما تمتد القراءة عبر أكثر من كتلة واحدة. [#113225](https://github.com/ClickHouse/ClickHouse/pull/113225) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق عبارات `ALTER` و`OPTIMIZE` و`TRUNCATE` وعبارات معالجة الأقسام مع `alter_sync = 2` على `ReplicatedMergeTree` عندما يبدأ الجدول في الإيقاف بينما تنتظر العبارة نسخة متماثلة أخرى، مثلًا بسبب `DROP DATABASE ... SYNC` متزامن. تفشل هذه العبارة الآن بالخطأ `UNFINISHED`، كما تلتزم بـ `max_execution_time` و`KILL QUERY`. [#113228](https://github.com/ClickHouse/ClickHouse/pull/113228) ([Groene AI](https://github.com/groeneai)).
* عدم كتابة تسلسل الهروب ANSI إلى `INTO OUTFILE` عندما يكون `stdout` طرفية TTY. [#113252](https://github.com/ClickHouse/ClickHouse/pull/113252) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح حالة نادرة من استخدام الذاكرة بعد تحريرها في قائمة انتظار الإدراج غير المتزامن عندما تكون للإدخالات المختلفة مواعيد نهائية متطابقة. [#113363](https://github.com/ClickHouse/ClickHouse/pull/113363) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أصلح مشكلة بقاء الجداول فارغة دون أي تنبيه عند إنشاء أكثر من قاعدة بيانات بمحرك `ENGINE = Backup` من النسخة الاحتياطية نفسها، أو عند إعادة إنشاء قاعدة بيانات كهذه باسم مختلف. أصبحت سياسة التخزين التي تدعم قاعدة بيانات `Backup` تُعرَّف باسم يتضمن أيضًا اسم قاعدة البيانات المحلية، بحيث تحصل كل قاعدة بيانات على القرص المُنشأ لمسار بياناتها الخاص. [#113378](https://github.com/ClickHouse/ClickHouse/pull/113378) ([Groene AI](https://github.com/groeneai)).
* أصلح مشكلة عدم حذف الصفوف مطلقًا عندما يحتوي جدول `MergeTree` على قاعدتين أو أكثر من قواعد `TTL ... DELETE WHERE` ذات تعبير الوقت نفسه والتي تختلف فقط في شرط `WHERE`. بعد دمج للحذف وفق TTL، كانت قيمة `rows_where_ttl_info` الخاصة بالجزء تُصفَّر، لذلك لم يكن يُجدوَل له أي دمج TTL آخر، وظلت الصفوف منتهية الصلاحية محفوظة إلى أجل غير مسمى دون أي خطأ أو رسالة سجل. يغلق [#113116](https://github.com/ClickHouse/ClickHouse/issues/113116). [#113384](https://github.com/ClickHouse/ClickHouse/pull/113384) ([Groene AI](https://github.com/groeneai)).
* أصبح الاستعلام على جدول `Merge` (أو دالة الجدول `merge`) الذي يطابق عددًا كبيرًا من الجداول يستجيب لـ `KILL QUERY` و`max_execution_time` أثناء إنشاء خطط الاستعلام لكل جدول، بدلًا من الاستجابة فقط بعد اكتمال تخطيط جميع الجداول الفرعية. ومع `timeout_overflow_mode = 'break'`، يتوقف الآن أيضًا عن إنشاء خطط الاستعلام للجداول المطابقة المتبقية ويعيد النتيجة الجزئية دون خطأ، وفقًا لما هو موثق لهذا الوضع. [#113415](https://github.com/ClickHouse/ClickHouse/pull/113415) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#113642](https://github.com/ClickHouse/ClickHouse/pull/113642) ([Groene AI](https://github.com/groeneai)).
* أصلح خروج `clickhouse-client` بالرمز `139` بدلًا من `0` بعد إلغاء استعلام باستخدام Ctrl+C، أو بعد تنفيذ `INSERT` يقرأ البيانات من stdin. [#113431](https://github.com/ClickHouse/ClickHouse/pull/113431) ([Groene AI](https://github.com/groeneai)).
* اسمح لتعبيرات `preprocessor` و`postprocessor` في فهرس نصي بالإشارة إلى أعمدة `ALIAS`. [#110014](https://github.com/ClickHouse/ClickHouse/pull/110014) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* أصلح عدة حالات كانت فيها النسخ المتماثلة المتوازية تُرجع صفوفًا مكررة: إذ كان `distributed_aggregation_memory_efficient` يُتجاهل في النسخ المتماثلة المتوازية المستندة إلى الخطة، فتصل الحاويات الخاصة بالدمج الفعّال للذاكرة بترتيب غير صحيح وتُدمج مرتين؛ كما كان يُقرأ جزء موزع من جميع نسخه المتماثلة رغم أن البيانات غير مقسمة بينها، عندما لا تنطبق النسخ المتماثلة المتوازية على الاستعلام أو عندما يطلب `parallel_replicas_mode` التصفية بمفتاح مخصص دون `parallel_replicas_custom_key`. [#112942](https://github.com/ClickHouse/ClickHouse/pull/112942) ([Nikita Taranov](https://github.com/nickitat)).
* أصلح تحول `CREATE TABLE ... AS SELECT` إلى عملية يتعذر إيقافها عندما يفشل `SELECT` الذي يملأ الجدول وتكون `database_atomic_wait_for_drop_and_detach_synchronously` مفعّلة: إذ كان `DROP` الداخلي لتنظيف الجدول المؤقت ينتظر قائمة انتظار الحذف الخلفية ويتجاهل كلًا من `KILL QUERY` و`max_execution_time`. [#113504](https://github.com/ClickHouse/ClickHouse/pull/113504) ([Groene AI](https://github.com/groeneai)).
* أصلح حذف `ALTER TABLE ... EXECUTE remove_orphan_files` لملف `metadata/version-hint.text` مستخدم لجدول `Iceberg`. كان إدخال مجموعة العناصر القابلة للوصول يُنشأ بربط السلاسل النصية مع افتراض وجود شرطة مائلة لاحقة في قيمة لا تحتوي عليها مطلقًا، لذلك لم يُتعرَّف على ملف التلميح الفعلي باعتباره قابلًا للوصول، وأُزيل عند تجاوز عمره عتبة `older_than`. ومع `iceberg_use_version_hint = 1`، كان الجدول يفشل بعد ذلك في القراءة تمامًا. [#113548](https://github.com/ClickHouse/ClickHouse/pull/113548) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فقدان العرض المُعلَّم بالمعلمات لقاعدة بياناته عند إرسال استعلام يشير إليه دون تأهيل إلى جزء بيانات، إذ كان جزء البيانات يحلّ الاسم وفقًا لقاعدة بياناته الافتراضية. وبحسب محتوى تلك القاعدة، كان الاستعلام إما يفشل بالخطأ `UNKNOWN_FUNCTION` أو يعيد بصمت صفوفًا من عرض مختلف. يؤثر ذلك في `IN` و`JOIN` و`remote` عبر جدول `Distributed`. [#113550](https://github.com/ClickHouse/ClickHouse/pull/113550) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` عند تصفية استعلام لـ `system.databases` بناءً على عمود `name` باستخدام استعلام فرعي داخل `indexHint`، مثلًا `SELECT count() FROM system.databases WHERE indexHint(name IN (SELECT 'foo'))`. [#113556](https://github.com/ClickHouse/ClickHouse/pull/113556) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حلقة لا نهائية في عمليات الدمج الخلفية و`OPTIMIZE` عندما كانت قيمة `merge_max_block_size_bytes` أقل من `byteSize()` لعمود فارغ. يظل عمود `LowCardinality` الفارغ محتفظًا بقاموسه، لذلك كان يمكن بلوغ حد البايتات قبل دمج صف واحد؛ ثم كان الدمج ينتج كتلًا فارغة إلى الأبد، مستهلكًا 100% من نواة CPU من دون تحرير خانته في مجمع العمليات الخلفية. [#113585](https://github.com/ClickHouse/ClickHouse/pull/113585) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استعلام على عمود `Variant` كان يتجاهل `max_execution_time` و`KILL QUERY`. كان استدعاء دالة بعدة وسائط `Variant` يحل الدالة مرة واحدة لكل بديل من كل وسيطة، ولم تكن أي من الحلقتين اللتين تنفذان هذا العمل تتحقق من الإلغاء، لذلك تعذر إيقاف هذا الاستعلام حتى يكتمل. [#113612](https://github.com/ClickHouse/ClickHouse/pull/113612) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `Unknown compression method` لتلميحات الضغط `auto` و`none` عند كتابتها بحالة أحرف غير الأحرف الصغيرة بالكامل، مثلًا `file('data.csv.gz', 'CSV', 'x String', 'AUTO')`. كانت أسماء برامج الترميز مثل `GZIP` مقبولة بالفعل دون حساسية لحالة الأحرف؛ وأصبح التلميحان الخاصان يتصرفان بالطريقة نفسها. [#113631](https://github.com/ClickHouse/ClickHouse/pull/113631) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح طي الثوابت في analyzer الجديد، الذي كان يغيّر نوع قيمة `Geometry` ثابتة. إن `Geometry` هو `Variant` مسمّى يمكن لبدائله أن تتشارك تخطيط التخزين نفسه (`LineString`/`Ring` و`MultiLineString`/`Polygon` والقيم الفارغة)، لذا كان يمكن لثابتين مطويين يختلفان فقط في بديلهما أن ينهارا إلى ثابت واحد؛ فعلى سبيل المثال، كان `MULTIPOLYGON EMPTY` يصبح `LINESTRING()`. [#110709](https://github.com/ClickHouse/ClickHouse/pull/110709) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء (`Cannot calculate columns sizes when columns or checksums are not initialized`) أثناء دمج جدول `MergeTree` أحادي العمود، عندما يكون عموده الوحيد ذا `TTL` تنتهي صلاحيته بالكامل، مع `min_bytes_for_wide_part = 1`. [#111169](https://github.com/ClickHouse/ClickHouse/pull/111169) ([Groene AI](https://github.com/groeneai)).
* لم يعد فشل بدء مجمع الجدولة الخلفية (مثل مجمع `iceberg` عند استنفاد مجمع خيوط التنفيذ العام) يوقف الخادم: أصبح الخطأ الآن استثناءً قابلًا للاسترداد. كما أن قراءة `system.background_schedule_pool` لم تعد تنشئ تلك المجمعات كأثر جانبي. [#111209](https://github.com/ClickHouse/ClickHouse/pull/111209) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة خارج الحدود في البروتوكول الأصلي عند وجود بيانات فهرس تالفة. [#112331](https://github.com/ClickHouse/ClickHouse/pull/112331) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح حالة جمود تؤدي إلى تعليق قاعدة بيانات `Filesystem` أو `HDFS` بشكل دائم عندما يحل استعلامان اسم الجدول نفسه في الوقت ذاته. ويُحجب كل استعلام لاحق على قاعدة البيانات تلك إلى الأبد ولا يمكن مقاطعته، لذا يلزم إعادة تشغيل الخادم للتعافي. [#112495](https://github.com/ClickHouse/ClickHouse/pull/112495) ([Groene AI](https://github.com/groeneai)).
* إصلاح عدم فعالية `max_execution_time` و`KILL QUERY` بصمت في استعلام موزّع ينشئ اتصالات بالنسخ المتماثلة. يتوقف هذا الاستعلام الآن عند محاولة الاتصال التالية، بدلًا من المرور على كل نسخة متماثلة ومحاولة إعادة الاتصال بها.
  [#112689](https://github.com/ClickHouse/ClickHouse/pull/112689) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق `DROP TABLE` و`SYSTEM STOP VIEW` عندما يُحظر عرض مادي قابل للتحديث أثناء تخطيط استعلام التحديث الخاص به. [#113188](https://github.com/ClickHouse/ClickHouse/pull/113188) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح كشف `CREATE TABLE` مع `ENGINE = Distributed(...)` أو `ENGINE = Buffer(...)` ومن دون قائمة أعمدة لبنية جدول مُشار إليه لا يملك المستخدم الذي ينشئه صلاحية رؤيته. بالنسبة إلى `CREATE` محلي، تُستنتج البنية الآن ضمن سياق المستخدم نفسه، لذا يلزم امتلاك صلاحية `SHOW COLUMNS` على الجدول المُشار إليه. لا يشمل ذلك `CREATE` المُعاد تشغيله من طابور DDL (`ON CLUSTER` أو داخل قاعدة بيانات `Replicated`). [#113220](https://github.com/ClickHouse/ClickHouse/pull/113220) ([Groene AI](https://github.com/groeneai)). [#113372](https://github.com/ClickHouse/ClickHouse/pull/113372) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة قاعدة البيانات الداخلية `_temporary_and_external_tables` عبر دالة الجدول `merge` ومحرك الجدول `Merge`، التي كانت تتيح لجلسة قراءة الجداول المؤقتة لجلسات ومستخدمين آخرين. يتخطى التعبير النمطي لقواعد البيانات هذه القاعدة الآن، ويُرفض ذكرها صراحةً، كما يُرفض الوصول المباشر إليها. [#113224](https://github.com/ClickHouse/ClickHouse/pull/113224) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاهل `countSubstrings` و`countSubstringsCaseInsensitive` و`countSubstringsCaseInsensitiveUTF8` و`countMatches` و`countMatchesCaseInsensitive` لـ `KILL QUERY` و`max_execution_time`: إذ كان يمكن لاستدعاء على عدد كبير من الصفوف أو المطابقات، أو على قيمة كبيرة واحدة، أن يستمر لدقائق بعد إلغاء الاستعلام. [#113369](https://github.com/ClickHouse/ClickHouse/pull/113369) ([Groene AI](https://github.com/groeneai)). [#113886](https://github.com/ClickHouse/ClickHouse/pull/113886) ([Groene AI](https://github.com/groeneai)).
* إصلاح عملية mutation لجزء Compact كانت تنتج نتيجة مختلفة بحسب ما إذا كانت معلومات تسلسل الجزء لا تزال في الذاكرة أو أُعيد تحميلها من `serialization.json`، عندما يستخدم الجدول `serialization_info_version = 'basic'`. في `ReplicatedMergeTree`، كان هذا يؤدي إلى أن تكتب نسختان متماثلتان تحتفظان بجزء مصدر متطابق البايتات أجزاء معدّلة مختلفة، فتفشل عملية mutation بالاستثناء `CHECKSUM_DOESNT_MATCH`. يغلق [#113500](https://github.com/ClickHouse/ClickHouse/issues/113500). [#113588](https://github.com/ClickHouse/ClickHouse/pull/113588) ([Groene AI](https://github.com/groeneai)).
* إصلاح إبلاغ `made_current_at` في `system.iceberg_history` عن أقدم وقت أصبحت فيه لقطة ما حالية، بدلًا من أحدث وقت، عندما يظهر `snapshot-id` نفسه أكثر من مرة في `snapshot-log` الخاص بـ `Iceberg`، كما يحدث عند إجراء تراجع. [#113598](https://github.com/ClickHouse/ClickHouse/pull/113598) ([Groene AI](https://github.com/groeneai)).
* إصلاح القيم غير الصحيحة للأعمدة الافتراضية، مثل `_table` أو `_database`، المُختارة من الجانب الأيمن لـ `JOIN` مع مصدر key-value مثل `EmbeddedRocksDB` أو `KeeperMap` أو `Redis` أو قاموس. كان يمكن أن يعيد الاستعلام قيمة عمود بيانات بدلًا منها، أو يفشل باستثناء `LOGICAL_ERROR`. [#113698](https://github.com/ClickHouse/ClickHouse/pull/113698) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل `EXPLAIN ANALYZE` على جدول `Merge` يحتوي على عدة children، و`PREWHERE` بعمود دون تعبير، و`WHERE` منفصل، مع الرسالة `Required output position N is out of range for pass-through inputs`. يغلق [#113621](https://github.com/ClickHouse/ClickHouse/issues/113621). [#113725](https://github.com/ClickHouse/ClickHouse/pull/113725) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فشل نقل دليل باستخدام `clickhouse-disks move` مع ظهور الخطأ `DIRECTORY_ALREADY_EXISTS` على الأقراص ذات `metadata_type = plain_rewritable` (مثل `s3_plain_rewritable`)، والذي كان يترك أيضًا دليل وجهة فارغًا. [#113727](https://github.com/ClickHouse/ClickHouse/pull/113727) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فشل قراءة جداول `Merge` مع الخطأ `No set is registered for key ...` عندما يعرّف أحد الجداول التابعة عمود `ALIAS` يحتوي على `IN` وتختلف الجداول التابعة في القيمة الافتراضية لذلك العمود. [#113757](https://github.com/ClickHouse/ClickHouse/pull/113757) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `UNKNOWN_IDENTIFIER` مع `enable_analyzer = 0` عندما تشير `WHERE` إلى عمود تنتجه `untuple` داخل استعلام فرعي، مثل `SELECT t.keys FROM (SELECT untuple(arrayJoin(m)) AS t FROM ...) WHERE t.values > 0`. كانت إعادة الكتابة بواسطة `enable_optimize_predicate_expression` تدفع هذا الشرط إلى الاستعلام الفرعي باعتباره `HAVING`، حيث لا يكون الاسم موجودًا بعد. [#113760](https://github.com/ClickHouse/ClickHouse/pull/113760) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فشل `ALTER TABLE ... MODIFY COLUMN` مع الخطأ `Cannot specify codec for column type ALIAS` عندما تحوّل تعليمة واحدة عمود `ALIAS` إلى عمود فعلي (`DEFAULT` أو `MATERIALIZED`) وتحدد `CODEC` في الوقت نفسه. يغلق [#113693](https://github.com/ClickHouse/ClickHouse/issues/113693). [#113853](https://github.com/ClickHouse/ClickHouse/pull/113853) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `ORDER BY ALL` و`GROUP BY ALL` على جدول `Merge` مرتبط باستخدام المحلل القديم (`allow_experimental_analyzer = 0`). لم يعد الاستعلام يفشل باستثناء داخلي، ولم تعد إصدارات التصحيح وإصدارات sanitizer تُجهض. [#109139](https://github.com/ClickHouse/ClickHouse/pull/109139) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء متقطع `Cannot parse string ... as UInt64 ... While executing ValuesBlockInputFormat` قد يحدث عند إدراج قيم تتضمن تعبيراتها تحويلاً رقميًا، مثل `initializeAggregation('sumState', 0::UInt64)`. [#110637](https://github.com/ClickHouse/ClickHouse/pull/110637) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الإبلاغ عن حالات فشل لقرص سليم أثناء الفحص الدوري للقرص المحلي. فعندما يشغّل الخادم Keeper مضمّنًا إلى جانب قرص `local`، كان من الممكن أن يتحقق خيطا فحص من الملف نفسه، وأن يسجلا مؤقتًا `FILE_DOESNT_EXIST` أو `CANNOT_READ_ALL_DATA` أو `CANNOT_UNLINK`، وأن يُحتسب القرص مؤقتًا ضمن مقياس `BrokenDisks`. [#110773](https://github.com/ClickHouse/ClickHouse/pull/110773) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج غير صحيحة وخطأ منطقي `Cannot serialize FutureSetFromSubquery with no query plan` في الاستعلامات على جداول `Merge` ودالة الجدول `merge` عند تمكين النسخ المتماثلة المتوازية القائمة على الخطة. [#112849](https://github.com/ClickHouse/ClickHouse/pull/112849) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد جدول في محرك قاعدة البيانات `URL` يكشف لمستخدم لا يملك امتياز قراءة المصدر ما إذا كان ملف محلي موجودًا. أصبح كل من `EXISTS TABLE`، الذي لا يتطلب سوى امتياز `SHOW TABLES`، وحل اسم الجدول ينتظران التحقق من الامتياز قبل فحص نظام الملفات. [#113029](https://github.com/ClickHouse/ClickHouse/pull/113029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تعبير TTL الذي يصبح غير قابل للاستخدام عندما يزيل طيّ الثوابت الأعمدة التي يشير إليها، مثل `TTL d + INTERVAL 1 DAY DELETE WHERE isNull(x)` على عمود `x` غير `Nullable`، مما كان يتسبب في فشل كل عملية `INSERT` في الجدول مع الخطأ `Missing columns`. كما تم إصلاح فشل تشغيل الخادم عندما يحتوي جدول على تعبير TTL لعمود `Variant` أُنشئ باستخدام `variant_throw_on_type_mismatch = 0`. [#113042](https://github.com/ClickHouse/ClickHouse/pull/113042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح إلغاء قراءات دالة الجدول `postgresql` ومحرك الجدول `PostgreSQL`. إذ كان الإلغاء أثناء بدء القراءة قد يتسابق مع مؤشر المعاملة ويُفقد، مما يترك الاستعلام قيد التشغيل حتى ينهيه PostgreSQL. [#113150](https://github.com/ClickHouse/ClickHouse/pull/113150) ([Groene AI](https://github.com/groeneai)).
* يمكن الآن مقاطعة `UNDROP TABLE` باستخدام `KILL QUERY` أثناء انتظارها للاستعلامات قيد التشغيل كي تحرر الجدول المُسقَط. [#113263](https://github.com/ClickHouse/ClickHouse/pull/113263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب ذاكرة لمحلل XML بأكمله عندما يطرح معالج XML من `Poco` استثناءً أثناء التحليل، مثل تجاوز سعة `Poco::XML::NamePool` عند تحليل مستند يحتوي على عدد كبير من أسماء العناصر الفريدة. [#113348](https://github.com/ClickHouse/ClickHouse/pull/113348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح عمليات الكتابة إلى قرص `HDFS`: لم تعد تفشل بالرسالة `Parent directory doesn't exist` عندما يحتوي مفتاح الكائن المُنشأ على بادئات أدلة متداخلة، إذ تُنشأ الآن أدلة الأصل المفقودة. [#113396](https://github.com/ClickHouse/ClickHouse/pull/113396) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج الخاطئة، وإخفاق التحقق في الإصدارات التي تكون فيها التحققات مفعّلة، لعملية `JOIN` على قاموس تحتوي عبارة `ON` الخاصة بها على شرط غير متساوٍ يشمل كلا الجدولين، مثل `ON (t.key = d.key) AND (t.a * 10 < d.a)`، عند تفعيل `join_use_nulls`. [#113534](https://github.com/ClickHouse/ClickHouse/pull/113534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعليق استعلام لمدة تصل إلى `receive_timeout` ثانية عندما ينتهي بسرعة كبيرة على العُقدة البادئة. [#113551](https://github.com/ClickHouse/ClickHouse/pull/113551) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح قراءة `UPDATE` و`DELETE` خفيف الوزن للجداول الخاطئة عندما تختلف قاعدة بيانات الجدول المُحدَّث عن قاعدة بيانات الجلسة. تُحل الآن أسماء الجداول غير المؤهلة ودالة الجدول `merge` بالنسبة إلى قاعدة بيانات الجدول المُحدَّث، لذا لم يعد البيان يحدّث أو يحذف بصمت صفوفًا محددة من جدول مختلف. [#113748](https://github.com/ClickHouse/ClickHouse/pull/113748) ([Groene AI](https://github.com/groeneai)).
* إصلاح رفض زائف بسبب `TOO_MANY_PARTS` لعملية `INSERT` متوازية: عندما يجعل `max_insert_threads` عملية `INSERT` عادية متوازية، لم يعد الاستعلام يحتسب الأجزاء التي التزمت بها المصارف النظيرة التابعة له. يُغلق [#114015](https://github.com/ClickHouse/ClickHouse/issues/114015). [#114016](https://github.com/ClickHouse/ClickHouse/pull/114016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `NO_SUCH_COLUMN_IN_TABLE` عندما يحدد استعلام ذو نسخ متماثلة متوازية عمود `ALIAS` لجدول يُنقل كجدول مؤقت `GLOBAL JOIN`، و`MULTIPLE_EXPRESSIONS_FOR_ALIAS` عندما يعلن جانبا `JOIN` موزعة عن عمود `ALIAS` بالاسم نفسه، و`UNKNOWN_IDENTIFIER` عندما يعلن جدول `Distributed` عن عمود `ALIAS` فوق عمود `ALIAS` آخر، بما في ذلك عند استخدامه كمفتاح `JOIN USING`. [#107700](https://github.com/ClickHouse/ClickHouse/pull/107700) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تم إصلاح قراءة `Tuple` بتنسيق CSV عندما يكون عنصره الأول `NULL`. عند تمكين `input_format_csv_deserialize_separate_columns_into_tuple` و`input_format_null_as_default`، كان `\N` في بداية صف مثل `\N,1` يُفسَّر على أنه يعني أن العمود بأكمله `NULL`، فيُستبدل الصف بقيمة افتراضية وتتسبب خلايا العناصر المتبقية في خطأ تحليل. أصبح `NULL` الأول الآن قيمة العنصر الأول، ويُطبَّق `input_format_null_as_default` على ذلك العنصر. أما الصف الذي يحتوي على حقل واحد `\N` لـ `Tuple` غير مغلّف بالكامل، فيُعد الآن ناقصًا للعناصر المتبقية ويُرفض؛ عيّن `input_format_csv_deserialize_separate_columns_into_tuple = 0` لقراءة هذا الحقل باعتباره العمود بأكمله مجددًا. [#109744](https://github.com/ClickHouse/ClickHouse/pull/109744) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ نادر `Logical error: 'No more packets are available.'` في استعلام موزع صالح يتضمن `LIMIT`. وكان يؤدي أيضًا إلى إيقاف الخادم في إصدارات التصحيح وإصدارات sanitizer. [#110334](https://github.com/ClickHouse/ClickHouse/pull/110334) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (`!part.empty()`) عند استخدام جدول `Distributed` معرّف باسم قاعدة بيانات بعيدة فارغ في `JOIN` مع `distributed_product_mode = 'local'`. [#110677](https://github.com/ClickHouse/ClickHouse/pull/110677) ([Groene AI](https://github.com/groeneai)).
* إصلاح تحليل أسماء الأعمدة المؤهلة بالكامل، مثل `db.table.column`، في المحلّل للجداول التي تحمل الاسم نفسه لقاعدة بياناتها. يغلق [#82084](https://github.com/ClickHouse/ClickHouse/issues/82084). [#110976](https://github.com/ClickHouse/ClickHouse/pull/110976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح فقدان وصلات التجزئة لتحسيناتها اللاحقة بعد البناء (التحويل إلى جدول تجزئة ثابت، ومرشح وقت التشغيل المشترك، وإعادة ترتيب نطاقات الجدول الأيمن) عند تكوين حد تلقائي للكتابة إلى القرص، وهو الإعداد الافتراضي منذ الإصدار 26.5. [#111972](https://github.com/ClickHouse/ClickHouse/pull/111972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خلل كان يحدث عند استخدام `ALTER TABLE ... MODIFY COLUMN` لتغيير تلميح نوع `JSON` (مع تمكين `allow_experimental_json_lazy_type_hints`) في عمود يُستخدم عموده الفرعي في المفتاح الأساسي أو مفتاح الفرز أو مفتاح التقسيم أو فهرس تخطٍ صريح، إذ كان يمكن أن يفسد المفتاح أو الفهرس على القرص. كانت عمليات القراءة العادية تخفي ذلك عبر البنية المخزنة مؤقتًا، لكن بعد إعادة تحميلها (مثلًا عند إعادة تشغيل الخادم) كانت الاستعلامات تفشل برسالة `CANNOT_READ_ALL_DATA` أو تعرض نتائج خاطئة. تُرفض عمليات `ALTER` هذه الآن كلما غيّرت النوع على القرص لعمود فرعي مُشار إليه من `JSON`. تظل تغييرات تلميحات النوع على الأعمدة خارج تلك البنى، أو التغييرات التي لا تغيّر النوع على القرص للأعمدة الفرعية المُشار إليها (مثل إضافة مسار مكتوب غير ذي صلة)، مقتصرة على البيانات الوصفية. [#112302](https://github.com/ClickHouse/ClickHouse/pull/112302) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح النتائج الخاطئة عندما يبدّل `query_plan_join_swap_table` جانبي `ANY JOIN` بينما `join_any_take_last_row = 1`: يحتفظ ClickHouse الآن بالترتيب الأصلي لجانبي الوصل بحيث يظل `ANY JOIN` يعيد آخر صف مطابق. يغلق [#111645](https://github.com/ClickHouse/ClickHouse/issues/111645). [#112458](https://github.com/ClickHouse/ClickHouse/pull/112458) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح `listObjects` على قرص `AzureBlobStorage` ذي نقطة النهاية ذات البادئة، إذ كان يعيد أسماء blob خاطئة في كل صفحة بعد الأولى لأن ترقيم الصفحات كان يتجاوز غلاف العميل الذي يزيل بادئة نقطة النهاية. يدخل ترقيم الصفحات الآن إلى الغلاف مجددًا عبر رمز الاستمرار، بحيث تكون أسماء blob في كل صفحة صحيحة. [#112872](https://github.com/ClickHouse/ClickHouse/pull/112872) ([Arsen Muk](https://github.com/arsenmuk)).
* تم إصلاح تخصيص ذاكرة غير محدود عند قراءة ملف `Parquet` تعلن بياناته الوصفية Thrift عن طول حاوية أو سلسلة أكبر من البيانات الوصفية نفسها. يُرفض هذا الطول الآن بدلًا من تخصيص ذاكرة له. [#113212](https://github.com/ClickHouse/ClickHouse/pull/113212) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `Cannot insert element into Set` (`NOT_IMPLEMENTED`) عند تمكين `read_in_order_use_virtual_row` واستخدام استعلام قراءة مرتبة من `MergeTree` يجمع بين `WITH FILL ... INTERPOLATE` ومرشح `IN` أو `has`. [#113264](https://github.com/ClickHouse/ClickHouse/pull/113264) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاهل `optimize_read_in_order` بصمت في بعض استعلامات `ORDER BY`، بما في ذلك الاستعلامات التي تستخدم صفًا افتراضيًا أو `toString`/`CAST(..., 'Nullable(String)')` على مفتاح فرز من نوع `String`. كما تم إصلاح النتائج الخاطئة للمرشحات أو `ORDER BY` على `toString` لقيم `Time` أو `Time64` أو `DateTime` في المناطق الزمنية التي تطبق التوقيت الصيفي. [#113291](https://github.com/ClickHouse/ClickHouse/pull/113291) ([Vladimir Cherkasov](https://github.com/vdimir)).
* رفض تعبيرات `parallel_replicas_custom_key` غير الصالحة، مثل `tuple()` أو `(x, y)`، بالخطأ `ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER` بدلًا من القراءة بعد نهاية قائمة أنواع المفتاح المخصص. [#113359](https://github.com/ClickHouse/ClickHouse/pull/113359) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح فشل إعادة تشغيل الخادم بعد إنهائه أثناء تنفيذ `DROP TABLE` لجدول يستخدم مجموعة مسماة: إذ كان يمكن أن تنجح عملية `DROP NAMED COLLECTION` لاحقة، مما يترك بيانات تعريف جدول تشير إلى مجموعة مسماة مفقودة ويتسبب في فشل بدء التشغيل التالي بالخطأ `NAMED_COLLECTION_DOESNT_EXIST`. [#113524](https://github.com/ClickHouse/ClickHouse/pull/113524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالتين كانت فيهما قاعدة بيانات AWS Glue في `DataLakeCatalog` تُبلغ عن عدم وجود جدول بدلًا من الإبلاغ عن خطأ. لم يعد `SHOW TABLES` و`system.tables` يفشلان بالخطأ `DATALAKE_DATABASE_ERROR` ("Exception calling GetTables ... not found") عندما تكون قاعدة بيانات Glue غير موجودة أثناء سرد جداولها، مثلًا بسبب حذف قاعدة بيانات غير مرتبطة في حساب AWS نفسه بالتزامن؛ إذ لا تسهم قاعدة البيانات هذه الآن بأي جداول بدلًا من إيقاف السرد. ولم يعد `EXISTS TABLE` يُرجع `0` لجدول موجود عند فشل استدعاء `GetTable` الأساسي لسبب غير عدم وجود الجدول، مثل فشل المصادقة أو DNS أو خطأ 5xx. ولا تزال جميع أخطاء Glue الأخرى تُنقل في كلا المسارين. [#113591](https://github.com/ClickHouse/ClickHouse/pull/113591) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ في متانة Keeper، إذ كان التعطل أثناء حفظ ملف حالة Raft (الذي يخزن `term` و`voted_for`) قد يترك العقدة دون حالة صالحة أو نسخة احتياطية. وعند إعادة التشغيل، كان يمكن للعقدة إعادة الضبط إلى `term = 0` ومنح تصويت سبق أن منحته في ذلك المصطلح، مما قد يؤدي إلى وجود قائدين وفقدان البيانات الملتزم بها. وتُحتفظ الآن بالحالة السابقة حتى يُكتب ملف الحالة الجديد بالكامل وتتم مزامنته. [#113654](https://github.com/ClickHouse/ClickHouse/pull/113654) ([Alexey Bakharew](https://github.com/alexbakharew)).
* إصلاح سباق بيانات عند حذف جدول `MergeTree` بينما لا تزال مهام تحديث الإحصاءات في الخلفية أو تحديث الأجزاء أو تحميل الأجزاء القديمة/غير المتوقعة قيد التشغيل. [#113722](https://github.com/ClickHouse/ClickHouse/pull/113722) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `ORDER BY ALL` في `WINDOW VIEW`، وأخطاء `UNKNOWN_IDENTIFIER` الخاصة بـ `INTERPOLATE` و`WINDOW` و`LIMIT BY` في استعلام على جدول `Merge` أو `Distributed` يتضمن ربطًا، عند استخدام المحلل القديم. [#113759](https://github.com/ClickHouse/ClickHouse/pull/113759) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرب للذاكرة في برنامج ترميز الضغط التجريبي `SZ3`: فعند فشل ضغط بيانات ضعيفة القابلية للضغط أو بيانات تالفة بسبب استثناء، كانت مخازن الذاكرة المؤقتة تظل مخصصة. [#113916](https://github.com/ClickHouse/ClickHouse/pull/113916) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح التعقيد التربيعي عند تحليل وسيطة العنوان في دوال الجدول `remote` و`mysql` وما شابهها: إذ كان العنوان الطويل جدًا (مثل `FixedString` بحجم ميغابايت ومُعبّأ بأصفار بادئة) يؤدي إلى تعليق الاستعلام أثناء التحليل دون إمكانية إلغائه. [#113918](https://github.com/ClickHouse/ClickHouse/pull/113918) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل `OPTIMIZE TABLE` على جدول `Iceberg` بالخطأ `Unsupported snapshot's operation type OVERWRITE` عندما كان سجل الجدول يحتوي على عملية حذف صفوف أزالت أكثر من صف واحد لكل ملف حذف حسب الموضع. يغلق [#113745](https://github.com/ClickHouse/ClickHouse/issues/113745). [#113964](https://github.com/ClickHouse/ClickHouse/pull/113964) ([Groene AI](https://github.com/groeneai)).
* عدم تكرار `ALTER TABLE ATTACH PARTITION FROM` لقواعد البيانات ذات النسخ المتماثلة. [#94835](https://github.com/ClickHouse/ClickHouse/pull/94835) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* تُرفض الآن إعدادات حجم التحميل غير الصالحة في Azure (مثل `azure_min_upload_part_size = 0` أو `azure_max_blocks_in_multipart_upload = 0`) مبكرًا برسالة خطأ واضحة بدلًا من التسبب في استثناء داخلي (`second_size > 0`) عميقًا في مسار الكتابة. ينطبق ذلك على كل من إعدادات الاستعلام وتكوين قرص Azure. [#103394](https://github.com/ClickHouse/ClickHouse/pull/103394) ([Statxc](https://github.com/statxc)).
* إصلاح الإفلات غير الصحيح للقيم الحرفية في SQL في `StorageSQLite` ودالة الجدول `sqlite()` عند دفع شروط `WHERE` إلى SQLite: إذ كانت علامات الاقتباس المفردة ومحارف التحكم (`\n` و`\r` و`\t` و`\`) تُفلَت بشرطات مائلة عكسية لا يفسرها SQLite، مما يؤدي إلى أخطاء في البنية أو نتائج استعلام غير صحيحة. كما أُصلح إفلات القيم الحرفية النصية المدفوعة إلى PostgreSQL: إذ كانت السلاسل المتداخلة داخل قوائم `IN` تحتفظ بإفلات ClickHouse، وتُرسل محارف التحكم كتسلسلات شرطات مائلة عكسية يقرأها PostgreSQL كبايتات مختلفة. [#104217](https://github.com/ClickHouse/ClickHouse/pull/104217) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` في استعلامات `INNER JOIN ... ON arrayJoin(...) = ...` عند تفعيل `query_plan_convert_join_to_in` وعندما يشير SELECT إلى عمود المصفوفة المصدر. [#104809](https://github.com/ClickHouse/ClickHouse/pull/104809) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح تعبيري IN وNOT IN ذوي معاملات الجانب الأيمن غير الثابتة التي تشير إلى أعمدة من الصف الحالي، ومواءمة معالجة الصفوف في الجانب الأيمن في analyzer الجديد مع دلالات IN الحالية في ClickHouse. في analyzer القديم، كان عمود مصدر مجرّد في الجانب الأيمن (`x IN (arr)`) يُفسَّر باسم جدول ويبقى خارج النطاق. [#104993](https://github.com/ClickHouse/ClickHouse/pull/104993) ([Yue Ni](https://github.com/niyue)).
* إصلاح الخطأ `Cannot add column ...: column with this name already exists` عند تنفيذ `INSERT SELECT` من دالة جدول مثل `file` أو `s3` أو `input`، عندما يُختار عمود المصدر نفسه أكثر من مرة. [#105982](https://github.com/ClickHouse/ClickHouse/pull/105982) ([etienne](https://github.com/crakjie)).
* رفض `max_replication_lag_to_enqueue = 0` في قواعد بيانات `Replicated`. كانت هذه القيمة تجعل فحص عدم التزامن بعد الاستعادة صحيحًا دائمًا، وتتسبب في إيقاف الخادم بخطأ `LOGICAL_ERROR` في إصدارات debug وsanitizer. يُرفض الآن `0` وقت التحليل مع `BAD_ARGUMENTS` من جميع المصادر (`CREATE DATABASE ... SETTINGS`، وكتلة تكوين الخادم `<database_replicated>`، وإعادة تشغيل `ATTACH`، وإعادة تشغيل البيانات الوصفية الحالية عند الترقية). أصغر قيمة صالحة هي `1`. يغلق [#98823](https://github.com/ClickHouse/ClickHouse/issues/98823). [#106006](https://github.com/ClickHouse/ClickHouse/pull/106006) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Logical error: 'Pipeline stuck'` في الاستعلامات التي تستخدم `enable_sharding_aggregator = 1` مع `UNION ALL` و`max_streams_for_union_step` أصغر من عرض خط الأنابيب. يُنهي `BufferedShardByHashTransform` الآن منافذ إخراج قوائم الانتظار الفارغة فور استنفاد الإدخال، ويواصل سحب الإدخال عندما لا يحتوي منفذ فارغ مطلوب على بيانات قابلة للتصريف، حتى إذا بلغت قائمة انتظار شقيقة حد الضغط الخلفي. [#106251](https://github.com/ClickHouse/ClickHouse/pull/106251) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاوز سعة عدد صحيح موقّع عند ضبط إعداد مهلة انتظار، مثل `interactive_delay`، على قيمة ضخمة: إذ كان من الممكن أن تنتهي المهلة فورًا بدلًا من الانتظار، وقد يتوقف الخادم عند استخدام Undefined Behavior Sanitizer. [#106961](https://github.com/ClickHouse/ClickHouse/pull/106961) ([Groene AI](https://github.com/groeneai)).
* يُرفض الآن تصدير قيم `Time`/`Time64` الواقعة خارج نطاق وقت يوم صالح (سالبة أو `>= 24h`) إلى تنسيق `Arrow` برسالة خطأ واضحة، بدلًا من كتابة بيانات `time32`/`time64` غير صالحة في Arrow. [#107179](https://github.com/ClickHouse/ClickHouse/pull/107179) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح النتائج الخاطئة لـ `GROUP BY` على جدول `Distributed` ذي أعمدة `ALIAS` مكررة تتوسع إلى التعبير نفسه (مثلًا، عمودان معرّفان بـ `toString(x)`) عند استخدام التجميع الموزع ثنائي المستوى أو الموفر للذاكرة. كانت المفاتيح المكررة تُطوى إلى مفتاح واحد على الأجزاء، لكنها تُدمج باستخدام مجموعة المفاتيح الكاملة على البادئ؛ لذا كانت المجموعات المتساوية من أجزاء مختلفة تقع في دلاء مختلفة عند التجميع ثنائي المستوى ولا تُدمج، فتُعاد مجموعة واحدة لكل جزء مع `count()` مقسّم. [#108855](https://github.com/ClickHouse/ClickHouse/pull/108855) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ زائف `Inconsistent AST formatting` في `ALTER TABLE ... MOVE PART ... TO SHARD '<path>'`. كان منسّق الاستعلام يحذف الكلمة المفتاحية `SHARD`، لذا لم يكن من الممكن تحليل الاستعلام المنسّق مجددًا، مما أدى إلى `LOGICAL_ERROR` (استثناء مُعالَج في إصدارات الإنتاج، وإيقاف في إصدارات التصحيح وsanitizer). [#109060](https://github.com/ClickHouse/ClickHouse/pull/109060) ([Groene AI](https://github.com/groeneai)).
* رفض إزاحات `Array` غير الرتيبة في جميع مسارات القراءة التي تفك ترميزها كقيم مطلقة، بدلًا من تنسيق `Native` فقط. كان جزء حبيبة من skip index `set` تالف يمر سابقًا دون تحقق ثم يُقرأ خارج الحدود. [#109212](https://github.com/ClickHouse/ClickHouse/pull/109212) ([Groene AI](https://github.com/groeneai)).
* يراعي `JSONExtract` الآن `cast_string_to_date_time_mode` عند تحويل قيم JSON النصية إلى `DateTime`/`DateTime64`، بما يتسق مع `CAST`. يغلق [#109126](https://github.com/ClickHouse/ClickHouse/issues/109126). [#109252](https://github.com/ClickHouse/ClickHouse/pull/109252) ([Utkal Singh](https://github.com/Utkal059)).
* إصلاح خطأ منطقي محتمل "Unexpected substream ... for column ..." عند رفع إصدار إعداد compatibility. [#109496](https://github.com/ClickHouse/ClickHouse/pull/109496) ([Pavel Kruglov](https://github.com/Avogar)).
* تعيين مكوّن coordination المفقود في حساب حجم system.detached\_parts. [#109553](https://github.com/ClickHouse/ClickHouse/pull/109553) ([Den Kalantaevskii](https://github.com/Diskein)).
* إصلاح احتمال عدم انتهاء مهلة انتظار الكتلة لعمليات الإدراج المتدفقة (`input_format_max_block_wait_ms`) أبدًا أثناء تفعيل query profiler: إذ كانت عملية استطلاع واصف الملف تُعاد بمهلة كاملة بعد كل إشارة من profiler، ما قد يسمح لمصدر إدخال متوقف بتأخير flush للكتلة الجزئية إلى أجل غير مسمى بدلًا من إفراغها عند بلوغ حد الانتظار. [#109602](https://github.com/ClickHouse/ClickHouse/pull/109602) ([Shaohua Wang](https://github.com/tiandiwonder)).
* لم يعد طيّ الثوابت أثناء تخطيط الاستعلام ينفّذ دالةً يختلف نوع وسيطها عن النوع الذي حُلّت الدالة على أساسه أثناء التحليل. كان هذا التعارض يؤدي سابقًا إلى ظهور `LOGICAL_ERROR` أثناء حساب ترويسة الإخراج، وهو فشل تأكيد في إصدارات التصحيح وإصدارات sanitizer. يُتخطى الطيّ الآن بدلًا من ذلك، بينما يظل الاستعلام غير الصالح فعليًا يُبلغ عن الخطأ القابل للاسترداد `ILLEGAL_TYPE_OF_ARGUMENT` من مسار التنفيذ المعتاد. [#109747](https://github.com/ClickHouse/ClickHouse/pull/109747) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل mutation يشير إلى العمود الافتراضي `_sample_factor` في منتصف التنفيذ مع ظهور `Unexpected const virtual column: _sample_factor` وبقاء mutation عالقًا. تقرأ mutation هذا العمود الآن بالقيمة `1`، وهي القيمة نفسها التي يعيدها استعلام لا يستخدم `SAMPLE`. [#109813](https://github.com/ClickHouse/ClickHouse/pull/109813) ([Groene AI](https://github.com/groeneai)).
* إصلاح ثلاث مشكلات في `use_constant_folding_in_index_analysis`: خطأ منطقي `Invalid partition key size` كان قد يوقف استعلام `SELECT` يستخدم إسقاطًا عاديًا عندما يضبط الجدول `part_minmax_index_columns = '`with\_block\_number\_offset`'`؛ ونتائج خاطئة (حذف صفوف بصمت) لمرشح على مفتاح تقسيم يعتمد على باقي القسمة، مثل `PARTITION BY id % 200`؛ وتعطلًا (سباق بيانات) عند الاستعلام عن فهرس `text` يستخدم محلل `sparseGrams` مع شرط `LIKE` عبر عدد كبير من الأقسام مع `max_threads > 1`. [#109896](https://github.com/ClickHouse/ClickHouse/pull/109896) ([Groene AI](https://github.com/groeneai)).
* إصلاح سباق بيانات (وتعطل نادر) عند الإبلاغ عن خطأ في التحليل النحوي أو التحليل أثناء قراءة جدول ملف أو تخزين كائنات. كان خطأ التحليل النحوي الذي يُثار أثناء التهيئة الكسولة لـ `KeyCondition` يُشارك ككائن استثناء واحد بين خيوط القراءة، وكان بإمكان خيطين إلحاق `(in file/uri ...)` برسالته بالتزامن، ما يؤدي إلى سباق على سلسلة رسالة الاستثناء. [#109911](https://github.com/ClickHouse/ClickHouse/pull/109911) ([Groene AI](https://github.com/groeneai)).
* إصلاح تمرير إعدادات الاستعلام في `accurateCastOrDefault`، مع الحفاظ على قيم `NULL` الأصلية المرمزة بواسطة `Dynamic` و`Variant`. يغلق [#109943](https://github.com/ClickHouse/ClickHouse/issues/109943). [#109946](https://github.com/ClickHouse/ClickHouse/pull/109946) ([Pavel Kruglov](https://github.com/Avogar)). [#114912](https://github.com/ClickHouse/ClickHouse/pull/114912) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تصحيح النتائج غير الصحيحة من `subBitmap` و`bitmapSubsetInRange` و`bitmapSubsetLimit` للـ bitmaps التي لا تزال تستخدم التمثيل الصغير، بما في ذلك قيم العناصر `UInt64` و`Int64` التي تتجاوز `2^32`، والتي كانت تُقتطع إلى 32 بت. تستخدم المقارنات في دوال bitmap لأنواع العناصر الموقعة الآن القيمة غير الموقعة لنوع العنصر بصورة متسقة؛ لذلك، في bitmap من نوع `Int8`، يُقارن العنصر `-1` بوصفه `255` بدلًا من `4294967295` بعد توسيع الإشارة. ويصلح هذا أيضًا `bitmapMin` و`bitmapMax` و`bitmapContains` و`bitmapTransform` للـ bitmaps التي تجاوزت التمثيل الصغير. يجب تعديل الاستعلامات التي مررت عتبات موسعة الإشارة: في bitmap من نوع `Int8`، تصبح `bitmapSubsetInRange(bm, 4294967168, 4294967296)` هي `bitmapSubsetInRange(bm, 128, 256)`. صُحح أيضًا `groupNumericIndexedVector` الذي كان يعيد نتائج مختلفة لأعمدة الفهرس `Int8` و`Int16` مقارنةً بأنواع الفهارس الأوسع، و`numericIndexedVectorGetValue` الذي كان يعيد `0` للفهارس السالبة. كما صُححت وثائق دوال bitmap، بما في ذلك دوال subset التي وُصفت بأنها تستخدم فهرسة تبدأ من 1، ودعم `bitmapBuild` / `bitmapToArray` للأنواع الموقعة. [#110072](https://github.com/ClickHouse/ClickHouse/pull/110072) ([Rami Darwiche](https://github.com/RamiDarwiche)).
* إصلاح تجاهل `optimize_aggregation_in_order` لإلغاء الاستعلامات. يتحقق `AggregatingInOrderTransform` الآن من الإلغاء أثناء تجميع جزء، بحيث يتوقف الاستعلام الذي أوقفته `KILL QUERY` أو `max_execution_time` (مع الإعداد الافتراضي `timeout_overflow_mode = 'throw'`) سريعًا بدلًا من إكمال معالجة الجزء بالكامل. [#110104](https://github.com/ClickHouse/ClickHouse/pull/110104) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة سباق بين `KILL TRANSACTION` و`ALTER TABLE ... UPDATE/DELETE` المنفذ ضمن معاملة: كان التراجع الذي يحدث بين تسجيل التعديل في المعاملة وتسجيله في الجدول يترك إدخال تعديل يتيمًا، مما يؤدي إلى ظهور خطأ منطقي (`Cannot find transaction ... that has started mutation ...`) في المهام الخلفية ويحجب جميع التعديلات اللاحقة للأجزاء المتأثرة إلى حين إعادة تشغيل الخادم. [#110226](https://github.com/ClickHouse/ClickHouse/pull/110226) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح خطأ `LOGICAL_ERROR` (`Left and right columns have same names`) في مُحسِّن ترتيب الربط، كان يمكن أن ينجم عن ربط بفاصلة على عرض متعدد الجداول عند تفعيل `query_plan_merge_expression_into_join`. [#110227](https://github.com/ClickHouse/ClickHouse/pull/110227) ([Groene AI](https://github.com/groeneai)).
* أصبح تقدير عدد الصفوف في ترتيب الربط يركّب إحصاءات الأعمدة على الأجزاء المتبقية بعد تقليم القسم/المفتاح الأساسي، بدلًا من جميع الأجزاء النشطة. سابقًا، كان يُخطط لاستعلام مقتصر على قسم صغير باستخدام إحصاءات الجدول بالكامل (ولوحظت مبالغة بمقدار 2500 ضعفًا في تقدير عدد الصفوف أدت إلى تبديل جانب البناء في ربط التجزئة)، وكان تعطيل الإحصاءات، على نحو متناقض، ينتج خطة أفضل. أُصلح أيضًا: كان FINAL الكسول يُعطّل بصمت لعلاقات MergeTree ضمن JOIN لأن نتيجة تحليل الفهرس المخزنة مؤقتًا في مُحسِّن ترتيب الربط كانت تُعامل خطأً على أنها إسقاط مطبّق. [#110283](https://github.com/ClickHouse/ClickHouse/pull/110283) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* إصلاح النتائج الخاطئة من الاستعلامات الفرعية ذات القيمة المفردة المترابطة عندما يحتوي الاستعلام الخارجي على قيم مكررة للعمود المترابط ويُفك ارتباط الاستعلام الفرعي عبر مسار CROSS JOIN. سابقًا، كانت التجميعات مثل `count()` و`sum()` تُضرب في عدد التكرارات. يؤثر ذلك في الميزة التجريبية `allow_experimental_correlated_subqueries`. [#110311](https://github.com/ClickHouse/ClickHouse/pull/110311) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Function node with name '...' is not resolved as ordinary function`) كان يمكن أن يحدث عند تفعيل `optimize_or_like_chain` إذا ظهرت دالة تجميع أو دالة نافذة في الطرف الأيسر من `LIKE`/`ILIKE`/`match` ضمن سلسلة `OR`. [#110641](https://github.com/ClickHouse/ClickHouse/pull/110641) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة كان فيها `TTL ... DELETE WHERE <cond>` لا يحذف أبدًا الصفوف التي بدأت تطابق `<cond>` بسبب `ALTER TABLE ... UPDATE` على عمود مُشار إليه في `WHERE`. يعيد التعديل الآن حساب TTL للصف، بحيث تُحذف الصفوف المنتهية الصلاحية التي أصبحت مطابقة حديثًا بدلًا من الاحتفاظ بها بصمت. [#110648](https://github.com/ClickHouse/ClickHouse/pull/110648) ([Groene AI](https://github.com/groeneai)).
* إصلاح تسرب في المحاسبة ضمن تتبع الذاكرة: عندما كان متعقب ذاكرة رئيسي يرفض تخصيصًا (مثل حد الذاكرة على مستوى الخادم)، كانت المتعقبات على مستوى الخيط والاستعلام والمستخدم تحتفظ بالمقدار المرفوض. كان الخطأ يتراكم بمرور الوقت، مما يضخم `MemoryTracking` واستخدام الذاكرة لكل استعلام ولكل مستخدم، وقد يؤدي إلى أخطاء `MEMORY_LIMIT_EXCEEDED` زائفة. [#110784](https://github.com/ClickHouse/ClickHouse/pull/110784) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح تسلسل WKB غير القياسي لمضلع فارغ: يُنتج `wkb(POLYGON EMPTY)` الآن `numRings = 0` بدلًا من حلقة زائفة واحدة تضم صفر نقاط، بحيث تحافظ عملية WKB ذهابًا وإيابًا لمضلع فارغ قياسي على هويته. [#110796](https://github.com/ClickHouse/ClickHouse/pull/110796) ([Groene AI](https://github.com/groeneai)).
* يُصلح حالة فشل عند استخدام الأسماء المستعارة لأعمدة تعبير الجدول الشائع مع استعلامات `INTERSECT` أو `EXCEPT`، مثل `WITH t (a, b) AS (SELECT 1, 2 INTERSECT SELECT 1, 2) SELECT a, b FROM t`، إذ كان الاستعلام يفشل بالخطأ UNKNOWN\_IDENTIFIER. يُغلق [#104770](https://github.com/ClickHouse/ClickHouse/issues/104770). [#110885](https://github.com/ClickHouse/ClickHouse/pull/110885) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أُصلح خطأ `std::length_error` (`LOGICAL_ERROR`) عند قراءة جدول MergeTree باستخدام قيمة غير اعتيادية لـ `max_streams_for_merge_tree_reading` (قريبة من الحد الأقصى لـ `UInt64`) مع `allow_asynchronous_read_from_io_pool_for_merge_tree = 1`. يُقيَّد الإعداد الآن بالحد الأعلى نفسه الخاص بـ `max_threads`. [#110936](https://github.com/ClickHouse/ClickHouse/pull/110936) ([Groene AI](https://github.com/groeneai)).
* يُصلح تعطلًا (إلغاء إسناد مرجع لمؤشر فارغ أثناء تحليل الاستعلام) عند استدعاء `getSubcolumn` على وسيطة `JSON` ذات اسم عمود فرعي لتلميح نوع داخلي، أي اسم يبدأ بعلامة نوع backtick. [#110940](https://github.com/ClickHouse/ClickHouse/pull/110940) ([Groene AI](https://github.com/groeneai)).
* أُصلح الخطأ `Nested type LineString cannot be inside Nullable type (ILLEGAL_TYPE_OF_ARGUMENT)` عند قراءة عمود مكاني قابل للقيم الفارغة من MySQL (`LINESTRING` أو `POLYGON` أو `MULTILINESTRING` أو `MULTIPOLYGON` أو `MULTIPOINT` أو `GEOMETRY` العام) عبر دالة الجدول `mysql` أو محركات الجدول/قاعدة البيانات `MySQL`. تستخدم هذه الأعمدة الآن `Nullable(String)` كبديل، للاحتفاظ بالقيمة كما تُرجعها MySQL (بادئة SRID بحجم 4 بايت، تليها حمولة WKB). ويظل `POINT` مُعيّنًا إلى `Nullable(Point)`. [#110943](https://github.com/ClickHouse/ClickHouse/pull/110943) ([Groene AI](https://github.com/groeneai)).
* يُصلح تسلسل `Native` لمُغلِّفات `SimpleAggregateFunction` التي تحتوي على حالات تجميع ذات إصدارات للنظراء الأقدم. [#110997](https://github.com/ClickHouse/ClickHouse/pull/110997) ([Groene AI](https://github.com/groeneai)).
* أُصلح الخطأ `LOGICAL_ERROR: ReadBuffer is canceled. Can't read from it.` الذي قد يحدث في ربط `grace_hash` عند فشل قراءة الكتل المُفرَّغة أثناء القراءة، بينما تشترك خيوط متعددة في القارئ. [#111056](https://github.com/ClickHouse/ClickHouse/pull/111056) ([Groene AI](https://github.com/groeneai)).
* يُحتسب كل مفتاح SSH الآن بشكل منفرد ضمن حد `max_authentication_methods_per_user`، لذا يُطبَّق الحد بصورة متسقة بغض النظر عن الصياغة. سابقًا، كانت المفاتيح المتعددة في أسلوب `ssh_key` واحد تُحتسب كمفتاح واحد. [#111181](https://github.com/ClickHouse/ClickHouse/pull/111181) ([Yecine Megdiche](https://github.com/TheMC47)).
* يُصلح خطأ `LOGICAL_ERROR` (`Reading from materialized CTE '...' before its materialization completed - DelayedPortsProcessor gate is missing in the query plan`) عند قراءة تعبير جدول شائع مُجسَّد معاد استخدامه (`enable_materialized_cte`) في فرع يُتجاهل فيه مخرج `WITH TOTALS` أو `extremes`، بما في ذلك التجميع الخارجي و`INSERT ... SELECT` وعمليات المجموعات و`EXPLAIN ANALYZE`. [#111194](https://github.com/ClickHouse/ClickHouse/pull/111194) ([Groene AI](https://github.com/groeneai)).
* أُصلح `map[key]` الذي كان يُرجع قيمة مفتاح مكرر لاحق بدلًا من الأول. عندما يحتوي عمود `Map` على مفاتيح مكررة، قد تعتمد نتيجة `map[key]` على الصفوف السابقة في الكتلة نفسها وعلى إعداد `optimize_functions_to_subcolumns`، لذا قد تختلف نتائج `SELECT` و`WHERE` للصف نفسه. [#111246](https://github.com/ClickHouse/ClickHouse/pull/111246) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي `!rhs_literal->getValue().isNull()` في مُحسِّن التعبيرات المنطقية عند مقارنة سلسلة `AND` عمودًا بثابت قيمته NULL ومن نوع غير `Nullable` (مثل `Variant` بقيمة NULL)، مع `use_variant_default_implementation_for_comparisons = 0`. [#111292](https://github.com/ClickHouse/ClickHouse/pull/111292) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء `NOT_FOUND_COLUMN_IN_BLOCK` / `THERE_IS_NO_COLUMN` (وكذلك نتائج خاطئة بصمت في بعض الإصدارات) في `RIGHT JOIN` عند تعيين `parallel_replicas_min_number_of_rows_per_replica` وإسقاط عمود من الجدول الأيسر. [#111332](https://github.com/ClickHouse/ClickHouse/pull/111332) ([Groene AI](https://github.com/groeneai)).
* أصبح `RESTORE` ينفذ الآن fsync لملفات الأجزاء المستعادة عندما يكون `fsync_after_insert` مفعّلًا في الجدول الوجهة، بحيث يصبح الجزء المستعاد مقاومًا لفقدان الطاقة بالقدر نفسه الذي يتمتع به الجزء المُدرج. سابقًا، كانت الملفات المستعادة تُكتب وتُغلق فقط (من دون تنفيذ fsync)، لذا قد يؤدي فقدان الطاقة مباشرةً بعد أن يعيد `RESTORE` القيمة `RESTORED` إلى تلف الأجزاء وترك الجدول فارغًا. [#111378](https://github.com/ClickHouse/ClickHouse/pull/111378) ([Groene AI](https://github.com/groeneai)).
* إصلاح نافذة نادرة لفقدان بيانات Keeper على أقراص اللقطات المحلية: ينفذ مسار كتابة اللقطة الآن fsync لدليل اللقطة بعد إزالة وسم `tmp_`، لذلك لم يعد فقدان الطاقة قادرًا على فقدان عملية إزالة الوسم مع الإبقاء على محتوى اللقطة. سابقًا، كان مثل هذا التعطل يجعل Keeper يتعامل مع لقطة سليمة ومتزامنة بالكامل على أنها غير مكتملة ويحذفها عند إعادة التشغيل، مما يؤدي إلى فقدان عمليات كتابة تم تأكيدها حتى مع `force_sync=true`. لا يشمل ذلك أقراص اللقطات المدعومة بتخزين الكائنات. [#111397](https://github.com/ClickHouse/ClickHouse/pull/111397) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة خارج الحدود (في إصدار الإنتاج) / خطأ منطقي (في إصدار التصحيح) في تحسين الإظهار الكسول، وخطأ منطقي في `Pipe::unitePipes` لجداول `Merge`، عندما يترك تحسين القراءة المباشرة من فهرس النص عمودًا افتراضيًا غير مستخدم للفهرس في ترويسة القراءة لجدول `MergeTree` يحوي عدة فهارس `text`. [#111467](https://github.com/ClickHouse/ClickHouse/pull/111467) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة كان فيها العمود الافتراضي `_time` في دوال الجداول `url`/`urlCluster` يساوي دائمًا `NULL` في الإصدارات المبنية على musl، بسبب تحليل غير قابل للنقل لترويسة HTTP `Last-Modified`. [#111619](https://github.com/ClickHouse/ClickHouse/pull/111619) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح `LOGICAL_ERROR` (`Cannot create part with type Compact and storage type Full because table does not support polymorphic parts`) الذي يحدث عندما يحمّل جدول `MergeTree` جزءًا موجودًا مسبقًا من نوع `Compact` بينما تعطل إعداداته الحالية الأجزاء متعددة الأشكال (الدقة غير التكيفية). قد يحدث ذلك، على سبيل المثال، عندما يشارك جدول للقراءة فقط مسارًا على القرص مع جدول آخر ويعيد تحميل أجزائه عبر `SYSTEM RESTART DISK` أو عند بدء تشغيل الخادم. في إصدارات التصحيح وإصدارات sanitizer، يؤدي الاستثناء إلى إيقاف الخادم. [#111626](https://github.com/ClickHouse/ClickHouse/pull/111626) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل `CREATE TABLE ... ENGINE = KeeperMap` بسبب `Coordination error: No node, path .../metadata/drop_lock_version` عندما يُحذف جدول آخر على مسار Keeper نفسه بالتزامن. يتعامل الإنشاء الآن مع الشجرة الفرعية للبيانات الوصفية التي اختفت باعتبارها عملية تنظيف مكتملة، ثم يعيد المحاولة، كما يفعل بالفعل في الحالة نفسها بعد تعليمة واحدة. [#111966](https://github.com/ClickHouse/ClickHouse/pull/111966) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة تسابق بين mutation في `ReplicatedMergeTree` وإزالة الأدلة المؤقتة القديمة، كان يمكن أن تؤدي إلى نشر جزء مُعدّل مع فقدان بعض ملفاته، مما يتسبب في فشل قراءة ذلك الجزء وجميع تعديلاته اللاحقة. [#111992](https://github.com/ClickHouse/ClickHouse/pull/111992) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `quantileDeterministic` و`quantilesDeterministic` و`medianDeterministic` التي كانت تُرجع نتائج مختلفة للبيانات نفسها عند كل تشغيل عندما يستخدم الاستعلام النسخ المتماثلة المتوازية أو جدولًا موزعًا أو تجميعًا خارجيًا، أو عند تخزين الحالات في جدول (بما في ذلك داخل قيمة `Dynamic`). تحتفظ الحالات المكتوبة قبل هذا الإصدار باستخدام تهجئة النوع غير المُرقّمة بسلوكها السابق، إذ لا يمكن تغيير بنيتها. [#112052](https://github.com/ClickHouse/ClickHouse/pull/112052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إسقاط `serialize_string_in_memory_with_zero_byte` من خطة الاستعلام المُسلسلة. مع `serialize_query_plan = 1`، كان يمكن لعنقود يعمل مع تعطيل هذا الإعداد أن يختلف فيه التمثيل النصي في الذاكرة بين البادئ والعقدة التي تنفذ الخطة بعد إلغاء تسلسلها، لأن الإعداد كان يُقرأ عند إلغاء التسلسل لكنه لا يُكتب عند التسلسل، وبالتالي كان يُضبط دائمًا على قيمته الافتراضية في العقدة المنفذة. [#112131](https://github.com/ClickHouse/ClickHouse/pull/112131) ([Groene AI](https://github.com/groeneai)).
* إصلاح عرض إطار مكدس على أنه `?` بدلًا من اسم دالته في رسائل السجل الفادحة وفي العمود `trace_full` من `system.crash_log`. أثّر ذلك في إطارات الدوال العادية التي تُنسب شفرتها إلى ترويسة `__functional` من libc++، وهو أمر شائع في إصدارات الإصدار النهائي. [#112152](https://github.com/ClickHouse/ClickHouse/pull/112152) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالات فقدان الصفوف بصمت عندما يرشّح استعلام باستخدام `intDiv(constant, key)` أو `divide(constant, key)`. يُبلغ تحليل المفتاح الأساسي والقسم عن اتجاه رتابة خاطئ لثابت مقسوم على عمود مفتاح، فتُستبعد الحبيبات المطابقة ويُرجع الاستعلام عددًا أقل من الصفوف دون خطأ. يصلح أيضًا `intDiv` مع مقسوم ثابت غير موقّع تكون بتّه العليا مضبوطة، ويمنع اعتبار العملية رتيبة عندما يجعل معامل `Decimal` القسمة تُحسب بالعرض الأصلي للعدد العشري، ويمنع تحليل المفتاح من إصدار `Cannot compare DB::IPv4 with long` لاستعلام صالح يقسم ثابت `IPv4`/`IPv6` على عمود مفتاح. [#112156](https://github.com/ClickHouse/ClickHouse/pull/112156) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق `DROP TABLE ... SYNC` إلى الأبد عندما كان استعلام على `system.replicas` قد أُنهي قبل معالجة طلبات الحالة الخاصة به. [#112164](https://github.com/ClickHouse/ClickHouse/pull/112164) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح إنهاء الخادم (`SIGABRT`) عندما تُرجع دالة WebAssembly UDF من نوع `BUFFERED_V1` مخزن نتائج مؤقتًا فارغًا؛ يفشل الاستعلام الآن بخطأ `WASM_ERROR` يمكن التقاطه، ويظل الخادم قيد التشغيل. [#112182](https://github.com/ClickHouse/ClickHouse/pull/112182) ([Nikolai Ovchinnikov](https://github.com/kolsha)).
* إصلاح استخدام الذاكرة بعد تحريرها عندما كان `JOIN` مع `join_algorithm = 'direct'` على قاموس يتلقى مفتاح ربط مخزنًا بتسلسل متفرق. كانت `getColumnVectorData` تُرجع مرجعًا إلى عمود مؤقت، لذا كانت عملية البحث في القاموس تقرأ ذاكرة محررة: قد تُرجع إصدارات الإصدار النهائي نتائج خاطئة، بينما كانت إصدارات التصحيح أو sanitizer تتوقف. [#112327](https://github.com/ClickHouse/ClickHouse/pull/112327) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالات لم تُطبّق فيها سياسة الصفوف على إسقاطات MergeTree أثناء تنفيذ الاستعلام. [#112329](https://github.com/ClickHouse/ClickHouse/pull/112329) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح تلف البيانات عند الإدراج في جدول Iceberg يتم الوصول إليه عبر `MATERIALIZED VIEW`. كان ملف البيانات يُكتب باستخدام أنواع أعمدة الهدف وقت `CREATE` بدلًا من مخطط Iceberg الحالي، لذا كانت قيمة `DateTime` تُخزَّن كقيمة Avro `int` مجردة وتُقرأ لاحقًا على أنها ميكروثوانٍ، بينما تعذرت قراءة الملف نهائيًا مع `DateTime64(0)` أو `DateTime64(9)`. ونتيجة لذلك، أصبح `INSERT INTO <materialized view>` على هدف يكون مخطط Iceberg الخاص به أوسع من الأعمدة المعلنة للعرض يطلق الآن الخطأ `TYPE_MISMATCH` بدلًا من كتابة صف تالف. [#112359](https://github.com/ClickHouse/ClickHouse/pull/112359) ([Groene AI](https://github.com/groeneai)).
* لم يعد Keeper يرفض طلب `Set` ذا البيانات الفارغة عندما يتجاوز `max_memory_usage_soft_limit`. فلا يمكن لمثل هذا الطلب زيادة كمية البيانات المخزنة، وكان رفضه يمنع العملاء من إعادة إنشاء جلستهم، ما قد يُبقي الجداول في وضع القراءة فقط طوال مدة حدث الذاكرة في Keeper. [#112386](https://github.com/ClickHouse/ClickHouse/pull/112386) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح مشكلة خروج تابع Keeper من النصاب لفترة طويلة، ما كان يتسبب في أخطاء `Session expired` جماعية، بعد تثبيته بنجاح لقطة كبيرة: كان القائد يتجاهل إقرار التابع إذا استغرق تطبيق اللقطة وقتًا أطول من مهلة تثبيت اللقطة، ثم يُرجع فهرس سجل ذلك التابع بمقدار إدخال واحد في كل رحلة ذهاب وإياب. أُضيف أيضًا إعداد Keeper ‏`nuraft_snapshot_sync_ctx_timeout_ms` للتحكم في هذه المهلة، التي لم يكن يمكن تغييرها سابقًا إلا عبر `raft_limits_response_limit`، وبالتالي لم يكن ذلك ممكنًا دون إبطاء اكتشاف النظراء المتوقفين أيضًا. [#112405](https://github.com/ClickHouse/ClickHouse/pull/112405) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح سباقات البيانات في أحداث الملف التعريفي ومتتبع الذاكرة. [#112466](https://github.com/ClickHouse/ClickHouse/pull/112466) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح خطأ متعلق بالأمان. [#112479](https://github.com/ClickHouse/ClickHouse/pull/112479) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح قراءة فهرس ثانوي قديم (فهرس تخطٍّ) بعد تغيير نوع عبر `ALTER TABLE ... MODIFY COLUMN` لم تُنفَّذ العملية التحويرية الخاصة به مطلقًا، مثلًا لأن `KILL MUTATION` أزالها: كانت الحبيبات على القرص تُكتب بالنوع القديم، لكن تُفك شفرتها بالنوع الجديد، ما يؤدي إلى إطلاق `LOGICAL_ERROR` أو طلب تخصيصات بحجم عدة إكسابايت أو إرجاع نتيجة خاطئة بصمت. ويصلح أيضًا النتائج الخاطئة من فهرس فوق تعبير يتغير معناه رغم بقاء جميع البايتات المخزنة متطابقة، فلا تُنشأ أي عملية تحوير إطلاقًا، مثل `MODIFY COLUMN` الذي يغير المنطقة الزمنية لـ `DateTime` فقط، أو اسم نوع مخصص فقط، مثل تغيير `UInt8` إلى `Bool`. يُتخطى هذا الفهرس الآن للجزء المتأثر. يغلق [#112213](https://github.com/ClickHouse/ClickHouse/issues/112213). [#112484](https://github.com/ClickHouse/ClickHouse/pull/112484) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل عند قراءة ملف Parquet ذي بيانات وصفية غير متسقة لمرشح bloom. وكان يمكن لهذه الملفات أيضًا أن تعيد بصمت عددًا من الصفوف أقل مما ينبغي. [#112498](https://github.com/ClickHouse/ClickHouse/pull/112498) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح سباق بيانات في `readBigAt` ضمن AsynchronousBoundedReadBuffer. يغلق [#109678](https://github.com/ClickHouse/ClickHouse/issues/109678). [#112573](https://github.com/ClickHouse/ClickHouse/pull/112573) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح عدم ظهور قائمة الأسماء المستعارة للأعمدة، مثل `(SELECT 1) AS t(x)` أو `WITH t(x) AS (SELECT 1)`، داخل دالة الجدول `view`، إذ كان المرجع إلى `t.x` يفشل بالخطأ `UNKNOWN_IDENTIFIER` رغم أن البنية نفسها تعمل خارج `view`. [#112690](https://github.com/ClickHouse/ClickHouse/pull/112690) ([Groene AI](https://github.com/groeneai)).
* أُصلح الخطأ المنطقي `SortingAggregatedTransform already got bucket with number N` الذي قد يحدث في استعلامات `GROUP BY` الموزعة متعددة الطبقات التي تستخدم التجميع ثنائي المستوى. [#112794](https://github.com/ClickHouse/ClickHouse/pull/112794) ([Nikita Taranov](https://github.com/nickitat)).
* أُصلحت مشكلة كانت تؤدي إلى توقف جدول `NATS` المعيَّن له `nats_stream` عن استهلاك أي بيانات بصمت بعد إعادة تشغيل خادم NATS. يُعاد الآن إنشاء اشتراك `JetStream` تلقائيًا بدلًا من الحاجة إلى `DETACH TABLE` و`ATTACH TABLE`. [#112828](https://github.com/ClickHouse/ClickHouse/pull/112828) ([Groene AI](https://github.com/groeneai)).
* أُصلح تصنيف خطأ عابر في Azure Blob Storage على مسار القراءة أو الدمج — مثل `403 Forbidden` أثناء نشر صلاحيات RBAC، أو فشل مصادقة بيانات الاعتماد، أو مهلة اتصال تظهر كـ`408` — على أنه غير قابل لإعادة المحاولة والإبلاغ عنه كـ`POTENTIALLY_BROKEN_DATA_PART` (الرمز 740)، مما كان يطلق تنبيهًا حرجًا خاطئًا لجزء بيانات سليم. تُعامل هذه الإخفاقات العابرة الآن على أنها قابلة لإعادة المحاولة، بينما يظهر الإخفاق المستمر فعليًا كخطأ Azure عادي بدلًا من جزء بيانات معطوب وهمي. [#112871](https://github.com/ClickHouse/ClickHouse/pull/112871) ([Arsen Muk](https://github.com/arsenmuk)).
* أُصلح عدم تسجيل حذف الكائنات دفعيًا في Azure لأي أحداث Delete في `system.blob_storage_log` عند فشل طلب الدفعة نفسه، مما كان يترك الدفعة بأكملها دون تسجيل. يُسجَّل الآن حدث Delete لكل كائن عند حدوث فشل على مستوى الدفعة. [#112873](https://github.com/ClickHouse/ClickHouse/pull/112873) ([Arsen Muk](https://github.com/arsenmuk)).
* أُصلح فقدان فهرس MinMax لكل جزء على `_block_number` و`_block_offset` بعد إعادة تحميل جدول، عندما يكون الجزء ناتجًا عن عملية mutation لا تعيد كتابة الجزء بأكمله. [#112878](https://github.com/ClickHouse/ClickHouse/pull/112878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح خطأ منطقي ونتائج غير صحيحة عندما يحتوي شرط `JOIN ON` غير متكافئ، يُقيَّم أثناء الربط، على `arrayJoin`. ترفض الآن عمليات الربط `hash` أو `parallel_hash` أو `grace_hash` هذا الشرط مع `INVALID_JOIN_ON_EXPRESSION`. إذا كان التوسيع يعتمد على جانب واحد فقط، فانقله إلى `ARRAY JOIN` في استعلام فرعي قبل الربط؛ أما إذا كانت وسيطة `arrayJoin` تقرأ أعمدة من كلا الجانبين، فيجب إعادة هيكلة الشرط. [#112889](https://github.com/ClickHouse/ClickHouse/pull/112889) ([Groene AI](https://github.com/groeneai)).
* أُصلحت النتائج غير الصحيحة لـ`ORDER BY` عند القراءة من جدول `Merge` فوق جداول `Distributed`: إذ كان يمكن إرجاع الصفوف بترتيب غير صحيح، وقد تغيب صفوف ينبغي أن تظهر في النتيجة عند استخدام `LIMIT`. [#112931](https://github.com/ClickHouse/ClickHouse/pull/112931) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح تحويل ثابت `Bool` في الطرف الأيمن من `IN` إلى `String` في الطرف الأيسر بصيغة `'1'`/`'0'` بدلًا من الصيغة القياسية `'true'`/`'false'`، ليصبح متسقًا مع `CAST` ودالة الجدول `values`. [#113051](https://github.com/ClickHouse/ClickHouse/pull/113051) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* أُصلح عمود `views` في `query_log` لعمليات الإدراج في جدول `Alias` الذي يؤدي هدفه إلى تشغيل العروض المادية، إذ كان فارغًا دائمًا. [#113076](https://github.com/ClickHouse/ClickHouse/pull/113076) ([Enric Calabuig](https://github.com/eclbg)).
* أُصلح `LOGICAL_ERROR` عند قراءة جدول يحتوي على فهرس تخطٍّ `set` معرّف على تعبير، ويكرر الاستعلام هذا التعبير بمعامل `Nullable`، مثل `WHERE intDiv(id, (SELECT 1000)) = 3` مع `INDEX b_set intDiv(id, 1000) TYPE set(100)`. ويكفي استعلام فرعي قيَمي لإثارة الخطأ، لأنه من النوع `Nullable`. [#113244](https://github.com/ClickHouse/ClickHouse/pull/113244) ([George Larionov](https://github.com/george-larionov)).
* إصلاح خطأ منطقي (استثناء) `Chunk info was not set for chunk in MergingAggregatedTransform` عند تفعيل الإعداد `inject_random_order_for_select_without_order_by` وقراءة استعلام تجميعي من جدول `Merge` يحتوي على جدول فرعي `Distributed`: لم يعد الغلاف العشوائي `ORDER BY rand()` يُحقن في الاستعلامات التي لا تُخطط إلا حتى مرحلة وسيطة. [#113266](https://github.com/ClickHouse/ClickHouse/pull/113266) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح توقف في تحسين خطة الاستعلام عندما تحتوي عبارة `WHERE` على ثابت سلسلة كبير يحوي نقاطًا كثيرة، ويحتوي الجدول على فهرس تخطٍ من نوع `bloom_filter` أو `tokenbf_v1` أو `ngrambf_v1` أو `text`. كانت مطابقة اسم عمود التصفية مع أعمدة الفهرس `JSONAllPaths(...)` تُعدِّد جميع التقسيمات الممكنة للاسم عند كل نقطة، مما جعل بناء شرط فهرس التخطي ذا تعقيد تربيعي بالنسبة إلى طول الثابت. يغلق [#113003](https://github.com/ClickHouse/ClickHouse/issues/113003). [#113289](https://github.com/ClickHouse/ClickHouse/pull/113289) ([Groene AI](https://github.com/groeneai)).
* إصلاح `ATTACH` لجدول `Kafka` عندما يتجاوز `kafka_num_consumers` الحد المستمد من عدد أنوية CPU. [#113390](https://github.com/ClickHouse/ClickHouse/pull/113390) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح تعليق دائم في `DROP TABLE` وتسرب للذاكرة بعد فشل استعلام يستخدم تعبير جدول شائع مُجسَّد. كان الجدول يبقى عالقًا في قائمة انتظار الحذف حتى إعادة تشغيل الخادم. [#113397](https://github.com/ClickHouse/ClickHouse/pull/113397) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح خطأ منطقي `IDENTIFIER is not a table expression` عند استخدام دالة جدول من عائلة remote مع وسيطة `view(...)` على الجانب الأيسر من `JOIN ... USING`، عندما يكون مفتاحها اسمًا مستعارًا في قائمة `SELECT`، مع `analyzer_compatibility_join_using_top_level_identifier = 1`. [#113400](https://github.com/ClickHouse/ClickHouse/pull/113400) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة جداول `Paimon` المقسمة حسب عمود `TIMESTAMP` بدقة أعلى من المللي ثانية، والتي كانت تفشل بالرسالة `scale 6 is not supported, only support scale <= 3`. يغلق [#112768](https://github.com/ClickHouse/ClickHouse/issues/112768). [#113401](https://github.com/ClickHouse/ClickHouse/pull/113401) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* إصلاح خطأ segfault وخطأ `LOGICAL_ERROR` (`No host found for exchange stream final_result__0_0`) عندما يضبط استعلام فرعي `distributed_plan_execute_locally` في عبارة `SETTINGS` الخاصة به ضمن `make_distributed_plan`. كانت الخطة الموزعة والرمز الذي ينفذها يقرآن الإعداد من سياقين مختلفين وقد يختلفان، مما أدى إلى إنشاء المُبادِر مسار تنفيذ متناقضًا ذاتيًا. [#113422](https://github.com/ClickHouse/ClickHouse/pull/113422) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة جداول `Paimon` التي تحتوي على عمود `ARRAY` أو `MAP` قابل للقيم الخالية. لم يكن بالإمكان قراءة هذا الجدول إطلاقًا، لأن معيّن المخطط كان يغلّف النوع المركب في `Nullable`، وهو ما لا يسمح به ClickHouse، لذا كان كل من `DESC` و`SELECT` يفشلان بالرسالة `Nested type Array(Nullable(Int32)) cannot be inside Nullable type`. يُعيَّن الآن العمود المركب القابل للقيم الخالية إلى نوع مركب غير `Nullable`، وتُقرأ قيمة `NULL` كقيمة فارغة. يغلق [#113337](https://github.com/ClickHouse/ClickHouse/issues/113337). [#113450](https://github.com/ClickHouse/ClickHouse/pull/113450) ([Groene AI](https://github.com/groeneai)).
* إصلاح تقليم الأجزاء والحبيبات لشرط `JOIN ON` يتضمن أعمدة ثابتة من الجانب الآخر. [#113484](https://github.com/ClickHouse/ClickHouse/pull/113484) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أُوقفت كتابة جزء يكون فيه تخطيط `Map` متعارضًا مع بياناته الوصفية، وذلك لقيمة `Map` داخل عمود `Dynamic`. كانت الجداول التي لا تختلف إلا في `map_serialization_version` تشترك في كائن تسلسل واحد مخزّن مؤقتًا، لذا كان يمكن أن يحصل الجزء على تخطيط `Map` ‏`basic` بينما تشير بياناته الوصفية إلى `with_buckets`، فتفشل قراءته لاحقًا بالخطأ `LOGICAL_ERROR: Stream ...buckets_info ... is not found`. تظل الأجزاء التي كتبتها إصدارات سابقة بهذه الطريقة غير قابلة للقراءة ويجب حذفها. [#113514](https://github.com/ClickHouse/ClickHouse/pull/113514) ([Groene AI](https://github.com/groeneai)).
* أُصلح اعتماد نوع العمود المستنتج على ترتيب الاستعلامات السابقة لمصدر يُخزَّن مخططه مؤقتًا. كانت الإعدادات التي تغيّر نوعًا مستنتجًا غائبة عن مفتاح ذاكرة التخزين المؤقت لاستنتاج المخطط، لذا كانت قيمة الاستعلام الأول تحدد النوع الذي تراه جميع الاستعلامات اللاحقة: `input_format_try_infer_exponent_floats` و`max_parser_depth` و`input_format_json_infer_array_of_dynamic_from_array_of_different_types`، وبالنسبة إلى `Parquet` أيضًا `input_format_parquet_local_time_as_utc` و`input_format_parquet_allow_geoparquet_parser` و`input_format_parquet_skip_columns_with_unsupported_types_in_schema_inference` و`schema_inference_make_json_columns_nullable`. كما سُجّلت دالة جلب مفتاح ذاكرة التخزين المؤقت المفقودة لـ `Form`، وأصبحت دالة جلب `Template` تستخدم قاعدة الإفلات الخاصة بتنسيق الصفوف. [#113533](https://github.com/ClickHouse/ClickHouse/pull/113533) ([Groene AI](https://github.com/groeneai)).
* أُصلح سباق بيانات نظري في أحداث ملف التعريف عند استخدام إعداد `trace_profile_events_list` لكتابة تتبعات المكدس لبعض أحداث ملف التعريف إلى `system.trace_log`. [#113553](https://github.com/ClickHouse/ClickHouse/pull/113553) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُصلح قبول `RENAME DATABASE` لاسم هدف طويل بما يكفي لجعل حذف جداول قاعدة البيانات مستحيلًا. أصبح فحص طول اسم الجدول يُنفّذ الآن بغض النظر عن `check_table_dependencies`، ويشمل أيضًا الجداول المنفصلة التي لم تكن تُفحص من قبل، ولذلك كانت متأثرة حتى بالإعدادات الافتراضية. يغلق [#101747](https://github.com/ClickHouse/ClickHouse/issues/101747). [#113557](https://github.com/ClickHouse/ClickHouse/pull/113557) ([Groene AI](https://github.com/groeneai)).
* أُصلح الخطأ `LOGICAL_ERROR` ‏`Reading from materialized CTE '...' before its materialization completed - DelayedPortsProcessor gate is missing in the query plan` الذي كان يظهر عندما يقرأ جدول `Merge` له أكثر من جدول تابع تعبير جدول شائع ماديًا يشير إليه الاستعلام الخارجي. [#113558](https://github.com/ClickHouse/ClickHouse/pull/113558) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح تقييم سياسة صف تحتوي على استعلام فرعي قيَمي مرة واحدة فقط، ثم إعادة استخدام نتيجته إلى الأبد بعد قراءة الجدول عبر جدول `Merge`. تُخزَّن حالة السياسة المحللة مؤقتًا وتُشارك بين جميع الاستعلامات، وكانت قراءتها عبر `Merge` تعيد كتابة التعبير المخزّن مؤقتًا في موضعه، ما تسبب أيضًا في سباق بيانات بين الاستعلامات المتزامنة التي تستخدم السياسة نفسها. [#113563](https://github.com/ClickHouse/ClickHouse/pull/113563) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح الخطأ `Unsupported JOIN keys of type keys256 in StorageJoin` عند قراءة جدول بمحرك `Join` يكون مفتاحه مركبًا من عدة أعمدة، أو قيمة واحدة بحجم 16 أو 32 بايت مثل `UUID` أو `Int256` أو `FixedString(4)`. كان يمكن إنشاء مثل هذا الجدول والكتابة إليه وإجراء join معه، لكن لم يكن بالإمكان قراءته مجددًا باستخدام `SELECT`. يغلق [#74362](https://github.com/ClickHouse/ClickHouse/issues/74362) و[#77394](https://github.com/ClickHouse/ClickHouse/issues/77394). [#113578](https://github.com/ClickHouse/ClickHouse/pull/113578) ([Groene AI](https://github.com/groeneai)).
* في واجهة الويب، لم يعد فتح رابط يتضمن `run=1` يؤدي إلى تشغيل الاستعلامات تلقائيًا من عناوين URL الخاصة بعلامات التبويب الأخرى عند إعادة تحميل الصفحة التالية. [#113595](https://github.com/ClickHouse/ClickHouse/pull/113595) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح خطأ منطقي عند مقارنة مصفوفات يكون نوع عناصرها `Nothing`. [#113609](https://github.com/ClickHouse/ClickHouse/pull/113609) ([Groene AI](https://github.com/groeneai)).
* تُبلغ النسخ الاحتياطية الآن عن خطأ الوصول الفعلي إلى ملف القفل بدلاً من الإبلاغ خطأً عن نسخة احتياطية متزامنة عندما يتعذر على وحدة التخزين الوجهة قراءة ملف `.lock`. [#113637](https://github.com/ClickHouse/ClickHouse/pull/113637) ([Kirill Shokhin](https://github.com/kirillshokhin)).
* إصلاح خطأ منطقي `Sending a distributed query with unknown (zero) client version` عند إرفاق أو تحميل جدول `Distributed` بلا بنية فوق جزء موزع بعيد من بيانات تعريف كتبها إصدار أقدم من الخادم. [#113675](https://github.com/ClickHouse/ClickHouse/pull/113675) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* التعامل مع بايت NUL كمحرف حرفي عادي في أنماط `match()`. [#113690](https://github.com/ClickHouse/ClickHouse/pull/113690) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح `theilsU` ضمن إطار نافذة، إذ كان يعيد قيمة عشوائية بدلاً من 0 عندما تكون الوسيطة الأولى ثابتة ضمن الإطار. [#113691](https://github.com/ClickHouse/ClickHouse/pull/113691) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `Logical error: Duplicate announcement received for replica number N` عندما تعتمد النسخ المتماثلة المتوازية التلقائية (`automatic_parallel_replicas_mode`) خطةً قُسّم متغيرها أحادي العقدة إلى أجزاء موزعة بواسطة `query_plan_join_shard_by_pk_ranges`. [#113730](https://github.com/ClickHouse/ClickHouse/pull/113730) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `CANNOT_CONVERT_TYPE` واستثناء في `GroupingAggregatedTransform` عند قراءة جدول `Merge` يكون أحد جداوله الفرعية جدول `Distributed` ضمن النسخ المتماثلة المتوازية ذات المفتاح المخصص (`parallel_replicas_mode = '`custom\_key\_sampling`'` أو `'custom_key_range'`). يغلق [#113741](https://github.com/ClickHouse/ClickHouse/issues/113741). [#113742](https://github.com/ClickHouse/ClickHouse/pull/113742) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` عند استخدام `SELECT` لمُعدِّل `STREAM` على جدول مُسمّى مع النسخ المتماثلة المتوازية في وضع مهام القراءة. عند استخدام تعبير الجدول الشائع المُجسّد كمجموعة `IN` في `PREWHERE`، كان الخادم يثير `Reading from materialized CTE ... DelayedPortsProcessor gate is missing in the query plan` (ويتوقف الخادم في إصدارات التصحيح وإصدارات sanitizer). يُرفض الآن جدول يحمل `STREAM` عند طلب النسخ المتماثلة المتوازية: عند `enable_parallel_replicas = 2` يفشل الاستعلام بـ `SUPPORT_IS_DISABLED`، وعند `1` يُنفّذ من دونها، تماماً كما يحدث مع `FINAL`. [#113754](https://github.com/ClickHouse/ClickHouse/pull/113754) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم عند إجراء `JOIN` بتعبير `ON` ثابت مع جانب أيمن يحتوي على `ARRAY JOIN`. إذ كانت قراءة عمود مُنسخ بتكاسل من الجانب الأيمن تستخدم `ColumnReplicated` مُحرَّراً. يغلق [#113859](https://github.com/ClickHouse/ClickHouse/issues/113859). [#113901](https://github.com/ClickHouse/ClickHouse/pull/113901) ([Groene AI](https://github.com/groeneai)).
* إصلاح السلوك غير المعرّف والنتائج الخاطئة في `avg` على `Date`/`DateTime`/`DateTime64`/`Time`/`Time64`: يُحسب المتوسط الآن بدقة باستخدام الأعداد الصحيحة، ما يصلح تجاوز السعة عند حد `Int64` (UB، ونتيجة خاطئة على x86) وفقدان دقة `Float64` فوق 2^53 (الظاهر على مقياس النانوثانية). [#113912](https://github.com/ClickHouse/ClickHouse/pull/113912) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج الخاطئة في `JOIN` مع `join_algorithm = 'partial_merge'` عندما يحتوي الجانب الأيمن على المجاميع: إذ كان يمكن أن يبقى الجانب الأيمن غير مدموج، فتستبدل عمليات `LEFT` JOIN القيم الافتراضية بالمطابقات الفعلية، ولا تعيد عمليات `INNER`/`RIGHT` JOIN أي صفوف. وفي مسار `RIGHT`/`FULL` غير المنضم، كانت الحالة نفسها تفك مرجع مؤشر فارغ، ما يؤدي إلى تعطل الخادم. [#113936](https://github.com/ClickHouse/ClickHouse/pull/113936) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عيب في تكاملات `MySQL` كان يسمح بتجاوز بيانات اعتماد TLS لمجموعة مسمّاة بقيمة فارغة لـ `ssl_ca_pem`/`ssl_cert_pem`/`ssl_key_pem` عندما كانت المجموعة تخزن بيانات الاعتماد بصيغة المحتوى، ما يؤدي بصمت إلى إسقاط CA أو شهادة العميل المُعدّة بدلًا من رفض التجاوز. [#113947](https://github.com/ClickHouse/ClickHouse/pull/113947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `std::out_of_range` (`Logical error: 'std::exception. Code: 1001, type: std::out_of_range'`، والذي يؤدي أيضًا إلى إيقاف الخادم في إصدارات التصحيح وإصدارات sanitizer) في قارئ Parquet v3، عندما كان يُجدوَل فك ترميز عمود مطلوب فقط لتقييم عامل التصفية بعد أن كانت خانة الإخراج الخاصة به قد أُسقطت بالفعل. [#113956](https://github.com/ClickHouse/ClickHouse/pull/113956) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Unexpected return type`) عند دفع عامل تصفية إلى التخزين لعرض يختلف نوع عموده عن التخزين الأساسي (مثل `information_schema.tables`، حيث يكون `engine` من النوع `Nullable(String)`، فوق `system.tables` حيث يكون من النوع `String`). [#113984](https://github.com/ClickHouse/ClickHouse/pull/113984) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة تمنع ClickHouse Keeper من البدء مع `CORRUPTED_DATA` بعد تعطل أثناء اقتطاع سجل Raft عبر المقاطع (`writeAt`)؛ إذ كان ذلك قد يترك إدخال سجل مؤكّدًا عالقًا خلف مقاطع قديمة من سجل التغييرات. [#114003](https://github.com/ClickHouse/ClickHouse/pull/114003) ([Nishant Agarwal](https://github.com/nishant-uxs)).
* أصبح يُرفض الآن جدول أو قاعدة بيانات يُستبدل اسمها في مسار ZooKeeper لـ `ReplicatedMergeTree` عبر الماكرو `{database}` أو `{table}` إذا لم يكن الاسم مكوّن مسار آمنًا واحدًا. سابقًا، كان الاسم الذي يحتوي على `/` يُدرج دون تهريب، ما يؤدي إلى تسجيل الجدول لعُقد znode الخاصة به ضمن الشجرة الفرعية لـ Keeper لجدول آخر وتعطيل `ALTER` و`OPTIMIZE` فيها بشكل دائم. كما تُرفض المكوّنات `.` و`..` وأحرف التحكم وبنية الماكرو. وتستمر الجداول الحالية في التحميل والإرفاق. [#114006](https://github.com/ClickHouse/ClickHouse/pull/114006) ([Groene AI](https://github.com/groeneai)).
* إصلاح تسرّب للذاكرة مع `optimize_aggregation_in_order = 1` عندما يكون مفتاح فرز الجدول بادئة فعلية لمفتاح `GROUP BY` وتُستخدم دالة تجميعية تمتلك حالتها ذاكرة كومة، مثل `quantileDD`. كانت ذاكرة الخادم تزداد مع كل استعلام من هذا النوع حتى إعادة التشغيل. [#114010](https://github.com/ClickHouse/ClickHouse/pull/114010) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي عندما تحتوي خطة تنفيذ استعلام موزّع على دالة نافذة تنتج حالة دالة تجميعية، مثل `theilsUState(a, b) OVER (ORDER BY a)` مع `make_distributed_plan = 1`. يؤثر ذلك في عائلات `cramersV` و`cramersVBiasCorrected` و`theilsU` و`contingency`. [#114020](https://github.com/ClickHouse/ClickHouse/pull/114020) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج خاطئة لـ `SELECT DISTINCT` مع `LIMIT` يتطلب قراءة كامل مدخلاته: كان `LIMIT n WITH TIES` يُسقط الصفوف المتعادلة، وكان `exact_rows_before_limit = 1` يُبلغ عن قيمة مبتورة لـ `rows_before_limit_at_least`، وكان `GROUP BY ... WITH TOTALS` يحسب صف الإجماليات من بادئة التدفق. [#114025](https://github.com/ClickHouse/ClickHouse/pull/114025) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاهل `isProbablePrime` على `UInt128`/`UInt256` لـ `max_execution_time` و`KILL QUERY`. كانت كتلة من القيم كبيرة العرض تُنفّذ حتى الاكتمال ضمن استدعاء دالة واحد دون نقطة إلغاء، لذا كان يمكن أن يستمر الاستعلام لدقائق بعد تجاوز موعده النهائي. [#114032](https://github.com/ClickHouse/ClickHouse/pull/114032) ([Groene AI](https://github.com/groeneai)).
* يُصلح صفًا مفقودًا في `system.query_views_log` لعرض مادي يفشل أثناء جمع تبعياته عند تفعيل `materialized_views_ignore_errors`. وفي إصدارات التصحيح وsanitizer، كان هذا يؤدي أيضًا إلى إجهاض الخادم باستخدام `std::out_of_range` بدلًا من تسجيل العرض. [#114064](https://github.com/ClickHouse/ClickHouse/pull/114064) ([Groene AI](https://github.com/groeneai)).
* أُصلح الخطأ `Code: 46. DB::Exception: Unknown function exists. (UNKNOWN_FUNCTION)` الذي كان يحدث عندما تحتوي عبارة `PREWHERE` على شرط `IN (subquery)` ويُضبط `rewrite_in_to_join = 1` (أو `make_distributed_plan = 1`، الذي يفعّله قسرًا). وكان الاستعلام نفسه عند كتابته باستخدام `WHERE` يعمل بصورة صحيحة. [#114067](https://github.com/ClickHouse/ClickHouse/pull/114067) ([RohithPariki](https://github.com/RohithPariki)).
* أُصلح `ORDER BY ... LIMIT` الذي كان يعيد صفوفًا أقل من المطلوب، أو قد لا يعيد أي صفوف، عندما كانت سياسة الصف هي مرشح الاستعلام الوحيد وكان عمود الفرز يحتوي على فهرس تخطٍّ من نوع `minmax`. كان تحسين أعلى K يقيّد القراءة قبل تطبيق سياسة الصف. [#114073](https://github.com/ClickHouse/ClickHouse/pull/114073) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُصلح `hasAny` و`hasAll` و`has` و`indexOf` و`mapContainsKey` و`mapContainsValue` و`mapContains` التي كانت تعيد صفوفًا أقل من اللازم، أو تفشل بالخطأ `TOO_LARGE_STRING_SIZE`، عند الاستعلام عن فهرس `bloom_filter` باستخدام ثابت `FixedString`. كان الفهرس يحسب تجزئة الشكل المحشو للثابت، بينما تقارن الدالة الشكل غير المحشو، مما أدى إلى تخطي حبيبة مطابقة. [#114089](https://github.com/ClickHouse/ClickHouse/pull/114089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح الخطأ `LOGICAL_ERROR` ‏"Not-ready Set is passed as the second argument for function `globalNullIn`" وفقدان رسالة الخطأ الفعلية للاستعلام، اللذان كانا قد يحدثان عندما ينفّذ تقليم الأجزاء بالإحصاءات استعلامًا فرعيًا `IN`/`GLOBAL IN` استباقيًا أثناء تحليل الفهرس ويفشل ذلك الاستعلام الفرعي. [#114121](https://github.com/ClickHouse/ClickHouse/pull/114121) ([Groene AI](https://github.com/groeneai)).
* احترم إعداد `allow_calculating_subcolumns_sizes_for_merge_tree_reading` في تحسين PREWHERE. [#114146](https://github.com/ClickHouse/ClickHouse/pull/114146) ([Pavel Kruglov](https://github.com/Avogar)).
* ارفض القاموس التالف أو الضار إذا تجاوز `lcp` الرمز السابق أو حدث تجاوز في `lcp + data_size`، قبل الكتابة إلى المخزن المؤقت. [#114155](https://github.com/ClickHouse/ClickHouse/pull/114155) ([Elmi Ahmadov](https://github.com/ahmadov)).
* أُصلحت `min` و`max` على أعمدة `DateTime64` التي كانت تعيد نتائج خاطئة بعد تصريف التجميع عبر JIT إذا احتوت البيانات على طوابع زمنية قبل عام 1970. لم يكن `is_signed` مخصصًا لـ`DateTime64` و`Time64`، اللذين يشتقان من `Decimal64`، لذا كانت الشيفرة المُولَّدة تقارن أعداد النبضات كأعداد صحيحة غير موقعة، فيفوز الطابع الزمني السابق لعام 1970 في `max` ويخسر في `min`. [#114168](https://github.com/ClickHouse/ClickHouse/pull/114168) ([Groene AI](https://github.com/groeneai)).
* أُصلح استثناء عند قراءة جدول `MergeTree` باستخدام طبقات نطاق المفتاح الأساسي عندما تُنتج إحدى الطبقات مسارًا فارغًا. [#114177](https://github.com/ClickHouse/ClickHouse/pull/114177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح رمز الخطأ المُبلّغ عنه لبعض الأعمدة ذات التسلسل `Replicated` المشوّهة المستلمة عبر البروتوكول الأصلي: تُرفض هذه الآن باستخدام `INCORRECT_DATA` بدلًا من `LOGICAL_ERROR` (الذي كان يجهض الخادم في إصدارات التصحيح وsanitizer). [#114186](https://github.com/ClickHouse/ClickHouse/pull/114186) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح فشل `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)).
* إصلاح عدم تضمين `ALP` و`FPC` و`GCD` للمعلَمة المشتقة من النوع في تجزئة برنامج الترميز. في جزء Compact، يستخدم الكاتب تدفقًا مضغوطًا واحدًا مشتركًا لكل تجزئة مميزة لبرنامج الترميز، لذا تصادم عمودان بعرضَي قيم مختلفين يستخدمان برنامج الترميز نفسه، وتشاركا كائن برنامج ترميز واحدًا يحمل العرض الخاطئ. أدى ذلك إلى رفض عمليات الإدراج الصالحة مع `CANNOT_COMPRESS` عند اختلاف العروض، أو إلى ضغط أحد الأعمدة بكفاءة أقل مما ينبغي. [#114189](https://github.com/ClickHouse/ClickHouse/pull/114189) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `std::out_of_range: map::at: key not found` عندما يحتوي تعبير مفتاح `MergeTree` على استدعاء لـ `mortonEncode` أو `hilbertEncode` لا يشكّل بحد ذاته عمود مفتاح، مثل `ORDER BY mortonEncode(hilbertEncode(x, y), x, y)` أو `PARTITION BY mortonEncode(x, y) % 4`. [#114233](https://github.com/ClickHouse/ClickHouse/pull/114233) ([Groene AI](https://github.com/groeneai)).
* إزالة LIMIT/OFFSET العاديين من استعلام مصدر الملء التاريخي لعرض النافذة. [#114247](https://github.com/ClickHouse/ClickHouse/pull/114247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` في `arrayAutocorrelation` عندما تكون الوسيطة مصفوفة غير فارغة من عناصر نوعها `Nothing`، مثل `SELECT arrayAutocorrelation([arrayMax([])])`. تُرفض هذه الوسيطة الآن بالخطأ `ILLEGAL_COLUMN`. وتبقى قيمة المصفوفة الفارغة الحرفية `[]` تُرجع `[]`. [#114249](https://github.com/ClickHouse/ClickHouse/pull/114249) ([Groene AI](https://github.com/groeneai)).
* إصلاح عدم انضمام خادم Keeper إلى المجموعة مطلقًا عند تفعيل `nuraft_use_bg_thread_for_snapshot_io`: إذ كانت دفعة السجل المرسلة إلى خادم قيد الانضمام تُسقَط بصمت، لذلك لم يكتمل تغيير العضوية مطلقًا. [#114275](https://github.com/ClickHouse/ClickHouse/pull/114275) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح قراءة `XDG_CACHE_HOME` من `XDG_STATE_HOME`. [#114278](https://github.com/ClickHouse/ClickHouse/pull/114278) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسجيل مساحة أسماء Iceberg في الكتالوج قبل كتابة ملفات الجدول (وهو مطلوب لـ SeaweedFS). [#114285](https://github.com/ClickHouse/ClickHouse/pull/114285) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح النتائج غير المتسقة عند دفع مرشح على عمود غير مفتاح في الجدول الأيمن إلى ما دون ANY INNER JOIN. [#114313](https://github.com/ClickHouse/ClickHouse/pull/114313) ([Kirill Shokhin](https://github.com/kirillshokhin)).
* إصلاح الإكمال التلقائي في bash مع bash-completion 2.12+ (\_comp\_get\_words). [#114339](https://github.com/ClickHouse/ClickHouse/pull/114339) ([Azat Khuzhin](https://github.com/azat)).
* يُصلح تعطلًا عند قراءة جدول بحيرة بيانات يعرّف مخططه عمودًا باسم فارغ. تُرفض بيانات Iceberg الوصفية غير الصالحة بالخطأ `ICEBERG_SPECIFICATION_VIOLATION`، ويُرفض المخطط الذي يوفّره كتالوج أو Delta Lake أو Paimon بالخطأ `AMBIGUOUS_COLUMN_NAME`. يجري هذا الفحص دون قيد، لذا يصبح جدول Iceberg الذي يحتفظ فقط بمخطط تاريخي غير مستخدم ذي اسم حقل فارغ غير قابل للقراءة أيضًا، بدلًا من التعطل عند قراءة ذلك المخطط. [#114394](https://github.com/ClickHouse/ClickHouse/pull/114394) ([Groene AI](https://github.com/groeneai)).
* يُصلح خطأً كان قد يؤدي إلى احتجاز عميل يتصل بـ ClickHouse Keeper أثناء تغيير قائد Raft طوال مدة `session_timeout_ms` (30 ثانية افتراضيًا) قبل رفض اتصاله، بدلًا من رفضه فور إسقاط الطلب قيد الإرسال. يمكن للعميل المتصل الآن إعادة الاتصال بنسخة متماثلة أخرى في وقت أبكر. [#114401](https://github.com/ClickHouse/ClickHouse/pull/114401) ([Groene AI](https://github.com/groeneai)).
* أصبح `BACKUP` و`RESTORE` و`ENGINE = Backup` يتحققون الآن من صلاحية موقع النسخ الاحتياطي وفقًا لمنح `SOURCES` الخاصة بالمستخدم، بالطريقة نفسها التي تعمل بها `s3()` و`file()` و`azureBlobStorage()`. سابقًا، كان يمكن لمستخدم يملك `BACKUP` دون `SOURCES` كتابة نسخة احتياطية إلى أي موقع يستطيع الخادم الوصول إليه وقراءة نسخة احتياطية منه. تتطلب كتابة نسخة احتياطية الآن صلاحية `WRITE` على مصدر الوجهة (`WRITE ON S3`، `WRITE ON AZURE`، `WRITE ON FILE`)، بينما تتطلب قراءتها `READ`؛ وتبقى وجهات `Disk(...)` مقيدة بـ `backups.allowed_disk` فقط. [#114405](https://github.com/ClickHouse/ClickHouse/pull/114405) ([Groene AI](https://github.com/groeneai)).
* يُصلح تسرّب `CREATE OR REPLACE` لجدول داخلي باسم `_tmp_replace_*`، وفشل `CREATE OR REPLACE VIEW` بالخطأ `NOT_IMPLEMENTED` عند تعيين `ignore_drop_queries_probability`. إن عمليات DROP التي يُصدرها داخليًا هي خطوات ضمن عبارة مستخدم واحدة، لذا لم يعد حقن أخطاء DROP ينطبق عليها. [#114420](https://github.com/ClickHouse/ClickHouse/pull/114420) ([Groene AI](https://github.com/groeneai)).
* أُصلح خطأ `LOGICAL_ERROR` ‏(`Bad cast from type DB::ASTLiteral to DB::ASTPartition`) وSQL منسق غير قابل للتحليل عند إقران أمر `ALTER TABLE ... MOVE`، الذي فُك تسلسله من JSON AST (`dialect = clickhouse_json`)، بصيغة `PART` مع `TO TABLE` أو بصيغة `PARTITION` مع `TO SHARD`. تُرفض هذه الحمولات الآن بالخطأ `BAD_ARGUMENTS`. [#114429](https://github.com/ClickHouse/ClickHouse/pull/114429) ([Groene AI](https://github.com/groeneai)).
* لا تُزل الأعمدة عند الإشارة إليها في شرطي التصفية `PREWHERE` و`WHERE` معًا، حتى إذا أُعيدت كتابتها إلى عمود افتراضي لفهرس نصي. [#114460](https://github.com/ClickHouse/ClickHouse/pull/114460) ([Elmi Ahmadov](https://github.com/ahmadov)).
* أُصلح خطأ `Not-ready Set is passed as the second argument for function 'in'` عند إلغاء عملية mutation يتضمن predicate الخاص بها `IN (subquery)`، مثلًا بواسطة `KILL MUTATION` أو `DETACH DATABASE`، بينما لا تزال مجموعة الاستعلام الفرعي قيد الإنشاء. ذو صلة: [#107619](https://github.com/ClickHouse/ClickHouse/issues/107619). [#114463](https://github.com/ClickHouse/ClickHouse/pull/114463) ([Groene AI](https://github.com/groeneai)).
* أصبح `ALTER TABLE ... DROP COLUMN` لعمود مستخدم في مفتاح الفرز أو المفتاح الأساسي أو مفتاح التقسيم يفشل بالخطأ `ALTER_OF_COLUMN_IS_FORBIDDEN` مع توضيح، تمامًا كما يفعل `ALTER TABLE ... CLEAR COLUMN`. سابقًا، كان يفشل برسالة الخطأ المربكة `UNKNOWN_IDENTIFIER: Missing columns` الناتجة عن إعادة حساب تعبيرات المفتاح. ينطبق الأمر نفسه على إسقاط أو مسح مجموعة `Nested` كاملة باستخدام بادئتها المشتركة عندما يُستخدم عمود من المجموعة في مفتاح؛ إذ كان ذلك سابقًا قد يدمر بيانات المجموعة بصمت أو يترك عملية mutation لا تنتهي أبدًا. يؤدي إسقاط عمود مستخدم فقط في تعبير `TTL` الآن أيضًا إلى الإبلاغ عن تعبير TTL الذي يعطله. [#114468](https://github.com/ClickHouse/ClickHouse/pull/114468) ([Maksim Dergousov](https://github.com/m7kss1)).
* تم إصلاح قراءة عمود `Tuple` يكون عنصره الأول `NULL` في التنسيقات `CustomSeparated` و`Regexp` و`Template` باستخدام قاعدة الإفلات `CSV`. يشغل `Tuple` غير المغلّف حقلاً واحداً لكل عنصر في هذه التنسيقات، لذا فإن الحقل الأول `\N` يمثل ذلك العنصر لا العمود بأكمله. سابقاً، كان يُستهلك باعتباره العمود بأكمله، مما يؤدي إلى إزاحة حقول العناصر المتبقية إلى الأعمدة التالية، ولذلك لم يكن `CustomSeparated` يستطيع قراءة مخرجاته الخاصة. يغلق [#114402](https://github.com/ClickHouse/ClickHouse/issues/114402). [#114471](https://github.com/ClickHouse/ClickHouse/pull/114471) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح إرجاع `arrayExists(x -> x = needle, arr)` نتيجة خاطئة، أو فشله مع `TOO_LARGE_STRING_SIZE`، عندما يكون عنصر المصفوفة والـ needle من أنواع `String` مختلفة (على سبيل المثال، needle من نوع `String` مقابل عنصر من نوع `Array(FixedString(N))`). كانت عملية التحسين `optimize_rewrite_array_exists_to_has`، المفعّلة افتراضياً، تعيد كتابة هذا الاستدعاء إلى `has`، الذي لا يقارن القيم المحشوة بأصفار بالطريقة نفسها التي يفعلها `=`. [#114496](https://github.com/ClickHouse/ClickHouse/pull/114496) ([Groene AI](https://github.com/groeneai)).
* لم تعد قراءة جدول Iceberg تؤدي إلى إيقاف الخادم عندما تصف بياناته الوصفية تطوراً في المخطط تحظره مواصفة Iceberg. كان يُبلّغ عن أربعة انتهاكات للمواصفة في `IcebergSchemaProcessor` باعتبارها `LOGICAL_ERROR`، الذي يُعامل كتأكيد فاشل، أو كانت تصل إلى تأكيد قاتل دون تحقق؛ وهي الآن تثير `ICEBERG_SPECIFICATION_VIOLATION`. [#114518](https://github.com/ClickHouse/ClickHouse/pull/114518) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قيام تنسيق الإدخال `Regexp` بتجاهل الجزء غير المحلل من حقل مطابق بصمت، مما كان يؤدي إلى تخزين قيمة مقتطعة أو مختلقة بدلاً من الإبلاغ عن خطأ: كانت قراءة `v=-1` كـ `UInt64` تعطي `0`، وقراءة `v=2020-01-01junk` كـ `Date` تعطي `1975-07-14` وفق قاعدة `JSON`. تُرفض الآن الحقول غير الصالحة وفق قواعد `Escaped` و`CSV` و`JSON`، بما يتوافق مع التنسيقات الموثقة بأن هذه القواعد تحاكي سلوكها. وفق `Raw`، يُقرأ الآن الحقل المطابق الذي يحتوي على علامة تبويب كاملاً بدلاً من اقتطاعه عند علامة التبويب. [#114520](https://github.com/ClickHouse/ClickHouse/pull/114520) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` عند تصفية عمود Iceberg جعلته `ALTER TABLE ... MODIFY COLUMN` من نوع `Nullable`. يغلق [#85029](https://github.com/ClickHouse/ClickHouse/issues/85029). [#114521](https://github.com/ClickHouse/ClickHouse/pull/114521) ([Groene AI](https://github.com/groeneai)).
* أصبح `CREATE TABLE` و`ALTER TABLE` يرفضان برامج الترميز التي تسبب فقدان البيانات، مثل `SZ3`، في عمود مستخدم في مفتاح الفرز. [#114531](https://github.com/ClickHouse/ClickHouse/pull/114531) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` عند قراءة جدول Delta Lake يحدد فيه `metaData.partitionColumns` عموداً لا يعرّفه `metaData.schemaString`. تُرفض هذه البيانات الوصفية الآن باستخدام `BAD_ARGUMENTS` في قارئ delta-kernel وباستخدام `INCORRECT_DATA` في القارئ القديم، كلما تمت قراءة الجدول أو مخططه من لقطة، وليس فقط عندما يتضمن الاستعلام predicate. [#114538](https://github.com/ClickHouse/ClickHouse/pull/114538) ([Groene AI](https://github.com/groeneai)).
* رفض Variant تُقرأ فروع ORC الخاصة به كنوع واحد. [#114540](https://github.com/ClickHouse/ClickHouse/pull/114540) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تقييم فهرس النص للعامل `LIKE/ILIKE` المبني على حاويات Map أو JSON. [#114544](https://github.com/ClickHouse/ClickHouse/pull/114544) ([Elmi Ahmadov](https://github.com/ahmadov)).
* **دعم أسماء التسميات المقتبسة في معدِّلات التجميع في PromQL.**. [#114545](https://github.com/ClickHouse/ClickHouse/pull/114545) ([Minh Vu](https://github.com/fallintoplace)).
* يُصلح القيم الحرفية غير الصحيحة لـ `Time64` وثوابت قائمة `IN`، التي غالبًا ما تكون إشارتها معكوسة، والناتجة عند إعادة تحجيم `Decimal64` ذي مقياس أقل بما يؤدي إلى تجاوز `Int64`. يُبلّغ هذا التحويل الآن عن `DECIMAL_OVERFLOW`، بما يتوافق مع فرع `DateTime64` وعبارة `CAST` الصريحة. [#114546](https://github.com/ClickHouse/ClickHouse/pull/114546) ([Groene AI](https://github.com/groeneai)).
* **قبول الفواصل الختامية في قوائم تسميات التجميع في PromQL.** [#114548](https://github.com/ClickHouse/ClickHouse/pull/114548) ([Minh Vu](https://github.com/fallintoplace)).
* يدعم أسماء المقاييس والتسميات الموضوعة بين علامتي اقتباس في محددات PromQL. [#114551](https://github.com/ClickHouse/ClickHouse/pull/114551) ([Minh Vu](https://github.com/fallintoplace)).
* كان يمكن إلغاء استعلام قبل انقضاء `max_execution_time` بما يصل إلى 1 مللي ثانية، فيفشل برسالة متناقضة ذاتيًا: `Timeout exceeded: elapsed 999.672 ms, maximum: 1000 ms`. [#114559](https://github.com/ClickHouse/ClickHouse/pull/114559) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلحت قراءة جدول أثناء تنفيذ mutation، إذ كان يمكن لعمود `MATERIALIZED` أن يعيد قيمة قديمة، كما كان اختيار هذا العمود مع عمود مُحدَّث قد يفشل بخطأ. [#114561](https://github.com/ClickHouse/ClickHouse/pull/114561) ([Shaohua Wang](https://github.com/tiandiwonder)).
* يُصلح قبول `clickhouse-local` لعبارة `CREATE TABLE` يكون اسمها أطول من المسموح به في `--default_database` المُهيأ، ما كان يؤدي إلى إنشاء جدول لا يمكن حذفه. يتحقق `DatabaseOverlay` الآن من طول اسم الجدول كما تفعل قاعدة البيانات الموجودة على القرص التي يكتب إليها. [#114567](https://github.com/ClickHouse/ClickHouse/pull/114567) ([Groene AI](https://github.com/groeneai)).
* أُصلح تجاوز لآلية RBAC في محرك الجداول `Alias` كان يسمح للمستخدمين الذين لا يملكون امتيازات على الجدول الهدف بكشف مخططه وعدد صفوفه وحجمه ووجوده. [#114596](https://github.com/ClickHouse/ClickHouse/pull/114596) ([Kai Zhu](https://github.com/nauu)).
* أُصلحت إحصاءات جدول التجزئة — ومعها التخصيص المسبق لجدول تجزئة التجميع — التي كانت تُعطَّل بصمت وبشكل دائم على مستوى الخادم بأكمله عندما كان استعلام يستخدم تحسين `FINAL` الكسول (`query_plan_optimize_lazy_final`) أول عملية تجميع تُنفّذ بعد بدء تشغيل الخادم. [#114597](https://github.com/ClickHouse/ClickHouse/pull/114597) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح عمود أُعيدت تسميته وحُذف ثم أُضيف مرة أخرى ضمن `ALTER` واحد، إذ كان يعيد قيم العمود المحذوف بدلًا من قيمته الافتراضية بينما كانت mutation لا تزال معلقة. [#114601](https://github.com/ClickHouse/ClickHouse/pull/114601) ([Shaohua Wang](https://github.com/tiandiwonder)).
* أُصلحت حلقة لا نهائية وغير قابلة للإلغاء في الدالتين `hop` و`windowID` عندما يكون مدى وسيطة interval بالثواني مضاعفًا لـ 2^32 (على سبيل المثال، `toIntervalDay(2147483648)`): إذ كان الطرح مع الالتفاف يتجاوز فحص تجاوز الوقت، ومع الوسيطات الثابتة كانت الحلقة تعمل أثناء التحليل، حيث لم يكن بالإمكان حتى قتل الاستعلام. وكان يمكن للفاصل الزمني نفسه أيضًا أن يجعل الخيط الخلفي لـ `WINDOW VIEW` يدور إلى الأبد؛ ويُرفض الآن إنشاء window view كهذا. [#114607](https://github.com/ClickHouse/ClickHouse/pull/114607) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُصلح خطأً يُخزَّن فيه access entity يحمل إعدادًا بقيمة `Map`، مثل profile إعدادات يتضمن `http_response_headers` أو `additional_table_filters`، بصيغة لا يستطيع ClickHouse قراءتها مجددًا، مما يجعل الكيان غير قابل للتحميل بشكل دائم بعد إعادة التشغيل. [#114620](https://github.com/ClickHouse/ClickHouse/pull/114620) ([Groene AI](https://github.com/groeneai)).
* أُصلح تسرّب target table السابق في refreshable materialized view عند تفعيل `ignore_drop_queries_probability`. إن عبارة `DROP` التي يُصدرها التحديث لتنظيف الهدف السابق هي خطوة من عملية التحديث، وليست `DROP` طلبها المستخدم، لذلك لم يعد حقن الأعطال ينطبق عليها. [#114622](https://github.com/ClickHouse/ClickHouse/pull/114622) ([Groene AI](https://github.com/groeneai)).
* إصلاح الدوال `has` و`indexOf` و`countEqual` و`mapContainsKey` و`mapContainsValue` والفهرسة الفرعية لـ`Map` التي كانت تُرجع "غير موجود" عند استخدام قيمة ثابتة من `LowCardinality` كإبرة تساوي القيمة الافتراضية لنوع العنصر، مثل `String` فارغ أو الرقم صفر. [#114624](https://github.com/ClickHouse/ClickHouse/pull/114624) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `Multi-block postings must be compressed` في الاستعلامات على الجداول ذات الفهرس النصي في وضع التطبيق الكسول لقائمة الترحيلات، عند إلغاء الاستعلام أثناء القراءة. [#114636](https://github.com/ClickHouse/ClickHouse/pull/114636) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تنسيق وسيط استعلام فرعي لدالتي الجدول `view` و`viewIfPermitted` عندما يحتوي الاستعلام المحيط على عبارة `SETTINGS` في نهايته. كان هذا الاستعلام يُنسَّق كـ`view((SELECT ...))`، وهو ما لا يمكن تحليله مجددًا، لذا كان يفشل في فحص التنسيق-التحليل-التنسيق الداخلي ويُطلق الخطأ `Inconsistent AST formatting`. [#114658](https://github.com/ClickHouse/ClickHouse/pull/114658) ([Groene AI](https://github.com/groeneai)).
* إصلاح تلف ذاكرة الكومة عند قراءة Parquet عبر تنسيق إدخال يمتلك مخزن القراءة المؤقت الخاص به، مثل قاموس يحتوي على `SOURCE(FILE(... format 'Parquet'))`. كان بإمكان مهام الجلب المسبق وفك الترميز في الخلفية الاستمرار في القراءة والكتابة عبر المخزن المؤقت بعد أن يحرره خط الأنابيب، مما قد يؤدي إلى توقف الخادم. [#114668](https://github.com/ClickHouse/ClickHouse/pull/114668) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة عمود فرعي (`.size0` أو `.null` أو عنصر من tuple أو `String.size`) عبر جدول `Merge` عندما يعرّف الجدول الأساسي العمود الأب باعتباره `ALIAS`. كانت هذه القراءة تُرجع القيمة الافتراضية للنوع، وعند اختيار العمود الأب في الاستعلام نفسه، كان يمكن أن تُرجع قيمة عمود غير ذي صلة. [#114673](https://github.com/ClickHouse/ClickHouse/pull/114673) ([Groene AI](https://github.com/groeneai)).
* إصلاح `ANY RIGHT JOIN` و`SEMI RIGHT JOIN` عند وجود عدة شروط موصولة بـ`OR` في قسم `ON`، حيث كانت تُرجع بعض صفوف الجدول الأيمن مرتين وتفقد المطابقات لبعض الصفوف الأخرى. تأثر أيضًا `ANY LEFT JOIN` المكتوب صراحةً، لأن المخطط قد يبدّل الجدولين وينفذه كـ`ANY RIGHT JOIN`. [#114676](https://github.com/ClickHouse/ClickHouse/pull/114676) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح النتائج غير الصحيحة لتحسين `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` المُرشَّحة بواسطة `pointInPolygon` على مفتاح أساسي في MergeTree، عندما يكون وسيط المضلع قيمة حرفية ثابتة غير صالحة و`validate_polygons = 0`. استمد تحليل المفتاح الأساسي استبعاد الـgranule من مضلع لم يتحقق من صحته مطلقًا، فاستبعد granules تحتوي على صفوف مطابقة. [#114710](https://github.com/ClickHouse/ClickHouse/pull/114710) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم الذي يحدث عند دمج حالات التجميع لمركبي `-OrNull` أو `-OrDefault` مع `group_by_overflow_mode = 'any'` وقيمة غير صفرية لـ`max_rows_to_group_by`، مثلًا عندما يقرأ الاستعلام عبر إسقاط تجميعي. [#114740](https://github.com/ClickHouse/ClickHouse/pull/114740) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("Unexpected number of kept output positions after removing unused columns from `ReadFromMergeTree`") الذي كان يُطلقه `SELECT ... FINAL` عندما يستخدم `PREWHERE` عمودًا يحتاجه `FINAL` للدمج (`ver` أو `is_deleted` أو `sign`) دون اختيار ذلك العمود. [#114746](https://github.com/ClickHouse/ClickHouse/pull/114746) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Block structure mismatch`) عند قراءة جدول `Merge` مع تفعيل `make_distributed_plan` عبر العقد التابعة التي تتضمن عمليات مجموعات داخلية. [#114753](https://github.com/ClickHouse/ClickHouse/pull/114753) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض قيمة كبيرة بصورة غير معقولة لـ `kafka_num_consumers` مع رسالة خطأ واضحة، بدلًا من فشل تخصيص الذاكرة داخل محرك الجداول `Kafka`. سابقًا، عند تفعيل `kafka_disable_num_consumers_limit`، كانت هذه القيمة تؤدي إلى الاستثناء `std::length_error`. [#114764](https://github.com/ClickHouse/ClickHouse/pull/114764) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR: Context has expired` عند تقييم تعبير مخزّن يحتوي على `accurateCastOrDefault` أو الدالة `to<Type>OrDefault` بعد انتهاء الاستعلام الذي أنشأه، مثل القيمة الافتراضية لعمود `MATERIALIZED` في `INSERT` أو تعبير mutation. [#114769](https://github.com/ClickHouse/ClickHouse/pull/114769) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) عندما يتضمن استعلام `JOIN` فوق جدول يُستخدم عموده المفهرس نصيًا في كلٍّ من مسندي البحث النصي `PREWHERE` و`WHERE`. [#114771](https://github.com/ClickHouse/ClickHouse/pull/114771) ([Groene AI](https://github.com/groeneai)).
* إصلاح فقدان إشارة إيقاظ خيط إعادة التشغيل عند بدء التشغيل من خيط الإرفاق. [#114802](https://github.com/ClickHouse/ClickHouse/pull/114802) ([Azat Khuzhin](https://github.com/azat)).
* كان `OPTIMIZE TABLE` على جدول لتخزين الكائنات لا يطبق محركه compaction يُبلغ عن نجاح العملية دون تنفيذ أي شيء. أصبح الآن يُصدر خطأً، مثل جميع المحركات الأخرى التي لا تدعم هذه العبارة. يؤثر ذلك في `DeltaLake` و`Paimon` و`Hudi` ومحركات تخزين الكائنات الأساسية (`S3` و`GCS` و`COSN` و`OSS` و`AzureBlobStorage` و`HDFS` و`URL` المدعوم بتخزين الكائنات)؛ أما `Iceberg`، الذي يطبق compaction، فلم يتغير. يغلق [#114765](https://github.com/ClickHouse/ClickHouse/issues/114765). [#114805](https://github.com/ClickHouse/ClickHouse/pull/114805) ([Groene AI](https://github.com/groeneai)).
* كانت `timeSeriesRange` و`timeSeriesFromGrid` تُصدران خطأ `DECIMAL_OVERFLOW` غير صحيح للطوابع الزمنية السابقة لعام 1970، لأن طوابعي البداية والنهاية الزمنيين كانا يُقرآن كقيم غير موقعة. كذلك، بالنسبة إلى الطوابع الزمنية من نوع `DateTime`/`UInt32`، كانت قيمة الخطوة تُقتطع بصمت إلى أدنى 32 بت. تُجرى الآن جميع الحسابات باستخدام `Int64`. [#114815](https://github.com/ClickHouse/ClickHouse/pull/114815) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح إجهاض للخادم (`Logical error: Part patch-... doesn't exist`) عند تنفيذ `DROP TABLE` بالتزامن مع `UPDATE` خفيف على جدول `ReplicatedMergeTree`. يحتفظ التحديث الآن بالقفل المشترك للجدول حتى يتم تثبيت جزء التصحيح الخاص به، لذا ينتظر `DROP` بدلًا من إزالته. [#114826](https://github.com/ClickHouse/ClickHouse/pull/114826) ([Groene AI](https://github.com/groeneai)).
* إصلاح بعض الأخطاء في عمليات الإدراج غير المتزامنة (تعطل محتمل عند فشل بعض الاستعلامات بسبب `MEMORY_LIMIT_EXCEEDED`، وعدم عمل `async_insert_queue_flush_on_shutdown` مطلقًا). [#114839](https://github.com/ClickHouse/ClickHouse/pull/114839) ([Azat Khuzhin](https://github.com/azat)).
* تم إصلاح `LOGICAL_ERROR: Unexpected return type from tuple. Expected Tuple(..., UInt8). Got Tuple(..., LowCardinality(UInt8))` عند قراءة عمود `LowCardinality` مُقارَن بـ `IN (subquery)` عبر `tuple(...)` عند تجاوز حدّ استعلام فرعي ومع `enable_analyzer = 0`. مع analyzer القديم، يعيد `x IN (subquery)` لعمود `LowCardinality` الآن النوع `LowCardinality(UInt8)`، وهو نفس نوع `x IN (literal list)` ونفس النوع عند استخدام `enable_analyzer = 1`. [#114856](https://github.com/ClickHouse/ClickHouse/pull/114856) ([Nikita Fomichev](https://github.com/fm4v)).
* كانت إعدادات حصة دوال الذكاء الاصطناعي (`ai_function_max_api_calls_per_query`، `ai_function_max_input_tokens_per_query`، `ai_function_max_output_tokens_per_query`) تُطبَّق لكل كتلة بدلاً من كل استعلام، مما كان يسمح للاستعلام بتجاوز الحد المُهيأ بما يتناسب مع عدد الكتل والخيوط المعالَجة. وهي الآن تقيّد الاستعلام بالكامل على كل خادم: حد استدعاءات واجهة برمجة التطبيقات سقف دقيق (بحجز ذري)، بينما تُطبَّق حدود الرموز المميزة بأفضل جهد. يفرض الاستعلام الموزع الحدود بشكل مستقل على كل خادم/جزء مشارك. [#114885](https://github.com/ClickHouse/ClickHouse/pull/114885) ([George Larionov](https://github.com/george-larionov)).
* إصلاح إيقاف الخادم الذي يحدث عندما يكون مجمع الخيوط العام مشبعًا مؤقتًا بينما لا تزال الجداول قيد التحميل. يواصل `AsyncLoader` الآن العمل إذا تعذّر عليه إنشاء عامل تحميل إضافي وكان أحد العمال سيستمر في معالجة المهام الموضوعة في قائمة الانتظار، بدلاً من استدعاء `std::terminate`. [#114897](https://github.com/ClickHouse/ClickHouse/pull/114897) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح سلوك غير معرّف ونتائج حدودية غير صحيحة في `quantile` و`quantiles` لقيم `DateTime64` وقيم `Decimal` ذات العرض الكبير. [#114919](https://github.com/ClickHouse/ClickHouse/pull/114919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إيقاف الخادم عند وجود تذييل شريط ORC تالف. [#114924](https://github.com/ClickHouse/ClickHouse/pull/114924) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل محتمل بسبب استخدام ThreadGroup بعد تحريره (في عمليات INSERT غير المتزامنة/MVs/EXPLAIN ANALYZE). [#114940](https://github.com/ClickHouse/ClickHouse/pull/114940) ([Azat Khuzhin](https://github.com/azat)).
* تم إصلاح تعليق عند حذف جدول `TimeSeries` يكون اسمه مرتّبًا معجميًا قبل أسماء جداوله الداخلية، مثل `` DROP TABLE `-ts` ``، أو عند حذف عرض مادي معلن باستخدام `ENGINE = TimeSeries`. كان الحذف يؤدي إلى حالة توقف ذاتي بسبب قفل DDL، ولم يكن بالإمكان إلغاؤه باستخدام `KILL QUERY`. [#114953](https://github.com/ClickHouse/ClickHouse/pull/114953) ([Groene AI](https://github.com/groeneai)).
* إصلاح `BAD_DATA_PART_NAME` ("Trying to get part name in new format for old format version") في `ReplicatedMergeTree` أُنشئ باستخدام الصياغة الموضعية Deprecated ضمن `allow_deprecated_syntax_for_merge_tree`. كان يمكن الإبلاغ عن mutation على أنها مكتملة في replica لم تطبقها، وقد يبقى الجدول في وضع readonly بعد إعادة التشغيل. [#114980](https://github.com/ClickHouse/ClickHouse/pull/114980) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `Not-ready Set is passed as the second argument for function 'in'` في استعلام يحتوي على استعلام فرعي `IN` يقرأ من cluster بعيد: يفشل الاستعلام الآن بالخطأ الفعلي الصادر عن الاستعلام الفرعي، مثل فشل الاتصال. [#114983](https://github.com/ClickHouse/ClickHouse/pull/114983) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي في IN عند وجود Tuple غير ثابتة ومتطابقة على كلا الجانبين في analyzer القديم. [#114988](https://github.com/ClickHouse/ClickHouse/pull/114988) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة عنصر Tuple عبر تلميح لبنية Tuple موضعية. [#115000](https://github.com/ClickHouse/ClickHouse/pull/115000) ([Groene AI](https://github.com/groeneai)).
* لا تنشئ أسماءً مستعارة لحالات التجميع المسبق لتجميع بحجم صفري في `arrayReduceInRanges`. [#115008](https://github.com/ClickHouse/ClickHouse/pull/115008) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عملية `INSERT` في جدول `Log` أو `TinyLog` أو `StripeLog` التي تفشل عند تثبيت أحجام الملفات المسجلة. كان من الممكن أن تُبقي هذه العملية صفوفها في الجدول رغم إبلاغها عن خطأ، أو أن تترك ملفات بيانات عمود مصفوفة غير متسقة مع بعضها. تؤدي الآن قراءة جدول `Log` أو `TinyLog` يحتوي عمود مصفوفة فيه على عناصر فارغة بينما تشير إزاحاته إلى وجود عناصر إلى ظهور خطأ يذكر اسم العمود بدلاً من القراءة بعد نهاية العناصر. وكان عمود العناصر المكتوب جزئياً يُرفض بالفعل. [#115027](https://github.com/ClickHouse/ClickHouse/pull/115027) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقف المُجمِّع التكيفي في الأعمدة المنسوخة عند الطلب. [#115034](https://github.com/ClickHouse/ClickHouse/pull/115034) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة خارج الحدود في `pointInPolygon` عند استخدام مضلع ثابت ذي صندوق محيط غير محدود، مثلاً عندما يصل إحداثي إلى `+-DBL_MAX`. يُرفض هذا المضلع الآن باستخدام `BAD_ARGUMENTS`، ويُعامل المضلع ذو الحلقة الفارغة على أنه بلا مساحة داخلية. سابقاً، كان يمكن أن يعيد الاستعلام نتيجة خاطئة أو يتسبب في توقف الخادم في الإصدارات التي تُفعّل التحصين أو أدوات كشف الأخطاء. [#115035](https://github.com/ClickHouse/ClickHouse/pull/115035) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء `out_of_range` الذي كان يُثار كخطأ داخلي `Code: 1001` عندما يحتوي نمط `sequenceMatch` أو `sequenceCount` أو `sequenceMatchEvents` على رقم الحدث `0`، مثلاً `sequenceMatch('(?0)')`. يُرفض هذا النمط الآن باستخدام `BAD_ARGUMENTS`. وكان الشرط الزمني الذي يتضمن إشارة منفردة، مثل `sequenceMatch('(?1)(?t>+)(?2)')`، يُعامل بصمت على أنه `(?t>0)`، ويُرفض الآن باستخدام `SYNTAX_ERROR`. [#115056](https://github.com/ClickHouse/ClickHouse/pull/115056) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `Found patch part ... that intersects mutation with version ...` (`LOGICAL_ERROR`) في الجداول التي تستخدم التحديثات خفيفة الوزن. كان دمج أجزاء التصحيح قد ينتج تصحيحاً يمتد نطاق إصدارات بياناته عبر إصدار بيانات جزء موجود؛ ولا يمكن حينها تطبيق هذا التصحيح أو تجاوزه، لذا كانت كل عملية لاحقة على القسم تفشل ويتوقف طابور النسخ. لم تعد عمليات الدمج هذه تُسند. [#115064](https://github.com/ClickHouse/ClickHouse/pull/115064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` (`Cache file segment is in detached state`) عند القراءة عبر ذاكرة التخزين المؤقت لنظام الملفات باستخدام الإعداد التجريبي `use_reader_executor`. نتج هذا الانحدار عن [#110029](https://github.com/ClickHouse/ClickHouse/issues/110029) ولم يُضمّن في أي إصدار، لذا لا حاجة إلى نقل الإصلاح إلى الإصدارات السابقة. [#115070](https://github.com/ClickHouse/ClickHouse/pull/115070) ([Groene AI](https://github.com/groeneai)).
* خادم Arrow Flight: قبول بيانات اعتماد المصادقة `Basic` المرمّزة بـBase64 من دون حشو، كما ترسلها عملاء Flight المستندة إلى Go، مثل برنامج تشغيل ADBC Flight SQL، وإرجاع خطأ مصادقة مناسب بدلاً من الخطأ العام `Unexpected error in RPC handling` عندما يكون ترويس `authorization` غير صالح. [#115085](https://github.com/ClickHouse/ClickHouse/pull/115085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الإكمال التلقائي (التلميحات وإكمال TAB من `system.completions`) في العميل المضمّن الذي تستخدمه واجهة SSH والطرفية على الويب: كانت الاقتراحات تُحمّل عبر اتصال منفصل يصادق كمستخدم `default` بكلمة مرور فارغة، مما كان يفشل على الخوادم التي تكون لـ`default` فيها كلمة مرور، ويكشف بخلاف ذلك أسماء الكيانات التي لا يملك المستخدم المسجل دخوله صلاحية الوصول إليها. تُحمّل الاقتراحات الآن عبر اتصال الجلسة نفسها. [#115086](https://github.com/ClickHouse/ClickHouse/pull/115086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلحت مشكلة تمنع الخادم من البدء بعد إنشاء جدول باستخدام `CREATE TABLE ... AS url('http://host/**/', ...)` مع تمكين `allow_experimental_url_wildcard_from_index_pages`. إذ كانت قراءة بيانات التعريف الخاصة بهذا الجدول تعيد إجراء التحقق التجريبي وتفشل بالخطأ `SUPPORT_IS_DISABLED`، مما يوقف عملية البدء. [#115095](https://github.com/ClickHouse/ClickHouse/pull/115095) ([Groene AI](https://github.com/groeneai)).
* إعادة كتابة bucketIndexForTimestamp باستخدام حسابات 64 بت. [#115097](https://github.com/ClickHouse/ClickHouse/pull/115097) ([Vitaly Baranov](https://github.com/vitlibar)).
* أُصلح تنسيق `ALTER TABLE ... MATERIALIZE INDEX` و`MATERIALIZE STATISTICS` و`MATERIALIZE PROJECTION`، إذ كان يحذف عبارة `IF EXISTS`، وبالتالي لم يكن الاستعلام المنسّق هو الاستعلام الذي جرى تحليله. ورُفضت أيضًا أربع حمولات JSON لشجرة AST خاصة بـ `ALTER ... STATISTICS` لا يستطيع محلل SQL إنتاجها وتُنسَّق إلى أمر مختلف. [#115099](https://github.com/ClickHouse/ClickHouse/pull/115099) ([Groene AI](https://github.com/groeneai)).
* أُصلح استثناء (`Block structure mismatch in Expression for FilterSortedStreamByRange`) في بعض استعلامات `SELECT ... FINAL` التي تستخدم `PREWHERE` على جدول يكون مفتاح فرزه تعبيرًا. [#115113](https://github.com/ClickHouse/ClickHouse/pull/115113) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح تجاوزات CORS في واجهة CLI لـ clickhouse-local. [#115129](https://github.com/ClickHouse/ClickHouse/pull/115129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تعطيل تحليل الفهرس الموزع مع الإسقاطات (لأنه يؤدي إلى نتائج غير صحيحة). [#115132](https://github.com/ClickHouse/ClickHouse/pull/115132) ([Azat Khuzhin](https://github.com/azat)).
* أُصلح سلوك `if` و`multiIf` الذي كان يعيد قيمة موجبة كبيرة بدلًا من قيمة سالبة عند دمج فرع `Time` مع `Time64` أو `DateTime` أو `DateTime64` وعندما يكون التعبير مُصرَّفًا بتقنية JIT. [#115146](https://github.com/ClickHouse/ClickHouse/pull/115146) ([Groene AI](https://github.com/groeneai)).
* تتلقى الطرفية على الويب المضمنة في صفحة أخرى، مثل وحدة تحكم SQL أو `play.html`، بيانات اعتمادها من تلك الصفحة ولم تعد تفتح اتصالًا خاصًا بها قبل وصولها. سابقًا، كانت تتصل مرتين — مرة بكلمة مرور فارغة، ثم مرة أخرى ببيانات الاعتماد الفعلية — وتطبع `Connecting...` مرتين. [#115148](https://github.com/ClickHouse/ClickHouse/pull/115148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلحت النتائج غير الصحيحة عندما تحتوي عبارة `WHERE` على تعبير `NULL` ضمن `NOT`، مثلًا `SELECT count() FROM t WHERE NOT (id >= 20 AND NULL)`. كان تحليل الفهرس يتعامل مع هذا الشرط باعتباره صحيحًا حتمًا على النطاق بأكمله، لذا جرى تجاوز المرشح: أعاد `count()` صفوفًا يرفضها الاستعلام، وأزال `ALTER TABLE ... DELETE` بهذا الشرط صفوفًا كان ينبغي الاحتفاظ بها. [#115152](https://github.com/ClickHouse/ClickHouse/pull/115152) ([Groene AI](https://github.com/groeneai)).
* أُصلح فقدان `EXPLAIN ANALYZE` لإحصاءات الربط الخاصة بعرض مُعلن باستخدام `SQL SECURITY DEFINER` أو `SQL SECURITY NONE` ويحتوي نصه على JOIN. في إصدارات التصحيح والإصدارات التي تستخدم sanitizer، كان الاستعلام يُجهض بالخطأ المنطقي `JoinStep analyzed without the analyze mode`. [#115156](https://github.com/ClickHouse/ClickHouse/pull/115156) ([Groene AI](https://github.com/groeneai)).
* أُصلحت قراءة خارج الحدود أثناء إلغاء تسلسل قوائم النشر التالفة لفهرس نصي. [#115222](https://github.com/ClickHouse/ClickHouse/pull/115222) ([Anton Popov](https://github.com/CurtizJ)).
* أُصلحت النتائج غير الصحيحة للاستعلام `SELECT count(arrayJoin(arr))` مع الإعداد الافتراضي `optimize_trivial_count_query = 1`. إذ كان يُعاد عدد الصفوف المخزّن بدلًا من عدد عناصر المصفوفة، وكان الاستعلام يعيد `0` عند استخدام `file()` و`url()`. يغلق [#115123](https://github.com/ClickHouse/ClickHouse/issues/115123). [#115227](https://github.com/ClickHouse/ClickHouse/pull/115227) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند كل عملية `INSERT` في جدول يعرّف `STATISTICS(...)` على عمود `ALIAS` أو `EPHEMERAL`، والذي كان يجعل هذه الجداول في وضع القراءة فقط. [#115231](https://github.com/ClickHouse/ClickHouse/pull/115231) ([Groene AI](https://github.com/groeneai)).
* إصلاح ظهور الإحصاءات النهائية للاستعلام المكتمل (`N rows in result`, `Read ... rows`) بلون غير مرئي في واجهة الويب. [#115245](https://github.com/ClickHouse/ClickHouse/pull/115245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج الخاطئة بصمت والسلوك غير المحدد عند قراءة حالة `AggregateFunction(uniq, ...)` تالفة. كان الحقل `skip_degree` في الحالة المُسلسلة يُستخدم كأسّ إزاحة دون تحقق، لذا كانت القيمة الخارجة عن النطاق تنتج عدد عناصر عشوائيًا بدلًا من ظهور خطأ. وتُرفض هذه الحالات الآن بالخطأ `INCORRECT_DATA`. [#115276](https://github.com/ClickHouse/ClickHouse/pull/115276) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاوز سياسة صفوف، حيث كانت دالة الجدول `mergeTreeIndex` تكشف قيم المفتاح الأساسي وفهرس MinMax للصفوف التي تخفيها سياسة صفوف `SELECT` في الجدول المصدر؛ ويُرفض الآن إجراء قراءة من `mergeTreeIndex` لجدول لديه سياسة صفوف. [#115304](https://github.com/ClickHouse/ClickHouse/pull/115304) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح تجاهل `CREATE QUOTA` و`ALTER QUOTA` بصمت جميع كتل `FOR INTERVAL` باستثناء الأخيرة عند حذف الفاصلة الفاصلة بين الفترات. كانت هذه العبارة تنجح دون تثبيت أي من الحدود السابقة. وتتراكم الفترات الآن مجددًا، كما كانت قبل عام 2020. يغلق [#115282](https://github.com/ClickHouse/ClickHouse/issues/115282). [#115320](https://github.com/ClickHouse/ClickHouse/pull/115320) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتائج الخاطئة من `if` و`multiIf` و`CASE` عندما يكون أحد الفروع من النوع `Date` أو `Date32` ويكون نوع النتيجة `DateTime` أو `DateTime64`. مع `compile_expressions = 1` (الإعداد الافتراضي)، كان التعبير المُصرَّف ينسخ عدد أيام التاريخ إلى عمود الطابع الزمني دون تحويل الأيام إلى ثوانٍ، لذا كانت `if(cond, toDate32('1900-01-01'), toDateTime64('1970-01-01', 3))` تُرجع `1969-12-31 23:59:34.433`. يغلق [#115272](https://github.com/ClickHouse/ClickHouse/issues/115272). [#115325](https://github.com/ClickHouse/ClickHouse/pull/115325) ([Groene AI](https://github.com/groeneai)).
* عدم ترك بيانات وصفية تشير إلى مجموعة مسماة محذوفة. [#115326](https://github.com/ClickHouse/ClickHouse/pull/115326) ([Groene AI](https://github.com/groeneai)).
* إصلاح قيام `timezoneOffset` (الاسم المستعار `timeZoneOffset`) بإرجاع إزاحة خاطئة بمقدار يوم واحد بالضبط للمناطق الزمنية التي تختلف إزاحتها عن UTC عن إزاحتها في `1970-01-01` بمقدار يوم كامل، مثل `Pacific/Kiritimati` و`Pacific/Apia` بعد عبورهما خط التاريخ الدولي، وكذلك لمعظم المناطق قبل عام 1970. ويُصلح هذا أيضًا `parseDateTime` و`parseDateTimeOrNull` و`parseDateTime64` و`parseDateTimeInJodaSyntax` و`EXTRACT(TIMEZONE_HOUR / TIMEZONE_MINUTE ...)` و`%z` في `formatDateTime` و`toUTCTimestamp` و`fromUTCTimestamp`، التي تعتمد على تلك الإزاحة. يغلق [#115281](https://github.com/ClickHouse/ClickHouse/issues/115281). [#115332](https://github.com/ClickHouse/ClickHouse/pull/115332) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاوز قيود الإعدادات: كان `SET <name> = DEFAULT` يعيد تعيين إعداد دون التحقق من القيود في ملف تعريف المستخدم، لذا كان يمكن تجاوز قيد `MIN`/`MAX`/`CONST` بإعادة تعيين الإعداد بدلًا من إسناد قيمة إليه، وكان يمكن لجلسة الخروج من وضع `readonly` باستخدام `SET readonly = DEFAULT`. [#115334](https://github.com/ClickHouse/ClickHouse/pull/115334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* خادم Arrow Flight: رفض بيانات اعتماد المصادقة الأساسية غير الصحيحة التي تفتقر إلى الفاصل بين اسم المستخدم وكلمة المرور. [#115347](https://github.com/ClickHouse/ClickHouse/pull/115347) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` (`Join is supported only for pipelines with one output port`) في عملية JOIN من `full_sorting_merge` مع تفعيل `query_plan_join_shard_by_pk_ranges` عندما يُستبعد أحد الجانبين بالكامل بحيث لا تبقى له أي أجزاء، سواءً بالمفتاح الأساسي أو بإحصاءات الأعمدة أو لأن الجدول فارغ. [#115352](https://github.com/ClickHouse/ClickHouse/pull/115352) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تعطيل ذاكرة التخزين المؤقت لشروط الاستعلام للمرشحات على \_part\_starting\_offset. [#115358](https://github.com/ClickHouse/ClickHouse/pull/115358) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح `randConstant` الذي كان يعيد قيمتين مختلفتين ضمن استعلام واحد عندما تحمل استدعاءاته أسماء مستعارة مختلفة. تنص وثائق `randConstant` على أنه يحتفظ بقيمة واحدة للاستعلام بأكمله، وكان `SELECT randConstant() = randConstant()` يعيد بالفعل `1`، لكن إضافة أسماء مستعارة كما في `SELECT randConstant() AS a, randConstant() AS b` كانت تنتج قيمتين غير مرتبطتين. [#115384](https://github.com/ClickHouse/ClickHouse/pull/115384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `uniq` و`uniqExact` و`uniqHLL12` و`uniqTheta` التي كانت تعيد نتائج خاطئة لوسيطة مغلفة بدالة حقنية تخفي قابلية القيم الفارغة، مثل `uniqExact(tuple(x))` على عمود `Nullable`. كانت عملية التحسين `optimize_injective_functions_inside_uniq` تزيل الدالة المغلفة، مما يؤدي إلى تخطي صفوف NULL بدلًا من احتسابها. [#115466](https://github.com/ClickHouse/ClickHouse/pull/115466) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح `GroupingAggregatedTransform` الذي كان ينتج مقاطع مكررة للحاوية نفسها. [#115487](https://github.com/ClickHouse/ClickHouse/pull/115487) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح رسالة الخطأ الخاصة بـ `geoToH3` التي كانت تشير إلى موضع وسيطة ونوع خاطئين عندما لا يكون أحد الإحداثيات من النوع `Float64`. ضمن الإعداد الافتراضي `geotoh3_argument_order = 'lat_lon'`، كانت الرسالة تشير إلى الوسيطة الأخرى وتطبع نوعها. يغلق [#101813](https://github.com/ClickHouse/ClickHouse/issues/101813). [#115503](https://github.com/ClickHouse/ClickHouse/pull/115503) ([Groene AI](https://github.com/groeneai)).
* رفض محرف إرجاع عربة منفرد (`\r`)، بالإضافة إلى محرف تغذية السطر (`\n`)، في أسماء وقيم HTTP header التي تمر عبر مرشح HTTP header. يسد ذلك ثغرة حقن HTTP header (تقسيم الطلب/الاستجابة) في الميزات التي تمرر رؤوسًا يوفّرها المستخدم، مثل دالة ومحرك الجدول `url`، وقواميس HTTP، وكتالوجات بحيرة البيانات. [#115510](https://github.com/ClickHouse/ClickHouse/pull/115510) ([Sergei Trifonov](https://github.com/serxa)).
* إصلاح الذواكر المؤقتة المضبوطة بحد أقصى لعدد الإدخالات (سياسة `SLRU`) التي كانت تتوقف بصمت عن قبول إدخالات جديدة بمجرد الوصول إلى ذلك العدد من الإدخالات التي تم الوصول إلى كل منها مرتين على الأقل. تشمل الذواكر المؤقتة المتأثرة ذواكر ملفات البيانات الوصفية لـ Iceberg وPaimon، وذاكرة التخزين المؤقت للبيانات الوصفية لـ Parquet، وذواكر فهرس النص، وذاكرة التخزين المؤقت لفهرس تشابه المتجهات، وذاكرة التخزين المؤقت للتعبيرات المترجمة، وذاكرة التخزين المؤقت لحالة ملف ObjectStorageQueue. [#115517](https://github.com/ClickHouse/ClickHouse/pull/115517) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق يستمر حتى ساعة في `BACKUP`/`RESTORE ... TO S3`، وأقراص GCS، ودالة الجدول `s3` عندما تضبط المجموعة المسماة `http_client = 'gcp_oauth'` وتقبل نقطة نهاية رمز Google OAuth2 الاتصال لكنها لا ترد مطلقًا. لم يعد طلب Bearer token يرث مهلة طلب نقل البيانات الخاصة بالمستدعي؛ بل يقتصر انتظار استجابته على 10 ثوانٍ، بما يطابق الحد الأقصى لطلب STS `AssumeRole`. [#115531](https://github.com/ClickHouse/ClickHouse/pull/115531) ([Groene AI](https://github.com/groeneai)).
* إصلاح `dictGet` وصِيَغه المختلفة في الاستعلامات الموزعة: أصبح اسم القاموس غير المؤهل يُربط بقاعدة البيانات الحالية للعقدة البادئة، بدلاً من حله ضمن قاعدة البيانات الحالية لكل جزء تقسيم، حيث إما لا يُعثر عليه أو يُحل إلى قاموس آخر بالاسم نفسه. [#115541](https://github.com/ClickHouse/ClickHouse/pull/115541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة تنافس قد تؤدي إلى أن يعيد استعلام `STREAM BOUNDED` صفوفاً أقل من تلك التي ثُبّتت قبل بدئه، وغالباً لا يعيد أي صفوف. [#115543](https://github.com/ClickHouse/ClickHouse/pull/115543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح كتابة لقطات Keeper كملفات فارغة عند تعطيل `compress_snapshots_with_zstd_format`. كان الخادم يسجل `Created persistent snapshot`، لكن ملف اللقطة كان بحجم 0 بايت، ثم كانت العقدة ترفض البدء مع `CORRUPTED_DATA`. يغلق [#115388](https://github.com/ClickHouse/ClickHouse/issues/115388). [#115553](https://github.com/ClickHouse/ClickHouse/pull/115553) ([Groene AI](https://github.com/groeneai)).
* إصلاح إبلاغ `read_rows` و`read_bytes` و`written_rows` و`written_bytes` في `system.query_thread_log` بالإجمالي التراكمي طوال عمر خيط التنفيذ بدلاً من القيم الخاصة بالاستعلام المسجل. تأثرت بذلك صفوف خيوط التنفيذ طويلة العمر في التجمع، ولا سيما خيط التنفيذ `HTTPHandler` الذي يبدأ الاستعلام. [#115596](https://github.com/ClickHouse/ClickHouse/pull/115596) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة خارج الحدود لتجزئات القاموس المخزنة مؤقتاً عند التجميع أو الربط باستخدام مفتاح `LowCardinality(String)` ينمو قاموسه أثناء تجميعه، ويمكن الوصول إلى هذه الحالة عبر `TTL ... GROUP BY`. كان ذلك قد ينتج تجزئة خاطئة أو خطأ heap-buffer-overflow مُبلّغاً عنه في إصدارات sanitizer. [#115604](https://github.com/ClickHouse/ClickHouse/pull/115604) ([Groene AI](https://github.com/groeneai)).
* أصبح `CREATE TABLE` و`ALTER TABLE` يرفضان برنامج ترميز فاقداً مثل `SZ3` لعمود مستخدم في مفتاح التقسيم. [#115626](https://github.com/ClickHouse/ClickHouse/pull/115626) ([Groene AI](https://github.com/groeneai)).
* إصلاح محارف الهروب بالشرطة المائلة العكسية غير الصالحة في فهارس text وtokenbf\_v1 وngrambf\_v1. [#115634](https://github.com/ClickHouse/ClickHouse/pull/115634) ([Elmi Ahmadov](https://github.com/ahmadov)).
* إصلاح `removePartAndCoveredParts` عند استدعائه لجزء موجود في مجموعة أجزاء البيانات النشطة. [#115640](https://github.com/ClickHouse/ClickHouse/pull/115640) ([Mikhail Artemenko](https://github.com/Michicosun)).
* السماح لقراء KeeperMap بقبول بيانات وصفية مشتركة عندما لا تختلف المفاتيح الأساسية المتكافئة إلا في أقواس خارجية زائدة. [#115642](https://github.com/ClickHouse/ClickHouse/pull/115642) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* إصلاح خلل كانت فيه استعادة قاعدة بيانات أو جدول باسم جديد تحذف الأسماء المستعارة للجداول من نصوص العروض المخزنة، مما يؤدي إلى فشل قراءة عرض مستعاد مع `UNKNOWN_IDENTIFIER`. يغلق [#115479](https://github.com/ClickHouse/ClickHouse/issues/115479). [#115645](https://github.com/ClickHouse/ClickHouse/pull/115645) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Code: 349. Cannot convert NULL value to non-Nullable type` عندما يحمل الشرط `has` أو `notHas` عنصر Array بقيمة NULL ويكون المفتاح الأساسي `String` أو `Array(String)` أو `Map(String, String)`، وإصلاح النتائج الخاطئة عندما يكون ذلك العنصر `Dynamic` أو `Variant` يحتوي على NULL. يُحذف NULL الآن من المجموعة أثناء تحليل المفتاح، كما كان يحدث بالفعل لأنواع المفاتيح الأخرى. [#115647](https://github.com/ClickHouse/ClickHouse/pull/115647) ([Groene AI](https://github.com/groeneai)).
* إصلاح خلل في الدالة `formatRowNoNewline` كان قد ينتج نتائج غير صحيحة أو خطأً منطقياً عند تنسيق صف إلى نتيجة فارغة. [#115669](https://github.com/ClickHouse/ClickHouse/pull/115669) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض قيم `step` الصفرية والسالبة في استعلامات نطاق Prometheus أحادية النقطة. [#115679](https://github.com/ClickHouse/ClickHouse/pull/115679) ([Minh Vu](https://github.com/fallintoplace)).
* رفض الطوابع الزمنية والمدد في PromQL التي تتجاوز نطاق Int64. [#115682](https://github.com/ClickHouse/ClickHouse/pull/115682) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح أعطال الخادم الناتجة عن إدخال متداخل بعمق في `readWKB` و`JSONMergePatch`، ومحلل العناوين في دوال الجداول `url`/`remote`/`cluster`/`mysql`/`postgresql`، ومحلل عبارة `CURSOR` ومحلل مخطط CapnProto. وإصلاح عطل في محلل عبارة `EXECUTE` عندما لا تكون الوسيطة قيمة حرفية. [#115700](https://github.com/ClickHouse/ClickHouse/pull/115700) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* عدم إرجاع ذاكرة غير مهيأة في نتيجة قيمة حرفية لسلسلة ثنائية لا يكون طولها مضاعفًا للثمانية، أو من مفكك ضغط LZ4 عندما لا تحتوي كتلة مضغوطة على بيانات. [#115704](https://github.com/ClickHouse/ClickHouse/pull/115704) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تقييد حجم رسالة بدء تشغيل بروتوكول PostgreSQL الشبكي، التي تُقرأ قبل المصادقة. [#115708](https://github.com/ClickHouse/ClickHouse/pull/115708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `MULTIPLE_EXPRESSIONS_FOR_ALIAS` في الاستعلامات التي يتطابق فيها الاسم المستعار لعمود مع الاسم المستعار لتعبير جدول في قسم `FROM` (تراجع في المحلل في الإصدار 25.2). [#115714](https://github.com/ClickHouse/ClickHouse/pull/115714) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إنهاء `clickhouse-local` للعملية بأكملها عندما يُلقي معالج اتصال لمستمع بدأ بـ `SYSTEM START LISTEN` خطأً، مثلًا لأن عميلًا أرسل حزمة تالفة أو أعاد ضبط مقبس keep-alive. تسجل العملية الآن الخطأ وتواصل الخدمة، كما يفعل `clickhouse-server`. [#115715](https://github.com/ClickHouse/ClickHouse/pull/115715) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR: No available columns` عندما لا يقرأ استعلام أي أعمدة من تعبير جدول لا يحتوي على أعمدة إطلاقًا، مثل `SELECT count() FROM loop(db, tbl)`، حيث يكون `tbl` جدول `Alias` حُذف هدفه، أو عرضًا ذا معلمات. يفشل هذا الاستعلام الآن بالخطأ `UNSUPPORTED_METHOD` بدلًا من إيقاف الخادم في إصدارات debug وsanitizer. [#115716](https://github.com/ClickHouse/ClickHouse/pull/115716) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `LOGICAL_ERROR` "Reading from materialized CTE 'X' before its materialization completed - DelayedPortsProcessor gate is missing in the query plan" عند القراءة من CTE `MATERIALIZED` داخل استعلام فرعي `IN` على جدول `Distributed`. يغلق [#113184](https://github.com/ClickHouse/ClickHouse/issues/113184). [#115740](https://github.com/ClickHouse/ClickHouse/pull/115740) ([Groene AI](https://github.com/groeneai)).
* رفض الأسماء غير الصالحة للإسقاطات والفهارس. [#115824](https://github.com/ClickHouse/ClickHouse/pull/115824) ([Alexander Tokmakov](https://github.com/tavplubix)).
* رفض معدلات مطابقة المتجهات في PromQL عندما يكون أحد المعاملين قيمة قياسية. [#115828](https://github.com/ClickHouse/ClickHouse/pull/115828) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح عدم احتفاظ `cast_keep_nullable` بقابلية NULL عندما يكون النوع الهدف هو `LowCardinality`. كان تحويل قيمة تقبل NULL إلى `LowCardinality(T)` يُلقي الخطأ `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN` بدلًا من إنتاج `LowCardinality(Nullable(T))`. يغلق [#103485](https://github.com/ClickHouse/ClickHouse/issues/103485). [#115851](https://github.com/ClickHouse/ClickHouse/pull/115851) ([Groene AI](https://github.com/groeneai)).
* إضافة مسارات Objects إلى تجزئة إزالة التكرار، لمنع إزالة التكرار غير الصحيحة. [#115866](https://github.com/ClickHouse/ClickHouse/pull/115866) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إصلاح `TYPE_MISMATCH` ("لا يمكن تنفيذ CAST AS Array إلا بين أنواع مصفوفات لها عدد الأبعاد نفسه") لاستعلام يحتوي على ثابت من النوع `Array(Map(...))`، مثل `has([map('k', 'v')], m)`، يُنفَّذ على جدول `Distributed` أو باستخدام النسخ المتماثلة المتوازية. [#115883](https://github.com/ClickHouse/ClickHouse/pull/115883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `Unknown identifier` الذي يظهر أثناء تحسين خطة الاستعلام مع `make_distributed_plan = 1`، عندما يمر عمود الفرز في استعلام نافذة عبر خطوة `Expression` لا تشير إليه. يغلق [#115737](https://github.com/ClickHouse/ClickHouse/issues/115737). [#115890](https://github.com/ClickHouse/ClickHouse/pull/115890) ([Groene AI](https://github.com/groeneai)).
* إصلاح `h3kRing` و`h3HexRing` و`h3Line` و`h3ToChildren` التي كانت تتجاهل `max_execution_time` و`KILL QUERY` أثناء توسيع كتلة من الصفوف. [#115893](https://github.com/ClickHouse/ClickHouse/pull/115893) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد القراءة من خلال جدول `Merge` يطابق جدول `Alias` هدفه عرض ذو معلمات تؤدي إلى ظهور `LOGICAL_ERROR: Table has no columns.` (الذي يؤدي إلى إيقاف الخادم في إصدارات debug وsanitizer). يُبلّغ هذا الجدول الآن عن `STORAGE_REQUIRES_PARAMETER`، وهو الخطأ نفسه الذي يُبلّغ عنه العرض ذو المعلمات نفسه. وأي جدول مطابق آخر لا يمكنه توفير أعمدة يُبلّغ الآن عن `UNSUPPORTED_METHOD` بدلًا من خطأ داخلي. [#115896](https://github.com/ClickHouse/ClickHouse/pull/115896) ([Groene AI](https://github.com/groeneai)).
* إصلاح المعاينة الفورية لطفرة معلّقة يشير تعبيرها إلى `_sample_factor`. مع `apply_mutations_on_fly = 1` وعبارة `SAMPLE`، كان التعبير يُقيَّم بعامل العينة الخاص باستعلام القراءة بدلًا من القيمة التي تحتفظ بها المادية في الخلفية، لذا اختلفت الصفوف المُعايَنة عن النتيجة المادية النهائية، وكان من الممكن أن تؤدي عبارة `ALTER TABLE t DELETE WHERE _sample_factor > 1` معلّقة إلى إرجاع قراءة `SAMPLE` دون أي صفوف. لم يتغير عمود `_sample_factor` الخاص بالاستعلام نفسه. [#115906](https://github.com/ClickHouse/ClickHouse/pull/115906) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة لم يكن فيها `ATTACH TABLE` الذي يحمل تعريف `ENGINE = URL(...)` يتحقق من صلاحية `TABLE ENGINE` للمحرك الذي يوجّه إليه مخطط URL. كان المستخدم الذي يمتلك فقط `TABLE ENGINE ON URL` يستطيع إرفاق جدول مدعوم بـ`File` أو `S3` أو `AzureBlobStorage` أو `HDFS` ثم القراءة منه، بينما يرفض `CREATE TABLE` ذلك على نحو صحيح. [#115914](https://github.com/ClickHouse/ClickHouse/pull/115914) ([Groene AI](https://github.com/groeneai)).
* عدم السماح لعقدة بيانات وصفية لـ KeeperMap غير قابلة للتحليل بمنع الخادم من البدء. [#115941](https://github.com/ClickHouse/ClickHouse/pull/115941) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الدالة `showCertificate` على خادم يحصل على شهادة TLS باستخدام ACME (Let's Encrypt). تُبلّغ الدالة الآن عن الشهادة المقدَّمة فعليًا، بما في ذلك بعد إعادة تحميل الشهادة. [#115976](https://github.com/ClickHouse/ClickHouse/pull/115976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إيقاف الخادم في إصدارات debug وsanitizer عند الإدراج في عرض مادي يكون هدف `TO` له عرضًا ماديًا آخر. كان هذا الإدراج يفشل بالفعل في الإصدارات المنشورة، مع `Code: 1001 STD_EXCEPTION` غير مفيد؛ ويُبلّغ الآن عن `NOT_IMPLEMENTED` مع تحديد العرض المسبب للمشكلة. [#115985](https://github.com/ClickHouse/ClickHouse/pull/115985) ([Groene AI](https://github.com/groeneai)).
* تُقرأ الآن ملفات الإحصاءات ذات إصدار التنسيق `V3` بدلًا من رفضها بالخطأ `ILLEGAL_STATISTICS`. لم تُنتَج هذه الملفات إلا بواسطة إصدارات `master` خلال فترة قصيرة، لكن الأجزاء التي تحتوي عليها كانت غير قابلة للقراءة تمامًا، ولا يمكن لـ `ALTER TABLE ... MATERIALIZE STATISTICS` إعادة إنشائها على قرص readonly. [#116030](https://github.com/ClickHouse/ClickHouse/pull/116030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `LOGICAL_ERROR: Index with name auto_minmax_index_<column> already exists` الذي كان يحدث عندما تجمع تعليمة واحدة من `ALTER TABLE` بين `RENAME COLUMN` وأمر آخر، مثل `MODIFY SETTING`، في جدول ذي فهارس minmax ضمنية (`add_minmax_index_for_numeric_columns` وما شابهها). كذلك، لم تعد إعادة تسمية عمود عادي تؤدي إلى فشل `DROP COLUMN` لاحق بالخطأ `UNKNOWN_IDENTIFIER` أو إلى إضافة `ADD COLUMN` لاحقة دون فهرسها الضمني. [#116063](https://github.com/ClickHouse/ClickHouse/pull/116063) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل العاملين عديمي الحالة عند استخدام تخزين الكائنات. [#116067](https://github.com/ClickHouse/ClickHouse/pull/116067) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* توفير حِزم موقَّعة لنظام macOS. [#115169](https://github.com/ClickHouse/ClickHouse/pull/115169) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح البناء من المصدر باستخدام clang 23. [#112288](https://github.com/ClickHouse/ClickHouse/pull/112288) ([Azat Khuzhin](https://github.com/azat)).
* تقليل التبعيات وحجم شيفرة محلل SQL، الذي أصبح بالإمكان بناؤه بصورة مستقلة — راجع `utils/wasm-parser` للحصول على إصدار WebAssembly مستقل منه. أصبحت جداول الكلمات المفتاحية في SQL وأنواع الوصول تُبنى وقت الترجمة بدلًا من كل مرة يبدأ فيها الخادم. [#112067](https://github.com/ClickHouse/ClickHouse/pull/112067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح البناء من المصدر يفشل الآن أثناء مرحلة توليد CMake بدلًا من إتلاف `StorageSystemLicenses.generated.cpp` عند فشل توليد الترخيص. [#111222](https://github.com/ClickHouse/ClickHouse/pull/111222) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تحديث مكتبة Apache Thrift المضمّنة إلى الإصدار 0.24.0. [#111278](https://github.com/ClickHouse/ClickHouse/pull/111278) ([Groene AI](https://github.com/groeneai)).
* إضافة `libucontext` إلى بُنى musl، بما يتيح الواجهة الخلفية `ucontext` الخاصة بـ `boost::context` والمستخدمة في بُنى sanitizer. [#111437](https://github.com/ClickHouse/ClickHouse/pull/111437) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح مشكلات قابلية النقل على مستوى الشيفرة المصدرية عند البناء باستخدام musl. [#111631](https://github.com/ClickHouse/ClickHouse/pull/111631) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* لم يعد تعديل `Core/ProtocolDefines.h` يؤدي إلى إعادة بناء شبه كاملة عند البناء من المصدر: أُزيل التضمين من `BlockInfo.h` وأُضيف فقط إلى الملفات التي تستخدم ثوابته. [#111650](https://github.com/ClickHouse/ClickHouse/pull/111650) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح إيقاف مفاجئ عند بدء التشغيل في بُنى تصحيح الأخطاء على macOS، وذلك بتعطيل فحوصات تصحيح الأخطاء لمتعقب الذاكرة للتخصيصات التي تجريها مكتبات النظام. [#112080](https://github.com/ClickHouse/ClickHouse/pull/112080) ([Arsen Muk](https://github.com/arsenmuk)).
* تحديث `libarchive` المضمّنة إلى الإصدار 3.8.9. [#112434](https://github.com/ClickHouse/ClickHouse/pull/112434) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `StringZilla` إلى الإصدار 5.0.5. [#112319](https://github.com/ClickHouse/ClickHouse/pull/112319) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `jwt-cpp` إلى الإصدار v0.7.2. [#112595](https://github.com/ClickHouse/ClickHouse/pull/112595) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث تجميعة SQLite المضمّنة من 3.41.2 إلى 3.53.4. [#112599](https://github.com/ClickHouse/ClickHouse/pull/112599) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `aws-c-http` إلى الإصدار 0.11.0. [#112413](https://github.com/ClickHouse/ClickHouse/pull/112413) ([Govind R Nair](https://github.com/Revertionist)).
* تحديث `libcotp` إلى الإصدار v4.2.1. [#112596](https://github.com/ClickHouse/ClickHouse/pull/112596) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* يمكن الآن بناء OpenSSL من مصادر C القابلة للنقل على المعماريات التي لا تتضمن تعليمات تجميع مكتوبة يدويًا في وصف البناء، بدلًا من الفشل في مرحلة الربط النهائية بسبب رموز غير معرّفة. ويحدد خيار CMake الجديد `OPENSSL_NO_ASM` هذا المسار صراحةً. [#112863](https://github.com/ClickHouse/ClickHouse/pull/112863) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف خيار CMake باسم `ENABLE_ORC` (مفعّل افتراضيًا)، بحيث يمكن أن يتضمن الإصدار Parquet دون ORC أو protobuf و`protoc` اللذين يعتمد عليهما ORC. [#112864](https://github.com/ClickHouse/ClickHouse/pull/112864) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد `Common/Exception.cpp` يتطلب نسخة libc++ المصححة الخاصة بـ ClickHouse لكي يُترجم، لذا تحصل الإصدارات التي تربط مكتبة C++ قياسية مختلفة على استثناءات من دون stack trace لموضع throw، بدلًا من فشل الترجمة. [#112865](https://github.com/ClickHouse/ClickHouse/pull/112865) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح فكّ المكدس في إصدارات musl على aarch64 يتابع عبر إطارات الإشارات واستدعاءات syscall المحجوبة بدلًا من التوقف عند إطار libc، مما يحسّن stack traces الصادرة عن معالج الأخطاء الفادحة وSampling query profiler. [#112592](https://github.com/ClickHouse/ClickHouse/pull/112592) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `libexpat` المضمّن إلى 2.8.2. [#112593](https://github.com/ClickHouse/ClickHouse/pull/112593) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `simdjson` إلى v4.6.5. [#112594](https://github.com/ClickHouse/ClickHouse/pull/112594) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث Apache Arrow إلى 25.0.0 وApache ORC إلى 2.3.1. [#112604](https://github.com/ClickHouse/ClickHouse/pull/112604) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبحت إصدارات التغطية (`WITH_COVERAGE`) تربط ببيئة تشغيل profile المُنشأة ضمن شجرة المصدر من مصادر LLVM المضمّنة، بدلًا من الأرشيف المرفق مع سلسلة أدوات clang على المضيف. [#112607](https://github.com/ClickHouse/ClickHouse/pull/112607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث Protocol Buffers إلى v35.1 وgRPC إلى v1.83.0. [#112614](https://github.com/ClickHouse/ClickHouse/pull/112614) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أُضيف هدف WebAssembly تجريبي (`wasm64` عبر Emscripten): أصبح `emcmake cmake` يهيئ شجرة المصدر وتُبنى الطبقات الدنيا. كما أُصلح `-DENABLE_LIBFIU=OFF`، الذي لم يكن يُبنى على أي منصة. [#112911](https://github.com/ClickHouse/ClickHouse/pull/112911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلحت جميع مواضع `-Wunique-object-duplication`: مثيلات singleton قابلة للتغيير معرّفة في header، كانت ستنشئ نسخة لكل كائن مشترك بدلًا من نسخة واحدة لكل عملية. وتم ذلك في الغالب بنقل التعريف إلى `.cpp`. [#112995](https://github.com/ClickHouse/ClickHouse/pull/112995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح تثبيت حزمة `tgz` فوق ارتباط رمزي معلّق يحافظ على سلسلة الارتباطات الرمزية ويطبّق أذونات وملكية الهدف المضمّن في الحزمة بدلًا من أذونات مشتقة من `umask`. [#112766](https://github.com/ClickHouse/ClickHouse/pull/112766) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في إصدارات musl على `aarch64`، يستخدم `memmove` الآن تنفيذ ARM optimized-routines بلغة التجميع (المشترك مع `memcpy`) بدلًا من حلقة C العامة التي تعالج كلمة في كل مرة. [#113502](https://github.com/ClickHouse/ClickHouse/pull/113502) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* في إصدارات musl، يتبع `getaddrinfo` مع `AI_ADDRCONFIG` الآن دلالات glibc، لذلك لم يعد `localhost` يُحلّ أولًا إلى `::1` غير قابل للاستخدام في بيئات IPv4 فقط، كما تُرجع `sysconf` تلميحات glibc لحجم المخزن المؤقت لـ `getpwuid_r`/`getgrgid_r` بدلًا من -1، مما يعالج مشكلة libhdfs3. [#113485](https://github.com/ClickHouse/ClickHouse/pull/113485) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* في بنى musl، أصبحت `sched_getcpu` الآن قراءة rseq (\~1ns) بدلًا من syscall، بما يتوافق مع glibc ويزيل عبء وقت النظام الناتج عن `percpu_arena` في jemalloc ضمن أعباء العمل كثيفة التخصيص؛ كما يسجّل musl‏ rseq مسبقًا ويصدّر ABI ‏`__rseq_*` الخاص بـ glibc. [#113501](https://github.com/ClickHouse/ClickHouse/pull/113501) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح البنى المحلية (غير التابعة لـ CI) التي كانت تترجم جميع شيفرات Rust المورّدة، بما في ذلك codec ‏`PCO`، وقراءات Delta Lake عبر `delta-kernel-rs`، و`prqlc`، و`chdig`، و`wasmtime`، وبحث السجل الضبابي للعميل عبر `skim`، باستخدام `opt-level = 0`. كان متغير CMake ‏`SANITIZE` مُعرّفًا باستخدام `option`، لذا كانت قيمته الافتراضية BOOL ‏`OFF`، التي أخفقت اختبارات `STREQUAL ""` الخاصة بـ "عدم وجود sanitizer"، مما جعل كل بنية تُهيّأ دون `-DSANITIZE=...` صريح تتخذ مسار الحل البديل لـ sanitizer الذي يعطّل تحسين Rust. [#114083](https://github.com/ClickHouse/ClickHouse/pull/114083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دفع طبقات صورة Docker مضغوطة بـ zstd. [#114342](https://github.com/ClickHouse/ClickHouse/pull/114342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* بناء حزم Debian لبنى الإصدار فقط. [#114739](https://github.com/ClickHouse/ClickHouse/pull/114739) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح بناء `unit_tests_dbms` في التهيئات التي لا تتضمن المجموعة الكاملة من المكتبات (`ENABLE_LIBRARIES=0` أو `ENABLE_ROCKSDB=0`). [#115655](https://github.com/ClickHouse/ClickHouse/pull/115655) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267">
  ### إصدار ClickHouse 26.7، 2026-07-22. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.7/), [الفيديو](https://www.youtube.com/watch?v=mKBNLaFOVDA)
</div>

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

* لم يعد الوصول إلى S3 الصادر من SQL المستخدم يحلّ افتراضيًا بيانات اعتماد السحابة الخاصة بالخادم نفسه (البيئة، وIMDS/IRSA، وملف تعريف المثيل، وملفات config الخاصة بـ AWS، وSTS المستند إلى `role_arn`، وبيانات GCP OAuth الوصفية)؛ ويجب أن يستخدم هذا الطلب بيانات اعتماد صريحة أو `NOSIGN`. كما أصبحت المجموعات المسماة تضبط `use_environment_credentials` افتراضيًا على `0`. ويمكن استعادة السلوك السابق لكل طلب باستخدام `use_environment_credentials = 1` (أو على مستوى عام عبر config ‏`<s3>`) مع الإعداد الجديد `s3_allow_server_credentials_in_user_queries` (وهو معطّل افتراضيًا). ولا تتأثر بيانات الاعتماد المورّدة صراحةً أو بيانات اعتماد config التي يوفّرها المشغّل. وعند بدء تشغيل الخادم أو تنفيذ `RESTORE`، يُحمَّل جدول `S3`/`S3Queue` دائم، أو disk ديناميكي من S3، أو `DataLakeCatalog` يحلّ تعريفه بيانات الاعتماد هذه، بصورة مجهولة (ولا يمكن الوصول إليه حتى إعادة تزويده ببيانات الاعتماد) بدلًا من إيقاف بدء التشغيل، ويتحكم في ذلك إعداد الخادم الجديد `s3_load_table_anonymously_if_credentials_restricted` (مفعّل افتراضيًا). [#106855](https://github.com/ClickHouse/ClickHouse/pull/106855) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح glob ‏`**/` (أي عدد من الأدلة) يطابق الآن أيضًا الدليل نفسه. في السابق، لم يكن `**/` في glob patterns يُعامل كحالة خاصة، لذا فإن `data/**/file.txt` لم يكن يطابق `data/file.txt` (أي صفرًا من مستويات الأدلة). [#97676](https://github.com/ClickHouse/ClickHouse/pull/97676) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رُفض تنسيق أرشيف النسخ الاحتياطي `zip`/`zipx` للنسخ الاحتياطية المخزنة على التخزين الكائني — سواء كانت وجهات `S3(...)`/`AzureBlobStorage(...)` مباشرة أو وجهات `Disk(...)` المعتمدة على S3 أو Azure — وذلك لكلٍّ من `BACKUP` و`RESTORE`. يتطلب Zip إجراء seek لقراءة دليله المركزي، وهذا بطيء جدًا عبر التخزين الكائني. استخدم بدلًا من ذلك تنسيقًا قائمًا على tar مثل `tar.gz`. [#101770](https://github.com/ClickHouse/ClickHouse/pull/101770) ([Yash ](https://github.com/Onyx2406)).
* تم توسيع النطاق المدعوم لـ `DateTime64` من `[1900-01-01, 2299-12-31]` إلى `[0000-01-01, 9999-12-31]`. وأصبحت القيم الواقعة خارج النطاق السابق تُحسب الآن بشكل صحيح (عبر cctz) بدلًا من حصرها عند الحدود. ومع precision ‏8 أو 9، يبقى النطاق أضيق لأن ticks تُخزَّن بصيغة `Int64` (ومع دقة النانوثانية يبقى الحد الأقصى `2262-04-11`). التوافق مع الإصدارات السابقة: إذا كنت قد استخدمت تواريخ وأوقات خارج النطاق سابقًا، لكنك اعتمدت على قواعد الإشباع المحددة جدًا داخل النطاق القديم، فضع في اعتبارك أن النتائج تتغير الآن لتصبح أكثر صحة. [#107907](https://github.com/ClickHouse/ClickHouse/pull/107907) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يرفض `AggregatingMergeTree` الآن، عند إنشاء الجدول، المخططات التي يكون فيها عمود ما ليس جزءًا من مفتاح الفرز ولا مقياس حالة تجميع (`AggregateFunction`/`SimpleAggregateFunction`). وتُطوى هذه الأعمدة بصمت إلى قيمة اعتباطية أثناء عمليات الدمج في الخلفية، مما يؤدي إلى نتائج خاطئة للاستعلامات التي تستخدم `GROUP BY` أو تُجري تصفية عليها. اضبط `allow_dimensions_outside_sorting_key = 1` لاستعادة السلوك السابق. يغلق [#751](https://github.com/ClickHouse/ClickHouse/issues/751). [#108087](https://github.com/ClickHouse/ClickHouse/pull/108087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُزيلت تهيئة جدولة أعباء العمل المستندة إلى config (قسما config الخاصان بالخادم: ‏`resources` و`workload_classifiers`). استخدم بدلًا من ذلك استعلامات `CREATE RESOURCE` و`CREATE WORKLOAD`. ويتم تجاهل أقسام config المتقادمة مع إصدار تحذير. [#108286](https://github.com/ClickHouse/ClickHouse/pull/108286) ([Sergei Trifonov](https://github.com/serxa)).
* يستخدم ClickHouse الآن دائمًا هاش إزالة تكرار الإدراج الموحّد لكلٍّ من Synchronous inserts وasynchronous inserts؛ وأزيلت سلوكيات إزالة التكرار القديمة الخاصة بكل عملية `insert` على حدة. ويُحتفَظ بإعداد الخادوم `insert_deduplication_version` كإجراء حماية أثناء الترحيل، إذ يرفض الخادوم البدء إذا كان مضبوطًا على قيمة قديمة (`old_separate_hashes` أو `compatible_double_hashes`). وللترقية من إصدار كان يستخدم قيمة قديمة، شغّل أولًا إصدارًا يدعم `compatible_double_hashes` (إذ يكتب كلًا من الهاش القديم والهاش الموحّد). بالنسبة إلى replicated tables، شغّله لمدة لا تقل عن `replicated_deduplication_window_seconds` (ساعة واحدة افتراضيًا؛ إذ تحتفظ النوافذ الافتراضية بالهاشات الموحّدة لجميع عمليات الإدراج خلال تلك النافذة، ويُعد ذلك كافيًا لحلقة إعادة محاولة الإدراج). أما non-replicated tables التي تكون فيها القيمة `non_replicated_deduplication_window` > 0، فتكون تلك النافذة قائمة على العدد لا على الزمن، لذا شغّل `compatible_double_hashes` لما لا يقل عن هذا العدد من عمليات الإدراج. ثم أزل الإعداد (أو اضبطه على `new_unified_hash`) قبل الترقية إلى هذا الإصدار. [#108361](https://github.com/ClickHouse/ClickHouse/pull/108361) ([Sema Checherinda](https://github.com/CheSema)). وإذا لم تكن قد ضبطت `insert_deduplication_version` مطلقًا، فيمكنك تجاهل هذا البند.
* أزيلت الدوال المهملة منذ وقت طويل `snowflakeToDateTime` و`snowflakeToDateTime64` و`dateTimeToSnowflake` و`dateTime64ToSnowflake`. فقد أُعلن عن إهمالها سابقًا في v24.6 لصالح `snowflakeIDToDateTime` و`snowflakeIDToDateTime64` و`dateTimeToSnowflakeID` و`dateTime64ToSnowflakeID`، وهي الدوال التي ينبغي استخدامها بدلًا منها. أما الإعداد `allow_deprecated_snowflake_conversion_functions` (الذي كان يُستخدم سابقًا لإعادة تفعيلها) فقد أصبح الآن متقادمًا ولم يعد له أي تأثير. [#108711](https://github.com/ClickHouse/ClickHouse/pull/108711) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت القيمة الافتراضية للإعداد `use_legacy_to_time` الآن `0`، لذا تحوّل `toTime` القيم إلى نوع البيانات `Time` بدلًا من تحويل date with time إلى تاريخ ثابت. ولا يزال السلوك القديم متاحًا عبر الدالة `toTimeWithFixedDate` أو بضبط `use_legacy_to_time = 1`. [#108729](https://github.com/ClickHouse/ClickHouse/pull/108729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت نماذج Naive Bayes (المستخدمة بواسطة `naiveBayesClassifier`) تُهيَّأ الآن على شكل Dictionary بتخطيط `NAIVE_BAYES`، ويجري بناؤها وقت التحميل من table تحتوي على n-gram counts مجمّعة مسبقًا لكل فئة، بدلًا من configuration السابقة على مستوى الخادوم (config file بصيغة XML يشير إلى ملفات نموذج `.bin` مُسلسلة)، وهو ما لم يعد مدعومًا — لذا يجب إعادة إنشاء النماذج الحالية على شكل Dictionaries. وأُضيفت ثلاث دوال جديدة إلى جانب `naiveBayesClassifier`: إذ تُرجع `naiveBayesClassifierWithProb` الفئة المتوقعة مع احتمالها، وتُرجع `naiveBayesClassifierWithAllProbs` جميع الفئات مع احتمالاتها، وتُجزّئ `naiveBayesNgrams` النص إلى n-grams بالطريقة نفسها التي يستخدمها القاموس، لبناء بيانات التدريب من نص خام مُصنَّف. بالإضافة إلى ذلك، طُبّقت عدة تحسينات على الأداء: فعلى نموذج لغوي trigram بحجم 9.7 MiB قائم على code points، يستهلك ذاكرة أقل بنحو \~49× (من 1.84 GiB إلى 38 MiB)، ويُحمَّل أسرع بنحو \~11×، ويُصنّف أسرع بنحو \~11×. [#108773](https://github.com/ClickHouse/ClickHouse/pull/108773) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* لم تعد الدالة `hasColumnInTable` تقبل الوسائط الاختيارية `hostname` و`username` و`password` للتحقق من column على remote server كيفما كان؛ ولم يبقَ سوى الصيغة `hasColumnInTable(database, table, column)`. وكان وضع remote الذي أزيل يمثّل مصدر قلق أمني، إذ كان يتيح لأي مستخدم تشغيل connections صادرة إلى hostات عشوائية، كما كان يسرّب credentials إلى query logs، ولم يكن مقيّدًا بأي privilege. [#110881](https://github.com/ClickHouse/ClickHouse/pull/110881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* تمت إضافة `EXPLAIN ANALYZE` لفحص أداء الاستعلام: يُنفَّذ الاستعلام، وتُعرَض مقاييس التنفيذ الفعلية بتنسيق خطة الاستعلام المألوف. [#106586](https://github.com/ClickHouse/ClickHouse/pull/106586) ([Kirill Kopnev](https://github.com/Fgrtue)). [#110668](https://github.com/ClickHouse/ClickHouse/pull/110668) ([Kirill Kopnev](https://github.com/Fgrtue)).
* تمت إضافة دعم لعبارات `WHERE` في تعريفات الإسقاطات. ولا تُطبَّق الإسقاطات التي تحتوي على `WHERE` وتُخزَّن فعليًا إلا على الصفوف المطابقة للمسند، ويمكن للمُحسِّن استخدامها (استنادًا إلى الكلفة) عندما تستلزم عبارة `WHERE` في الاستعلام عبارة `WHERE` في الإسقاط. [#102347](https://github.com/ClickHouse/ClickHouse/pull/102347) ([S Bala Vignesh](https://github.com/SBALAVIGNESH123)).
* تمت إضافة الإعداد `skip_unavailable_shards_mode` (وهو متاح أيضًا كإعداد لمحرك `Distributed`) للتحكم في الاستثناءات الصادرة من شظية بعيدة التي يجري تجاهلها بصمت عند تمكين `skip_unavailable_shards`. [#79091](https://github.com/ClickHouse/ClickHouse/pull/79091) ([cjw](https://github.com/byte-sourcerer)).
* تمت إضافة الدالة التجميعية `groupFormat` التي تُنسِّق الصفوف في كل مجموعة باستخدام تنسيق إخراج محدد وتُرجع النتيجة كسلسلة نصية. [#93201](https://github.com/ClickHouse/ClickHouse/pull/93201) ([Yang Hu](https://github.com/wandersofb)).
* تمت إضافة `AWS_MSK_IAM` كقيمة مدعومة لـ `kafka_sasl_mechanism`، مما يتيح لـ ClickHouse المصادقة مع Amazon MSK باستخدام أدوار IAM دون الحاجة إلى إدارة بيانات اعتماد SASL/SCRAM. [#96100](https://github.com/ClickHouse/ClickHouse/pull/96100) ([kalavt](https://github.com/kalavt)).
* تمت إضافة مُركِّب الدالة التجميعية `-Tuple`، الذي يطبّق الدالة التجميعية الأساسية على كل عنصر في عمود `Tuple` بشكل مستقل ويُرجع `Tuple` للنتائج مع الحفاظ على أسماء العناصر: فمثلًا، يُرجع `sumTuple(t)` عندما يكون `t = (a, b)` القيمة `(sum(a), sum(b))`. أما الدوال التجميعية ذات الوسائط المتعددة فتأخذ tuple واحدًا لكل وسيطة، مع المطابقة حسب الموضع: يُرجع `corrTuple((a1, a2), (b1, b2))` القيمة `(corr(a1, b1), corr(a2, b2))`. وعلى خلاف `-ForEach` على المصفوفات، يمكن أن تكون العناصر من أنواع مختلفة، كما تُحفَظ أنواع النتائج لكل عنصر وأسماؤها. [#98190](https://github.com/ClickHouse/ClickHouse/pull/98190) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* تدعم فهارس النص الآن وسيطة `postprocessor` — وهي تعبير اعتباطي يحوّل كل رمز بعد التجزئة إلى رموز (على سبيل المثال، `lower`). [#98939](https://github.com/ClickHouse/ClickHouse/pull/98939) ([Jimmy Aguilar Mena](https://github.com/Ergus)). [#108606](https://github.com/ClickHouse/ClickHouse/pull/108606) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تمت إضافة جدول النظام `system.stemmers`، الذي يسرد جميع اللغات التي يمكن تحديدها للدالة `stem`. [#100611](https://github.com/ClickHouse/ClickHouse/pull/100611) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تمت إضافة دعم `WITH TIES` مع `LIMIT` السالب. [#100930](https://github.com/ClickHouse/ClickHouse/pull/100930) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تمت إضافة دعم لمعاملي الصياغة اللاحقين في SQL القياسية `AT TIME ZONE` و`AT LOCAL` بوصفهما صياغة مختصرة لـ `toTimeZone`. وأصبح التعبير `expr AT TIME ZONE zone` الآن مكافئًا لـ `toTimeZone(expr, zone)`، كما أصبح `expr AT LOCAL` مكافئًا لـ `toTimeZone(expr, timeZone())`. [#106092](https://github.com/ClickHouse/ClickHouse/pull/106092) ([lizepeng](https://github.com/lvzhipin03)).
* أصبح محرك الجدول `URL` ودالة الجدول `url` يوجِّهان الآن إلى الواجهة الخلفية المناسبة بناءً على مخطط URL: إذ تُعالَج `file://` بواسطة المحرك `File`، و`s3://`/`gs://`/`gcs://`/`oss://` بواسطة `S3`، و`az://`/`azure://`/`abfss://`/`abfs://` بواسطة `AzureBlobStorage`، و`hdfs://` بواسطة `HDFS`، و`http(s)://` بواسطة المحرك `URL` كما في السابق. يُطبَّق الإعداد `url_base` قبل التوجيه بحسب المخطط. ولا تُوجَّه إلا مخططات S3 التي يحلّها `url_scheme_mappers` الافتراضي؛ أما مخططات المورّدين الأخرى المتوافقة مع S3 (`cos` و`obs` و...) فلا تُوجَّه، وتتطلب استخدام المحرك/الدالة `s3` مباشرةً. [#106093](https://github.com/ClickHouse/ClickHouse/pull/106093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف محركا الجدول `Remote` و`RemoteSecure`، وهما النظيران الدائمان لدالتي الجدول `remote` و`remoteSecure`. وأصبح `CREATE TABLE ... ENGINE = Remote('addresses', db, table, ...)` يعمل الآن بالإضافة إلى `CREATE TABLE ... AS remote(...)`. [#106189](https://github.com/ClickHouse/ClickHouse/pull/106189) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت أوامر `SYSTEM STOP` و`SYSTEM START` و`SYSTEM PAUSE` و`SYSTEM CANCEL` و`SYSTEM REFRESH` المحايدة بالنسبة إلى المحرك، إلى جانب صيغها العامة على مستوى الخادم `... ALL BACKGROUND`، للتحكم في النشاطات الخلفية لجداول `Kafka` و`RabbitMQ` و`NATS` و`S3Queue`/`AzureQueue` والعروض المادية القابلة للتحديث عبر واجهة موحّدة. وبالنسبة إلى العروض المادية القابلة للتحديث، فهي أسماء بديلة لأوامر `SYSTEM ... VIEW` الحالية. وكجزء من دعم عناصر التحكم هذه في NATS، أصبحت جداول JetStream الآن تُقرّ الرسائل فقط بعد نجاح عملية insert (مرة واحدة على الأقل؛ إذ كانت الرسائل سابقًا تُقَرّ تلقائيًا عند التسليم وقد تُفقَد إذا فشلت عملية insert). كما أُضيف إعداد جديد `nats_wait_for_flush_interval` (القيمة الافتراضية `false`، مع الحفاظ على السلوك السابق منخفض الكمون) يُبقي دورة الاستهلاك مفتوحة اختياريًا طوال فترة flush بدلًا من تنفيذ flush بمجرد فراغ queue. ويجعل إعداد جديد `nats_commit_on_select` تنفيذ `SELECT` مباشر على جدول JetStream يستهلك الرسائل التي يقرؤها (ويُقِرّ بها). [#107476](https://github.com/ClickHouse/ClickHouse/pull/107476) ([Samuel Krempaský](https://github.com/NIKTONIKTO717)).
* أُضيف دعم لدوال الجدول ومحركات الجداول `mysql` و`postgresql` و`sqlite` بحيث تقبل استعلام المستخدم (بدلًا من اسم جدول) وتمرّره كما هو إلى قاعدة البيانات الخارجية، سواء كُتب على هيئة استعلام فرعي `(SELECT ...)` أو بصيغة `query('SELECT ...')`. ويُستدل على بنية الجدول الناتج من نتيجة الاستعلام، ويكون هذا الجدول للقراءة فقط. يغلق [#46758](https://github.com/ClickHouse/ClickHouse/issues/46758). استنادًا إلى التنفيذ الأولي من [Denis Vidiaev](https://github.com/the-devid) ([#79652](https://github.com/ClickHouse/ClickHouse/pull/79652)). [#107740](https://github.com/ClickHouse/ClickHouse/pull/107740) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت علامات تبويب إلى واجهة ويب ClickHouse ‏(Play) للعمل على عدة استعلامات في آنٍ واحد. وتُحفَظ علامات التبويب وعناوينها ومعلماتها وحالتها النشطة ولقطات صغيرة من النتائج عبر إعادة التحميل (ولا تُستعاد النتائج الكبيرة ونتائج الصور)، كما تتكامل مع سجل المتصفح و`URL`، ويمكن التنقل بينها بعجلة الفأرة. [#107826](https://github.com/ClickHouse/ClickHouse/pull/107826) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف محرك الجدول `QueryRunner`. وتمثل السجلات المُدرجة في جدول `QueryRunner` الاستعلامات التي ينفذها المحرك. ويمكن استخدام هذا المحرك لتنفيذ الاستعلامات غير المتزامن، والتنفيذ الدفعي للاستعلامات المُولَّدة، وتوجيه الاستعلامات إلى عناقيد بعيدة، واختبارات الأداء، والاختبار بالتشويش، والاختبار باستخدام حركة مرور ظلّية. [#107888](https://github.com/ClickHouse/ClickHouse/pull/107888) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيف تنسيق الإخراج `GeoJSON` لكتابة مستندات `FeatureCollection` بصيغة [GeoJSON](https://geojson.org/)، مع إنشاء ميزة واحدة لكل صف. ويصبح العمود الوحيد ذي النوع الجغرافي (`Point` أو `LineString` أو `MultiLineString` أو `Polygon` أو `MultiPolygon` أو `Ring` أو `Geometry`) هو `geometry` لكل ميزة؛ ويصبح العمود المسمى `id` هو `id` للميزة؛ وتصبح أي أعمدة متبقية هي `properties` الخاصة بالميزة، وفي حال وجود عمود واحد فقط من نوع object باسم `properties` (من نوع `JSON` أو `Map` أو `Tuple` مُسمّى)، فيُكتَب مباشرةً ككائن `properties`. ويُكتَب `Ring` على هيئة `Polygon` أحادي الحلقة. ويتحكم الإعداد الجديد `format_geojson_validate_geometry` (المفعّل افتراضيًا) في ما إذا كانت الأشكال الهندسية غير الصالحة كأشكال GeoJSON — مثل `Polygon` يحتوي على أقل من أربع نقاط أو حلقة `Polygon` غير مغلقة — ستُرفَض عند القراءة والكتابة. بالإضافة إلى ذلك، يستنتج تنسيق الإدخال `GeoJSON` الآن العمود `id` على أنه `Nullable(String)` بدلًا من `String`، بحيث تُقرأ الميزة التي تفتقد العضو `id` أو تحتوي صراحةً على العضو `"id": null` على أنها `NULL` وتظل مميزة عن السلسلة الفارغة `""`. استنادًا إلى التنفيذ الأولي من [Mark Needham](https://github.com/mneedham) ([#98124](https://github.com/ClickHouse/ClickHouse/pull/98124)). [#108065](https://github.com/ClickHouse/ClickHouse/pull/108065) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أُضيفت الدالة `dotProductTransposed` (بالاسم البديل `scalarProductTransposed`) التي تحسب الجداء الداخلي التقريبي بين عمود `QBit` ومتجه مرجعي، استكمالًا للدالتين الحاليتين `L2DistanceTransposed` و`cosineDistanceTransposed`. [#108100](https://github.com/ClickHouse/ClickHouse/pull/108100) ([Alexey Milovidov](https://github.com/alexey-milovidov)). وأُضيفت أيضًا دوال المسافة المنقولة المُكمّاة `cosineDistanceTransposedQuantized` و`L2DistanceTransposedQuantized` و`dotProductTransposedQuantized` التي تعمل على `QBit(Int8)` من رموز Lloyd-Max الخاصة بـ `quantizeBFloat16ToInt8`، مع فك تكميم الرموز المخزنة آنيًا. ويكون المتجه المرجعي ذي الفاصلة العائمة هو الاستعلام كامل الدقة، وتُجرى المقارنة بدقة `Float32` (ويُحوَّل الاستعلام من نوع `Float64` إلى دقة أضيق)؛ أما المرجع من نوع `Array(Int8)` فيُفك تكميمه هو أيضًا، لتحقيق مسافة متماثلة من نوع quantized-vs-quantized. [#109405](https://github.com/ClickHouse/ClickHouse/pull/109405) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف معامل اختياري `stride` إلى نوع البيانات `QBit` (`QBit(T, dimension, stride)`) لتخزين مجموعات الأبعاد في تدفقات منفصلة، بحيث يمكن للبحث المتجهي قراءة الأبعاد الأولى فقط بكفاءة (مثلًا في Matryoshka embeddings). وتقبل دوال المسافة المنقولة وسيطة رابعة اختيارية هي `used_dims` لقراءة عدد أقل من الأبعاد. [#108103](https://github.com/ClickHouse/ClickHouse/pull/108103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم نوع العنصر `Int8` في نوع البيانات `QBit`، مما يتيح التخزين وإجراء البحث المتجهي بالمسافة المنقولة (`L2DistanceTransposed` و`cosineDistanceTransposed`) على متجهات أعداد صحيحة مُكمّاة من 8 بت. [#108105](https://github.com/ClickHouse/ClickHouse/pull/108105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دالة جديدة `randomHadamardTransform(vector[, seed[, output_dims]])`: تحويل Hadamard عشوائي حتمي لمتجه ذي فاصلة عائمة — وهو تدوير متعامد يحافظ على المعيار، ومفيد للمعالجة المسبقة لـ embeddings قبل quantization، وكذلك (عندما يكون مقتطعًا) كإسقاط عشوائي من نوع Johnson–Lindenstrauss / subsampled-randomized-Hadamard. [#108227](https://github.com/ClickHouse/ClickHouse/pull/108227) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم تهيئة التحميل الكسول للقواميس على مستوى كل dictionary على حدة باستخدام الإعداد `dictionary_lazy_load` في تعريف dictionary، مع تجاوز إعداد الخادم العام `dictionaries_lazy_load`، بحيث يمكن تحميل بعض القواميس كسولًا بينما تُحمَّل أخرى تحميلًا فوريًا. [#108314](https://github.com/ClickHouse/ClickHouse/pull/108314) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيفت صفحة بحث مضمّنة في التوثيق، متاحة على المسار `/docs` ضمن واجهة HTTP، وتوفّر بحثًا فوريًا في جدول `system.documentation` وتعرض الوثائق المرجعية (مع تمييز بناء الجملة، والصيغ الرياضية، والروابط المتقاطعة). [#108345](https://github.com/ClickHouse/ClickHouse/pull/108345) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الدالة `xxHash64Spark`، التي تحسب قيم `xxHash64` المتوافقة مع Spark لمدخلات `String` و`NULL` باستخدام البذرة `42` وتُرجع `Int64`. [#108436](https://github.com/ClickHouse/ClickHouse/pull/108436) ([Lalit Yadav](https://github.com/lalitium)).
* أصبحت `ALTER USER` و`ALTER ROLE` و`ALTER SETTINGS PROFILE` تقبل الآن `SET name = value` كاسم مستعار لـ `MODIFY SETTING name = value`. ويؤدي ذلك إلى تعديل الإعدادات الفردية في مكانها مع الإبقاء على بقية الإعدادات، بخلاف عبارة `SETTINGS` المجرّدة التي تستبدل قائمة الإعدادات بالكامل. وهذا يقلّل من احتمال مسح إعدادات المستخدم الأخرى عن طريق الخطأ. [#108722](https://github.com/ClickHouse/ClickHouse/pull/108722) ([Groene AI](https://github.com/groeneai)).
* أُضيف دعم `ALTER TABLE ... MODIFY CONSTRAINT [IF EXISTS] name CHECK expr` لتغيير التعبير الخاص بقيد موجود في مكانه. [#108768](https://github.com/ClickHouse/ClickHouse/pull/108768) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: أُضيف مفتاح تبديل لترميز الألوان لكل عمود (أيقونة 🌈 في رأس العمود) للتبديل بين الأشرطة، والخريطة الحرارية، والتصنيف الفئوي، وعدم استخدام أي تصور. ويُحفَظ الوضع المحدد في عنوان URL وسجل المتصفح. [#108873](https://github.com/ClickHouse/ClickHouse/pull/108873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `Keeper` الآن يتعامل على نحو صحيح مع opcode ‏`CreateContainer` (19) الخاص بـ `ZooKeeper`، وذلك عبر علامة ميزة اختيارية جديدة `create_container` (معطّلة افتراضيًا، مثل `create_ttl`). وبعد تفعيلها عقب ترقية كاملة للمجموعة، يمكن لعملاء `ZooKeeper` الخارجيين (مثل Java `ZooKeeper` 3.9+) إنشاء عقد حاوية على `Keeper` بدلًا من تلقي `ConnectionLoss`؛ كما تُبلِغ عقد الحاوية عن قيمة المؤشر `ephemeralOwner` المتوقعة، ويحذف خيط GC في الخلفية على القائد الحاويات التي بلا أبناء تلقائيًا. ويستمر رفض طلب `Create` العادي الذي يحمل علامة وضع الإنشاء `CONTAINER` من دون opcode 19 (`ZBADARGUMENTS`)، إذ لا يوجد أي عميل `ZooKeeper` معروف يُصدر هذا المزيج. وهذا توافق على مستوى البروتوكول من جهة الخادم فقط: إذ إن عميل `ZooKeeper` الخاص بـ ClickHouse (`zkutil`) لم يتغير ولا يوفّر API لإنشاء عقد حاوية بنفسه. [#108908](https://github.com/ClickHouse/ClickHouse/pull/108908) ([unintended](https://github.com/unintended)).
* أُضيفت الدوال `geoToUTM` و`UTMToGeo` و`geoToMGRS` و`MGRSToGeo` للتحويل بين الإحداثيات الجغرافية WGS84 ونظامَي الإحداثيات UTM وMGRS. [#108939](https://github.com/ClickHouse/ClickHouse/pull/108939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الدالة `digits(n, offset[, length])`، التي تُرجع أرقام `n` بدءًا من `offset` ذي الفهرسة التي تبدأ من 1 وتمتد على `length` رقمًا، أو حتى نهاية العدد إذا لم يُحدَّد `length`. [#109012](https://github.com/ClickHouse/ClickHouse/pull/109012) ([Umang Agrawal](https://github.com/1000ms)).
* أُضيفت الدالة الحسابية `sqr` لحساب مربع عدد. [#109061](https://github.com/ClickHouse/ClickHouse/pull/109061) ([Lalit Yadav](https://github.com/lalitium)).
* أُضيفت دالة جديدة `dictGetRoot` تُرجع السلف الأعلى (الجذر) لمفتاح في قاموس هرمي. وهي مكافئ مناسب لـ `dictGetHierarchy(dict_name, key)[-1]`. [#109459](https://github.com/ClickHouse/ClickHouse/pull/109459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الأمران `SYSTEM UNLOAD DICTIONARY` و`SYSTEM UNLOAD DICTIONARIES` لتحرير الذاكرة التي تستخدمها القواميس دون حذف تعريف القاموس. وستُعاد تحميل القواميس عند الوصول إليها لاحقًا عند الحاجة. [#109639](https://github.com/ClickHouse/ClickHouse/pull/109639) ([Matheus Nerone](https://github.com/Manerone)).
* أُضيفت الدالتان `geometryIntersectCartesian` و`geometryIntersectSpherical` اللتان تُرجعان ما إذا كان شكلان هندسيان يتقاطعان. وعلى خلاف `polygonsIntersectCartesian`/`polygonsIntersectSpherical`، فإنهما تقبلان أي نوع بيانات هندسية (`Point`, `LineString`, `MultiLineString`, `Ring`, `Polygon`, `MultiPolygon`)، بما في ذلك النوع العام `Geometry`، كما يمكن أن تكون الوسيطتان من نوعين مختلفين. [#110062](https://github.com/ClickHouse/ClickHouse/pull/110062) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن الآن استخدام معلمات الاستعلام (استبدالات `{name:Type}`) كقيم للإعدادات، سواء في عبارة `SETTINGS` داخل الاستعلام (مثل `SELECT` أو `INSERT`) أو في استعلامات `SET` المستقلة، مثل: `SELECT ... SETTINGS max_threads = {threads:UInt64}` و`SET max_threads = {threads:UInt64}`. [#108760](https://github.com/ClickHouse/ClickHouse/pull/108760) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* توسيع أحرف البدل للدالة الجدولية `url` ومحرك الجدول `URL`: تُوسَّع أحرف البدل في مسار URL من خلال استعراض صفحات فهرس HTTP (قوائم أدلة بصيغة HTML أو plaintext) واستخراج عناوين URL المطابقة، مع فرض حدود على حجم صفحة الفهرس وعدد الأدلة المقروءة. يُفعَّل ذلك بالإعداد `allow_experimental_url_wildcard_from_index_pages`. [#95181](https://github.com/ClickHouse/ClickHouse/pull/95181) ([Yue Ni](https://github.com/niyue)).
* يمكن الآن لـ Text indexes تخزين مواضع الرموز (وسيطة الفهرس `support_phrase_search`) لتمكين المطابقة الدقيقة للعبارات باستخدام direct read للدالة `hasPhrase`. ويتطلب ذلك تفعيل إعداد `MergeTree` ‏`allow_experimental_text_index_phrase_search`. [#103172](https://github.com/ClickHouse/ClickHouse/pull/103172) ([Elmi Ahmadov](https://github.com/ahmadov)). وقد طُرحت هذه الوسيطة في البداية تحت الاسم `positions`. [#109900](https://github.com/ClickHouse/ClickHouse/pull/109900) ([Elmi Ahmadov](https://github.com/ahmadov)).
* دعم compaction لملف البيانات الوصفية لجداول `Iceberg` عبر `OPTIMIZE TABLE ... MANIFEST` (مع حمايته بالإعداد `allow_experimental_iceberg_compaction`). يُغلق [#95174](https://github.com/ClickHouse/ClickHouse/issues/95174). [#98178](https://github.com/ClickHouse/ClickHouse/pull/98178) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)). وإصلاح `OPTIMIZE TABLE ... MANIFEST` لجداول `Iceberg` عندما لا تتطابق tuples تقسيم manifest مع مواصفة التقسيم الخاصة بها. [#111368](https://github.com/ClickHouse/ClickHouse/pull/111368) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إضافة متغير Real Doubles ‏(RD) ووسيطة اختيارية `ALP(AUTO|STD|RD)` إلى codec التجريبي `ALP`. وأصبح `ALP` من دون وسيطة يختار تلقائيًا بين المخطط الحالي `STD` و`RD` بدلًا من استخدام `STD` دائمًا. [#99654](https://github.com/ClickHouse/ClickHouse/pull/99654) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* إضافة cache داخل الذاكرة من نوع SLRU لملفات البيانات الوصفية `Paimon` بعد إلغاء تسلسلها (manifest lists وmanifests). وعند تفعيله عبر الإعداد `use_paimon_metadata_files_cache`، تتجاوز الاستعلامات المتكررة على جدول `Paimon` نفسه إعادة تنزيل البيانات الوصفية من object storage وإعادة تحليلها. [#104657](https://github.com/ClickHouse/ClickHouse/pull/104657) ([XiaoBinMu](https://github.com/Binnn-MX)).
* أُضيفت "drivers" للدوال المعرّفة من قبل المستخدم القابلة للتنفيذ. ويمكن استخدام driver مُعلن في `<user_defined_executable_function_drivers_config>` ضمن `CREATE FUNCTION name ARGUMENTS (...) RETURNS T ENGINE = DriverName(...) AS '...code...'` لتجميع مقتطف شيفرة المستخدم أو معالجته بطريقة أخرى وقت إنشاء الدالة، وإنتاج executable UDF قابل للتشغيل. ويُخزَّن config الناتج في `<dynamic_user_defined_executable_functions_path>`، ويُحفَظ الاستعلام الأصلي بصيغة `ATTACH FUNCTION` بحيث تبقى الدالة بعد إعادة تشغيل الخادم. ويقوم driver إثبات المفهوم `c_function_body` بتجميع أجسام دوال C وتشغيلها داخل حاويات Docker معزولة في وضع `executable_pool`. استنادًا إلى التنفيذ الأولي من [Daniil Timižev](https://github.com/dahbka-lis) ([#77128](https://github.com/ClickHouse/ClickHouse/pull/77128)). [#105131](https://github.com/ClickHouse/ClickHouse/pull/105131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تقديم `SELECT count(*) FROM t WHERE col <op> default(col)` اعتمادًا على إحصاءات sparsity لكل عمود في `serialization.json` من دون أي فحص للبيانات، عندما يقسم predicate العمود بدقة إلى قيم default وغير default (ضمن experimental setting جديد هو `optimize_trivial_count_with_sparsity_filter`، وهو معطَّل افتراضيًا). [#105890](https://github.com/ClickHouse/ClickHouse/pull/105890) ([Raúl Marín](https://github.com/Algunenano)).
* تُسجَّل الآن API request الخاصة بـ Prometheus Query API إلى `/api/v1/query` و`/api/v1/query_range` في `system.query_log` مع مقاييس `read_rows` و`read_bytes`. [#106611](https://github.com/ClickHouse/ClickHouse/pull/106611) ([James Cunningham](https://github.com/JTCunning)).
* يمكن الآن لمسار القراءة التجريبي `ReaderExecutor` ‏(`use_reader_executor`، معطّل افتراضيًا) إبقاء source connection البعيد مفتوحًا وإعادة استخدامه عبر قراءات متسلسلة، مما يقلّل عدد طلبات object storage أثناء عمليات الفحص. [#107735](https://github.com/ClickHouse/ClickHouse/pull/107735) ([Sema Checherinda](https://github.com/CheSema)). كما أصبح يدعم أيضًا قراءة الملفات المشفّرة، مع cache عام لـ ترويسة التشفير يُضبط عبر server setting ‏`encryption_header_cache_size` ويُفرَّغ باستخدام `SYSTEM DROP ENCRYPTION HEADERS CACHE`. [#109702](https://github.com/ClickHouse/ClickHouse/pull/109702) ([Sema Checherinda](https://github.com/CheSema)).
* دعم قراءات plan الاستعلام الموزّع لـ `SELECT ... FINAL` على جداول عائلة `MergeTree` عند تفعيل `make_distributed_plan`. [#108148](https://github.com/ClickHouse/ClickHouse/pull/108148) ([Alexander Gololobov](https://github.com/davenger)).
* إضافة تنفيذ تجريبي قائم على plan لوضع parallel replicas في استعلامات `MergeTree`. [#108504](https://github.com/ClickHouse/ClickHouse/pull/108504) ([Igor Nikonov](https://github.com/devcrafter)).
* أُضيفت عائلة codec المتجهات التجريبية `Quantize`، مع Rewrite اختياري لبحث متّجهي تقريبي على مرحلتين فوق streams المرافقة المُكمّاة. [#108565](https://github.com/ClickHouse/ClickHouse/pull/108565) ([Shankar Iyer](https://github.com/shankar-iyer)).
* أُعيد إحياء codec الضغط الفقدي التجريبي `SZ3` ذي الخطأ المحدود لأعمدة `Float32`/`Float64` (ومصفوفاتها)، والذي نُفِّذ أصلًا بواسطة [Konstantin Vedernikov](https://github.com/scanhex12) ([#83088](https://github.com/ClickHouse/ClickHouse/pull/83088)). ويتطلب `allow_experimental_codecs`. [#108788](https://github.com/ClickHouse/ClickHouse/pull/108788) ([Alexey Milovidov](https://github.com/alexey-milovidov)). كما أُصلحت قراءة البيانات المضغوطة باستخدام `SZ3('ALGO_LORENZO_REG', ...)`، التي كانت تفشل سابقًا مع `CORRUPTED_DATA`، وتم تفادي سلوك غير معرّف عند ضغط القيم floating-point غير المنتهية (`NaN` وقيم اللانهاية). [#110762](https://github.com/ClickHouse/ClickHouse/pull/110762) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف codec التجريبي `ZXC` — وهو codec لا متناظر من نوع LZ بضغط بطيء وفك ضغط سريع جدًا، مع compression ratio بين `LZ4` و`ZSTD`. ويتطلب `allow_experimental_codecs = 1`، ويعرضه `system.compression_codecs` على أنه تجريبي. [#110620](https://github.com/ClickHouse/ClickHouse/pull/110620) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#111007](https://github.com/ClickHouse/ClickHouse/pull/111007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكنك الآن المصادقة على OneLake باستخدام Bearer token تم الحصول عليه مسبقًا عبر الإعداد `onelake_bearer_token`، بدلًا من `onelake_client_id` و`onelake_client_secret`. وهذا يجنّب مشاركة client secret طويل الأمد. لا يتم تحديث token، لذا يجب إعادة إنشاء database بمجرد انتهاء صلاحيته. [#109104](https://github.com/ClickHouse/ClickHouse/pull/109104) ([Asya Shneerson](https://github.com/asya-ch)).
* لم تعد AI functions تأخذ named collection بوصفها argument الموضعي الأول. تأتي credentials من الإعدادين `ai_function_text_default_credentials` / `ai_function_embedding_default_credentials` أو من المفتاح `credentials` في argument اختياري أخير من النوع `Map(String, String)`، والذي يحمل أيضًا الإعدادات القابلة للضبط (`model`, `max_tokens`, `temperature`, `system_prompt`, `instructions`, `dimensions`). [#109232](https://github.com/ClickHouse/ClickHouse/pull/109232) ([George Larionov](https://github.com/george-larionov)). وتأخذ الدالة `aiEmbed` الآن `model` بوصفه argument موضعيًا مطلوبًا (`aiEmbed(text, model[, params])`) بدلًا من قراءته من named collection، مما يضمن قابلية إعادة الإنتاج لـ embeddings. [#110619](https://github.com/ClickHouse/ClickHouse/pull/110619) ([George Larionov](https://github.com/george-larionov)).
* إصلاح `data_uncompressed_bytes` لفهارس التخطي المعبأة في `skp_idx.packed` (عبر `packed_skip_index_max_bytes`): كان الحجم غير المضغوط المُبلّغ عنه هو في الواقع الحجم المضغوط، ما كان قد يمنع أيضًا تفعيل `distributed_index_analysis`. [#109272](https://github.com/ClickHouse/ClickHouse/pull/109272) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيف تخزين تجريبي معبأ لـ data part في جداول `MergeTree`، بحيث تُخزَّن معظم ملفات الجزء في أرشيف واحد `data.packed` بدلًا من ملف لكل stream (تظل projections وبعض ملفات الخدمة، مثل `txn_version.txt`، مكتوبة بشكل منفصل). ويجري التحكم فيه عبر الإعدادات `min_bytes_for_full_part_storage` و`min_rows_for_full_part_storage` و`min_level_for_full_part_storage`، وهو معطّل افتراضيًا. وما إن يبدأ جدول في كتابة الأجزاء المعبأة، حتى تعجز إصدارات server الأقدم عن قراءتها، لذا فإن تمكين هذا التنسيق يمنع الرجوع إلى إصدار أقدم من server. [#108118](https://github.com/ClickHouse/ClickHouse/pull/108118) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيفت table function تجريبية باسم `eval`، تُقيِّم expression ثابتًا إلى query string ثم تنفّذ استعلام `SELECT` واحدًا ناتجًا عنه. هذه الميزة معطّلة افتراضيًا، ويمكن تمكينها عبر الإعداد `allow_experimental_eval_table_function`. المؤلف: [Yue Ni](https://github.com/niyue). [#110132](https://github.com/ClickHouse/ClickHouse/pull/110132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة دعم ضغط `zstd` إلى HTTP handler التجريبي لـ Prometheus remote-write v1. [#110907](https://github.com/ClickHouse/ClickHouse/pull/110907) ([James Cunningham](https://github.com/JTCunning)).
* رُقّيت الكتابة إلى جداول `DeltaLake` (الإعداد `allow_experimental_delta_lake_writes`) إلى مرحلة Beta. [#107034](https://github.com/ClickHouse/ClickHouse/pull/107034) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أُضيفت مقاييس `ProfileEvents` ‏`DistributedPlanRemoteTasks` و`DistributedPlanLocalExecution` و`DistributedPlanHostsUsed` لمراقبة تنفيذ distributed query plans التجريبية (`make_distributed_plan`). [#107985](https://github.com/ClickHouse/ClickHouse/pull/107985) ([Shankar Iyer](https://github.com/shankar-iyer)).
* أُزيل التخزين التجريبي المستند إلى RocksDB في Keeper (`experimental_use_rocksdb`). وسيصل قريبًا تخزين جديد أفضل على القرص. [#108000](https://github.com/ClickHouse/ClickHouse/pull/108000) ([Michael Kolupaev](https://github.com/al13n321)).
* أصبح distributed index analysis (وهي ميزة تجريبية يتحكم فيها الإعداد `distributed_index_analysis`) يرسل القوائم الكبيرة من أسماء data part إلى remote server كقيم scalar بدلًا من تضمينها في query text. وهذا يتجنب الإخفاقات المحتملة بسبب حدود `max_ast_elements` / `max_query_size` ويزيل عبء parsing الخاص بـ AST. [#110419](https://github.com/ClickHouse/ClickHouse/pull/110419) ([Azat Khuzhin](https://github.com/azat)).
* تحسين دوال aggregation التجريبية `timeSeries*ToGrid`: أصبحت buckets الآن محاذاة لكلٍّ من step وwindow، كما أصبح aggregation النهائي أسرع بكثير عندما تكون window أكبر بكثير من step. وقد تغيّر format الخاص بـ serialization لحالة aggregation على نحو غير متوافق (فهذه الدوال تجريبية). [#106724](https://github.com/ClickHouse/ClickHouse/pull/106724) ([Vitaly Baranov](https://github.com/vitlibar)).
* أصبحت target tables الخارجية لجدول `TimeSeries` تُسجَّل الآن بوصفها referential dependencies: وعلى غرار materialized views، يمنع هذا إسقاط target table خارجي قبل إسقاط جدول `TimeSeries` الذي يشير إليه (إذا كان `check_referential_table_dependencies` مُمكّنًا). [#108388](https://github.com/ClickHouse/ClickHouse/pull/108388) ([Vitaly Baranov](https://github.com/vitlibar)).
* إضافة دالة PromQL ‏`increase`. [#111023](https://github.com/ClickHouse/ClickHouse/pull/111023) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* أصبح بإمكان عمليات `JOIN` الآن استخدام فهرس المفتاح الأساسي أو skip indexes على الجدول الواقع في الجهة اليسرى لاستبعاد الحبيبات. ويُتحكَّم في ذلك عبر الإعداد `enable_join_runtime_filters_index_analysis`. [#109085](https://github.com/ClickHouse/ClickHouse/pull/109085) ([Shankar Iyer](https://github.com/shankar-iyer)).
* أصبحت عمليتا التسلسل وإلغاء التسلسل لمتجهات الأنواع القابلة للتسلسل مباشرةً تستخدمان استدعاء إدخال/إخراج واحدًا للمخزن المؤقت بدلًا من معالجة العناصر واحدًا واحدًا. [#89842](https://github.com/ClickHouse/ClickHouse/pull/89842) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تحسين عمليات البحث العكسي في القاموس: إذ يُبسَّط الآن شرط المساواة الثابت، مثل `WHERE dictGet(dict, attr, key_expr) = value`، مباشرةً إلى مرشح مفتاح (`key_expr = const` أو `key_expr IN [...]` أو `WHERE 0`) بدلًا من إعادة كتابته كاستعلام فرعي من النوع `IN (SELECT ... FROM dictionary(...))`، كما أصبح المسار الثابت لـ `dictGetKeys` يُنفَّذ بالتوازي. [#91164](https://github.com/ClickHouse/ClickHouse/pull/91164) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة إعداد جديد `merge_tree_generic_exclusion_search_max_steps` يحدّ من عدد الخطوات التي تقضيها خوارزمية البحث بالاستبعاد العام في تحليل فهرس المفتاح الأساسي لكل جزء بيانات. وتُستهلك الحصة أولًا على أكبر نطاقات المفاتيح المتبقية، لذا فإن حتى الحصة الصغيرة تستبعد معظم البيانات؛ أما النطاقات التي لم تُحلَّل بالكامل فتُقرأ كاملةً، لذلك تظل نتيجة الاستعلام صحيحة ولكن قد تُقرأ حبيبات أكثر. ويُطبَّق الحد بصورة مرنة: إذ قد يُتجاوز بما لا يزيد على `merge_tree_coarse_index_granularity` خطوة، بالإضافة إلى خطوة واحدة لكل نطاق يكون الجزء مقسّمًا إليه مسبقًا (على سبيل المثال، بواسطة ذاكرة التخزين المؤقت لشرط الاستعلام). وتعني القيمة الافتراضية 0 عدم وجود حد لعدد الخطوات. [#92779](https://github.com/ClickHouse/ClickHouse/pull/92779) ([Michael Jarrett](https://github.com/EmeraldShift)).
* أصبحت الاستعلامات التي تتضمن `ORDER BY` و`LIMIT` على العروض فوق جداول `Distributed` تستخدم الآن تحسين دمج التدفقات المرتبة: إذ يُدفَع `ORDER BY`/`LIMIT` الخارجي إلى الاستعلام الداخلي للعرض البسيط، بحيث يرتّب كل shard بياناته محليًا ويقوم المنسّق بدمج التدفقات المرتبة مسبقًا بدلًا من إجراء فرز كامل. [#94102](https://github.com/ClickHouse/ClickHouse/pull/94102) ([matanper](https://github.com/matanper)).
* جرى تفعيل `optimize_or_like_chain` افتراضيًا. يُغلق [#87779](https://github.com/ClickHouse/ClickHouse/issues/87779). [#94517](https://github.com/ClickHouse/ClickHouse/pull/94517) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* وَسْم جداول السجل في النظام من نوع `MergeTree` التي خضعت للتدوير وكانت non-replicated ولا تحتوي على TTL بأنها `table_readonly` لتجنّب عمليات الخلفية غير الضرورية. كما أن إعداد `table_readonly` في `MergeTree` يعطّل الآن أيضًا جميع أعمال الخلفية على جدول `MergeTree` عادي — بما في ذلك عمليات الدمج العادية، وعمليات TTL (`DELETE`/`MOVE`/إعادة الضغط)، وعمليات دمج إعادة الضغط، وmutations في الخلفية، ونقل الأجزاء في الخلفية — ويرفض أوامر partition المعدِّلة (`ATTACH`/`MOVE`/`DROP`/`DROP DETACHED`/`FETCH`/`REPLACE PARTITION` و`MOVE PARTITION ... TO TABLE` إلى الجدول)، بالإضافة إلى عمليات الإدراج وmutations و`OPTIMIZE` التي كان يرفضها بالفعل. ونتيجةً لذلك، فإن جدول `table_readonly` الذي يحتوي على TTL لم يعد يستعيد بياناته منتهية الصلاحية ما دام هذا الإعداد مفعّلًا. [#95079](https://github.com/ClickHouse/ClickHouse/pull/95079) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* تحسين أداء جلب سجل مستخدم واحد من `system.users` عندما يحتوي الخادم على عدد كبير من المستخدمين. [#96699](https://github.com/ClickHouse/ClickHouse/pull/96699) ([Alistair Evans](https://github.com/alistairjevans)).
* أصبحت القراءة بالترتيب مع parallel replicas تستخدم الآن المنطق نفسه المتمثل في تقسيم الجدول إلى `max_threads` أجزاء كما في القراءة المحلية، لتحقيق قدر أفضل من التوازي. [#101434](https://github.com/ClickHouse/ClickHouse/pull/101434) ([Nikita Taranov](https://github.com/nickitat)).
* استخدم حدود فهرس minmax للتقسيم من أجل تقليم المزيد من الحبيبات أثناء تحليل المفتاح الأساسي لجداول `MergeTree`، عندما يكون أحد أعمدة المفتاح الأساسي أيضًا عمود إدخال في مفتاح التقسيم. على سبيل المثال، في جدول `MergeTree` يحتوي على `ORDER BY (id, event_time)` و`PARTITION BY toYYYYMM(event_time)`، سيستخدم ClickHouse فهرس minmax للتقسيم على `event_time` أثناء تحليل فهرس المفتاح الأساسي لاتخاذ قرارات تقليم أكثر دقة للحبيبات. يتحكم في ذلك الإعداد الجديد `use_partition_minmax_for_primary_key_pruning` (مُمكّن افتراضيًا). [#103480](https://github.com/ClickHouse/ClickHouse/pull/103480) ([UnamedRus](https://github.com/UnamedRus)).
* تم تمكين ذاكرة التخزين المؤقت لشرط الاستعلام للاستعلامات التي تستخدم التصفية الديناميكية Top-K (`ORDER BY ... LIMIT n`). ويُقسَّم مُدخل الذاكرة المؤقتة بحسب معاملات خطة Top-K، بحيث يعيد الاستعلام نفسه استخدام نتائج عامل التصفية `WHERE` المخزنة مؤقتًا، بينما يؤدي اختلاف `LIMIT` أو عمود الفرز أو اتجاه الفرز إلى إنشاء مُدخل جديد. [#104478](https://github.com/ClickHouse/ClickHouse/pull/104478) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإعداد `use_constant_folding_in_index_analysis` (معطّل افتراضيًا). عند تمكينه، يقوم تحليل المفتاح الأساسي و`MinMax` وتحليل فهرس التخطي في `MergeTree` بطيّ الثوابت على مستوى القسم داخل مسند التصفية بشكل منفصل لكل جزء، مما يحسّن التقليم لعوامل التصفية التي تعتمد تفرعاتها على قيم التقسيم، مثل `(a = 1 AND b >= 1) OR (a = 2 AND b > 10)` مع `PARTITION BY a`. [#104582](https://github.com/ClickHouse/ClickHouse/pull/104582) ([Mikhail Artemenko](https://github.com/Michicosun)).
* دفع `LIMIT` إلى التجميع حسب الترتيب لتمكين الإنهاء المبكر عندما يتطابق مفتاح `GROUP BY` مع مفتاح `ORDER BY` ومفتاح فرز الجدول، مما يقلل بشكل كبير عدد الصفوف المقروءة. [#104859](https://github.com/ClickHouse/ClickHouse/pull/104859) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبح تحديث profile events الآن أسرع بما يصل إلى 30 مرة، باستخدام عمليات ذرية لكل CPU للعدادات على مستوى الخادم ولكل مستخدم. يتحكم في ذلك إعداد الخادم `user_profile_events_per_cpu` (ويستخدم نحو 640 KiB لكل مستخدم على 64 نواة، لذا مع وجود عدد كبير جدًا من المستخدمين قد يكون من المنطقي إبقاؤه معطّلًا). [#105056](https://github.com/ClickHouse/ClickHouse/pull/105056) ([Azat Khuzhin](https://github.com/azat)).
* تم تمكين `allow_aggregate_partitions_independently` افتراضيًا. عندما يكون مفتاح `GROUP BY` مناسبًا لمفتاح التقسيم، يمكن لـ ClickHouse تجميع كل قسم بشكل مستقل وتخطي خطوة الدمج العامة. وتتجاوز آلية الاستدلال في وقت التشغيل هذا التحسين تلقائيًا عندما يجعل تخطيط الأقسام ذلك غير ملائم (عدد أقسام قليل جدًا، أو عدد أقسام كبير جدًا، أو أحجام أقسام غير متوازنة بشكل ملحوظ). [#105128](https://github.com/ClickHouse/ClickHouse/pull/105128) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت استعلامات البحث المتجهي مع إعادة التقييم (`vector_search_with_rescoring = 1`) تحسب الآن المسافة الدقيقة فقط للصفوف التي يعيدها الفهرس المتجهي، مع تطبيق عامل تصفية دقيق لمواضع الصفوف بدلًا من إعادة التقييم بالقوة الغاشمة للصفوف المجاورة من نفس حبيبة `MergeTree`. [#105591](https://github.com/ClickHouse/ClickHouse/pull/105591) ([Sergey Kuznetsov](https://github.com/skuznetsov)). [#108846](https://github.com/ClickHouse/ClickHouse/pull/108846) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* تحسين أداء خوارزمية الربط `partial_merge` على مفاتيح `FixedString` من خلال مقارنة سلاسل من القيم دفعة واحدة بدلًا من إجراء استدعاء مقارنة واحد لكل قيمة. [#105737](https://github.com/ClickHouse/ClickHouse/pull/105737) ([Artem Zuikov](https://github.com/4ertus2)).
* أصبح `SHOW TABLES` و`system.tables` على Data Lake Catalog (Iceberg REST وGlue وUnity وHive وPaimon) يدفعان الآن المسندات المقيّدة بمساحة الاسم إلى الـ catalog، مما يتجنب إجراء مسح كامل له. يُغلق [#105022](https://github.com/ClickHouse/ClickHouse/issues/105022). [#106029](https://github.com/ClickHouse/ClickHouse/pull/106029) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* تقييد الذاكرة غير المتعقَّبة لكل CPU لتجنّب `overcommit` وأخطاء نفاد الذاكرة (تُضبط الحدود باستخدام إعدادات الخادم `max_per_cpu_untracked_memory` و`per_cpu_untracked_memory_thread_buffer`). [#106055](https://github.com/ClickHouse/ClickHouse/pull/106055) ([Azat Khuzhin](https://github.com/azat)).
* تسريع المشغّلات التي تفحص stream مرتبًا لاكتشاف سلاسل من قيم key المتساوية — `DISTINCT` بالترتيب، و`LIMIT BY` بالترتيب، و`LIMIT BY` السالب بالترتيب، وjoins `full_sorting_merge` و`partial_merge`. [#106502](https://github.com/ClickHouse/ClickHouse/pull/106502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تنفيذ reader وwriter أصليَّين لتنسيقي `Arrow` و`ArrowStream` لا يستخدمان مكتبة Apache Arrow، مما يتجنب نسخ البيانات والتحويلات الإضافية. وأصبح هذا الآن الخيار الافتراضي (الإعدادان `input_format_arrow_use_native_reader` و`output_format_arrow_use_native_writer`)، وهو أسرع في القراءة والكتابة على حد سواء. [#106522](https://github.com/ClickHouse/ClickHouse/pull/106522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إعادة تفعيل LTO لـ jemalloc بعد إصلاح تلف في thread-cache ظهر مع LTO، مما يحسّن الأداء. [#106898](https://github.com/ClickHouse/ClickHouse/pull/106898) ([Azat Khuzhin](https://github.com/azat)).
* تقليل memory usage وتحسين أداء `JOIN`s. يستخدم الجانب الأيمن من hash join الآن مرجع row مدمجًا بطول 8 بايت قائمًا على الفهرس، بحيث تصبح entries جدول hash في joins `ALL` صغيرة بقدر نظيراتها في joins `ANY` لجميع أنواع key. أُجري benchmark على queries join كبيرة من نوع `parallel_hash` — joins `INNER` و`ANY` لجداول تضم 100–300 مليون row بمفاتيح `UInt64` و`String`، مع مفاتيح فريدة ومكررة: أصبح وسيط query أسرع بنحو 12% واستخدم Peak memory أقل بنحو 15%، من دون أن تصبح أي query أبطأ. وحققت joins `INNER` على مفاتيح `UInt64` أكبر تحسن (أسرع بنحو 21% في الوسيط مع ذاكرة أقل بنسبة 38%). [#107189](https://github.com/ClickHouse/ClickHouse/pull/107189) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* أصبحت join keys أحادية العمود من النوع `LowCardinality(String)` غير `Nullable` مدعومة أصلًا الآن في hash join. [#107264](https://github.com/ClickHouse/ClickHouse/pull/107264) ([Nikita Taranov](https://github.com/nickitat)).
* إضافة خوارزمية تعداد ترتيب join المسماة `dpsub` (البرمجة الديناميكية على المجموعات الفرعية)، بما يوفّر planات join مثالية مع overhead optimization أقل من `dpsize` ودعمًا للـ joins غير الداخلية. [#107351](https://github.com/ClickHouse/ClickHouse/pull/107351) ([Fisnik Kastrati](https://github.com/fkastrati)).
* تسريع loading لـ filesystem cache عند بدء التشغيل من خلال ترميز حجم كل ملف cache في اسمه (`<offset>_<size>`)، مما يتجنب تنفيذ `stat` لكل ملف. ويظل loading لملفات cache المكتوبة بواسطة الإصدارات الأقدم مدعومًا. [#107415](https://github.com/ClickHouse/ClickHouse/pull/107415) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء `arrayElement` على `Array(LowCardinality(String))` ووظائف `LIKE` الخاصة بـ map على `Map`s التي تحتوي على مفاتيح أو قيم `LowCardinality(String)`، وذلك بتجنب materialization غير الضروري للسلاسل النصية. [#107450](https://github.com/ClickHouse/ClickHouse/pull/107450) ([Michael Jarrett](https://github.com/EmeraldShift)).
* تجنب تحويل aggregation أحادي المستوى إلى two-level aggregation عندما يكون memory usage منخفضًا، وذلك عبر تتبّع ذاكرة aggregation state نفسها بدلًا من ذاكرة query بأكملها. [#107490](https://github.com/ClickHouse/ClickHouse/pull/107490) ([Hechem Selmi](https://github.com/m-selmi)).
* تسريع تحليل queries التجميعية: يُحتسب مفتاح cache لإحصاءات حجم aggregation hash-table الآن انطلاقًا من query plan بدلًا من بناء AST الكامل للـ query. [#107643](https://github.com/ClickHouse/ClickHouse/pull/107643) ([Dmitry Novik](https://github.com/novikd)).
* تحسين أداء `INTERSECT ALL` و`EXCEPT ALL` (الوضع الافتراضي لـ `INTERSECT` و`EXCEPT`) عدة أضعاف، وذلك بجعل مفتاح المجموعة المتعددة يعتمد على قيمة الصف بدلًا من احتساب `hash` لكل صف باستخدام SipHash. [#107649](https://github.com/ClickHouse/ClickHouse/pull/107649) ([Raúl Marín](https://github.com/Algunenano)).
* إعادة بناء عوامل تصفية سياسات الصفوف من دون الاحتفاظ بقفل الذاكرة المؤقتة، مما يحسّن قابلية توسع الاستعلامات عند تنفيذ `CREATE ROW POLICY` و`DROP ROW POLICY` بالتزامن. [#107917](https://github.com/ClickHouse/ClickHouse/pull/107917) ([Azat Khuzhin](https://github.com/azat)).
* تسريع الدوال `match` و`extract` و`extractAll` و`replaceRegexpOne` و`replaceRegexpAll` للتعبيرات النمطية البسيطة عبر ترجمتها إلى native code باستخدام LLVM. ويتحكم في ذلك الإعداد الجديد `compile_regular_expressions` (مفعّل افتراضيًا)؛ أما الأنماط الواقعة خارج المجموعة الفرعية المدعومة فتعود تلقائيًا إلى محرك RE2. [#108004](https://github.com/ClickHouse/ClickHouse/pull/108004) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع فك ضغط ZSTD على AArch64 ‏(ARM) للأعمدة ذات إزاحات المطابقة الصغيرة، مثل أعمدة الأعداد الصحيحة ذات العرض الثابت، من خلال تنفيذ نسخ متّجه للتداخلات القصيرة عند الإزاحات القصيرة باستخدام NEON. فعلى سبيل المثال، أصبح فك ضغط عمود `UInt64` أسرع حتى \~2.3× على AWS Graviton 4. [#108049](https://github.com/ClickHouse/ClickHouse/pull/108049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدام مكتبة `libdeflate` لضغط وفك ضغط gzip/zlib/deflate، مما يجعلها أسرع (الضغط \~1.15× مع ratio أفضل، وفك الضغط \~1.4–1.5×) لبيانات `.gz`/HTTP/`url`/`s3` وcodec ‏GZIP الخاص بـ Parquet. [#108074](https://github.com/ClickHouse/ClickHouse/pull/108074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء استعلامات البحث النصي المقترنة بعامل تصفية للمفتاح الأساسي. [#108114](https://github.com/ClickHouse/ClickHouse/pull/108114) ([Anton Popov](https://github.com/CurtizJ)).
* استخدام إحصاءات runtime التي جُمعت أثناء التشغيل الأول للاستعلام لتحسين عمليات التشغيل اللاحقة: إذ يمكن لخوارزمية join ‏`hash` التبديل تلقائيًا إلى `parallel_hash` استنادًا إلى الإحصاءات المجمعة. [#108125](https://github.com/ClickHouse/ClickHouse/pull/108125) ([Hechem Selmi](https://github.com/m-selmi)). كما جرى تحسين حجم عوامل تصفية runtime الخاصة بـ join باستخدام حجم hash table من إحصاءات runtime الخاصة بـ join، ويتحكم في ذلك الإعداد الجديد `join_runtime_filter_size_from_hash_table_stats`. [#108313](https://github.com/ClickHouse/ClickHouse/pull/108313) ([Hechem Selmi](https://github.com/m-selmi)).
* تم تحسين سرعة فك ضغط LZ4 للأعمدة ثابتة الحجم ومنخفضة cardinality. [#108175](https://github.com/ClickHouse/ClickHouse/pull/108175) ([Nikita Taranov](https://github.com/nickitat)).
* تسريع الدوال `trimLeft`/`trimRight`/`trimBoth` الخاصة بالمسافات البيضاء الافتراضية (وأيضًا الأسماء البديلة لها `ltrim`/`rtrim`/`trim`): تُنسخ الصفوف المتتالية التي لا تحتاج إلى إزالة مسافات ضمن Batch واحدة، ولا يُجرى فحص المسافات لكل صف إلا للصفوف التي تحتوي فعلًا على مسافة بادئة أو لاحقة. [#108177](https://github.com/ClickHouse/ClickHouse/pull/108177) ([Groene AI](https://github.com/groeneai)).
* تحسين أداء `replaceAll` و`replaceRegexpAll` عندما يكون pattern حرفًا واحدًا ويكون replacement حرفًا واحدًا (على سبيل المثال `replaceRegexpAll(s, ' ', '_')`). لم تعد مثل هذه الاستبدالات تغيّر layout الخاص بالسلسلة، لذلك يُنسخ العمود الآن مرة واحدة وتُعاد كتابة البايتات المطابقة في موضعها بدلًا من تشغيل حلقة بحث لكل مطابقة. [#108178](https://github.com/ClickHouse/ClickHouse/pull/108178) ([Groene AI](https://github.com/groeneai)).
* تحسين أداء الدالة `pointInPolygon` عند استخدام مضلع ثابت. أصبحت ذاكرة التخزين المؤقت للمضلعات المُعالجة مسبقًا تُفهرَس الآن بحسب الوسائط الثابتة الخام، بحيث لا يُحلَّل المضلع الثابت إلا مرة واحدة فقط (عند الإخفاق في ذاكرة التخزين المؤقت) بدلًا من إعادة تحليله مع كل كتلة إدخال. [#108184](https://github.com/ClickHouse/ClickHouse/pull/108184) ([Groene AI](https://github.com/groeneai)).
* تسريع تحليل تمثيل التاريخ والوقت القياسي `YYYY-MM-DD hh:mm:ss` في وضع أفضل جهد (`date_time_input_format = 'best_effort'`, `cast_string_to_date_time_mode = 'best_effort'`)، وهو الوضع الافتراضي. يعالج هذا تراجعًا في أداء التحليل ظهر عند تبديل تلك القيم الافتراضية من `basic` إلى `best_effort`. [#108187](https://github.com/ClickHouse/ClickHouse/pull/108187) ([Groene AI](https://github.com/groeneai)).
* تجنّب الاحتفاظ بعدّادات الانتقائية في `system.predicate_statistics_log` على مسار القراءة في `MergeTree` عندما تكون الميزة معطّلة (`predicate_statistics_sample_rate = 0`، وهو الافتراضي). يزيل هذا تحديثًا ذريًا لكل حبيبة واحتساب `O(rows)` لعدد البتات المضبوطة في عامل التصفية من كل عملية قراءة، مما يعالج تراجعًا في الأداء كان أوضح ما يكون على AArch64. [#108190](https://github.com/ClickHouse/ClickHouse/pull/108190) ([Groene AI](https://github.com/groeneai)).
* تسريع تحليل الأعداد ذات الفاصلة العائمة من النص عند استخدام `precise_float_parsing = 1`، بحيث يصبح بنفس سرعة المحلّل الافتراضي أو أسرع منه على معظم المدخلات. ويتضمن ذلك أيضًا ترقية مكتبة `fast_float` المضمّنة إلى v8.2.10. [#108205](https://github.com/ClickHouse/ClickHouse/pull/108205) ([Raúl Marín](https://github.com/Algunenano)).
* استخدام مكتبة `simdutf` لوظائف ترميز base64 وفك ترميزه، مما يحسّن أداءها. [#108333](https://github.com/ClickHouse/ClickHouse/pull/108333) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحسين `DISTINCT` للمفاتيح المكلفة عالية الكاردينالية. [#108366](https://github.com/ClickHouse/ClickHouse/pull/108366) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* في البنى غير المعتمدة على Linux (macOS وFreeBSD)، لم يعد jemalloc يطهّر الصفحات المتسخة على نحو متعجّل (استدعاء نظام `madvise` واحد لكل `free`)؛ بل يستخدم الآن خيط تطهير في الخلفية مع `dirty_decay_ms` محدود، كما هو الحال في Linux. يسرّع هذا بشكل ملحوظ أعباء العمل كثيفة التخصيص والتحرير مثل تعبيرات الجدول الشائع التعاودية (\~2x في benchmark لتعبير جدول شائع تعاودي على macOS) مع تأثير ضئيل جدًا على RSS. [#108430](https://github.com/ClickHouse/ClickHouse/pull/108430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع تخطيط الاستعلامات ضمن المحلّل للتعبيرات التي تشير إلى الاسم المستعار `WITH` نفسه أو تكرّر التعبير الفرعي نفسه مرات عديدة (مثل سلاسل `if`/`multiIf` المتداخلة بعمق)، وذلك عبر عدم إعادة بناء التعبيرات الفرعية المشتركة عند إنشاء DAG الإجراءات. [#108523](https://github.com/ClickHouse/ClickHouse/pull/108523) ([Dmitry Novik](https://github.com/novikd)).
* تُبنى مرشحات وقت التشغيل الآن على مفاتيح المساواة حتى عندما تحتوي عبارة `ON` أيضًا على محمولات لا تعتمد على المساواة، مما يقلّل عدد الصفوف الداخلة إلى ربط التجزئة في عمليات الربط التي تمزج بين شروط المساواة وعدم المساواة. ولا يتأثر `LEFT ANTI JOIN` بذلك. [#108579](https://github.com/ClickHouse/ClickHouse/pull/108579) ([Antonio Álvarez Caballero](https://github.com/29antonioac)).
* تفعيل `-fno-math-errno` على مستوى قاعدة الشيفرة بالكامل، مما يتيح للمصرّف تحسين الدوال الرياضية بشكل أفضل. [#108628](https://github.com/ClickHouse/ClickHouse/pull/108628) ([Nikita Taranov](https://github.com/nickitat)).
* خفض عتبة الجلب المسبق البرمجي لجداول التجزئة الخاصة بالتجميع والربط من `4 * L2 cache size` إلى `L2 cache size`، بحيث يُفعَّل الجلب المسبق بمجرد أن لا يعود جدول التجزئة ملائمًا لذاكرة L2. يعالج هذا تراجعًا في `GROUP BY` و`JOIN` على جداول تجزئة متوسطة الحجم (\~1-8 MiB) على المنصات التي يكون فيها حجم L2 المُبلّغ عنه كبيرًا (مثل AArch64 مع L2 بحجم 2 MiB). [#108655](https://github.com/ClickHouse/ClickHouse/pull/108655) ([Groene AI](https://github.com/groeneai)).
* تحسين أداء الدوال النافذة. أصبحت الاستعلامات النافذة على الجداول العريضة التي تتضمن `SELECT *` تستخدم ذاكرة أقل بكثير وتعمل أسرع. كما أصبحت دوال التجميع النافذة، بما في ذلك `quantile*` و`uniq*` و`groupArray`، أسرع مع `OVER ()` و`OVER (ORDER BY ... RANGE ...)`. وأصبحت الدالة `cume_dist` أسرع أيضًا، كما تحسّن أداء النوافذ التي تستخدم `PARTITION BY` أو `ORDER BY` على الأعمدة التي تحتوي على كثير من القيم المتكررة. [#108688](https://github.com/ClickHouse/ClickHouse/pull/108688) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع تحليل الاستعلامات التي تحتوي على سلاسل `AND` كثيرة أو كبيرة جدًا من المقارنات: أصبحت آلية التحسين `optimize_and_compare_chain` الآن مقيّدة بميزانية عمل (إعداد جديد `optimize_and_compare_chain_max_hash_work`) بدلًا من إجراء hash لجزء كبير من شجرة الاستعلام، ولم تعد آلية تحليل لامبدا تعيد حساب قيم hash لنص لامبدا كجزء من حماية التكرار. [#108757](https://github.com/ClickHouse/ClickHouse/pull/108757) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تراجع في الأداء عند قراءة أعمدة `JSON`/`Dynamic` باستخدام عدة threads: إذ كان البحث عن الإعداد `input_format_binary_max_type_complexity` لكل قيمة يتسبب في تنازع على عدّاد المراجع في سياق الاستعلام المشترك، ما يجعل القراءات المتوازية تسلسلية؛ أما الآن فأصبحت قيمة الإعداد مخزّنة مؤقتًا لكل thread. [#108797](https://github.com/ClickHouse/ClickHouse/pull/108797) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح تراجع في الأداء (أُدخل في [#71781](https://github.com/ClickHouse/ClickHouse/issues/71781)) حيث توقفت قراءة أعداد كبيرة من الملفات الصغيرة من object storage عبر `s3` ودوال الجداول الأخرى عن prefetching وعادت إلى القراءات المتزامنة، ما أدى إلى إبطاء كبير للقراءات أحادية الخيط وذات التوازي المنخفض لكميات كبيرة من الملفات الصغيرة جدًا. [#108872](https://github.com/ClickHouse/ClickHouse/pull/108872) ([Nikita Fomichev](https://github.com/fm4v)). كما أصبح prefetch الأولي للكائنات الصغيرة يُصدر الآن أيضًا عندما تمر قراءات object storage عبر filesystem cache (`filesystem_cache_name`)، لذلك لم تعد قراءات الأعداد الكبيرة من الملفات الصغيرة (مثل ingestion في `S3Queue`) مع تفعيل cache متزامنة ومقيّدة بزمن الاستجابة. [#109478](https://github.com/ClickHouse/ClickHouse/pull/109478) ([Nikita Fomichev](https://github.com/fm4v)).
* تحليل القيم الحرفية المتداخلة بعمق من نوع Array وtuple بزمن خطي بدلًا من التربيعي. [#108892](https://github.com/ClickHouse/ClickHouse/pull/108892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تقليل الحمل الناتج عن تنازع الأقفال في خوارزمية الربط `parallel_hash`. [#108938](https://github.com/ClickHouse/ClickHouse/pull/108938) ([Hechem Selmi](https://github.com/m-selmi)).
* تسريع `estimateCompressionRatio` للأعمدة المرمّزة بـ `T64` من خلال حساب الحجم المضغوط تحليليًا بدلًا من ضغط البيانات فعليًا. [#109054](https://github.com/ClickHouse/ClickHouse/pull/109054) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إزالة عنق زجاجة أحادي الخيط في خطوة shuffle ضمن خطط الاستعلامات الموزعة: إذ أصبح كل stream من المنبع يوزّع صفوفه على حاوية الوجهة بشكل مستقل بدلًا من تمرير تدفق البيانات بالكامل عبر transform واحد. [#109206](https://github.com/ClickHouse/ClickHouse/pull/109206) ([Alexander Gololobov](https://github.com/davenger)).
* تقليل استهلاك CPU أثناء الخمول في خادم Keeper. [#109255](https://github.com/ClickHouse/ClickHouse/pull/109255) ([Michael Kolupaev](https://github.com/al13n321)).
* تسريع serialization وعمليات الدمج لأعمدة `JSON` التي تحتوي بياناتها المشتركة على كثير من المسارات المتناثرة: فعند flattening البيانات المشتركة إلى أعمدة لكل مسار، أُزيل المسح لكل صف عبر جميع أعمدة المسارات المتراكمة، وأصبح استكمال الفجوات للبيانات السابقة يتم دفعة واحدة بدلًا من إدراج القيم الافتراضية خليةً تلو الأخرى. [#109341](https://github.com/ClickHouse/ClickHouse/pull/109341) ([Groene AI](https://github.com/groeneai)).
* تقليل الحمل الإضافي على CPU عند تقييم التعبيرات في الاستعلامات التي تتضمن عددًا كبيرًا من الأعمدة (على سبيل المثال، البحث المتجهي على عمود `QBit` مع `stride` صغير، حيث يُوسَّع كل متجه إلى مئات الأعمدة الفرعية لمستويات البت، وتُمرَّر كلها إلى استدعاء واحد لـ `*DistanceTransposed`). [#109380](https://github.com/ClickHouse/ClickHouse/pull/109380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء دوال Geo في H3 (`h3ToGeoBoundary`, `h3ToGeo`, `h3CellAreaM2`/`h3CellAreaRads2`, `geoToH3`) عبر حساب الجيب/جيب التمام المقترنين معًا، وإزالة الاستدعاءات المثلثية الزائدة في تحويلات الإحداثيات. لم تتغير النتائج (متطابقة تمامًا على مستوى البت). [#109399](https://github.com/ClickHouse/ClickHouse/pull/109399) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء المقارنات (`<`, `>`, `<=`, `>=`) لأنواع الأعداد الصحيحة العريضة (`Int128`, `UInt128`, `Int256`, `UInt256` والأنواع المبنية عليها مثل `Decimal128`) بما يصل إلى 7 مرات، وكذلك تحويل الأعداد الصحيحة الموقعة إلى `Int256` (حتى 7 مرات على البيانات مختلطة الإشارة)، وذلك بجعل شيفرة المقارنة وتوسيع الإشارة بلا تفرعات. [#109474](https://github.com/ClickHouse/ClickHouse/pull/109474) ([Manuel](https://github.com/raimannma)).
* جرى تحسين `uniqCombined` (بما في ذلك حالة aggregation من دون مفاتيح) و`uniqHLL12`. [#109794](https://github.com/ClickHouse/ClickHouse/pull/109794) ([Anton Popov](https://github.com/CurtizJ)). [#109831](https://github.com/ClickHouse/ClickHouse/pull/109831) ([Anton Popov](https://github.com/CurtizJ)).
* أصبحت الدالتان `arraySort` و`arrayReverseSort` أسرع عدة مرات عند العمل على مصفوفات رقمية (بما في ذلك `Decimal` و`DateTime64`) عند استدعائهما من دون لامبدا. [#109832](https://github.com/ClickHouse/ClickHouse/pull/109832) ([Manuel](https://github.com/raimannma)).
* تسريع `addDays` و`addWeeks` و`subtractDays` و`subtractWeeks` على قيم `DateTime` و`DateTime64` في المناطق الزمنية ذات الإزاحة الثابتة (مثل UTC) عبر استخدام مسار حسابي سريع. [#109836](https://github.com/ClickHouse/ClickHouse/pull/109836) ([Manuel](https://github.com/raimannma)).
* جرى تحسين تحليل الفهرس النصي. [#109886](https://github.com/ClickHouse/ClickHouse/pull/109886) ([Anton Popov](https://github.com/CurtizJ)).
* إضفاء التوازي على معالجة الصفوف غير المنضمة في خوارزمية join ‏`parallel_hash` في حالتين إضافيتين: عند وجود عامل تصفية متبقٍّ، وفي حالة مفاتيح join الصغيرة (خريطة hash أحادية المستوى). [#110008](https://github.com/ClickHouse/ClickHouse/pull/110008) ([Hechem Selmi](https://github.com/m-selmi)).
* أصبحت استجابات واجهة الويب المضمنة (واجهة Play UI، وdashboards، ومعالجات الملفات الثابتة) تُضغط الآن وفقًا لترويسة `Accept-Encoding` الخاصة بالعميل، باستخدام zstd أو gzip أو deflate أو brotli أو lz4 أو xz أو snappy أو bzip2. على سبيل المثال، يتقلص حجم صفحة `/play` من نحو 350 كيلوبايت غير مضغوط إلى أقل من 120 كيلوبايت مع zstd، مما يقلل أوقات التحميل على الاتصالات البطيئة. وتُترك الاستجابات المضغوطة مسبقًا دون تغيير، كما يُرسَل `Vary: Accept-Encoding` لضمان صحة تقسيم CDN وcache. [#110108](https://github.com/ClickHouse/ClickHouse/pull/110108) ([Sayantanu Dey](https://github.com/sayantanu-dey)).
* ادفع عامل التصفية إلى ما دون دالة نافذة أو إلى ما دون `LIMIT BY` عندما يكون ذلك آمنًا: إذ إن أي predicate مكتوب فوقهما (مثل `WHERE` خارجي يحيط بـ subquery، أو conjunct في `QUALIFY`) ويشير فقط إلى أعمدة `PARTITION BY` الخاصة بدالة النافذة، أو فقط إلى أعمدة المفتاح الخاصة بـ `LIMIT BY` (في حالة `LIMIT n BY` عندما يكون `n >= 1` ومن دون `OFFSET`)، يصل الآن إلى طبقة التخزين ويتيح pruning للمفتاح الأساسي وpartition، وskip indexes، وprojections. على سبيل المثال، لم يعد `SELECT ... row_number() OVER (PARTITION BY key ORDER BY ts) AS rn ... QUALIFY rn = 1 AND key = 'x'` يقرأ الجدول بالكامل ويطبق عليه دالة نافذة. [#110114](https://github.com/ClickHouse/ClickHouse/pull/110114) ([Groene AI](https://github.com/groeneai)). [#110116](https://github.com/ClickHouse/ClickHouse/pull/110116) ([Groene AI](https://github.com/groeneai)).
* مع `join_use_nulls = 1`، فإن `WHERE` الذي يستبعد قيم NULL ويشير إلى أعمدة من جانبي outer join (مثل `WHERE l.k = 42 AND r.k = 42`) يحوّل الآن عملية join إلى `INNER` (أو `LEFT`/`RIGHT`) ويتيح pruning للمفتاح الأساسي، تمامًا كما في حالة `join_use_nulls = 0`. سابقًا كان هذا التحويل يُتخطّى في هذه الحالة، وكان كلا الجدولين يُقرآن بالكامل. [#110121](https://github.com/ClickHouse/ClickHouse/pull/110121) ([Groene AI](https://github.com/groeneai)).
* أصبحت الدوال التي تحتوي على argument واحد `Nullable` غير ثابت تشارك null map الخاص بـ argument مع النتيجة بدلًا من تخصيص واحد جديد ودمجه. [#110151](https://github.com/ClickHouse/ClickHouse/pull/110151) ([Manuel](https://github.com/raimannma)).
* تجنّب إجراء تخصيص على heap لكل فحص hyperrectangle في index analysis للمفتاح الأساسي، مما يسرّع تصفية العلامات بنسبة 5-26% بحسب شكل query. [#110153](https://github.com/ClickHouse/ClickHouse/pull/110153) ([Manuel](https://github.com/raimannma)).
* حسّن أداء الدالتين `arrayMin` و`arrayMax` على Array رقمية بنحو \~1.3-1.5x باستخدام اختزال موجّه vectorized بدلًا من حلقة مقارنة لكل عنصر. [#110163](https://github.com/ClickHouse/ClickHouse/pull/110163) ([Manuel](https://github.com/raimannma)).
* اجعل فك ضغط codec ‏`Delta` موجّهًا vectorized. أصبح فك الترميز الآن أسرع بمقدار 1.5–5 مرات لأنواع البيانات ذات 8/16/32-بت، مما يجعل scans الأعمدة المضغوطة بـ `Delta` أسرع حتى 20%. [#110189](https://github.com/ClickHouse/ClickHouse/pull/110189) ([Manuel](https://github.com/raimannma)).
* سرّع string search functions (`like`, `position`, `match`, `countSubstrings`, `hasToken` وغيرها) على أعمدة `Enum` باستخدام needle ثابت، وذلك عبر البحث فقط في أسماء enum المميّزة ثم إرجاع النتائج لكل row، بدلًا من البحث في كل row. [#110325](https://github.com/ClickHouse/ClickHouse/pull/110325) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* سرّع aggregate functions ‏`groupBitOr`/`groupBitAnd`/`groupBitXor` وعائلة التباين (`varPop`, `varSamp`, `stddevPop`, `stddevSamp`, `skewPop`, `skewSamp`, `kurtPop`, `kurtSamp`, `covarPop`, `covarSamp`, `corr`) عبر المعالجة الدفعية الموجّهة vectorized: أسرع حتى 4 مرات مع combinator ‏`-If` في conditions غير المتوقعة، وأسرع حتى 3 مرات لعائلة التباين من دونه. [#110461](https://github.com/ClickHouse/ClickHouse/pull/110461) ([Manuel](https://github.com/raimannma)).
* سرّع تحليل text index (المرحلة التي تحدد granules التي يجب قراءتها): استخدم البحث بالاستبعاد بدلًا من التكرار على جميع granules، وتجنّب إنشاء bitmap مؤقتة لكل فحص نطاق. [#110530](https://github.com/ClickHouse/ClickHouse/pull/110530) ([Anton Popov](https://github.com/CurtizJ)).
* احتساب الحجم على القرص للأعمدة الفرعية من `Map` ضمن تحسين `PREWHERE` التلقائي. يُصلح هذا تراجعًا في أداء `PREWHERE` أُدخل في [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). جزء من [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110623](https://github.com/ClickHouse/ClickHouse/pull/110623) ([Pavel Kruglov](https://github.com/Avogar)).
* تسريع تحليل قيم `UUID` من النص (مثل `JSONExtract` إلى `LowCardinality(UUID)`، و`toUUID`، و`CAST AS UUID`) عبر التحقق من الأرقام السداسية العشرية وتحويلها في مرور واحد بدلًا من مرورين. [#110625](https://github.com/ClickHouse/ClickHouse/pull/110625) ([Groene AI](https://github.com/groeneai)).
* تحسين أداء الدوال التجميعية `timeSeries*ToGrid` بشكل ملحوظ باستخدام تطبيقات أسرع للفرز وجداول hash. [#110875](https://github.com/ClickHouse/ClickHouse/pull/110875) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبحت الاستعلامات مثل `SELECT * FROM t WHERE id` تستخدم تخطي الفهرس على العمود `id`. يُغلق [#89222](https://github.com/ClickHouse/ClickHouse/issues/89222). [#89603](https://github.com/ClickHouse/ClickHouse/pull/89603) ([Aditya Chopra](https://github.com/adityachopra29)).
* أُضيف الإعداد `query_plan_merge_expression_into_join` (مفعّل افتراضيًا) للسماح بدمج خطوات التعبير ضمن خطوات `JOIN` أثناء تحسين إعادة ترتيب `JOIN`. يتيح ذلك إعادة ترتيب `JOIN` عبر الاستعلامات الفرعية التي تغلف عمليات `JOIN` (على سبيل المثال، عندما يكون `JOIN` داخل استعلام فرعي يحتوي على أعمدة محسوبة)، مما يؤدي إلى تحسين أفضل لأشجار `JOIN` المعقدة. [#98533](https://github.com/ClickHouse/ClickHouse/pull/98533) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تحسين سلاسل `AND` التي تتضمن شروط مقارنة متعددة على التعبير نفسه: اكتشاف التناقضات (مثل `a < 3 AND a > 5` → `false`) وحذف الشروط الزائدة (مثل `a = 3 AND a < 5` → `a = 3`). [#99736](https://github.com/ClickHouse/ClickHouse/pull/99736) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* أصبحت Materialized CTEs المشار إليها من عدة فروع في استعلام `UNION` تُجسَّد مرة واحدة وتُشارك بين جميع الفروع. سابقًا، كان كل فرع يتلقى نسخته الخاصة من CTE، وكانت تُضمَّن inline وتُقيَّم بشكل منفصل. [#102107](https://github.com/ClickHouse/ClickHouse/pull/102107) ([Dmitry Novik](https://github.com/novikd)).
* أصبحت الخيوط في `BackgroundSchedulePool` تُنشأ عند الطلب بدلًا من إنشائها كلها دفعة واحدة عند بدء تشغيل الخادم. ويتحكم إعداد الخادم الجديد `background_schedule_pool_initial_size` (القيمة الافتراضية `16`) في عدد العمال الذين يُنشؤون مسبقًا؛ كما ينمو الـ pool حتى `background_schedule_pool_size` عند الحاجة. يقلل ذلك من عدد الخيوط الخاملة على الخوادم منخفضة الحمل. يُغلق [#85265](https://github.com/ClickHouse/ClickHouse/issues/85265). [#105066](https://github.com/ClickHouse/ClickHouse/pull/105066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تخطي عمليات تحميل ملفات العلامات غير الضرورية للتسلسل المتقدم للبيانات المشتركة في النوع `JSON`. [#107051](https://github.com/ClickHouse/ClickHouse/pull/107051) ([Pavel Kruglov](https://github.com/Avogar)).
* أصبحت ذاكرة التخزين المؤقت للمضلعات الثابتة المُعالجة مسبقًا للدالة `pointInPolygon` مشتركة الآن بين الاستعلامات والخيوط، ويحدّها إعداد الخادم الجديد `point_in_polygon_cache_size` (القيمة `default` هي 256 MiB، وتعطّل القيمة `0` ذاكرة التخزين المؤقت، ويمكن تغييره في وقت التشغيل). سابقًا، كانت ذاكرة التخزين المؤقت تحتفظ بما يصل إلى `max_threads` نسخة من كل مضلع مُعالج مسبقًا، وكانت تنمو بلا حدود مع المضلعات المختلفة، ولم يكن يُفرَج عنها مطلقًا حتى إعادة تشغيل الخادم. ويمكن مسحها باستخدام `SYSTEM DROP POINT IN POLYGON CACHE`، ويُبلَّغ عن الاستخدام الحالي في `system.metrics` على شكل `PointInPolygonCacheBytes` و`PointInPolygonCacheCells` و`PointInPolygonCacheSizeLimit`. يغلق [#106393](https://github.com/ClickHouse/ClickHouse/issues/106393). [#107247](https://github.com/ClickHouse/ClickHouse/pull/107247) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* لم يعد Keeper يحتفظ بقفل اللقطات الداخلية أثناء تسلسل snapshot وكتابتها إلى القرص أو نقل snapshots بين الأقراص، لذلك لم تعد عمليات نقل snapshot إلى العقد الأخرى ومعالجة Raft تتعطل بسبب إنشاء snapshot محلية. [#107595](https://github.com/ClickHouse/ClickHouse/pull/107595) ([Antonio Andelic](https://github.com/antonio2368)).
* جرى تنفيذ background eviction في filesystem cache بالتوازي (ويتحكم فيه الإعداد `keep_free_space_ratio`). وأُضيف إعداد جديد `keep_free_space_eviction_threads` للتحكم في درجة التوازي، كما رُفعت القيمة `default` لـ `keep_free_space_remove_batch` من `100` إلى `250`. [#108147](https://github.com/ClickHouse/ClickHouse/pull/108147) ([Kseniia Sumarokova](https://github.com/kssenii)).
* حُدِّد عدد الأجزاء المرحلية التي تُجهَّز بالتزامن في عملية النسخ بالقراءة ثم الكتابة في Azure Blob Storage (المستخدمة في النسخ الاحتياطية عندما لا تكون عملية النسخ الأصلية متاحة) إلى `max_inflight_parts_for_one_file`، مما يمنع الاستخدام المفرط للذاكرة عند نسخ عدد كبير من الملفات الكبيرة بالتوازي. [#108232](https://github.com/ClickHouse/ClickHouse/pull/108232) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* جرى تفعيل جميع ذواكر التخزين المؤقت الثلاث الخاصة بـ text index على مستوى عام — إذ كانت سابقًا مفعّلة فقط داخل الاستعلامات. كذلك، أصبح حجم ذاكرة التخزين المؤقت لـ posting lists الآن صفرًا، ما يعطّلها فعليًا مرة أخرى، لأن posting lists كبيرة وتخزينها مؤقتًا مكلف جدًا. [#108274](https://github.com/ClickHouse/ClickHouse/pull/108274) ([Robert Schulze](https://github.com/rschu1ze)).
* إضافة ضغط marks المتدفقة داخل الذاكرة أثناء تحميل marks لتقليل Peak memory usage. يغلق [#108285](https://github.com/ClickHouse/ClickHouse/issues/108285). [#108325](https://github.com/ClickHouse/ClickHouse/pull/108325) ([Pavel Kruglov](https://github.com/Avogar)).
* يحجز إعداد filesystem cache الجديد `reserve_granularity` (القيمة `default` هي 4 MiB) مساحةً مسبقًا على مستوى granules أكبر، مما يقلل تنازع الأقفال في المسار الساخن لحجز مساحة filesystem cache. [#108369](https://github.com/ClickHouse/ClickHouse/pull/108369) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تقليل مقدار الذاكرة التي تستخدمها metadata الخاصة بـ filesystem cache (لكل file segment ولكل مفتاح). [#108477](https://github.com/ClickHouse/ClickHouse/pull/108477) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أصبحت الاستعلامات الموجَّهة إلى `system.iceberg_history` مع عوامل `WHERE` على العمودين `database` و`table` تصل الآن فقط إلى قواعد البيانات المطابقة، مما قد يوفر الوقت إذا كان لديك العديد من قواعد البيانات البعيدة غير ذات الصلة على الخادم. [#108492](https://github.com/ClickHouse/ClickHouse/pull/108492) ([Den Kalantaevskii](https://github.com/Diskein)).
* أُزيلت عمليات القفل غير الضرورية في filesystem cache لتقليل تنازع الأقفال. [#108932](https://github.com/ClickHouse/ClickHouse/pull/108932) ([Kseniia Sumarokova](https://github.com/kssenii)).
* خُفِّض استخدام الذاكرة في معالجة البيانات الوصفية لـ `BACKUP` و`RESTORE`. فعند فتح نسخة احتياطية (لأجل `RESTORE` أو كأساس لـ `BACKUP` ‏`incremental`) أصبح تحليل البيانات الوصفية `.backup` يتم على شكل تدفّق بدلًا من تحميلها إلى شجرة مستند XML داخل الذاكرة، ما يتجنب في النسخ الاحتياطية الكبيرة (وخاصة `incremental`) تخصيص شجرة DOM بحجم عدة غيغابايت. [#109107](https://github.com/ClickHouse/ClickHouse/pull/109107) ([Julia Kartseva](https://github.com/jkartseva)). ولم يعد إنهاء `BACKUP` ينسخ معلومات الملفات لكل الملفات إلى متجه مؤقت، وهو ما كان يستهلك مؤقتًا عدة غيغابايت عند التعامل مع نسخ احتياطية تضم ملايين الملفات. [#109861](https://github.com/ClickHouse/ClickHouse/pull/109861) ([Julia Kartseva](https://github.com/jkartseva)). كما أن كتابة إدخالات النسخ الاحتياطي لم تعد تنسخ قائمة معلومات ملفات المضيف الحالي. [#111162](https://github.com/ClickHouse/ClickHouse/pull/111162) ([Julia Kartseva](https://github.com/jkartseva)).
* تقليل استهلاك الذاكرة في المُجمِّع. [#109224](https://github.com/ClickHouse/ClickHouse/pull/109224) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* دعم ذاكرة التخزين المؤقت لشروط الاستعلام لملفات `Parquet` المحلية المقروءة عبر محرك الجدول `File` (وكان الدعم سابقًا مقتصرًا على تخزين الكائنات وبحيرات البيانات). [#109247](https://github.com/ClickHouse/ClickHouse/pull/109247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* خُفِّض استخدام الذاكرة في ذاكرة التخزين المؤقت لترويسة الفهرس النصي بمقدار يتراوح بين مرتين و2.5 مرة. وباتت الذاكرة المؤقتة تستوعب عددًا أكبر من ترويسات أجزاء البيانات (الإعداد `text_index_header_cache_size`)، مما يقلل قراءات القرص لاستعلامات البحث النصي. [#109332](https://github.com/ClickHouse/ClickHouse/pull/109332) ([Anton Popov](https://github.com/CurtizJ)).
* أصبحت دوال مسافة المتجهات المنقولة `L2DistanceTransposed` و`cosineDistanceTransposed` و`dotProductTransposed` تطبّق الآن تحسين القراءة الجزئية لـ bit planes على أعمدة `Nullable(QBit)`، بحيث تُقرأ مستويات البتات المطلوبة فقط بدلًا من العمود كاملًا. [#109358](https://github.com/ClickHouse/ClickHouse/pull/109358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `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) ([Groene AI](https://github.com/groeneai)).
* لم تعد الاتصالات المجمّعة تُفحَص عبر ping قبل كل استخدام. وهذا يلغي رحلة الذهاب والإياب `Ping`-`Pong` التي كانت تُضاف إلى كل اتصال معاد استخدامه، مما يقلل زمن الاستجابة للاستعلامات الموزعة ولأداة `clickhouse-benchmark`. ويُكتشف الاتصال المجمّع المتقادم عبر عملية poll بمهلة صفرية (فحص غير حاجب لا يضيف أي رحلة ذهاب وإياب)، ثم يُستعاد بإعادة الاتصال. [#110068](https://github.com/ClickHouse/ClickHouse/pull/110068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عمليات إعادة الاتصال غير المبررة في اتصالات HTTP المجمّعة من نوع keep-alive عبر TLS ‏(HTTPS وS3). كان فحص الاتصال المتقادم يستخدم `poll` على الـ socket، ما كان يؤدي إلى الإبلاغ خطأً عن اتصال آمن حيّ على أنه مغلق عندما يحمل سجل TLS غير مقروء بعد المصافحة (تذكرة جلسة أو `KeyUpdate`)؛ أما الآن فيستخدم `MSG_PEEK` غير حاجب على sockets العادية و`SSL_peek`/`SSL_has_pending` على sockets الخاصة بـ TLS، ما يكتشف أيضًا بشكل صحيح الإغلاق المنظم لـ TLS وسجل TLS الذي وصل منه جزء فقط. [#110402](https://github.com/ClickHouse/ClickHouse/pull/110402) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت الاستعلامات المسرَّعة بواسطة التصفية الديناميكية TopK ‏(`ORDER BY ... LIMIT k`) تستفيد بشكل أكبر من ذاكرة التخزين المؤقت لشروط الاستعلام: إذ تُملأ الذاكرة المؤقتة حتى عند تطبيق `lazy materialization` على الاستعلام، ويمكن لهذه الاستعلامات إعادة استخدام إدخالات كُتبت سابقًا بواسطة استعلام عادي له شرط `WHERE` نفسه. [#110507](https://github.com/ClickHouse/ClickHouse/pull/110507) ([Shankar Iyer](https://github.com/shankar-iyer)).
* يستخدم نمط `LIKE`/`NOT LIKE` بدون أحرف بدل (`%`, `_`) الآن نطاقًا دقيقًا للمفتاح الأساسي، لذا يقرأ العدد نفسه من الحبيبات كما في الشرط المكافئ `=`/`!=` بدلًا من نطاق بادئة أوسع. [#107077](https://github.com/ClickHouse/ClickHouse/pull/107077) ([Groene AI](https://github.com/groeneai)).
* إصلاح تنازع القفل الزائد على file segment (وهو تراجع في الأداء أُدخل في 26.1) عند قراءة البيانات عبر ذاكرة التخزين المؤقت لنظام الملفات. [#109577](https://github.com/ClickHouse/ClickHouse/pull/109577) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تم إصلاح عدم استخدام فهارس التخطي المعرّفة على الأعمدة الفرعية من النوع `Tuple` عند الوصول إلى الحقل عبر `tupleElement(t, 'name')` أو `tupleElement(t, N)` أو `t.N`، مع قراءة الـ tuple الكامل أيضًا في الاستعلام نفسه (مثل `SELECT *`). وتقوم جميع هذه الصيغ الآن بتقليص الحبيبات بالطريقة نفسها التي يوفّرها الوصول إلى العمود الفرعي المسمّى `t.name`. [#110056](https://github.com/ClickHouse/ClickHouse/pull/110056) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح بطء استعلامات `ORDER BY ... LIMIT` على جداول `Distributed` عندما يختار `prefer_localhost_replica` نسخة متماثلة محلية: أُزيل الحدّ التمهيدي من خطة الشظية المحلية، مما كان يمنع lazy materialization والتصفية الديناميكية لـ top-K. [#110136](https://github.com/ClickHouse/ClickHouse/pull/110136) ([Michael Jarrett](https://github.com/EmeraldShift)).
* تم إصلاح عدم استخدام فهرس النص مع العامل `ILIKE` عندما يكون الفهرس معرّفًا على expression بدلًا من عمود مباشر (على سبيل المثال `assumeNotNull(col)` مع preprocessor من نوع `lower(...)`): إذ كانت مثل هذه الاستعلامات تقرأ جميع الحبيبات بدلًا من استخدام الفهرس. يغلق هذا [#110350](https://github.com/ClickHouse/ClickHouse/issues/110350). [#110595](https://github.com/ClickHouse/ClickHouse/pull/110595) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تقليل تنازع القفل في ذاكرة التخزين المؤقت لنظام الملفات: لم تعد الاستعلامات التي تقرأ من الذاكرة المؤقتة تنتظر قفل طابور الأولوية عند تحديث أولوية LRU لإحدى الإدخالات. [#109065](https://github.com/ClickHouse/ClickHouse/pull/109065) ([Antonio Andelic](https://github.com/antonio2368)).
* أصبحت استعلامات فهرس النص التي تستخدم expression من `postprocessor` مخصّصة للتصفية فقط (مثل `if(..., '', token)`) تستبعد الآن الـ tokens الفارغة مسبقًا بدلًا من materializing لها صفًا بصف، مما يحسّن الأداء. [#109049](https://github.com/ClickHouse/ClickHouse/pull/109049) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تقليل تنازع القفل في طوابير سجلات النظام، مما يخفض tail latency للاستعلامات على clusters المزدحمة. [#110539](https://github.com/ClickHouse/ClickHouse/pull/110539) ([Sean Haynes](https://github.com/seandhaynes)).
* تم تحسين أداء دوال البحث عن substring (`position` و`countSubstrings` و`multiSearch*` و`replaceAll` و`replaceOne`، ومتغيراتها case-insensitive وUTF-8) مع needle غير ثابتة بما يصل إلى 1.5x، وذلك باستخدام أدوات بحث عن السلاسل مدعومة بـ SIMD في المسار الخاص بكل صف بدلًا من تنفيذ ساذج. [#110580](https://github.com/ClickHouse/ClickHouse/pull/110580) ([Raúl Marín](https://github.com/Algunenano)).
* يُطبَّق lazy materialization الآن على استعلامات `ReplacingMergeTree` التي تتضمن `FINAL` وfilter و`LIMIT` صغيرًا حتى من دون `ORDER BY`. ولا تُجلب الأعمدة غير اللازمة للـ filter ودمج `FINAL` إلا للصفوف التي تبقى بعد تطبيق الحدّ، مما يجعل مثل هذه الاستعلامات أسرع بكثير عند تحديد أعمدة عريضة مع filter انتقائي. ويُتحكَّم في ذلك عبر `query_plan_optimize_lazy_materialization` و`query_plan_max_limit_for_lazy_materialization`. [#110722](https://github.com/ClickHouse/ClickHouse/pull/110722) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تحسين أداء async insert عند تمكين deduplication وانقسام عملية flush واحدة عبر عدة partitions: يعيد ClickHouse الآن استخدام قيم hash المحسوبة لإزالة التكرار عبر partitions بدلًا من إعادة حسابها لكل partition. [#111150](https://github.com/ClickHouse/ClickHouse/pull/111150) ([Valery Petrov](https://github.com/valerypetrov)).

<div id="268-improvement">
  #### تحسينات
</div>

* تمت إضافة الإعداد `input_format_csv_missing_nullable_as_empty_string` (معطّل افتراضيًا). عند تفعيله، تُقرأ القيمة المفقودة في عمود `Nullable(String)` ضمن إدخال CSV على أنها `String` فارغ بدلًا من `NULL`، بغض النظر عن `input_format_csv_empty_as_default`. [#58225](https://github.com/ClickHouse/ClickHouse/pull/58225) ([kevinyhzou](https://github.com/KevinyhZou)). [#107577](https://github.com/ClickHouse/ClickHouse/pull/107577) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت الدوال `toDateOrNull` و`toDateTimeOrNull` و`toDateTime64OrNull` تقبل الآن وسائط عددية صحيحة من جميع أنواع الأعداد الصحيحة الأصلية (وتُفسَّر بالطريقة نفسها كما في `toDate` و`toDateTime` و`toDateTime64`، مع وسيطة `timezone` اختيارية)، وتُرجع `NULL` للقيم الواقعة خارج نطاق نوع النتيجة. على سبيل المثال، تُرجع `toDateTimeOrNull(1583851242, 'Asia/Shanghai')` القيمة `2020-03-10 22:40:42`، بينما تُرجع `toDateTimeOrNull(4294967296)` القيمة `NULL`. [#79791](https://github.com/ClickHouse/ClickHouse/pull/79791) ([Jitendra](https://github.com/jitendra1411)).
* تمت إضافة عمود `is_wildcard` إلى جدول `system.grants` للإشارة إلى ما إذا كان الامتياز يستخدم مطابقة البادئة بأحرف البدل (مثلًا، `GRANT SELECT ON db*.*`). سابقًا، لم يكن بالإمكان التمييز في `system.grants` بين الامتيازات ذات أحرف البدل والامتيازات المطابقة تمامًا للاسم نفسه. يُغلق [#92835](https://github.com/ClickHouse/ClickHouse/issues/92835). [#98577](https://github.com/ClickHouse/ClickHouse/pull/98577) ([DQ](https://github.com/il9ue)).
* السماح باستخدام ضغط Snappy في واجهة HTTP (`Accept-Encoding: snappy`) وإضافة الإعداد `snappy_mode` للاختيار بين تنسيق كتل Hadoop Snappy وتنسيق framing الخاص بـ Snappy لعمليات الإدخال/الإخراج العامة `file`/`url` الخاصة بـ snappy. [#100752](https://github.com/ClickHouse/ClickHouse/pull/100752) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم التوافق مع المحلّل القديم ضمن الإعداد `analyzer_compatibility_allow_non_aggregate_in_having`. وإذا كان مفعّلًا، فستُنقل الشروط غير التجميعية من `HAVING` إلى `WHERE`. [#104232](https://github.com/ClickHouse/ClickHouse/pull/104232) ([Dmitry Novik](https://github.com/novikd)).
* تمت إضافة إعداد جديد على مستوى الخادم `memory_worker_rss_speculative_reserve_ratio` (القيمة الافتراضية `1.0`) يجعل متعقّب الذاكرة العام يحجز الذاكرة استباقيًا فوق RSS المرصود عندما يتجاوز نمو RSS ما يسجله المتعقّب بين العينات. وبهذا، تحصل عمليات تخصيص الذاكرة على الخطأ `MEMORY_LIMIT_EXCEEDED` في وقت أبكر، ويقلّ احتمال أن يعمل OOM-killer في النواة أولًا. اضبط النسبة على `0` لتعطيل هذا السلوك الاستباقي. [#104976](https://github.com/ClickHouse/ClickHouse/pull/104976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة مقاييس Prometheus اختيارية لنشاط إخلاء filesystem cache (`filesystem_cache_evictions_total`, `filesystem_cache_evicted_bytes_total`, `filesystem_cache_evicted_segment_hits`, `filesystem_cache_evicted_segment_size_bytes`، ومتغيراتها لكل مستخدم والموسومة بـ `user_id`)، وتُعرَض لكل cache عبر `system.dimensional_metrics` و`system.histogram_metrics` ونقطة نهاية Prometheus. ويُتحكَّم فيها عبر إعدادَي تهيئة قرص cache: `expose_prometheus_eviction_metrics` و`expose_prometheus_eviction_metrics_per_user` (وكلاهما متوقف افتراضيًا)، ويمكن تبديلهما في وقت التشغيل عبر `SYSTEM RELOAD CONFIG`. [#105020](https://github.com/ClickHouse/ClickHouse/pull/105020) ([Sacheendra Talluri](https://github.com/sacheendra)).
* أصبح `EXPLAIN [PLAN] actions=1, compact=1, pretty=1` هو الافتراضي. [#105036](https://github.com/ClickHouse/ClickHouse/pull/105036) ([Kirill Kopnev](https://github.com/Fgrtue)).
* تمت ترقية `delta-kernel-rs` (المكتبة التي تقف وراء تكامل `DeltaLake`) إلى الإصدار v0.23.0. [#105861](https://github.com/ClickHouse/ClickHouse/pull/105861) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* أُضيف الأمران `du` و`wc` إلى `clickhouse-disks`. يعرض الأول الحجم الإجمالي بالبايت لملف أو directory معيّن، بينما يعرض الثاني عدد البايتات والأسطر والكلمات في ملف. [#106268](https://github.com/ClickHouse/ClickHouse/pull/106268) ([Asya Shneerson](https://github.com/asya-ch)).
* أُضيف مقياس غير متزامن جديد `UntrackedMemory` (ظاهر في `system.asynchronous_metrics`) يبلّغ عن الذاكرة التي خصصتها الخيوط بالفعل ولكن لم تُحتسب بعد في عدّاد التتبّع العام للذاكرة: إذ يراكم كل خيط التخصيصات الصغيرة محليًا ثم يبلّغ عنها دفعة واحدة. ويساعد ذلك في تفسير الفروقات بين `MemoryTracking` والاستخدام الفعلي لذاكرة العملية. كما تتضمن رسائل الخطأ `MEMORY_LIMIT_EXCEEDED` الآن مقدار الذاكرة غير المتتبَّعة، مما يسهّل فهم سبب بلوغ الاستعلام أو الخادم حد الذاكرة. [#106386](https://github.com/ClickHouse/ClickHouse/pull/106386) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تمت ترقية ClickStack (واجهة observability) إلى الإصدار 2.28.0. [#106406](https://github.com/ClickHouse/ClickHouse/pull/106406) ([Aaron Knudtson](https://github.com/knudtty)).
* أُضيف دعم `BFloat16` في `dotProduct`، كما تحسّن أداؤه عبر batching لمسار SIMD. [#106569](https://github.com/ClickHouse/ClickHouse/pull/106569) ([Nikita Taranov](https://github.com/nickitat)).
* أُصبحت الإعدادات `max_named_collection_num_to_throw` و`max_table_num_to_throw` و`max_replicated_table_num_to_throw` و`max_view_num_to_throw` و`max_dictionary_num_to_throw` و`max_database_num_to_throw` قابلة للتغيير دون الحاجة إلى إعادة تشغيل الخادم. [#106821](https://github.com/ClickHouse/ClickHouse/pull/106821) ([Maxim Orlovsky](https://github.com/UberDever)).
* أُضيف دعم القيم `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) ([Aditya Kumar](https://github.com/adityaksolves)).
* أُضيف الإعداد `materialized_postgresql_use_extended_date_and_time_types` الخاص بوقت الإنشاء إلى database engine `MaterializedPostgreSQL`. افتراضيًا (عند تمكينه)، يُستدل على أعمدة PostgreSQL من النوعين `date`/`timestamp` على أنها `Date32`/`DateTime64`؛ أما عند ضبطه على `0` وقت `CREATE DATABASE` فيُستدل على النوعين الأضيق `Date`/`DateTime`. لا ينطبق هذا الإعداد على table engine `MaterializedPostgreSQL`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يدعم مُكمِّم Array `SOME` / `ALL` (`expr OP SOME(array)` / `expr OP ALL(array)`) الآن أيضًا predicates مقارنة الكلمات المفتاحية `IS DISTINCT FROM` و`IS NOT DISTINCT FROM`، وpredicates البحث في السلاسل النصية `LIKE` و`ILIKE` و`NOT LIKE` و`NOT ILIKE` و`REGEXP`، بعد إعادة كتابتها إلى `arrayExists` / `arrayAll`. [#107454](https://github.com/ClickHouse/ClickHouse/pull/107454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح تسرّب في الذاكرة كان يحدث عند فشل فتح قاعدة بيانات SQLite (على سبيل المثال، عند تمرير path يتعذّر فتحه إلى table function `sqlite` أو إلى database engine `SQLite`). [#107807](https://github.com/ClickHouse/ClickHouse/pull/107807) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب (`play.html`)، تعرض تلميحة اختصار التشغيل الآن `Cmd+Enter` على Mac و`Ctrl+Enter` على المنصات الأخرى بدلًا من عرض `Ctrl/Cmd+Enter` دائمًا، كما لا يظهر الجزء `, +Shift to run all` من التلميحة إلا عند وجود عدة استعلامات. [#107817](https://github.com/ClickHouse/ClickHouse/pull/107817) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#108957](https://github.com/ClickHouse/ClickHouse/pull/108957) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يدعم محرك الجداول `Alias` الآن القراءة باستخدام النسخ المتماثلة المتوازية عندما يكون الجدول الهدف من عائلة `MergeTree`. [#107830](https://github.com/ClickHouse/ClickHouse/pull/107830) ([Kai Zhu](https://github.com/nauu)).
* أُضيف نوع إحصاءات الأعمدة `uniq_v2` — وهو بديل خفيف الوزن لإحصاءات `uniq`، ويستند إلى `uniqCombined64` sketch. [#107863](https://github.com/ClickHouse/ClickHouse/pull/107863) ([Han Fei](https://github.com/hanfei1991)). كما اعتُبر نوع إحصاءات الأعمدة `minmax` مهملًا، وتغيّرت القيمة الافتراضية لـ `auto_statistics_types` إلى `basic, uniq_v2`. [#108680](https://github.com/ClickHouse/ClickHouse/pull/108680) ([Han Fei](https://github.com/hanfei1991)).
* أصبحت دوال الذكاء الاصطناعي (`aiGenerate`, `aiEmbed`, `aiClassify`, `aiExtract`, `aiTranslate`) تعيد المحاولة الآن عند حدوث أعطال شبكية عابرة (إعادة تعيين الاتصال، وإخفاقات اتصال TLS، وحالات timeout، والعناوين غير القابلة للوصول) عندما يكون `ai_function_max_retries` مضبوطًا، بما يطابق سلوك إعادة المحاولة في table function ‏`url`. في السابق، كانت إعادة المحاولة تقتصر على استجابات أخطاء HTTP من جهة المزوّد. [#107927](https://github.com/ClickHouse/ClickHouse/pull/107927) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت عملية `INSERT` إلى جدول `MergeTree` تراعي الآن إلغاء الاستعلام و`max_execution_time` أثناء كتابة عدد كبير من الأجزاء، بدلًا من احتمال استمرارها فترةً طويلة بعد إيقافها. [#107929](https://github.com/ClickHouse/ClickHouse/pull/107929) ([Michael Kolupaev](https://github.com/al13n321)).
* في واجهة الويب (`play.html`)، يمكن الآن فتح أيقونة طرفية الويب في tab جديدة بالمتصفح بالنقر بالزر الأوسط أو باستخدام Ctrl/Cmd/Shift+click. [#108006](https://github.com/ClickHouse/ClickHouse/pull/108006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد توليد SQL بالذكاء الاصطناعي في العميل يرسل المعامل `temperature` ما لم يُضبط صراحةً عبر `ai.temperature` في التهيئة. ويُصلح هذا توليد SQL بالذكاء الاصطناعي للنماذج التي ترفض المعامل `temperature`. [#108014](https://github.com/ClickHouse/ClickHouse/pull/108014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الجدول `system.masking_policies` واستبطان `SHOW MASKING POLICIES` إلى الإصدارات مفتوحة المصدر. وتبقى سياسات الإخفاء نفسها ميزةً في ClickHouse Cloud، لذا يكون الجدول فارغًا في الإصدارات مفتوحة المصدر، لكن استعلامات الاستبطان لم تعد تفشل مع ظهور خطأ. [#108030](https://github.com/ClickHouse/ClickHouse/pull/108030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح مستهلك Kafka المعتمد على Keeper يختار ترتيب الحصول على أقفال الأقسام المؤقتة عبر النسخ المتماثلة عشوائيًا، مما يحسّن عدالة توزيع الأقسام ويقلّل تنازع الأقفال. في السابق، لم يكن للخلط المقصود أي تأثير. [#108033](https://github.com/ClickHouse/ClickHouse/pull/108033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإكمال التلقائي إلى واجهة الويب (`play.html`)، استنادًا إلى `system.completions` ومحلل SQL المعجمي المعتمد على WASM. [#108059](https://github.com/ClickHouse/ClickHouse/pull/108059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يعرض `clickhouse-client` و`clickhouse-local` الآن تلميحات إكمال تلقائي أثناء الكتابة (نص "شبح" مضمن) لأفضل اقتراح مطابق عندما يكون المؤشر في نهاية الإدخال. وتُرتَّب الاقتراحات الأكثر صلة أولًا (المستخدمة مؤخرًا والمعرّفات الموجودة بالفعل في الاستعلام). تنقّل باستخدام Up/Down (أو Ctrl-Up/Ctrl-Down)؛ واقبل تلميحًا واحدًا أو التلميح المحدد باستخدام Tab أو Right، واقبل التلميح المحدد باستخدام Enter؛ كما يفتح Tab أيضًا قائمة الإكمال الكلاسيكية. يتحكم في ذلك الخيار الجديد `--hints` (مفعّل افتراضيًا؛ ويتطلب `--highlight`). [#108070](https://github.com/ClickHouse/ClickHouse/pull/108070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم الدالة `length` لنوع البيانات `QBit` — إذ تُرجع بُعد المتجه كثابت. [#108071](https://github.com/ClickHouse/ClickHouse/pull/108071) ([Alexey Milovidov](https://github.com/alexey-milovidov)). ودعم `CAST` من `QBit` إلى `Array`، مع إعادة تكوين المتجه الأصلي — أي عكس التحويل الحالي من `Array` إلى `QBit`. [#108072](https://github.com/ClickHouse/ClickHouse/pull/108072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تتضمن الطلبات المرسلة إلى كتالوجات بحيرات البيانات عبر REST (مثل OneLake) الآن ترويسة ClickHouse `User-Agent`. [#108117](https://github.com/ClickHouse/ClickHouse/pull/108117) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أصبح `arrayFold` الآن يراعي إلغاء الاستعلام و`max_execution_time`. سابقًا، كان الطي على مصفوفة طويلة جدًا يُنفَّذ بالكامل داخل استدعاء دالة واحد ولا يمكن مقاطعته، لذا كان يتم تجاهل `KILL QUERY` والحدود الزمنية حتى يكتمل الطي. [#108192](https://github.com/ClickHouse/ClickHouse/pull/108192) ([Groene AI](https://github.com/groeneai)).
* يقوم `MVTEncodeGeom` الآن بمواءمة الأشكال الهندسية مع شبكة البكسلات الصحيحة قبل القص، ويقص المضلعات باستخدام مكتبة `wagyu`، بحيث يكون الناتج المقصوص صالحًا (تُصلَح الحلقات ذاتية التقاطع) ومحاذيًا للحواف، بما يطابق PostGIS `ST_AsMVTGeom`. [#108248](https://github.com/ClickHouse/ClickHouse/pull/108248) ([Saarthak Gupta](https://github.com/saarthak2002)).
* أُضيفت `ProfileEvents` لكل مرحلة قبل تنفيذ الاستعلام: ‏`QueryParseMicroseconds` و`QueryAnalysisMicroseconds` و`QueryPlanBuildMicroseconds` و`QueryPipelineBuildMicroseconds`. وهي توضّح أين يُستهلك الوقت قبل تنفيذ الاستعلام (التحليل النحوي، والتحليل، وبناء خطة الاستعلام، وبناء الـ pipeline)، وهي متاحة في `system.query_log` و`system.events`. [#108282](https://github.com/ClickHouse/ClickHouse/pull/108282) ([Jordi Villar](https://github.com/jrdi)).
* أصبحت عمليات `ALTER TABLE` التي قد تؤدي إلى إنتاج بيانات وصفية للجدول تتجاوز `max_query_size` تُرفَض مسبقًا، مما يمنع الجداول من أن تصبح غير قابلة للتحميل بواسطة مكوّنات مثل توزيع DDL واستعادة النسخ المتماثلة. [#108283](https://github.com/ClickHouse/ClickHouse/pull/108283) ([Andrew Kravchuk](https://github.com/lockie)).
* أُضيفت الأعمدة `settings` و`engine_settings` إلى `system.backups` و`system.backup_log`. يكشف `settings` إعدادات النسخ الاحتياطي/الاستعادة المطلوبة لعملية ما (مثل `allow_s3_native_copy` و`deduplicate_files` و`structure_only`)، بينما يكشف `engine_settings` الإعدادات المستخدمة فعليًا من قِبل قارئ وكاتب محرك النسخ الاحتياطي (مثل إعدادات طلبات S3 مثل `allow_native_copy`، التي قد تختلف عما طُلِب بعد دمج تهيئة الـ endpoint). وهذا يتيح معرفة الإعدادات التي نُفِّذت بها فعليًا عملية `BACKUP`/`RESTORE`. [#108334](https://github.com/ClickHouse/ClickHouse/pull/108334) ([Julia Kartseva](https://github.com/jkartseva)).
* أُضيف عمود `source` إلى `system.documentation` يحتوي على مسار الملف المصدر الذي يُعرَّف فيه توثيق كل كيان. ويوثّق الجدول الآن أيضًا ترميزات الضغط، وأحداث profile، والمقاييس الحالية، والمقاييس غير المتزامنة، وجداول النظام نفسها (مع أعمدتها)، كما يتضمن توثيق الإعدادات الآن نوعها وقيمتها الافتراضية. [#108346](https://github.com/ClickHouse/ClickHouse/pull/108346) ([Alexey Milovidov](https://github.com/alexey-milovidov)). كما أصبحت القيمة الافتراضية الفارغة للإعدادات تُعرَض الآن على أنها *سلسلة فارغة* بدلًا من علامتَي backticks فارغتين. [#108708](https://github.com/ClickHouse/ClickHouse/pull/108708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم عمليات القراءة غير المتزامنة من النسخ المتماثلة البعيدة (`async_socket_for_remote`) على MacOS عبر تنفيذ بدائيات polling المعتمدة على epoll فوق `kqueue`. ويتيح هذا للاستعلامات الموزعة قراءة الشظايا بالتوازي على MacOS بدلًا من قراءتها تسلسليًا. [#108403](https://github.com/ClickHouse/ClickHouse/pull/108403) ([Raúl Marín](https://github.com/Algunenano)).
* دعم `BFloat16` في دوال الرياضيات الثنائية. [#108442](https://github.com/ClickHouse/ClickHouse/pull/108442) ([Zhang Yifan](https://github.com/zhangyifan27)).
* أصبح بإمكان `MergeTree` الآن قراءة تدفق مضغوط تستخدم كُتله ترميزات مختلفة. وهذا هو المتطلب المسبق على جانب القراءة لاختيار codec التكيفي ([#105404](https://github.com/ClickHouse/ClickHouse/issues/105404)). [#108592](https://github.com/ClickHouse/ClickHouse/pull/108592) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أصبحت القيمة التلقائية لـ `max_threads` والإعدادات المشابهة تُعرض الآن في `system.settings` على أنها `auto(8)` بدلًا من `'auto(8)'`؛ إذ كانت علامات الاقتباس المفردة المحيطة بها أثرًا قديمًا مضمَّنًا في القيمة. وقد جرى الحفاظ على التوافق بين الإصدارات: فما تزال الصيغة القديمة المحاطة بعلامات اقتباس مقبولة عند تحليل الإعدادات المستلمة من الخوادم الأقدم. [#108657](https://github.com/ClickHouse/ClickHouse/pull/108657) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* عدة إصلاحات لتحسين سهولة الاستخدام في Web UI الخاصة بـ `/schema`: تحميل المخطط عند الضغط على Enter، وأشرطة تمرير تراعي السمة، وأسماء جداول أكثر وضوحًا، وتجميع متسق للجداول المستقلة على مستوى كل database، ومنع تحديد النص أثناء السحب، ونموذج authentication بأسلوب `play` (Credential Management API، وبيانات الاعتماد الممرَّرة عبر URL مع إزالة كلمة المرور، والتحقق المباشر من بيانات الاعتماد). [#108724](https://github.com/ClickHouse/ClickHouse/pull/108724) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد وضع التطبيق الكسول لقائمة الترحيل في فهرس النص تجريبيًا، ويمكن اختياره باستخدام `text_index_posting_list_apply_mode = 'lazy'` من دون `allow_experimental_text_index_lazy_apply`. كما أُعيدت تسمية إعداد عتبة الكثافة من `text_index_density_threshold` إلى `text_index_lazy_intersection_density_threshold`. [#108814](https://github.com/ClickHouse/ClickHouse/pull/108814) ([Anton Popov](https://github.com/CurtizJ)).
* أُضيف نوع كتالوج باسم `delta_sharing` إلى `DataLakeCatalog` من أجل REST endpoint الخاصة بـ Iceberg في Databricks Delta Sharing، والتي تكون فيها مساحات الأسماء مسطحة وتتجاهل مرشح السرد `parent`. استخدمه بدلًا من `catalog_type = 'rest'` لمثل نقاط النهاية هذه، إذ قد يتعطل `SHOW TABLES` بخلاف ذلك. [#108865](https://github.com/ClickHouse/ClickHouse/pull/108865) ([Seva Potapov](https://github.com/seva-potapov)).
* أُضيف خيار جديد إلى `clickhouse-client`/`clickhouse-local` باسم `--echo-query-separator` يطبع فاصلًا مخصصًا قبل الاستعلام المعروض بعد تنسيقه، مما يسهّل تمييز الاستعلام المكتوب عن نسخته المعاد تنسيقها. وهو معطّل افتراضيًا. [#108888](https://github.com/ClickHouse/ClickHouse/pull/108888) ([David Meng](https://github.com/davidmenggx)).
* تحسينات على لوحة قواعد البيانات في واجهة الويب: يُعرض عدد الجداول بين قوسين بجوار اسم قاعدة البيانات عند توسيعها. [#108891](https://github.com/ClickHouse/ClickHouse/pull/108891) ([Alexey Milovidov](https://github.com/alexey-milovidov)). كما يعيد زر التحديث المجاور لقاعدة البيانات الموسَّعة تحميل قائمة جداولها. [#108958](https://github.com/ClickHouse/ClickHouse/pull/108958) ([Alexey Milovidov](https://github.com/alexey-milovidov)). وعند إعادة فتح اللوحة، تُستعاد قواعد البيانات التي كانت موسَّعة سابقًا. [#108964](https://github.com/ClickHouse/ClickHouse/pull/108964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح بالإمكان حساب الفائدة المجمّعة لفهارس التخطي في `EXPLAIN WHATIF`: إذ يعرض نسبة البيانات عند تقاطع جميع الفهارس الافتراضية المناسبة الموجودة. [#108934](https://github.com/ClickHouse/ClickHouse/pull/108934) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح مشكلة إعادة تعيين موضع التمرير الأفقي في جدول النتائج في واجهة الويب عند النقر على رابط داخل خلية ثم الرجوع إلى الصفحة. [#108941](https://github.com/ClickHouse/ClickHouse/pull/108941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح محرك قاعدة البيانات `MySQL` ومحرك الجدول ودالة الجدول يربطون الآن أنواع الأعمدة المكانية في MySQL (`LINESTRING` و`POLYGON` و`MULTILINESTRING` و`MULTIPOLYGON` و`GEOMETRY` العامة) بالأنواع الهندسية المناظرة في ClickHouse بدلًا من `String`. ويتحكم في ذلك الخيار الجديد `geometry` ضمن الإعداد `mysql_datatypes_support_level`، وهو مفعّل افتراضيًا. ولا يزال `POINT` يُحوَّل دائمًا إلى `Point`. ويُربط العمود العام `GEOMETRY` بالنوع الشامل `Geometry`؛ وتؤدي قراءة قيمة لا يوجد لنوعها الفرعي مقابل في ClickHouse (`MULTIPOINT` و`GEOMETRYCOLLECTION`) إلى طرح استثناء وقت القراءة. [#108944](https://github.com/ClickHouse/ClickHouse/pull/108944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب (`play.html`): تنقّل كامل بلوحة المفاتيح — تنقّل بمفاتيح الأسهم داخل لوحة قواعد البيانات وجدول النتائج، وإمكانية الوصول إلى أزرار شريط الأدوات ومبدّل السمة وقائمة التنزيل عبر لوحة المفاتيح، مع مؤشرات تركيز مرئية. [#108972](https://github.com/ClickHouse/ClickHouse/pull/108972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة HTTP: عند تقديم بيانات الاعتماد عبر معلمات URL (`user`/`password`) وكذلك عبر ترويسة `Authorization`، أصبحت معلمات URL الآن هي التي لها الأولوية بدلًا من رفض الطلب. ويُصلح ذلك مشكلة فشل تنزيل النتائج من واجهة الويب (`play.html`) مع `AUTHENTICATION_FAILED` (الخطأ 516) عندما يكون المتصفح قد تذكّر بيانات اعتماد Basic. [#108980](https://github.com/ClickHouse/ClickHouse/pull/108980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُعيدت `show_data_lake_catalogs_in_system_tables` لتكون الإعداد الذي يتحكم فقط في ظهور `DataLakeCatalog` في `system.tables` و`system.columns` و`system.completions`. كما أُضيف `show_remote_databases_in_system_tables`، وهو مفعّل افتراضيًا، لإتاحة إخفاء قواعد بيانات `MySQL` و`PostgreSQL` من جداول النظام تلك بشكل منفصل. [#109082](https://github.com/ClickHouse/ClickHouse/pull/109082) ([Pablo Marcos](https://github.com/pamarcos)).
* استخدام خوارزمية parsing دقيقة لـ float (الأقرب تمثيلًا) افتراضيًا، وتطبيق الإعداد `precise_float_parsing` على input formats (`CSV` و`TSV` و`JSON` و`VALUES` و...) وعلى القيم الحرفية الرقمية، وليس فقط على `toFloat*`/`CAST`. اضبط `precise_float_parsing = 0` للحصول على السلوك السابق، وهو أسرع في بعض الحالات لكنه أقل دقة. يُغلق [#60146](https://github.com/ClickHouse/ClickHouse/issues/60146). يُغلق [#74647](https://github.com/ClickHouse/ClickHouse/issues/74647). يُغلق [#68914](https://github.com/ClickHouse/ClickHouse/issues/68914). [#109086](https://github.com/ClickHouse/ClickHouse/pull/109086) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح الاستعلام الذي يحتوي على تعبير الجدول الشائع واحدًا يُنسَّق الآن بنفس فواصل الأسطر والمسافات البادئة المستخدمة في الاستعلامات التي تحتوي على عدة تعبيرات جدول شائعة. سابقًا، كان `WITH a AS (...)` يُبقي تعبير الجدول الشائع في السطر نفسه مع `WITH`، بينما كانت حالتا وجود تعبيرين أو أكثر تضعان `WITH` في سطر مستقل مع إزاحة كل تعبير جدول شائع. [#109092](https://github.com/ClickHouse/ClickHouse/pull/109092) ([Groene AI](https://github.com/groeneai)).
* واجهة مستخدم الويب: عندما يكون الإكمال المميز مطابقًا للكلمة المكتوبة بالفعل، أو لنفس الكلمة مع اختلاف حالة الأحرف (مثل عرض `HASH` للكلمة المكتوبة `hash`)، فإن الضغط على Right/Tab/Enter لم يعد يعيد كتابة الكلمة أو تلتهمه ميزة الإكمال التلقائي — بل ينقل موضع المؤشر أو يُدرج سطرًا جديدًا كما هو متوقع. [#109106](https://github.com/ClickHouse/ClickHouse/pull/109106) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109384](https://github.com/ClickHouse/ClickHouse/pull/109384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف إلى واجهة مستخدم الويب (`play.html`) تمييز الأقواس المتداخلة بالألوان، وتمييز الأقواس المتطابقة، وتمييز المعرّفات المتطابقة، وتمييز مجموعات الأرقام، بما يتوافق مع `clickhouse-client`. [#109108](https://github.com/ClickHouse/ClickHouse/pull/109108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة مستخدم الويب، أصبح `Tab` و`Shift+Tab` الآن يزيدان ويقللان المسافة البادئة للأسطر المحددة بمقدار 4 مسافات. [#109110](https://github.com/ClickHouse/ClickHouse/pull/109110) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة مستخدم الويب: يُميَّز موضع خطأ الصياغة في محرر الاستعلام بخلفية حمراء. ويُزال هذا التمييز بمجرد أن يعيد المستخدم التركيز إلى المحرر. [#109112](https://github.com/ClickHouse/ClickHouse/pull/109112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `clickhouse-compressor --stat` واكتشاف `codec` الافتراضي للأجزاء القديمة يُبلغان عن تلف رؤوس `block` على أنه تلف، بدلًا من الإبلاغ المضلل عن خطأ نهاية الملف. [#109157](https://github.com/ClickHouse/ClickHouse/pull/109157) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أصبح ClickHouse Keeper يراعي الآن الإعداد `os_collect_psi_metrics` ويتخطى جمع PSI metrics عندما يكون معطّلًا. [#109179](https://github.com/ClickHouse/ClickHouse/pull/109179) ([Maxim Orlovsky](https://github.com/UberDever)).
* في واجهة مستخدم الويب، عند عرض علامات تبويب الاستعلام، تُخفى معلمات الاتصال (host، user، password) خلف زر على شكل مفتاح في الزاوية العلوية اليمنى، وتُعرض في قائمة منسدلة عند الطلب. [#109243](https://github.com/ClickHouse/ClickHouse/pull/109243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة مستخدم الويب: تُعرض النتيجة ذات القيمة الواحدة (صف واحد، عمود واحد، مثل `SHOW CREATE TABLE`) بارتفاع كامل بدلًا من تقييدها بثلاثة أسطر. [#109245](https://github.com/ClickHouse/ClickHouse/pull/109245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة مستخدم الويب، يؤدي الآن النقر على جدول في لوحة قواعد البيانات بزر الفأرة الأوسط، أو مع Shift، أو باستخدام مُعدِّل فتح علامة تبويب جديدة الخاص بالمنصة (Cmd على MacOS، وCtrl في غيره) إلى فتح استعلامه في علامة تبويب جديدة في واجهة مستخدم الويب. [#109246](https://github.com/ClickHouse/ClickHouse/pull/109246) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح مفتاح query condition cache لملفات `Parquet` البعيدة (في object storage) يعتمد على ETag بالإضافة إلى المسار، بحيث لم يعد استبدال كائن في موضعه يؤدي إلى تقديم نتائج مخزنة مؤقتًا قديمة. [#109310](https://github.com/ClickHouse/ClickHouse/pull/109310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة مستخدم الويب، لم تعد السلاسل النصية الفارغة وقيم NULL تُلوَّن في وضع التلوين `categorical`. [#109342](https://github.com/ClickHouse/ClickHouse/pull/109342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يؤدي النقر على أيقونة جدول في لوحة قاعدة البيانات الآن إلى عرض قائمة أعمدته، مع أيقونات للأنواع، وشريط حجم يتناسب مع الحجم المضغوط، وتلميح يعرض الحجم المضغوط/غير المضغوط ونسبة الضغط. [#109346](https://github.com/ClickHouse/ClickHouse/pull/109346) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يُعرَض الآن عنوان علامة التبويب كاملًا كتلميح عند المرور فوقه إذا كان مقتطعًا. [#109354](https://github.com/ClickHouse/ClickHouse/pull/109354) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب، يؤدي الآن النقر بالزر الأوسط على عنوان علامة التبويب (أو Ctrl/Shift/Cmd+النقر عليه) إلى تكرار علامة التبويب. [#109357](https://github.com/ClickHouse/ClickHouse/pull/109357) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: غيّر حجم منطقتَي التقدم النهائي وإحصاءات الاستعلام بشكل متناسق حتى لا تلتفّا بصورة غير ملائمة عندما تكون نافذة المتصفح ضيقة. [#109363](https://github.com/ClickHouse/ClickHouse/pull/109363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يؤدي الآن تحديد قاعدة بيانات في لوحة قواعد البيانات إلى استخدامها كقاعدة البيانات الافتراضية للاستعلامات التي تُشغَّل من المحرر. [#109372](https://github.com/ClickHouse/ClickHouse/pull/109372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم `reinterpret` لـ `Array` من عناصر ثابتة الحجم على أنه `String`، وهو عكس `reinterpret` الحالي لـ `String`/`FixedString` على أنه `Array`. [#109383](https://github.com/ClickHouse/ClickHouse/pull/109383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب، لا تعرض مفاتيح تبديل الترميز اللوني لكل عمود عندما لا تحتوي النتيجة إلا على صف واحد كحد أقصى. [#109385](https://github.com/ClickHouse/ClickHouse/pull/109385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* السماح باستخدام `CAST` بين أنواع `QBit` التي تختلف في نوع العنصر و/أو `stride`، ما دام البعد يبقى نفسه (على سبيل المثال `CAST(x AS QBit(Float64, N))` انطلاقًا من `QBit(Float32, N)`). التغييرات التي تقتصر على `stride` فقط لا تؤدي إلى فقدان للبيانات؛ أما تغييرات نوع العنصر فتتبع دلالات تحويل `Array` المقابلة (فعلى سبيل المثال قد يؤدي التحويل من `Float32` إلى `BFloat16` إلى فقدان في الدقة، كما أن `accurateCast` / `accurateCastOrNull` يرفضان الصفوف التي لا يمكن تمثيلها بدقة تامة). [#109387](https://github.com/ClickHouse/ClickHouse/pull/109387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت الدالتان `quantizeBFloat16ToInt8` و `dequantizeInt8ToBFloat16` تقبلان الآن أيضًا وسيطات من نوع `Array` و `QBit`، مع تطبيق codec Lloyd-Max على المتجه بالكامل (وإرجاع `Array`/`QBit` من نوع العنصر المقابل)، بالإضافة إلى الأشكال scalar المتاحة سابقًا. [#109398](https://github.com/ClickHouse/ClickHouse/pull/109398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يتضمن رابط Documentation الآن اسم المستخدم الحالي في عنوان URL. [#109419](https://github.com/ClickHouse/ClickHouse/pull/109419) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم `arraySum` و `arrayAvg` و `arrayProduct` للمصفوفات من `BFloat16`. [#109420](https://github.com/ClickHouse/ClickHouse/pull/109420) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يَقبل الآن محدِّد `format` على نمط MySQL وهو `%f` في `parseDateTime` / `parseDateTime64` (ومتغيراتهما `OrZero` / `OrNull`) ما بين 1 و6 منازل كسرية، وتُفسَّر على أنها ميكروثوانٍ بمحاذاة لليسار مثل `STR_TO_DATE` في MySQL، بدلًا من اشتراط 6 بالضبط. كما أُصلِح أيضًا عدم محاذاة جداول `PrettyCompact` في أمثلة توثيق الدوال المضمنة. [#109421](https://github.com/ClickHouse/ClickHouse/pull/109421) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: أصبحت علامات تبويب الاستعلامات دائمة الآن — إذ يحتفظ كل تبويب بنتيجته المعروضة (بما في ذلك الصور والمخططات) وباستعلامه قيد التشغيل عند الانتقال عنه ثم العودة إليه، كما تواصل الاستعلامات الطويلة العمل في الخلفية. وتعرض عناوين علامات التبويب مؤشر تحميل وشريط تقدم وعلامة إكمال لاستعلامها. [#109425](https://github.com/ClickHouse/ClickHouse/pull/109425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يُعرَض الخطأ الآن بشكل صحيح عند فشل الاستعلام بعد أن يكون جزء من نتيجته قد بُث بالفعل، بدلًا من إظهار `SyntaxError: Unexpected end of JSON input` من جهة العميل (أو، عند استخدام `http_write_exception_in_output_format`، وسم الاستعلام الفاشل على أنه ناجح). [#109430](https://github.com/ClickHouse/ClickHouse/pull/109430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الأعمدة المثبتة إلى واجهة الويب: يمكن تثبيت عمود من ترويسته بحيث يظل مرئيًا (ملتصقًا بالحافة) أثناء التمرير الأفقي لجدول النتائج. [#109439](https://github.com/ClickHouse/ClickHouse/pull/109439) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في لوحة المعلومات المتقدمة (`/dashboard`)، أصبح بالإمكان الآن إضافة مخططات لمقاييس محددة مباشرةً باستخدام اسم المقياس كما يظهر في الشيفرة المصدرية أو الوثائق، مما يسهّل إضافة عدة مقاييس أثناء جلسات استكشاف الأخطاء وإصلاحها. [#109449](https://github.com/ClickHouse/ClickHouse/pull/109449) ([Mikhail Artemenko](https://github.com/Michicosun)).
* واجهة الويب: أُصلحت مشكلة إغلاق القائمة المنسدلة لإعدادات الاتصال عند تحديد نص بالفأرة وسحبه إلى خارج حدودها. [#109451](https://github.com/ClickHouse/ClickHouse/pull/109451) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* واجهة الويب: يؤدي المرور فوق ترويسة عمود في جدول النتائج الآن إلى إظهار اسم العمود الكامل ونوعه كتلميح، بحيث يمكن قراءة الترويسات المقتطعة كاملةً. [#109463](https://github.com/ClickHouse/ClickHouse/pull/109463) ([Alexey Milovidov](https://github.com/alexey-milovidov)). كما أُصلحت مشكلة اقتطاع عناوين ترويسات الأعمدة بعلامة حذف حتى عندما يكون العمود عريضًا بما يكفي لعرض العنوان كاملًا. [#110397](https://github.com/ClickHouse/ClickHouse/pull/110397) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم قواميس ssd\_cache (بتخطيط `SSD_CACHE`) ومحرك الجداول `FileLog` في إصدارات macOS. [#109493](https://github.com/ClickHouse/ClickHouse/pull/109493) ([Raúl Marín](https://github.com/Algunenano)).
* واجهة الويب: عدم استعادة علامات التبويب ذات الاستعلامات الفارغة عند فتح الصفحة. [#109529](https://github.com/ClickHouse/ClickHouse/pull/109529) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تلميحات الإكمال التلقائي غير المقروءة أثناء الكتابة والألوان الساطعة في العميل التفاعلي على الطرفيات التي لا تحتوي قيمة `TERM` فيها على `256` (مثل Ghostty و kitty و Alacritty و foot): إذ أصبحت الألوان الساطعة الآن تُخرَج دائمًا كرموز ألوان aixterm الساطعة بدلًا من الرجوع إلى الغامق + اللون الداكن، وهو ما تعرضه الطرفيات الحديثة كلون داكن يصعب قراءته على الخلفيات الداكنة. [#109622](https://github.com/ClickHouse/ClickHouse/pull/109622) ([Alasdair Brown](https://github.com/sdairs)).
* تمكين ساحات jemalloc لكل CPU وتوصيف التخصيص في إصدارات macOS. [#109684](https://github.com/ClickHouse/ClickHouse/pull/109684) ([Raúl Marín](https://github.com/Algunenano)).
* السماح بتعديل بعض إعدادات المصادقة لقاعدة بيانات كتالوج بحيرة البيانات من نوع `OneLake` باستخدام `ALTER DATABASE ... MODIFY SETTING`. [#110019](https://github.com/ClickHouse/ClickHouse/pull/110019) ([alesapin](https://github.com/alesapin)).
* أصبح محرك `Hive` الآن يقرأ البيانات الوصفية لملفات `ORC` (فهارس الحد الأدنى/الحد الأقصى، وعدد الصفوف) باستخدام قارئ `ORC` الأصلي في ClickHouse بدلًا من مهايئ `ORC` الخاص بـ Apache Arrow. [#110086](https://github.com/ClickHouse/ClickHouse/pull/110086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تقليل حجم الملف التنفيذي بنحو \~10.5 MB عبر تنفيذ عمليات المقارنة والعمليات الحسابية على أزواج الأنواع المختلطة قليلة الاستخدام (`Decimal` مقابل عدد صحيح بعرض مختلف، والأزواج التي تتضمن `Int128`/`UInt128`/`Int256`/`UInt256`) من خلال التحويل إلى نوع مشترك بدلًا من نواة مُصرَّفة مخصّصة لكل توليفة من الأنواع. وتبقى الأزواج من النوع نفسه، والأزواج شائعة الاستخدام، وعمليات `plus`/`minus`/`multiply` المقيّدة بالذاكرة محتفظةً بنواها المخصّصة؛ كما تظل النتائج وأنواع النتائج والحالات الاستثنائية دون تغيير. [#110131](https://github.com/ClickHouse/ClickHouse/pull/110131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح الاستعلام الفرعي الموجود على الجانب الأيمن من `IN`، والذي يكون عموده الوحيد مصفوفة أعمق ببعد واحد من الوسيطة اليسرى، يُفسَّر الآن على أنه مجموعة عناصر المصفوفة (مثل قيمة حرفية لمصفوفة أو دالة تُرجع مصفوفة)، بدلًا من أن يفشل بخطأ مُربِك بسبب عدم تطابق الأنواع. على سبيل المثال، أصبح `x IN (SELECT groupArray(x) FROM ...)` يعمل الآن. [#110169](https://github.com/ClickHouse/ClickHouse/pull/110169) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم تعد القراءة من محرك الجدول `SQLite` أو دالة الجدول `sqlite` تدخل في دوران مشغول يستهلك نواة CPU كاملة عندما تكون قاعدة بيانات SQLite مقفلة بواسطة اتصال آخر. أصبحت القراءة الآن في وضع خمول أثناء انتظار القفل، مع بقائها قابلة للإلغاء. [#110248](https://github.com/ClickHouse/ClickHouse/pull/110248) ([Groene AI](https://github.com/groeneai)).
* قَرِّب قيم Elapsed والمعدل والنسبة في رسائل السجل ورسائل الاستثناء إلى ثلاثة أرقام، بحيث لا تعود الأرقام مثل `1.345844286 sec.` تُطبع بالدقة الكاملة. [#110277](https://github.com/ClickHouse/ClickHouse/pull/110277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب (Play)، أصبح `BFloat16` الآن يُتعرَّف عليه كعدد بفاصلة عائمة، وتُحاذى أعمدته إلى اليمين وتُلوَّن وفقًا لذلك. [#110433](https://github.com/ClickHouse/ClickHouse/pull/110433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم عبارة `SETTINGS` في محرك الجدول `PostgreSQL` ودالة الجدول `postgresql` (على سبيل المثال `SETTINGS postgresql_connection_pool_size = 50`)، بما يحقق تكافؤ الميزات مع المحرك `MySQL`. [#110614](https://github.com/ClickHouse/ClickHouse/pull/110614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `SHOW CREATE TABLE` (وكذلك `SHOW CREATE VIEW` / `SHOW CREATE DICTIONARY`) يقترح الآن جدولًا باسم مشابه في رسالة الخطأ عندما لا يكون الجدول المطلوب موجودًا، بالطريقة نفسها التي تفعلها استعلامات `SELECT`. [#110633](https://github.com/ClickHouse/ClickHouse/pull/110633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تفعيل الإعداد `merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once` افتراضيًا: إذ يقوم محدد الدمج الآن بخفض الحد الأقصى لعدد الأجزاء التي يمكن دمجها دفعةً واحدة تلقائيًا بناءً على مدى امتلاء القسم. راجع [#91163](https://github.com/ClickHouse/ClickHouse/pull/91163). [#110726](https://github.com/ClickHouse/ClickHouse/pull/110726) ([Mikhail Artemenko](https://github.com/Michicosun)).
* اقبل أوامر التنظيف الخاصة بـ PostgreSQL وهي `RESET` و`UNLISTEN` و`DISCARD` باعتبارها عمليات بلا تأثير ضمن بروتوكول PostgreSQL السلكي، بدلًا من إرجاع خطأ في الصياغة لها. وهذا يحسّن التوافق مع برامج التشغيل مثل Skunk التي ترسل `RESET ALL` و`UNLISTEN *` أثناء إعداد الاتصال وتنظيفه. [#110780](https://github.com/ClickHouse/ClickHouse/pull/110780) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تغيير القيمة الافتراضية للإعداد `auto_statistics_types` من `basic, uniq` إلى `basic, uniq_v2`. [#110878](https://github.com/ClickHouse/ClickHouse/pull/110878) ([Han Fei](https://github.com/hanfei1991)).
* أصبح `randomHadamardTransform` يحسب الآن تحويلًا دقيقًا يحافظ على الطول لأي طول متجه لا يزيد أكبر عامل فردي فيه على 64 (على سبيل المثال `3584 = 512 * 7`، وهو شائع في نماذج embedding)، ما يوسّع العائلات المدعومة سابقًا `2^N` و`2^k * {12, 20}` و`2^k * 9`. وأصبح تنفيذ تحويل كامل لطول لا يمكن تمثيله بدقة يطلق استثناءً الآن بدلًا من إضافة أصفار بصمت إلى متجه أطول؛ مرّر `output_dims` لحساب إسقاط مقتطع بطول اعتباطي. [#111006](https://github.com/ClickHouse/ClickHouse/pull/111006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح استثناء `LOGICAL_ERROR` أثناء إنشاء نسخة احتياطية لقاعدة بيانات `Replicated` يجري حذفها وإعادة إنشائها بالتزامن؛ وأصبحت مثل هذه النسخ الاحتياطية تفشل الآن بوضوح مع `CANNOT_GET_REPLICATED_DATABASE_SNAPSHOT`. [#100651](https://github.com/ClickHouse/ClickHouse/pull/100651) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح النظام يعرض الخطأ الحقيقي الأساسي عندما يتعذر فك أرشيف zip (على سبيل المثال، عند قراءة الأرشيف من S3 ورفض read buffer تنفيذ seek). سابقًا، كان الخطأ الفعلي مخفيًا خلف الرسالة العامة `Couldn't unpack zip archive: Code = -100` / `Couldn't open zip archive`. [#105103](https://github.com/ClickHouse/ClickHouse/pull/105103) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تلميح مربك من نوع "Maybe you meant X?" بعد إعادة تشغيل server (أو `DETACH DATABASE`/`ATTACH DATABASE`): إذ كان حذف جدول سبق حذفه قد يقترح الاسم الذي حُذف للتو كبديل. [#106238](https://github.com/ClickHouse/ClickHouse/pull/106238) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح logical error (`Logical error: 'removed'`، وكان يؤدي إلى إيقاف server في builds الخاصة بالتصحيح) في queue الخلفية الخاصة بحذف الجداول، وكان يُحفَّز عند إعادة استخدام معرّف UUID صريح نفسه عبر عدة استعلامات `CREATE OR REPLACE TABLE`، ما يؤدي إلى إدراج أكثر من جدول محذوف واحد يشترك في معرّف UUID نفسه ضمن queue. [#107031](https://github.com/ClickHouse/ClickHouse/pull/107031) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح logical error من نوع `Inconsistent AST formatting` كان يمكن أن يؤدي إلى إيقاف server في builds التصحيح وsanitizer عند استخدام lambda ذات اسم مستعار كمعامل لعامل وصول (عنصر tuple `.N` أو عنصر المصفوفة `[]`) في موضع غير أول ضمن قائمة expression، مثل `SELECT 1, ((p0, p1) -> p0 AS a7).4[3] FROM t`. [#107092](https://github.com/ClickHouse/ClickHouse/pull/107092) ([Groene AI](https://github.com/groeneai)).
* أصبحت cluster table function (`urlCluster`, `fileCluster`, `s3Cluster`, ...) المتداخلة داخل distributed query أخرى، مثل `clusterAllReplicas(..., urlCluster(...))`، تُرفض الآن بخطأ `BAD_ARGUMENTS` بدلًا من الفشل مع logical error (`Distributed task iterator is not initialized`). [#107107](https://github.com/ClickHouse/ClickHouse/pull/107107) ([Groene AI](https://github.com/groeneai)).
* إذا تمت مقاطعة `OPTIMIZE ... DRY RUN` بسبب query timeout (`max_execution_time` مع `timeout_overflow_mode = 'break'`)، فإنها تعيد الآن `TIMEOUT_EXCEEDED` بدلًا من logical error متعلق بـ `rows_sources` (والذي كان يؤدي إلى إيقاف server في builds التصحيح/‏sanitizer). [#107114](https://github.com/ClickHouse/ClickHouse/pull/107114) ([Groene AI](https://github.com/groeneai)).
* لم يعد يُسجَّل الخطأ غير الضار `Net Exception: Socket is not connected` أثناء إنهاء جلسة `ZooKeeper` على macOS. كما لم يعد `clickhouse keeper-client` يطبع هذا الخطأ الزائف إلى stderr عند الخروج. [#107438](https://github.com/ClickHouse/ClickHouse/pull/107438) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح overflow في عدد صحيح موقّع عندما يعيد refreshable materialized view محاولة refresh فاشلة مع ضبط `refresh_retries` على قيمة كبيرة جدًا (قريبة من الحد الأقصى لـ `Int64`). وكان هذا overflow قد يؤدي إلى إيقاف server في builds التي تستخدم undefined behavior sanitizer. [#108005](https://github.com/ClickHouse/ClickHouse/pull/108005) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` (توقّف الخادم في إصدارات debug/sanitizer) عندما يستخدم `JOIN` عامل المقارنة الآمن مع null (`<=>` / `IS NOT DISTINCT FROM`) ويكون أحد المفاتيح استعلامًا فرعيًا قيَميًا، مثل `... JOIN t2 ON (SELECT x FROM t1) <=> t2.k`، مع analyzer القديم (`enable_analyzer = 0`). يُرجع هذا الاستعلام الآن الخطأ العادي `NOT_FOUND_COLUMN_IN_BLOCK` بدلًا من logical error. [#108123](https://github.com/ClickHouse/ClickHouse/pull/108123) ([Groene AI](https://github.com/groeneai)).
* أصبحت استعلامات vector search التي تحدد العمود `_distance` تُرجع خطأً مناسبًا بدلًا من الفشل بسبب logical error. [#108423](https://github.com/ClickHouse/ClickHouse/pull/108423) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح `std::future_error` (`The associated promise has been destructed prior to the associated state becoming ready`) الذي كان قد يظهر ويتسبب في توقّف الخادم في إصدارات debug وsanitizer عند فشل جدولة مهمة الإكمال النهائية غير المتزامنة لرفع الأجزاء المتعددة إلى S3/Azure (على سبيل المثال عند استنفاد مجمع الخيوط). أصبح الآن يُبلَّغ عن خطأ الجدولة الفعلي بدلًا من ذلك. [#108730](https://github.com/ClickHouse/ClickHouse/pull/108730) ([Groene AI](https://github.com/groeneai)).
* تجنّب الإفراط في مخرجات server log ورسالة خطأ ضخمة عند compile regular expression كبيرة جدًا (على سبيل المثال، نمط `LIKE` أو `match` يحتوي على مئات الآلاف من wildcards)؛ إذ تفشل هذه الأنماط الآن بخطأ واضح هو `CANNOT_COMPILE_REGEXP`. [#108821](https://github.com/ClickHouse/ClickHouse/pull/108821) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح سلوك غير معرّف عند تحويل packet type في protocol إلى سلسلة نصية عندما تكون خارج النطاق (مثلًا في رسائل الخطأ `Unexpected packet from server` / `Received ... packet`) في حالة connection غير متزامنة أو خاضعة للاختبار العشوائي. [#108885](https://github.com/ClickHouse/ClickHouse/pull/108885) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ داخلي مُربك (`Method getResultType is not supported for TABLE query tree node`) عندما كان يُستخدم تعبير table بوصفه الـ argument الأيسر لعامل التشغيل `IN`؛ وتنتج هذه الاستعلامات الآن رسالة خطأ واضحة. [#109412](https://github.com/ClickHouse/ClickHouse/pull/109412) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح قراءة Iceberg table مع ملف البيانات الوصفية يكون رقم الإصدار فيه مكوّنًا بالكامل من أرقام، لكنه يتجاوز نطاق الأعداد الصحيحة ذات 32 بت (مثل `v99999999999999999999.metadata.json`). كان هذا الاسم يُنتج سابقًا الخطأ الغامض `std::out_of_range` (`STD_EXCEPTION`) بدلًا من الخطأ الواضح `BAD_ARGUMENTS`. [#109619](https://github.com/ClickHouse/ClickHouse/pull/109619) ([Groene AI](https://github.com/groeneai)).
* إصلاح احتمال ظهور `Logical error: 'ReadBuffer is canceled. Can't read from it.'` عندما يفشل input format قائم على الصفوف (مثل `TSV`/`CSV`) في parse الإدخال، وتكون عملية القراءة الأساسية قد أُلغيت بالفعل (على سبيل المثال، جزء HTTP غير صحيح أو body مقتطع). ولم يعد إنشاء تشخيصات parse المفصلة يقرأ من buffer أُلغي. [#109708](https://github.com/ClickHouse/ClickHouse/pull/109708) ([Groene AI](https://github.com/groeneai)).
* أصبحت تعبيرات filter expression في سياسات الصفوف التي تستخدم `arrayJoin` (أو الاسم المستعار `unnest` لها) تُرفض الآن بخطأ واضح؛ إذ كانت هذه policies تتسبب سابقًا في logical error من النوع `column->size() == num_rows` أثناء query time. [#109753](https://github.com/ClickHouse/ClickHouse/pull/109753) ([Raúl Marín](https://github.com/Algunenano)). [#109973](https://github.com/ClickHouse/ClickHouse/pull/109973) ([Raúl Marín](https://github.com/Algunenano)).
* أصبحت قراءة Paimon table التي يحتوي مخططها على Nested type غير مدعوم (مثل حقل `ROW`) تُبلّغ الآن عن خطأ واضح `BAD_ARGUMENTS` يذكر النوع غير المدعوم، بدلًا من `DB::Exception. (OK)` مجرد مع رمز الخطأ 0 ومن دون رسالة. [#109762](https://github.com/ClickHouse/ClickHouse/pull/109762) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR`‏ (`std::length_error`) عند استخدام استعلام مع الإعداد التجريبي `make_distributed_plan = 1` لقيمة كبيرة جدًا في `distributed_plan_default_reader_bucket_count` أو `distributed_plan_default_shuffle_join_bucket_count`. تُرفَض هذه القيم الآن بالخطأ `INVALID_SETTING_VALUE`. [#109770](https://github.com/ClickHouse/ClickHouse/pull/109770) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR`‏ (`query tree node does not have valid source node`) عندما كان تعبير الجدول الشائع التعاودي يحلّ معرّفًا من نطاق خارجي باعتباره عمودًا مترابطًا (مع `allow_experimental_correlated_subqueries = 1`). تُرجِع مثل هذه الاستعلامات الآن خطأ `UNSUPPORTED_METHOD` واضحًا. [#109863](https://github.com/ClickHouse/ClickHouse/pull/109863) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاوز سعة لعدد صحيح موقّع عندما يتجاوز `ORDER BY ... WITH FILL` فجوة كبيرة جدًا في عمود `Int64`/`UInt64` (مثل خطوة مقدارها 2 عبر فجوة قريبة من 2^63). كان هذا التجاوز سلوكًا غير معرّف في أدوات sanitizer، وكان يلتفّ بصمت في إصدارات الإصدار. [#109937](https://github.com/ClickHouse/ClickHouse/pull/109937) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `Bad cast from type DB::FunctionNode to DB::ConstantNode` (يتسبب في إنهاء الخادم في إصدارات debug/sanitizer) عند تشغيل `SELECT ... ORDER BY ... WITH FILL` على جدول `Distributed` مع قيمة منخفضة لـ `optimize_const_name_size`. [#109938](https://github.com/ClickHouse/ClickHouse/pull/109938) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `Invalid number of rows in Chunk` عندما يكون هدف `INTERPOLATE` اسمًا مستعارًا لعمود `WITH FILL` مع المحلل القديم (`enable_analyzer = 0`). تُرفَض مثل هذه الاستعلامات الآن بخطأ `INVALID_WITH_FILL_EXPRESSION` واضح. [#110103](https://github.com/ClickHouse/ClickHouse/pull/110103) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (يتسبب في إنهاء الخادم في إصدارات debug/sanitizer) عندما تُمرَّر إلى الدوال `indexHint`/`ignore`/`isZeroOrNull` وسيطة يُحَلّ نوعها إلى `Nothing`، مثل داخل تعبيرات من قبيل `indexHint(assumeNotNull(materialize(NULL)))`. [#110192](https://github.com/ClickHouse/ClickHouse/pull/110192) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `Too large size (...) passed to allocator` كان يمكن أن يحدث عند ضبط قيمة خارج النطاق لإعداد حجم مخزن القراءة المؤقت مثل `max_read_buffer_size` أو `max_read_buffer_size_local_fs`. تُقيَّد هذه القيم الآن إلى 256 MiB عبر فحص سلامة الإعدادات، وكذلك في موضع الاستخدام لـ `INSERT ... FROM INFILE`، الذي يقرأ الملفات داخل `clickhouse-client` حيث لا ينطبق فحص السلامة. [#110207](https://github.com/ClickHouse/ClickHouse/pull/110207) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُبلّغ `CHECK TABLE` الآن عن التلف الفعلي في جزء الإسقاط الذي فشل في تحميل بياناته الوصفية، بدلًا من الخطأ المضلل `Columns doesn't match ... Expected: 0 columns`. [#110262](https://github.com/ClickHouse/ClickHouse/pull/110262) ([Raúl Marín](https://github.com/Algunenano)).
* يُبلَّغ الآن عن عدم تطابق النوع الذي يحدث عندما يتعذر تحليل قيمة مقروءة من مصدر PostgreSQL (مثل `postgresql` table function أو `PostgreSQL` table engine) إلى نوع العمود المصرَّح به (على سبيل المثال، عمود `text` مصرَّح به كـ `Int32`) على أنه خطأ استعلام صحيح؛ بينما كان سابقًا يؤدي إلى إنهاء الخادم في إصدارات debug وsanitizer. [#110264](https://github.com/ClickHouse/ClickHouse/pull/110264) ([Groene AI](https://github.com/groeneai)).
* دعم query profiler وmemory profiler وtrace profiler، وكذلك ترميز الرموز لـ `system.trace_log` على macOS. [#109825](https://github.com/ClickHouse/ClickHouse/pull/109825) ([Raúl Marín](https://github.com/Algunenano)).
* تحديث `chdig` إلى [v26.7.1](https://github.com/azat/chdig/releases/tag/v26.7.1): ضغط تتبعات المكدس لأغراض المشاركة، وأنماط الاستعلامات، ودعم ذاكرة Arena المنفصلة، وتحسينات Perfetto، وإصلاحات التوافق. [#110938](https://github.com/ClickHouse/ClickHouse/pull/110938) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الاستدلال غير الصحيح على الرتابة لـ `intDiv` عند استخدام مفتاح غير موقّع مقسوم على ثابت موقّع، وهو ما كان قد يعطّل تشذيب فهرس المفتاح الأساسي لشروط `IN`/`NOT IN` التي تتجاوز الحدّ الموقّع لنوع النتيجة؛ كما كانت إصدارات Debug تصطدم أيضًا بالخطأ `LOGICAL_ERROR` ‏`Invalid binary search result in MergeTreeSetIndex`. [#107586](https://github.com/ClickHouse/ClickHouse/pull/107586) ([Groene AI](https://github.com/groeneai)).
* تمت إضافة الإعداد `allow_lossy_numeric_supertype` (وهو معطّل افتراضيًا). عند تفعيله، فإن `if` و`multiIf` و`coalesce` و`ifNull` و`array` و`map` عند استخدامها مع وسائط رقمية لا تملك نوعًا مشتركًا من دون فقدان (مثل `Decimal` و`Float64`، أو `Int64` و`Float64`) يُحسم نوعها إلى `Float64` بدلًا من `Variant`، بحيث يمكن استخدام النتيجة مع الدوال التجميعية مثل `sum` و`avg` و`min` و`max`. وتذكر رسائل الخطأ ذات الصلة بالدوال التجميعية الآن اسم الإعداد صراحةً. يُغلق [#106707](https://github.com/ClickHouse/ClickHouse/issues/106707). [#107236](https://github.com/ClickHouse/ClickHouse/pull/107236) ([Groene AI](https://github.com/groeneai)).
* بدء تشغيل نقطة نهاية Prometheus (للتكوينات المخصّصة للمقاييس فقط) وجمع المقاييس غير المتزامن قبل تحميل الجداول، بحيث تصبح المقاييس مرئية أثناء مرحلة تحميل البيانات الوصفية التي قد تطول. [#108402](https://github.com/ClickHouse/ClickHouse/pull/108402) ([Christoph Wurm](https://github.com/cwurm)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* إصلاح فشل `TRUNCATE TABLE` و`DROP PARTITION` على الجداول التي تحتوي على عدد كبير من كتل deduplication، إذ إن حذفها ضمن طلب ZooKeeper واحد قد يتجاوز الحد الافتراضي `jute.maxbuffer` البالغ 1 ميغابايت. [#105991](https://github.com/ClickHouse/ClickHouse/pull/105991) ([Clayton McClure](https://github.com/cmcclure-twilio)). لا يؤثر هذا عليك إلا إذا كنت تستخدم Apache ZooKeeper (وهو غير موصى به) بدلًا من ClickHouse Keeper.
* إصلاح استخدام أسماء الأعمدة المؤهلة (`database.table.column`) في عبارة `WHERE` الخاصة بالـ mutations، مثل `DELETE FROM` و`ALTER TABLE ... UPDATE/DELETE`، على جداول عائلة `MergeTree`؛ إذ كانت هذه الاستعلامات تفشل سابقًا بسبب خطأ missing-columns. يغلق [#71760](https://github.com/ClickHouse/ClickHouse/issues/71760). [#109491](https://github.com/ClickHouse/ClickHouse/pull/109491) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح ذاكرة التخزين المؤقت لنتائج الاستعلام لاستعلامات PromQL. كانت dialect ‏`promql` تتجاوز فحص الدوال غير الحتمية، وكان من الممكن أن تعرض نتائج قديمة مرتبطة بـ `now()`؛ كما أن Prometheus HTTP API (`/api/v1/query`, `/api/v1/query_range`) لم يكن يخزن أي cache entries على الإطلاق. [#110887](https://github.com/ClickHouse/ClickHouse/pull/110887) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* إصلاح فشل بدء تشغيل الخادم عندما يكون متغير البيئة `TZ` فارغًا. يغلق [#68920](https://github.com/ClickHouse/ClickHouse/issues/68920). [#68921](https://github.com/ClickHouse/ClickHouse/pull/68921) ([Ardenwick](https://github.com/ardenwick)).
* تم إصلاح فشل بدء تشغيل الخادم عندما يشير محرك قاعدة البيانات `Backup` إلى نسخة احتياطية أصبحت غير متاحة (على سبيل المثال، عند حذف ملفاتها أو تعذر الوصول إلى طبقة التخزين الأساسية). تُحمَّل قاعدة البيانات الآن بدون جداول بدلًا من منع الخادم بالكامل من بدء التشغيل. [#83188](https://github.com/ClickHouse/ClickHouse/pull/83188) ([Vitaly Orlov](https://github.com/orloffv)).
* عند استخدام inserts في الخلفية إلى جداول بمحرك `Distributed`، فإن التأخيرات الناتجة عن الأخطاء المتكررة عند إرسال البيانات إلى shards البعيدة تبدأ الآن في الانخفاض بمجرد حل تلك الأخطاء. سابقًا، كان التأخير يزداد فقط ولا يُعاد ضبطه مطلقًا. [#87378](https://github.com/ClickHouse/ClickHouse/pull/87378) ([Andrei Kochemirovskii](https://github.com/Blackmorse)).
* إصلاح `broken_data_files` في `system.distribution_queue`، وكذلك إصلاح كون Metric ‏`BrokenDistributedFilesToInsert` تُبلغ دائمًا عن `0` للملفات التالفة التي يُعثر عليها عند فحص queue الخاصة بـ async-insert لمحرك `Distributed` أثناء بدء التشغيل. [#92124](https://github.com/ClickHouse/ClickHouse/pull/92124) ([KG.Xu](https://github.com/squalfof)).
* إصلاح تعافي logging بعد خطأ امتلاء القرص. سابقًا، عندما يمتلئ قرص السجل، كان ClickHouse يدخل في حالة فشل ويواصل إغراق syslog برسائل error (بما قد يصل إلى أكثر من 100 غيغابايت/ساعة)، من دون أن يتعافى حتى بعد تحرير مساحة على القرص. الآن يتعافى نظام logging تلقائيًا بمجرد توفر مساحة على القرص، من دون الحاجة إلى إعادة تشغيل الخادم. [#93127](https://github.com/ClickHouse/ClickHouse/pull/93127) ([jaehanbyun](https://github.com/jaehanbyun)).
* تمرير بيانات اعتماد S3 الثابتة إلى عمليات قراءة جدول Unity `DataLakeCatalog` عند تعطيل `vended_credentials`، مما يمنع حالات فشل الوصول المجهول إلى تخزين الكائنات. [#96910](https://github.com/ClickHouse/ClickHouse/pull/96910) ([kgeg401](https://github.com/kgeg401)).
* إصلاح انهيار في شيفرة parsing الخاصة بالمخطط في محرك الجدول `DeltaLake`. [#97112](https://github.com/ClickHouse/ClickHouse/pull/97112) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح مشكلة أمنية كان يمكن من خلالها لعميل TCP غير موثَّق الاستعلام عن وجود جدول وحالة replication عبر منفذ interserver. [#99854](https://github.com/ClickHouse/ClickHouse/pull/99854) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح خطأ نحوي عند ورود اسم مستعار بعد استعلام فرعي في `DESCRIBE TABLE`. يُصلح [#100031](https://github.com/ClickHouse/ClickHouse/issues/100031). [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء في استعلام فرعي مترابط عندما تصبح الأعمدة الخارجية `Nullable` تحت `group_by_use_nulls` مع `ROLLUP`/`CUBE`. [#100365](https://github.com/ClickHouse/ClickHouse/pull/100365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح توقّف للخادم (في بنى sanitizer) وفقدان صامت للبيانات أثناء بدء تشغيل الجدول عندما يتقاطع جزء `MergeTree` معاملاتي تم التراجع عنه مع جزء مُثبّت. [#100992](https://github.com/ClickHouse/ClickHouse/pull/100992) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح مشكلة في `indexOfAssumeSorted` كانت تؤدي إلى إرجاع نتائج غير صحيحة لأعمدة `Array(LowCardinality(String))` في جداول `MergeTree`. [#101771](https://github.com/ClickHouse/ClickHouse/pull/101771) ([Yash ](https://github.com/Onyx2406)).
* إصلاح pruning غير صحيح للمفتاح الأساسي عندما يغلّف مفتاح الفرز في الجدول عمود `Date` داخل `toDateTime` (على سبيل المثال، `ORDER BY toDateTime(date_column)`) ويطبّق استعلام شرط تصفية على العمود الأصلي بمقارنة مثل `WHERE date_column >= '...'`. يحدث overflow في `toDateTime(Date)` لقيم `Date` التي تتجاوز نطاق `DateTime` (بعد `2106-02-07`)، لذلك يصبح المفتاح المخزَّن غير رتيب؛ ولم يعد ClickHouse يستخدم pruning للمفتاح الأساسي لهذا الجمع بين المفتاح والشرط لأن ذلك قد يستبعد granules تحتوي على صفوف مطابقة. يُغلق [#101744](https://github.com/ClickHouse/ClickHouse/issues/101744). [#101814](https://github.com/ClickHouse/ClickHouse/pull/101814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح `intDivOrNull` و`moduloOrNull` و`positiveModuloOrNull` التي كانت تُرجع `0` بدلًا من `NULL`، وكذلك `intDivOrNull` و`intDivOrZero` اللتين كانتا تثيران استثناءً بدلًا من إرجاع `NULL` / `0`، عندما تؤدي القسمة إلى floating-point exception (القسمة على صفر أو `INT_MIN / -1`)، بما في ذلك الوسائط المختلطة signed/unsigned. [#101976](https://github.com/ClickHouse/ClickHouse/pull/101976) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناءات `LOGICAL_ERROR` عند قراءة جداول `Iceberg` أو `DeltaLake` في حالات طرفية مثل تحديثات metadata المتزامنة في `Iceberg` أو عمليات القراءة عبر `merge` table function فوق جداول `DeltaLake`. [#102033](https://github.com/ClickHouse/ClickHouse/pull/102033) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل طلبات HTTP الصادرة (مثل الدالة `aiGenerate`، و`url` table function، وS3) برسالة `No route to host` على المضيفات التي تعلن عن عنواني IPv4 وIPv6 معًا عندما تكون عائلة عناوين واحدة فقط قابلة للتوجيه. وأصبح HTTP connection pool الآن ينتقل إلى العنوان التالي الذي تم حلّه عندما يفشل العنوان الأول بخطأ شبكة، بدلًا من تمرير الخطأ مباشرةً من أول طلب. [#103786](https://github.com/ClickHouse/ClickHouse/pull/103786) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح توقّف للخادم أثناء `RESTORE` للنسخ الاحتياطية التي تحتوي على جداول ذات dependencies دورية. [#103824](https://github.com/ClickHouse/ClickHouse/pull/103824) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبح schema inference لأعمدة Arrow ‏`time32`/`time64` (مثل `SELECT * FROM file(..., 'Arrow')`) يستنتج الآن `Time64` بدلًا من `DateTime64`؛ وأي مكوّن لاحق يعتمد على النوع المستنتَج السابق سيلاحظ النوع الجديد بعد الترقية. كذلك، يمكن الآن تصدير قيم `Time`/`Time64` إلى Arrow مع اختيار نوع الوقت المناسب في Apache Arrow بحسب precision. يُصلح [#104038](https://github.com/ClickHouse/ClickHouse/issues/104038). [#104316](https://github.com/ClickHouse/ClickHouse/pull/104316) ([/bin/cat](https://github.com/Maoyao233)).
* تم إصلاح حالة تسابق بين `ALTER TABLE ... RENAME COLUMN` و`OPTIMIZE TABLE ... FINAL` متزامن (أو أي merge في الخلفية) في `MergeTree`، كانت قد تؤدي بصمت إلى استبدال بيانات العمود المُعاد تسميته بقيم default. [#104822](https://github.com/ClickHouse/ClickHouse/pull/104822) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `Block structure mismatch` أثناء تنفيذ `INSERT` متزامن بينما تكون `ALTER TABLE ... RENAME COLUMN` قيد التنفيذ، في database من نوع `Atomic` مع `lazy_load_tables = 1` بعد `DETACH DATABASE`/`ATTACH DATABASE`. [#104852](https://github.com/ClickHouse/ClickHouse/pull/104852) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `groupConcat` عند خلط الصياغة المعلَّمية والصياغة ذات الوسيطين، مثل `groupConcat(',', 2)(x, '/')`: كان parameter الخاص بحدّ الصفوف يُهمَل بصمت، لذا كانت كل row تُعاد بدلًا من العدد المطلوب؛ والآن يطغى Delimiter من الوسيط الثاني على parameter بشكل صحيح. [#104882](https://github.com/ClickHouse/ClickHouse/pull/104882) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح خطأ `LOGICAL_ERROR` (`Expected one block from input stream`) الذي كان يُطرَح بواسطة `KILL QUERY`/`KILL MUTATION`/`KILL PART_MOVE_TO_SHARD`/`KILL TRANSACTION` عندما تحتوي عبارة `WHERE` الخاصة بها على subquery لكل row، أو عندما يكون `max_block_size` صغيرًا بما يكفي بحيث يُصدر `SELECT` الداخلي على جدول `system.*` ذي الصلة أكثر من block واحد. [#104927](https://github.com/ClickHouse/ClickHouse/pull/104927) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `CAST` من وحدات interval الأصغر إلى الأكبر، والذي كان يعيد نتائج خاطئة (على سبيل المثال، كان `CAST(toIntervalSecond(60) AS IntervalMinute)` يعيد `0` بدلًا من `1`). يُغلق [#104986](https://github.com/ClickHouse/ClickHouse/issues/104986). [#105058](https://github.com/ClickHouse/ClickHouse/pull/105058) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح خطأ منطقي (`Assertion 'row < chunk.getNumRows()' failed`) في queries من نوع `LIMIT ... WITH TIES` التي تعمل مع pipeline القراءة بالترتيب (`optimize_read_in_order = 1` و`read_in_order_use_virtual_row_per_block = 1`). [#105102](https://github.com/ClickHouse/ClickHouse/pull/105102) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تسرّب في refreshable materialized views (`MATERIALIZED VIEW ... REFRESH ...`): إذ كان يتعذر تنفيذ drop للـ table الداخلية المؤقتة التي يستبدلها refresh عبر `EXCHANGE TABLES` إذا كان حجمها أكبر من `max_table_size_to_drop`، لذلك كان كل refresh لاحق ينشئ table داخلية مؤقتة إضافية، ما يؤدي إلى نمو directory بيانات الـ view حتى امتلاء القرص. وأصبح drop الداخلي لمهمة refresh الآن يتجاوز `max_table_size_to_drop` و`max_partition_size_to_drop`؛ فيما تظل وسائل الأمان هذه مطبّقة على `DROP TABLE` الصادر من المستخدم للـ view نفسها. يُغلق [#104900](https://github.com/ClickHouse/ClickHouse/issues/104900). [#105106](https://github.com/ClickHouse/ClickHouse/pull/105106) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ غير متوقع `DATA_TYPE_CANNOT_BE_USED_IN_KEY` في queries `ALTER` التي لا تغيّر sorting key (مثل تغيير settings أو comments أو codecs أو إضافة column غير مفتاحي، إلخ) لجداول `MergeTree` التي تحتوي على `SimpleAggregateFunction` (أو نوع آخر مسموح فقط مع `allow_suspicious_primary_key = 1`) في sorting key. [#105111](https://github.com/ClickHouse/ClickHouse/pull/105111) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حالة use-after-free عند الاستعلام عن أعمدة حالة النسخ المتماثلة في `system.clusters` (مثل `is_active` و`unsynced_after_recovery` و`recovery_time`) أثناء إسقاط قاعدة بيانات `Replicated` أو فصلها. كذلك، أصبحت استثناءات Keeper غير الضارة التي كانت تُبتلع في هذا المسار من الشيفرة (إذ تُعامَل قاعدة البيانات المتأثرة على أنها غير متاحة مؤقتًا ويتم تخطيها) تُسجَّل الآن عند المستوى `Information` بدلًا من `Error`، لذلك لم تعد تصل إلى العملاء مع الإعداد الافتراضي `send_logs_level = 'warning'`. [#105149](https://github.com/ClickHouse/ClickHouse/pull/105149) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة كانت تؤدي عند تشغيل عدة statements في `clickhouse-local --ignore-error` إلى إعادة طباعة كل statement لاحقة داخل رسالة الخطأ عند كل خطأ lexical أو خطأ ناتج عن عدم تطابق الأقواس. [#105480](https://github.com/ClickHouse/ClickHouse/pull/105480) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل نادر في الخادم عند إسقاط refreshable materialized views أو استبدالها بالتزامن مع جدولة تحديثها. [#105588](https://github.com/ClickHouse/ClickHouse/pull/105588) ([Groene AI](https://github.com/groeneai)).
* أصبح `ALTER TABLE ... DELETE` و`ALTER TABLE ... UPDATE` على جداول `Iceberg` التي لا يكون تنسيق ملف البيانات فيها `Parquet` مرفوضَين الآن برسالة الخطأ الواضحة `NOT_IMPLEMENTED` بدلًا من تعطل الخادم أو إفساد الجدول بصمت. [#105893](https://github.com/ClickHouse/ClickHouse/pull/105893) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج غير صحيحة من view معرّف باستخدام `EXCEPT` أو `INTERSECT` عندما يكون أحد المعاملات سلسلة `UNION`، وذلك بعد `DETACH`/`ATTACH` أو إعادة تشغيل الخادم. كان الـ formatter يفتقد إلى الأقواس حول عناصر `UNION` التابعة لـ `INTERSECT`/`EXCEPT`، لذلك أُعيد parse لـ SQL المخزن بأسبقية معكوسة. [#105935](https://github.com/ClickHouse/ClickHouse/pull/105935) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح اكتشاف بيانات `JSON` بالخطأ على أنها `TSKV` أثناء الاكتشاف التلقائي للتنسيق. يُغلق [#100797](https://github.com/ClickHouse/ClickHouse/issues/100797). [#106009](https://github.com/ClickHouse/ClickHouse/pull/106009) ([Pavel Kruglov](https://github.com/Avogar)).
* تم منع إنشاء skip index من نوع `minmax` مباشرة على columns من نوع `JSON` — إذ كان ذلك قد يؤدي لاحقًا إلى فشل عمليات insert مع الاستثناء `NO_COMMON_TYPE` عند إدراج arrays مختلطة الأنواع. أنشئ الـ index على subcolumns محددة النوع بدلًا من ذلك (مثل `INDEX idx json.field TYPE minmax`). [#106094](https://github.com/ClickHouse/ClickHouse/pull/106094) ([linhaojie](https://github.com/linhaojie)).
* تم إصلاح خطأ منطقي (`Parsed partition value ... doesn't match partition value for an existing part with the same partition ID`) كان يطرحه `OPTIMIZE TABLE ... PARTITION ...` واستعلامات أخرى تحل قيمة partition، في الجداول التي تستخدم مفتاح partition من النوع `Time`. [#106202](https://github.com/ClickHouse/ClickHouse/pull/106202) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حالة كان فيها data part يُعلَّم خطأً على أنه يحتوي على projection معطوب بعد أن لا تترك lightweight delete أي projection part — سواء عند إعادة بناء الـ projection من دون أي rows ناتجة أو عند إسقاطه (`lightweight_mutation_projection_mode = 'rebuild'`/`'drop'`). وكانت هذه الحالة المعطوبة تعطل سابقًا optimization الخاصة بالـ projection للاستعلامات على ذلك الـ part. [#106273](https://github.com/ClickHouse/ClickHouse/pull/106273) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح `removeDirectory` على أقراص object storage من نوع `plain` (مثل `s3_plain`)؛ إذ كان يحذف كل الملفات داخل directory غير فارغ كما لو أن الحذف تعاودي. أما الآن، فيفشل حذف directory غير فارغ بالخطأ `CANNOT_RMDIR`، بينما يتعامل الحذف التعاودي مع المحتويات صراحةً. [#106281](https://github.com/ClickHouse/ClickHouse/pull/106281) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* تم إصلاح خطأ منطقي (`Part ... doesn't exist`) كان يمكن أن يؤدي إلى توقف الخادم أثناء recovery لعملية `INSERT` باستخدام quorum بعد خطأ عتادي في Keeper، عندما كان الـ quorum يُعلَّم في الوقت نفسه على أنه فشل. [#106424](https://github.com/ClickHouse/ClickHouse/pull/106424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` المتعلق بتكرار أسماء الأعمدة عند تطبيق سياسات الصفوف. [#106438](https://github.com/ClickHouse/ClickHouse/pull/106438) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح مشكلة في `CREATE OR REPLACE TABLE` و`REPLACE TABLE` كانت تتسبب في ترك جدول `_tmp_replace_*` عالقًا على القرص واستبدال الجدول الأصلي بجدول فارغ عندما يتجاوز الهدف الحالي `max_table_size_to_drop`. أصبح فحص الحجم يُجرى الآن قبل التبديل، بحيث يؤدي تجاوز الحد إلى إجهاض العملية بشكل سليم مع إظهار اسم الجدول الظاهر للمستخدم في رسالة الخطأ. [#106782](https://github.com/ClickHouse/ClickHouse/pull/106782) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة في `JSON_QUERY`/`JSON_VALUE`/`JSON_EXISTS` كانت تُرجع `Dynamic` بدلًا من `String`/`UInt8` عند استخدام وسيطات `Dynamic`. يُغلق [#106461](https://github.com/ClickHouse/ClickHouse/issues/106461). [#106877](https://github.com/ClickHouse/ClickHouse/pull/106877) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح نتائج غير صحيحة عند الاستعلام من جدول `ReplacingMergeTree` باستخدام `FINAL` ومرشح على فهرس نصي بينما كان `query_plan_optimize_lazy_final` مفعّلًا. كان تحسين `FINAL` الكسول ينشئ خطوات قراءة لا تعكس القراءة المباشرة من الفهرس النصي، ولذلك كان المرشح يستبعد جميع الصفوف المطابقة. [#106894](https://github.com/ClickHouse/ClickHouse/pull/106894) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تطبيق `query_masking_rules` على الرسائل الملحقة بالاستثناءات، حتى لا تتسرّب بيانات الاعتماد المرمّزة بعنوان URL في اللواحق `(in file/uri ...)` الخاصة بالأخطاء الصادرة من table functions `jdbc`/`odbc` عند تهيئة قواعد الإخفاء. [#106916](https://github.com/ClickHouse/ClickHouse/pull/106916) ([Gaurav Dubey](https://github.com/gaurav0107)).
* إصلاح مشكلة كانت تؤدي إلى وسم الأجزاء بأنها تالفة وفصلها عند أي إعادة تحميل للجزء (إعادة تشغيل الخادم، `DETACH`/`ATTACH`) في الجداول التي تحتوي على عمود `LowCardinality(Nullable(...))` في مفتاح partition. منذ 26.5، لم يكن ملف فهرس minmax لكل جزء يُكتب عندما تكون القيمتان الدنيا والعظمى لمثل هذا العمود هما `NULL`، بينما كان فحص اتساق الجزء لا يزال يتطلب هذا الملف. الأجزاء المكتوبة بالإصدارات المتأثرة تفتقر إلى ملف فهرس minmax، وما تزال بحاجة إلى إعادة إرفاقها يدويًا. يُغلق [#106837](https://github.com/ClickHouse/ClickHouse/issues/106837). [#106945](https://github.com/ClickHouse/ClickHouse/pull/106945) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح `LOGICAL_ERROR` نادر (`Unexpected expression in JOIN ON section. Expected boolean (UInt8), got 'Nothing'`) عندما يُشير predicate غير قائم على المساواة في `JOIN ... ON` إلى عمود من النوع `Nothing`، مثل عمود ناتج عن `ARRAY JOIN []`. [#106981](https://github.com/ClickHouse/ClickHouse/pull/106981) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` نادر (`Attempt to release query context that does not exist`) والانهيار المصاحب للخادم عند قراءة جداول `MergeTree` عبر cache disk لنظام الملفات أُنشئ باستخدام `enable_filesystem_query_cache_limit = 1`. [#107028](https://github.com/ClickHouse/ClickHouse/pull/107028) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم عند نقل جزء فارغ إلى قرص `plain_rewritable` (على سبيل المثال، باستخدام `ALTER TABLE ... MOVE PARTITION ... TO DISK` لجزء فارغ تم الاحتفاظ به بسبب `remove_empty_parts = 0`). [#107040](https://github.com/ClickHouse/ClickHouse/pull/107040) ([Groene AI](https://github.com/groeneai)).
* إصلاح ترتيب صفوف غير صحيح في استعلامات `ORDER BY` على `UNION ALL` مع تفعيل `optimize_read_in_order` و`read_in_order_use_virtual_row`. يُغلق [#106879](https://github.com/ClickHouse/ClickHouse/issues/106879). [#107053](https://github.com/ClickHouse/ClickHouse/pull/107053) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح `LOGICAL_ERROR` (`Unsupported argument types`) في الدالة `geohashesInBox` عندما كانت وسائط الإحداثيات تخلط بين القيم الثابتة وغير الثابتة، أو عندما كانت إحدى الإحداثيات من النوع `BFloat16`. وأصبحت الآن وسائط `Float32` المختلطة بين الثابت وغير الثابت تعمل، بينما تُرفض وسائط `BFloat16` برسالة خطأ واضحة. [#107063](https://github.com/ClickHouse/ClickHouse/pull/107063) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج خاطئة (صفوف مكررة) في `SELECT DISTINCT` فوق `GROUP BY` مع `WITH CUBE` أو `WITH ROLLUP` أو `GROUPING SETS` على المفاتيح نفسها. ولم تعد آلية التحسين `query_plan_remove_redundant_distinct` تزيل `DISTINCT` في هذه الحالات، لأن مُعدِّلات التجميع تُنتج صفوفًا إضافية مع ضبط أعمدة المفاتيح على القيم الافتراضية، ما قد يؤدي إلى تعارض مع قيم المجموعات الفعلية. [#107072](https://github.com/ClickHouse/ClickHouse/pull/107072) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتيجة خاطئة في `OUTER JOIN` عندما يكون عامل التصفية `WHERE` اقترانًا يتضمن حدًا ثابتًا (مثل `p AND 1`، أو `WHERE p QUALIFY NULL` حيث يُدمج `QUALIFY NULL` في `WHERE`). إذ كان يمكن دفع الحد الثابت إلى الجانب غير المحفوظ من الوصلة وإزالته من عامل التصفية بعد الوصلة، فتُنتج الوصلة صفوفًا غير متطابقة مع ضبط أعمدة ذلك الجانب على القيم الافتراضية، ثم تمر هذه الصفوف عبر عامل التصفية على نحو غير صحيح. [#107084](https://github.com/ClickHouse/ClickHouse/pull/107084) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة عدم التقاط الدوال المعرفة من قبل المستخدم `executable_pool` المُهيأة باستخدام `<lifetime>` للتغييرات التي تطرأ على البرنامج النصي الأساسي. سابقًا، كان `SYSTEM RELOAD FUNCTIONS` وحده يعيد قراءة برنامج نصي عُدِّل؛ أما عمليات إعادة التحميل الدورية لـ `<lifetime>` فكانت تواصل تنفيذ الإصدار القديم. [#107087](https://github.com/ClickHouse/ClickHouse/pull/107087) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) في استعلام فرعي قيَمي مترابط فوق مصدر يُسقِط معرّف العمود نفسه مرتين (مثل `SELECT number, *`) عندما يكون `correlated_subqueries_default_join_kind = 'left'`. [#107112](https://github.com/ClickHouse/ClickHouse/pull/107112) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حالة تسابق بيانات في مجمّع التتبّع العام على مستوى الخادم بين خيط عمل يبدأ أداة التحليل الخاصة به وعملية إيقاف الخادم. [#107307](https://github.com/ClickHouse/ClickHouse/pull/107307) ([Groene AI](https://github.com/groeneai)).
* لم تعد النسخ الاحتياطية التزايدية تخزّن بيانات اعتماد `S3` في محدِّد `<base_backup>` داخل ملف البيانات الوصفية `.backup`. فالنسخ الاحتياطية المُنشأة باستخدام `use_same_s3_credentials_for_base_backup = 1`، أو باستخدام بيانات اعتماد صريحة للنسخة الاحتياطية الأساسية تطابق هذا المحدِّد، تخزّن علامة غير سرية ويمكن استعادتها من دون إعدادات إضافية وقت الاستعادة؛ أما النسخ الاحتياطية المُنشأة ببيانات اعتماد صريحة مختلفة للنسخة الاحتياطية الأساسية أو بوسائط مصادقة أساسية إضافية، فيجب تمريرها إلى `RESTORE` باستخدام الإعداد `base_backup`. وتظل النسخ الاحتياطية التي أنشأتها الإصدارات الأقدم باستخدام بيانات اعتماد مضمّنة قابلة للاستعادة. [#107357](https://github.com/ClickHouse/ClickHouse/pull/107357) ([Pablo Marcos](https://github.com/pamarcos)).
* تم إصلاح مشكلة في `CSVWithNames` و`CSVWithNamesAndTypes` حيث كانت الترويسة تحتوي على أعمدة أقل من البيانات عند تفعيل `output_format_csv_serialize_tuple_into_separate_columns` (وهو الإعداد الافتراضي). وتقوم الترويسة الآن (وكذلك صف الأنواع) بتسطيح أعمدة `Tuple` إلى حقولها الطرفية بأسماء منقوطة (مثل `t.a` و`t.b`)، بحيث يطابق عدد أعمدة الترويسة عدد أعمدة البيانات. ويتحكم إعداد جديد هو `output_format_csv_header_serialize_tuple_into_separate_columns` (القيمة الافتراضية `1`) في هذا السلوك، ويمكن ضبطه على `0` لاستعادة الترويسة السابقة ذات الاسم الواحد. [#107371](https://github.com/ClickHouse/ClickHouse/pull/107371) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة جداول `Iceberg` v3 التي تحتوي ملفات بيانات `Parquet` فيها أعمدة row-lineage محجوزة (مثل `_row_id`)؛ ولم يعد قارئ `Parquet` الأصلي يطلق `ICEBERG_SPECIFICATION_VIOLATION` بسبب معرّفات الحقول المحجوزة التي ليست جزءًا من مخطط الجدول. [#107377](https://github.com/ClickHouse/ClickHouse/pull/107377) ([Greg Maher](https://github.com/gregakinman)).
* تم إصلاح توقّف نادر للخادم أثناء الإغلاق (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) كان سببه إسقاط مهمة مجدولة من قائمة انتظار مجمّع الخيوط قبل تنفيذها. [#107383](https://github.com/ClickHouse/ClickHouse/pull/107383) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح محركي الجدول وقاعدة البيانات `MaterializedPostgreSQL` بحيث يمكن إجراء replication لجدول واحد أو قاعدة بيانات واحدة من schema غير افتراضي في PostgreSQL (`materialized_postgresql_schema`)، بما في ذلك الحالة التي توجد فيها جداول بالاسم نفسه في عدة schema ضمن قاعدة البيانات نفسها (إذ كانت سابقًا تتشارك publication وreplication slot ويحدث تداخل بينها). [#107425](https://github.com/ClickHouse/ClickHouse/pull/107425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح توقّف `MaterializedPostgreSQL` عن replication لقاعدة بيانات كاملة (مع `LOGICAL_ERROR: Columns number mismatch`) عندما يتغير structure لجدول replicated واحد أثناء توقف الخادم. الآن يُتخطى الجدول المتأثر فقط، ويمكن استعادته باستخدام `DETACH`/`ATTACH`. [#107427](https://github.com/ClickHouse/ClickHouse/pull/107427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد `BACKUP` لقاعدة بيانات `MaterializedPostgreSQL` يتعطل إلى الأبد مع `Table ... were created or changed its definition during scanning`، وأصبح الآن ينسخ بيانات الجدول احتياطيًا فعليًا (ويُفوَّض ذلك إلى `ReplacingMergeTree` الأساسي)، ويمكن استعادتها بعد ذلك كـ `ReplacingMergeTree` مستقل. [#107433](https://github.com/ClickHouse/ClickHouse/pull/107433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تراجع كان فيه تعيين `compatibility = '26.6'` (الذي يفعّل ضمنيًا partition strategy `hive`) يقبل بصمت `{_partition_id}` في مسارات جداول S3/object storage بدلًا من إطلاق `BAD_ARGUMENTS`. [#107437](https://github.com/ClickHouse/ClickHouse/pull/107437) ([Lefteris](https://github.com/LefterisXefteris)).
* تم إصلاح تسرّب للذاكرة في `mongo-c-driver` المضمّن، وكان يمكن أن يحدث عند القراءة من MongoDB (على سبيل المثال، عبر MongoDB Dictionary أو `mongodb` table function) إذا أعقب خطأ قراءة قابل لإعادة المحاولة فشلٌ في اختيار الخادم أثناء إعادة المحاولة. [#107448](https://github.com/ClickHouse/ClickHouse/pull/107448) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء عند إدراج البيانات في جدول `Iceberg` أُنشئت metadata الخاصة به بواسطة external engine وكانت تُهمل المصفوفات الاختيارية `snapshots` أو `metadata-log` أو `snapshot-log`. أصبحت عمليات insert هذه تنجح الآن بدلًا من أن تفشل. [#107473](https://github.com/ClickHouse/ClickHouse/pull/107473) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح اشتراط `DELETE FROM` (lightweight delete) لامتياز `ALTER UPDATE` بالإضافة إلى `ALTER DELETE`. يمكن الآن للمستخدم الذي مُنح `ALTER DELETE` فقط تشغيل `DELETE FROM`، كما هو موثق. [#107491](https://github.com/ClickHouse/ClickHouse/pull/107491) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` عند قراءة ملفات مقسّمة بأسلوب Hive مع `use_hive_partitioning = 1` وعبارة `WHERE`/`PREWHERE` تُرشّح column حقيقيًا (غير افتراضي) مع تحديد column partition خاص بـ Hive أيضًا. [#107505](https://github.com/ClickHouse/ClickHouse/pull/107505) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` (`Different order of columns in UNION subquery`) عندما يقرأ analyzer القديم (`enable_analyzer = 0`) مجموعة فرعية من columns من subquery تكون فيه فروع `UNION` التابعة عمليات set operations من نوع `INTERSECT`/`EXCEPT`. [#107511](https://github.com/ClickHouse/ClickHouse/pull/107511) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تحويل قيم `NULL` بصمت إلى سلاسل فارغة عند إدراج بيانات `Arrow`/`ORC` في column من النوع `LowCardinality(Nullable(...))`. وكان هذا تراجعًا أُدخل في الإصدار 26.5. [#107532](https://github.com/ClickHouse/ClickHouse/pull/107532) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح خطأ منطقي (`Stream ... variant_discr ... is not found`) كان يمكن أن يحدث عند دمج أو قراءة جزء `MergeTree` ناتج عن mutation لجدول يحتوي على عمود `Dynamic`. [#107562](https://github.com/ClickHouse/ClickHouse/pull/107562) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ منطقي (`WhichDataType(const_type).isArray()`) أثناء تحليل المفتاح الأساسي عند استدعاء `pointInPolygon` باستخدام وسيطة polygon ثابتة من نوع مغلف مثل `Variant` أو `Dynamic` (على سبيل المثال، `pointInPolygon((x, y), if(c, [(0, 0), ...], NULL))`). [#107589](https://github.com/ClickHouse/ClickHouse/pull/107589) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (`Last stored last_written_position in meta file ... is bigger than current last_written_pos`) في محرك `FileLog` كان يمكن أن يحدث عند حذف ملف خاضع للمراقبة ثم إعادة إنشائه مع إعادة استخدام نفس inode. [#107617](https://github.com/ClickHouse/ClickHouse/pull/107617) ([Groene AI](https://github.com/groeneai)).
* إصلاح إيقاف نادر للخادم (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) أثناء معالجة طلبات عميل ZooKeeper، عندما أُسقط Keeper request غير متزامن أثناء إرساله، على سبيل المثال تحت memory pressure. [#107647](https://github.com/ClickHouse/ClickHouse/pull/107647) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `RESTORE` لجداول `ReplicatedMergeTree` بحيث يتم الاحتفاظ بالأجزاء ذات المحتوى المكرر من النسخة الاحتياطية بدلًا من إزالة تكرارها بصمت. [#107652](https://github.com/ClickHouse/ClickHouse/pull/107652) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح مرشح الربط وقت التشغيل الذي كان ينتج نتائج خاطئة لأعمدة `JSON`. يغلق [#107646](https://github.com/ClickHouse/ClickHouse/issues/107646). [#107663](https://github.com/ClickHouse/ClickHouse/pull/107663) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح نتائج غير صحيحة من distributed queries التي تحدد أعمدة `ALIAS` تشترك في expression فرعي واحد: إذ كان يمكن أن تصبح الأعمدة غير متطابقة وتُعاد القيم تحت العمود الخطأ. [#107675](https://github.com/ClickHouse/ClickHouse/pull/107675) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أصبحت الحصص المرتبطة بـ `normalized_query_hash` تحتسب الآن جميع الموارد (`read_rows`, `read_bytes`, `result_rows`, `result_bytes`, `execution_time`, `written_bytes`, `errors`) لكل query pattern، مثل عدادات عدد الاستعلامات، بدلًا من احتسابها ضمن حاوية مشتركة واحدة لكل مستخدم. [#107681](https://github.com/ClickHouse/ClickHouse/pull/107681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ منطقي من نوع `Block structure mismatch in UnionStep stream` (إيقاف للخادم في builds الخاصة بـ debug/sanitizer، و`Code: 49` في builds الإصدار) كان يحدث عندما كانت branches الشقيقة في `UNION`/`INTERSECT`/`EXCEPT` تختلف فقط في `WHERE` predicate، وتم طي predicate الخاص بأحد الفروع كثابت إلى عمود `Const`. [#107719](https://github.com/ClickHouse/ClickHouse/pull/107719) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء منطقية (`Bad cast`) ناجمة عن إزالة غير متسقة لـ `LowCardinality` المتداخلة داخل أعمدة `Variant` و`Dynamic`، على سبيل المثال في `concat` و`format` وتحليل المفتاح الأساسي. يغلق [#107598](https://github.com/ClickHouse/ClickHouse/issues/107598). [#107773](https://github.com/ClickHouse/ClickHouse/pull/107773) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح اختلال شديد في توزيع العمل مع parallel replicas عندما تحتوي الـ cluster على replicas غير نشطة (على سبيل المثال، entries قديمة متروكة بعد autoscaling). لم تعد هذه replicas تُحتسب من قبل coordinator القراءة، لذلك يُوزَّع العمل على replicas المتصلة بدلًا من تكدسه على واحدة فقط. [#107805](https://github.com/ClickHouse/ClickHouse/pull/107805) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء `Not-ready Set is passed as the second argument` الذي كان يمكن أن يحدث إذا فشل بصمت إنشاء مجموعة استعلام فرعي `IN` أثناء تحليل المفتاح الأساسي (على سبيل المثال، عند انتهاء مهلة استعلام فرعي مع `overflow_mode = 'break'`)، ما كان يترك المجموعة غير مُنشأة نهائيًا ضمن مسار تنفيذ الاستعلام. [#107924](https://github.com/ClickHouse/ClickHouse/pull/107924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل الخادم في predicate pushdown (`enable_optimize_predicate_expression`، المحلّل القديم) عندما يظهر استعلام فرعي `UNION` داخل شرط `JOIN ... ON`. [#107930](https://github.com/ClickHouse/ClickHouse/pull/107930) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء `CHECKSUM_DOESNT_MATCH` وأخطاء قراءة `Parquet` الزائفة (وكذلك، لبعض formats، نتائج خاطئة بصمت) عندما يُستبدل كائن في S3 أو S3-compatible (مثل GCS) في مكانه أثناء قراءته. أصبحت هذه القراءات الآن تفشل بخطأ واضح قابل لإعادة المحاولة بدلًا من إرجاع بيانات مركبة من إصدارين مختلفين للكائن؛ ويتحكم في ذلك الإعداد الجديد `s3_validate_etag_on_read` (مفعّل افتراضيًا). [#107934](https://github.com/ClickHouse/ClickHouse/pull/107934) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح فشل `SELECT` مع `NOT_FOUND_COLUMN_IN_BLOCK` على جدول يحتوي على skipping index من نوع البيانات `set` عندما تقوم `ROW POLICY` بتصفيته باستخدام شرط صحيح دائمًا مع تحقق من عمود غير مفهرس. [#107971](https://github.com/ClickHouse/ClickHouse/pull/107971) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح parsing لمعاملات أمر executable user-defined function بحيث لا تُقبل placeholders ذات الأسماء الفارغة أو غير الصالحة كمعاملات. [#107983](https://github.com/ClickHouse/ClickHouse/pull/107983) ([Goutam Adwant](https://github.com/goutamadwant)).
* إصلاح تراجع الأداء في subcolumns الخاصة بـ `Map` مع `PREWHERE`. يغلق [#107912](https://github.com/ClickHouse/ClickHouse/issues/107912). نتج عن [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح كتابة خارج الحدود عند قراءة عمود `Variant` من block `Native` تالف تشير فيه discriminators إلى فهرس variant غير موجود. [#107991](https://github.com/ClickHouse/ClickHouse/pull/107991) ([uwezkhan](https://github.com/uwezkhan)).
* إصلاح نتائج استعلام خاطئة بسبب pruning غير الصحيح للمفتاح الأساسي وpartition عند تطبيق `toStartOfDay` أو `toStartOfISOYear` أو `toDaysSinceYearZero` أو `toRelativeSecondNum` أو `toRelativeMinuteNum` أو `toRelativeHourNum` أو `toRelativeWeekNum` أو `toRelativeDayNum` أو `toMonthNumSinceEpoch` أو `toYearNumSinceEpoch` على Key column من نوع `Date32` يحتوي على تواريخ خارج النطاق الذي يمكن للدالة تمثيله (وخاصة التواريخ السابقة لـ `1970-01-01`). كانت هذه الدوال تُعرّف نفسها على أنها monotonic بالنسبة إلى primary index، لكنها كانت سابقًا تلتف مع مثل هذه الوسيطات، ما كان قد يؤدي إلى استبعاد الفهرس granules تحتوي فعليًا على صفوف مطابقة؛ أما الآن فهي تتشبع عند حدود نوع النتيجة الخاص بها وتبقى monotonic على كامل نطاق `Date32`. [#108018](https://github.com/ClickHouse/ClickHouse/pull/108018) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح `accurateCastOrNull` لـ `Tuple` يكون أحد عناصره من النوع `Dynamic`/`Variant`: كان `NULL` الحقيقي من المصدر يُعامَل على أنه فشل في التحويل. بالنسبة إلى عنصر هدف من النوع `Nullable`، يبقى `NULL` من المصدر الآن عنصرًا `NULL` (بما يتوافق مع مصدر عادي من النوع `Tuple(Nullable(...))`)؛ أما بالنسبة إلى عنصر هدف غير `Nullable`، فإن `NULL` من المصدر يجعل الـ tuple بالكامل `NULL` بدلًا من إنتاج القيمة الافتراضية للعنصر؛ بينما تظل حالات فشل parse/overflow تجعل الـ tuple بالكامل `NULL`. [#108023](https://github.com/ClickHouse/ClickHouse/pull/108023) ([Groene AI](https://github.com/groeneai)). كما تم إصلاح خطأ منطقي عند تحويل column من النوع `Dynamic` أو `Variant` متداخل داخل `Tuple` إلى element type غير `Nullable` باستخدام `accurateCastOrNull` أو `accurateCastOrDefault`. [#108061](https://github.com/ClickHouse/ClickHouse/pull/108061) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `numericIndexedVectorPointwiseMultiply` الذي كان يعيد نتيجة فارغة عند الضرب في متجه كل قيمه واحد وله إعداد BSI ‏(bit-sliced index) مختلف. [#108027](https://github.com/ClickHouse/ClickHouse/pull/108027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `toTime64` و `CAST(... AS Time64)` اللذين لم يكونا يقيّدان القيم الخارجة عن النطاق إلى نطاق `Time64` في وضعي overflow ‏`saturate` و `ignore`، مما قد ينتج عنه قيم تظهر بشكل متطابق ولكن تُقارَن على أنها مختلفة. [#108028](https://github.com/ClickHouse/ClickHouse/pull/108028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `getClientHTTPHeader` الآن يُعامَل بشكل صحيح على أنه non-deterministic، ولذلك لم تعد نتيجته تُعاد استخدامها بشكل غير صحيح بواسطة query result cache. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `clickhouse-client --port 9440` يفعّل تلقائيًا مرة أخرى connection آمنًا (TLS)؛ وكان هذا معطّلًا بسبب إعادة هيكلة توقفت معها عملية تمرير المنفذ إلى آلية التحقق من الاتصال الآمن. [#108032](https://github.com/ClickHouse/ClickHouse/pull/108032) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد error عابر أثناء refresh data parts الخاصة بـ table في وضع read-only يوقف نهائيًا مهمة refresh التي تعمل في background. [#108034](https://github.com/ClickHouse/ClickHouse/pull/108034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تأخر warnings الخاصة بفرط الحمل في memory/CPU/mutation داخل `system.warnings` بمقدار دورة واحدة عن asynchronous-metrics cycle (وغيابها في الدورة الأولى). [#108035](https://github.com/ClickHouse/ClickHouse/pull/108035) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت `mongodb` table function تقبل الآن `oid_columns` عند تمريره بوصفه argument مُسمّى (مثل `oid_columns='_id'`) بدلًا من رفضه مع `BAD_ARGUMENTS`. [#108039](https://github.com/ClickHouse/ClickHouse/pull/108039) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `Bad cast from type DB::ColumnNullable to DB::ColumnVector<...>` (خطأ منطقي) عندما يختار asterisk مؤهَّل (`t.*`) مفتاح `JOIN USING` ويكون ذلك الـ join متداخلًا تحت join من نوع `PASTE`/`CROSS`/الفاصلة أو join خارجي من نوع `ON`، مع `join_use_nulls = 0`. [#108043](https://github.com/ClickHouse/ClickHouse/pull/108043) ([Groene AI](https://github.com/groeneai)).
* إصلاح التعامل غير الصحيح مع تأكيدات العرض الصفري (`\b`, `^`, `$`) في دوال regexp "match all" وهي `extractAll`, `extractAllGroupsVertical`, `extractAllGroupsHorizontal`, `countMatches` و `splitByRegexp`. على سبيل المثال، يعيد `extractAll('new york is the greatest', '\b(\w)')` الآن بشكل صحيح الحرف الأول من كل كلمة بدلًا من كل حرف. [#108047](https://github.com/ClickHouse/ClickHouse/pull/108047) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `CREATE TABLE ... AS SELECT` على قواعد بيانات `Atomic`، إذ كان يترك جدولًا فارغًا عند فشل الاستعلام — على سبيل المثال، عندما لا يملك المستخدم صلاحية الوصول إلى جدول مُشار إليه من `subquery`. سابقًا، كانت إعادة المحاولة تُبلغ بأن الجدول موجود بالفعل بدلًا من إظهار `error` الأصلي. يُنشأ الجدول الآن عبر `temporary table` ولا يظهر إلا بعد اكتمال تعبئته بالكامل. [#108048](https://github.com/ClickHouse/ClickHouse/pull/108048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح من الممكن الاستعلام عن قاموس `range_hashed` أو `complex_key_range_hashed` يستخدم نطاق `DateTime64` أو `Decimal` أو نطاق أعداد `floating-point` باستخدام `argument` مطابق لـ `dictGet`/`dictHas`. سابقًا، كانت مثل هذه `queries` تفشل برسالة `must be convertible to Int64`، وكانت `intervals` المفتوحة النهاية في نطاقات `Decimal`/`DateTime64` تُرجع `default value` بشكل غير صحيح. [#108052](https://github.com/ClickHouse/ClickHouse/pull/108052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح استثناء (`CANNOT_PARSE_TEXT`) عند تحميل قاموس ذي مفتاح `composite` تكون فيه `key columns` ليست أول `columns` في تعريف القاموس، وذلك مع `source` محلي من `ClickHouse` يستخدم `query` صريحًا. تُطابق `source columns` الآن مع `structure` القاموس حسب `name` بدلًا من ترتيبها. [#108053](https://github.com/ClickHouse/ClickHouse/pull/108053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح فشل `table function` ‏`values` مع `ARGUMENT_OUT_OF_BOUND` عند استخدام literal عشري لا يمكن تمثيله بدقة في `column` ذي نوع `floating-point` محدود الدقة (مثل `0.1` مع `column` من نوع `Float32`)، مثل `SELECT * FROM values('x Float32', 0.1)`. أصبحت مثل هذه `values` الآن مقبولة وتُحوَّل إلى أقرب قيمة قابلة للتمثيل، بما يتوافق مع `CAST` و`INSERT ... VALUES`. [#108055](https://github.com/ClickHouse/ClickHouse/pull/108055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `LOGICAL_ERROR` ‏(`No available columns`) عند تنفيذ `SELECT count()` (أو غيره من `queries` البسيطة) على `table` مُنح فيه المستخدم صلاحية `SELECT` على `ALIAS` `column` فقط. [#108056](https://github.com/ClickHouse/ClickHouse/pull/108056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `mapFilter` و`mapSort` (و`variants` الخاصة به) و`mapConcat` التي كانت تُسقط `LowCardinality` من نوعَي المفتاح والقيمة في `Map`. سابقًا، كان `mapFilter` على `column` من النوع `Map(LowCardinality(String), String)` يُرجع `Map(String, String)`، ما قد يُفسد `metadata` الخاصة بـ `table` أُنشئ عبر `CREATE TABLE ... AS SELECT` ويتسبب في فشل `CHECK TABLE`. [#108057](https://github.com/ClickHouse/ClickHouse/pull/108057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح نتائج غير صحيحة عند استخدام `hasToken` على `text indexes` مع `tokenizer` غير `splitByNonAlpha`. [#108066](https://github.com/ClickHouse/ClickHouse/pull/108066) ([Robert Schulze](https://github.com/rschu1ze)).
* تم إصلاح تجمّد `SYSTEM RELOAD DICTIONARIES` (وكذلك `RELOAD DICTIONARY`) عند مشاركة عدد كبير من قواميس MySQL المعرّفة في XML لمجموعة `connection pool` واحدة عبر `share_connection`. أصبحت هذه المجموعات الآن تلتزم بـ `connection_pool_size` و`connection_wait_timeout` (القيمة الافتراضية 5 `seconds`) من `configuration`، بما يتوافق مع القواميس المعرّفة عبر `named collections`. [#108083](https://github.com/ClickHouse/ClickHouse/pull/108083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح استخدام `EXISTS <dictionary>` مسموحًا للمستخدم الذي يملك فقط `privilege` ‏`SHOW DICTIONARIES` على القاموس (وكان ذلك يتطلب سابقًا `SHOW TABLES`). [#108084](https://github.com/ClickHouse/ClickHouse/pull/108084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح مشكلة في `CREATE TABLE dst AS src SETTINGS ...` (والصيغ المشابهة مع `ORDER BY`/`PARTITION BY` ولكن من دون `ENGINE` صريح) كانت تؤدي بصمت إلى إسقاط محرك الجدول المصدر، وعبارات التخزين (مثل table `TTL` والمفاتيح) والإعدادات. وأصبح الآن محرك الجدول وعبارات التخزين التي لم يجرِ تجاوزها تُورَّث من الجدول المصدر، كما تُدمَج الإعدادات المحددة فوق إعدادات الجدول المصدر. [#108085](https://github.com/ClickHouse/ClickHouse/pull/108085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح فشل `INSERT` في جداول `MergeTree` مع الخطأ `filesystem error: in rename: Permission denied` على أنظمة الملفات المعتمدة على Windows ‏(WSL وCIFS/SMB وDocker Desktop bind mounts)، وكان السبب أن كاتب الجزء يترك واصفات الملفات مفتوحة أثناء إعادة تسمية دليل الجزء. [#108089](https://github.com/ClickHouse/ClickHouse/pull/108089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح انهيار (إلغاء مرجعية مؤشر فارغ) عند الاستعلام عن جدول `Hive` من دون عبارة `WHERE`، مثل `SELECT * FROM hive_table`. [#108094](https://github.com/ClickHouse/ClickHouse/pull/108094) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `LOGICAL_ERROR` ‏("Unexpected return type from 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) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `toStartOfInterval` و`dateTrunc` اللتين كانتا تعيدان قيمة مقربة بدلًا من بداية الفاصل الزمني الذي تقع ضمنه القيمة عندما تكون دقة الإدخال أعلى من وحدة الفاصل، مثلًا `toStartOfInterval(toDateTime64('2023-10-09 10:11:12.000999', 6), INTERVAL 1 millisecond)` كانت تعيد `10:11:12.001` بدلًا من `10:11:12.000`. كما تأثر أيضًا التحميل الزائد الذي يستخدم origin صريحًا. يُغلق هذا [#103535](https://github.com/ClickHouse/ClickHouse/issues/103535). [#108186](https://github.com/ClickHouse/ClickHouse/pull/108186) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إخفاء المعلومات الحساسة في العمود `view_query` ضمن `system.query_views_log`. [#108214](https://github.com/ClickHouse/ClickHouse/pull/108214) ([Valerii Mordovskii](https://github.com/Fidelaggio)).
* تم إصلاح حالة تعطل في جدول `MergeTree` مرفق بفهرس تخطٍّ قديم من نوع `hypothesis` (وهو نوع فهرس أُزيل وأُبقي عليه فقط من أجل توافق `ATTACH`). سابقًا، كانت عملية lightweight `DELETE` أو `OPTIMIZE` أو `INSERT` عادي أو `SELECT` مفلتر على مثل هذا الجدول تفشل مع `ILLEGAL_INDEX` ‏("Index of type 'hypothesis' is no longer supported")، وكانت mutation الخاصة بـ `DELETE` تعيد المحاولة إلى ما لا نهاية. أما الآن فيُعامل هذا الفهرس الميت على أنه خامل: يُمرَّر كما هو من دون تغيير أثناء merge/mutation، ويُتخطى عند insert وأثناء تخطيط الاستعلام، ولا يزال بالإمكان حذفه باستخدام `ALTER TABLE ... DROP INDEX`. [#108217](https://github.com/ClickHouse/ClickHouse/pull/108217) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عدم عمل الإعداد `type_json_allow_duplicated_key_with_literal_and_nested_object` مع المسارات محددة النوع في `JSON`. [#108218](https://github.com/ClickHouse/ClickHouse/pull/108218) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح `LOGICAL_ERROR` ‏(`Different list of shards in child plans`) عند تشغيل استعلام مع `make_distributed_plan = 1` على جدول `MergeTree` يحتوي على projection عادي أو تجميعي. [#108256](https://github.com/ClickHouse/ClickHouse/pull/108256) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `replaceRegexpOne` و`replaceRegexpAll` بحيث أصبحت `.` تطابق محارف السطر الجديد افتراضيًا، بما يتوافق مع بقية دوال regular expression. [#108265](https://github.com/ClickHouse/ClickHouse/pull/108265) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* إصلاح خطأ منطقي عند تحويل `Array(Dynamic)` أو `Array(Variant)` إلى `QBit` باستخدام `accurateCastOrNull`، مثل `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* أصبح `index_granularity_bytes` الآن مطبَّقًا على أعمدة حالة `AggregateFunction`. سابقًا، كان الحد الأقصى لبايتات الـ granule يُتجاهَل لهذه الأعمدة (مثل حالات `uniqExact` في جداول `AggregatingMergeTree` وprojections التجميعية)، ما كان ينتج granules أكبر بكثير من الحد المضبوط ويزيد من تضخيم القراءة واستهلاك الذاكرة وقت الاستعلام. [#108297](https://github.com/ClickHouse/ClickHouse/pull/108297) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة تقييم شروط `UPDATE`/`DELETE` خفيفة الوزن مرتين، ما قد يؤدي إلى سلوك غير صحيح مع الشروط غير الحتمية وإلى عمل إضافي مع الشروط الحتمية. يغلق [#86032](https://github.com/ClickHouse/ClickHouse/issues/86032). [#108323](https://github.com/ClickHouse/ClickHouse/pull/108323) ([ofeliacode](https://github.com/ofeliacode)).
* إصلاح Exception في معالج HTTP معرّف مسبقًا عند غياب header من الطلب، رغم أن التعبير النمطي `headers_regexp` الخاص به يسمح بقيمة فارغة. [#108324](https://github.com/ClickHouse/ClickHouse/pull/108324) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح `arrayPartialSort` عند استخدام argument للحد غير ثابت. [#108327](https://github.com/ClickHouse/ClickHouse/pull/108327) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح مشكلة استمرار تنفيذ `INSERT` مُلغى أو تم `KILL` له لفترة طويلة أثناء بناء skip index (مثل فهرس `set(0)` غير محدود على عمود عالي الكاردينالية). أصبح بناء الفهرس الآن يتوقف سريعًا عند إلغاء الاستعلام. [#108351](https://github.com/ClickHouse/ClickHouse/pull/108351) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح عدم استجابة `SELECT` من table function `primes` للإلغاء: عند استخدام `step` كبير (أو `limit`) كان الاستعلام قد يستمر في العمل لفترة طويلة بعد `KILL QUERY` أو انتهاء المهلة. وهو الآن يتوقف سريعًا. [#108353](https://github.com/ClickHouse/ClickHouse/pull/108353) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح تحليل أسماء type names التي تتضمن substring `INT` ضمن الاسم (مثل اسم يشبه الدوال مثل `quantileInterpolatedWeighted` عند استخدامه في موضع نوع بيانات). كان يجري التعامل مع هذه الأسماء خطأً على أنها Integer types في MySQL، كما كانت أول مجموعة argument فيها `(...)` تُستهلك بصمت باعتبارها معدِّلًا لعرض العرض، ما قد يفسد round-trip لتنسيق الاستعلام. [#108354](https://github.com/ClickHouse/ClickHouse/pull/108354) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة عدم اتساق كان فيها `ARRAY JOIN` غير صحيح متبوعًا بفاصلة وقائمة جداول بين قوسين يُفسَّر خطأً على أنه cross join بدلًا من رفضه. [#108365](https://github.com/ClickHouse/ClickHouse/pull/108365) ([Raúl Marín](https://github.com/Algunenano)).
* إخفاء arguments السرية للدوال مثل `encrypt` و`decrypt` و`HMAC` في مخرجات `EXPLAIN actions` و`EXPLAIN header` و`EXPLAIN PIPELINE` عندما يكون `format_display_secrets_in_show_and_select` معطّلًا (وهو الوضع الافتراضي). [#108386](https://github.com/ClickHouse/ClickHouse/pull/108386) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح `CREATE OR REPLACE` لعرض materialized view قابل للتحديث مع هدف `TO`: كان يُرفَض خطأً لأن الجدول الهدف مملوك بالفعل للعرض الجاري استبداله. [#108392](https://github.com/ClickHouse/ClickHouse/pull/108392) ([Nikolay Degterinsky](https://github.com/evillique)).
* أُصلِح تعطل في الخادم (`Received signal 4`، تعليمة غير قانونية) كان يمكن أن يحدث بسبب دفق بروتوكول `native TCP` غير صالح أو غير متزامن. وأصبح الآن يُتحقق من أن العنوان الأولي الذي يرسله العميل هو `host:port` رقمي قبل تحليله، بدلًا من السماح بوصول منفذ غير رقمي إلى دالة `getservbyname` المحصورة في libc. [#108410](https://github.com/ClickHouse/ClickHouse/pull/108410) ([Groene AI](https://github.com/groeneai)).
* أُصلِح تعطل في الخادم أثناء الإيقاف عند إيقاف قاعدة بيانات تُلقي استثناءً (على سبيل المثال، عندما تصطدم عملية `flush` لجدول بمهلة ZooKeeper). ولم يعد ما تبقى من تسلسل الإيقاف يُتخطى، بحيث تُفرَّغ الآن سجلات النظام وتُنضم خيوطها قبل خروج الخادم. [#108417](https://github.com/ClickHouse/ClickHouse/pull/108417) ([Groene AI](https://github.com/groeneai)).
* أُصلِحت دوال regular expression (`match`, `extract`, `extractAll`, `replaceRegexpOne`, `replaceRegexpAll`، إلخ) التي كانت تُرجع بصمت نتائج خاطئة عندما كان النمط يحتوي على بايت NUL (`\0`). ويُعامَل NUL الآن على أنه بايت حرفي عادي، بما يتسق مع RE2. [#108427](https://github.com/ClickHouse/ClickHouse/pull/108427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح سلوك `clickhouse-local` الذي كان يُرجع ردًا فارغًا لطلبات HTTP `OPTIONS` عندما لا يكون `http_options_response` مُهيأً، مما كان يجعل واجهة الويب (`/play`) تعرض الاتصال على أنه معطّل رغم أن الاستعلامات كانت تعمل. [#108428](https://github.com/ClickHouse/ClickHouse/pull/108428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح استثناء `LOGICAL_ERROR` ("Invalid action query tree node ...") عند تنفيذ distributed query كانت تزيل التكرار من أعمدة `ALIAS` المكررة والمتطابقة بنيويًا، وتشير في الوقت نفسه إلى table function تحتوي على وسيطة named-collection بصيغة `key = value` (على سبيل المثال `oss(s3_conn, filename = '...')`). [#108435](https://github.com/ClickHouse/ClickHouse/pull/108435) ([Groene AI](https://github.com/groeneai)).
* أُصلِح تعطل في الخادم (`LOGICAL_ERROR: 'Unexpected exception in refresh scheduling'`) كان يمكن أن يحدث عند بدء التشغيل عندما تكون refreshable materialized view منسقة في قاعدة بيانات `Replicated` قد أُرفقت على Keeper لا يدعم علامة الميزة `MULTI_READ` (على سبيل المثال بعد خفض إصدار Keeper). وأصبح العرض الآن يتوقف بسلاسة بدلًا من إجهاض الخادم. [#108441](https://github.com/ClickHouse/ClickHouse/pull/108441) ([Groene AI](https://github.com/groeneai)).
* أُصلِح خطأ `NOT_FOUND_COLUMN_IN_BLOCK` (مثل `Column _part not found`) عند تحديد الأعمدة الافتراضية من جدول `MergeTree` في وضع parallel replicas، بما في ذلك عبر `SELECT *` مع `asterisk_include_virtual_columns = 1`. [#108451](https://github.com/ClickHouse/ClickHouse/pull/108451) ([Groene AI](https://github.com/groeneai)).
* يتطلب `SYSTEM RESET DDL WORKER` الآن امتياز `SYSTEM RESET DDL WORKER` الجديد. في السابق، كان بإمكان أي مستخدم موثَّق الهوية (بمن فيهم مستخدمو `readonly`) تشغيله وإعادة تعيين حالة عامل DDL مرارًا، مما كان يحجب DDL الخاصة بـ `ON CLUSTER`. [#108460](https://github.com/ClickHouse/ClickHouse/pull/108460) ([Groene AI](https://github.com/groeneai)).
* قُيِّد مسار النموذج الخاص بـ `catboostEvaluate` بدليل `user_files`، مثل table function ‏`file` وdictionary sources. في السابق، كانت الدالة تقبل أي path في filesystem من دون التحقق من بقائه ضمن هذا النطاق، مما كان يتيح اختبار وجود ملفات خارج `user_files` والتسبب في reads لها. ويجب الآن أن تكون النماذج موجودة داخل `user_files`. [#108463](https://github.com/ClickHouse/ClickHouse/pull/108463) ([Groene AI](https://github.com/groeneai)).
* تتطلب الدالة `hasColumnInTable` الآن امتياز `SHOW COLUMNS` على الجدول الهدف، وهو نفس الامتياز المطلوب لكل من `DESCRIBE` و`SHOW CREATE TABLE`. في السابق، كان بإمكان أي مستخدم استدعاء `hasColumnInTable` لاختبار أسماء الأعمدة والتحقق من وجود جدول وقاعدة بيانات من دون أي فحص لصلاحيات الوصول. [#108464](https://github.com/ClickHouse/ClickHouse/pull/108464) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح التخصيص المفرط للذاكرة عند إلغاء تسلسل حالات aggregate function الوسيطة المُصاغة لـ `mannWhitneyUTest` و`rankCorr` و`largestTriangleThreeBuckets` و`quantileGK` و`sequenceMatch`/`sequenceCount` و`groupArrayIntersect`. كان بإمكان حالة غير سليمة أن تعلن عددًا هائلًا من العناصر، فتجعل الخادم يحاول تخصيص عشرات الجيجابايتات انطلاقًا من بضع بايتات من الإدخال؛ وتُرفض هذه الحالات الآن بالخطأ `TOO_LARGE_ARRAY_SIZE`. [#108465](https://github.com/ClickHouse/ClickHouse/pull/108465) ([Groene AI](https://github.com/groeneai)).
* التحقّق من هدف إعادة التوجيه في استجابة S3 `301 Moved Permanently` بمقارنته مع `remote_url_allow_hosts` (`RemoteHostFilter`). سابقًا، كانت معالجة AWS SDK للرمز 301 تتبع endpoint الذي يورّده المهاجم في الاستجابة (ترويسة `Location` أو العنصر `<Endpoint>`) من دون التحقق من المضيف، ما كان يتيح لخادم S3-compatible خبيث أو مخترَق إعادة توجيه ClickHouse إلى مضيف عشوائي (SSRF). وكان مسار إعادة التوجيه 307 يُجري هذا التحقق بالفعل؛ وأصبح المساران الآن متسقين. [#108466](https://github.com/ClickHouse/ClickHouse/pull/108466) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تسرّب لبيانات الاعتماد، إذ كانت الإعدادات القديمة `storage_aws_access_key_id` و`storage_aws_secret_access_key` و`storage_catalog_credential` و`storage_auth_header` الخاصة بـ database engine ‏`DataLakeCatalog` تظهر بنص واضح في `system.databases.engine_full` و`SHOW CREATE DATABASE`. وأصبحت الآن تُحجب على شكل `[HIDDEN]`. [#108470](https://github.com/ClickHouse/ClickHouse/pull/108470) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تحديد هوية المستخدم `ssl_certificate` بحيث يطابق حرف البدل المفرد `*` مكوّن اسم واحدًا فقط بدقة (RFC 6125 6.4.3). سابقًا، كان حرف البدل في الموضوع `CN` أو `DNS:` SAN (على سبيل المثال `*.corp.example.com`) يطابق أيضًا الأسماء متعددة الأجزاء مثل `evil.deep.corp.example.com`، مما يتيح لحامل شهادة لنطاق فرعي أعمق أن يصادق بصفته مستخدم حرف البدل. ولم يتغير تطابق `URI:` SAN. [#108472](https://github.com/ClickHouse/ClickHouse/pull/108472) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح ثغرة SQL injection في MySQL wire protocol: إذ أصبحت وسيطة `SHOW TABLE STATUS LIKE` وقيمة `SET <mysql_setting>` المُرسلتان عبر MySQL interface (المنفذ 9004) تُحلَّلان وتُعاد صياغتهما بين علامتَي اقتباس بدلًا من دمجهما حرفيًا في query المعاد كتابته. كما تم إصلاح تجاهل `KILL QUERY <id>` عبر MySQL interface بصمت لمعرّفات الاتصال متعددة الأرقام. [#108474](https://github.com/ClickHouse/ClickHouse/pull/108474) ([Groene AI](https://github.com/groeneai)).
* لم تعد القيم الحساسة التي تُمرَّر كمعلمات query string في HTTP (على سبيل المثال ربط معلمات `param_*` مثل `param_secret_key`/`param_aws_secret_access_key`، أو المعلمة `password`، أو معلمات `signature` بأسلوب S3) تُكتب حرفيًا في `system.text_log` أو OpenTelemetry spans. ويقوم سطر السجل `Request URI` الآن بحجب قيم المعلمات التي تبدو أسماؤها حساسة، مع استبدالها بـ `[HIDDEN]`. [#108475](https://github.com/ClickHouse/ClickHouse/pull/108475) ([Groene AI](https://github.com/groeneai)).
* تم فرض configuration ‏`http_forbid_headers` أثناء schema inference للدالة الجدولية `url` وstorage engine ‏`URL`. سابقًا، كانت ترويسة محظورة لا تزال تُرسل عبر الشبكة أثناء استنتاج المخطط (على سبيل المثال مع التنسيق `Regexp` أو `DESCRIBE`)، وكان يمكن أن ينعكس جسم الاستجابة الخاص بها في خطأ parse، مما يسرّب الأسرار. ويجري الآن التحقق من عامل تصفية الترويسات قبل أي وصول إلى الشبكة في مسار الاستنتاج، بما يطابق السلوك الحالي لـ `urlCluster`. [#108476](https://github.com/ClickHouse/ClickHouse/pull/108476) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة عند استخدام `SELECT ... SAMPLE ...` مع query condition cache (الإعداد `use_query_condition_cache`، المفعّل افتراضيًا). [#108488](https://github.com/ClickHouse/ClickHouse/pull/108488) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل في الخادم (فيض في المكدس) كان يحدث بسبب التعبيرات المتداخلة بعمق مثل `[[[ ... ]]]` أو `array(array( ... ))` عندما تكون `max_parser_depth` مضبوطة على قيمة كبيرة. [#108493](https://github.com/ClickHouse/ClickHouse/pull/108493) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح تعليق محرك الجدول `RabbitMQ` إلى أجل غير مسمى عند تنفيذ `DROP TABLE` أو إيقاف الخادم، وذلك عندما يغلق الوسيط اتصال AMQP بسبب فقدان نبضات القلب من دون إرسال TCP RST. وأصبحت جميع استدعاءات حلقة الأحداث الحاجبة تملك الآن مهلة قدرها 30 ثانية، بحيث يكتمل الإيقاف دائمًا. [#108497](https://github.com/ClickHouse/ClickHouse/pull/108497) ([Aly Ayman](https://github.com/alyelmorsy-dataengineer)).
* ستُسجَّل الآن الاستعلامات الثانوية التي تُنفَّذ كجزء من الاستعلامات الداخلية على أنها استعلامات داخلية. [#108506](https://github.com/ClickHouse/ClickHouse/pull/108506) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أصبح محرك الجدول `ArrowFlight` وtable function ‏`arrowFlight` يلتزمان الآن بقائمة السماح `<remote_url_allow_hosts>`. في السابق، لم يكن يجري التحقق من المضيف والمنفذ الخاصَّين بالاتصال، لذا كان يمكن للاستعلام الوصول إلى مضيفين غير موجودين في قائمة السماح. [#108507](https://github.com/ClickHouse/ClickHouse/pull/108507) ([Groene AI](https://github.com/groeneai)).
* تفرض أوامر MySQL wire protocol `COM_FIELD_LIST` (`mysql_list_fields`) و`COM_INIT_DB` (`USE database`) الآن نفس آلية access control المطبقة على مكافئاتها في SQL (`SHOW COLUMNS`/`DESCRIBE` و`USE`). في السابق، كان يمكنها كشف أسماء أعمدة الجداول التي لا يملك المستخدم عليها سوى صلاحيات جزئية على الأعمدة، وكذلك تبديل قاعدة البيانات الحالية من دون امتياز `SHOW DATABASES`. [#108508](https://github.com/ClickHouse/ClickHouse/pull/108508) ([Groene AI](https://github.com/groeneai)).
* أصبحت `http_forbid_headers` تُطابَق الآن دون اعتبار لحالة الأحرف. وأسماء HTTP header غير حساسة لحالة الأحرف، لذا فإن حظر `Authorization` يمنع الآن أيضًا `authorization` و`AUTHORIZATION` وغيرها من اختلافات حالة الأحرف. كما أصبحت أنماط `header_regexp` المُعدّة تُطابَق الآن دون اعتبار لحالة الأحرف من دون الحاجة إلى الراية الصريحة `(?i)`. [#108509](https://github.com/ClickHouse/ClickHouse/pull/108509) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل في الخادم (خطأ تجزئة) كان يمكن أن يحدث عندما كان استعلام موزع يشير إلى `MATERIALIZED` CTE لم يُمثَّل ماديًا بعد بوصفه جدولًا خارجيًا، وكان المصدر البعيد يُنشأ عند الطلب. [#108547](https://github.com/ClickHouse/ClickHouse/pull/108547) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج خاطئة عندما كانت query condition cache (`use_query_condition_cache = 1`) تعيد استخدام استبعاد العلامات المشتق من skip index لاستعلام شغّل مجموعة مختلفة من skip indexes، على سبيل المثال مع `use_skip_indexes = 0` أو `ignore_data_skipping_indices` أو وضع مختلف لـ `use_skip_indexes_for_disjunctions`. وأصبحت cache entries المشتقة من skip index تُفهرس الآن وفق المجموعة الفعلية من skip indexes التي شُغِّلت. [#108548](https://github.com/ClickHouse/ClickHouse/pull/108548) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عدة أخطاء في `changeYear` و`changeMonth` و`changeDay` و`changeHour` و`changeMinute` و`changeSecond` مع وسائط `DateTime64`: كان عمود النتيجة يُنشأ بالمقياس الافتراضي المضمّن 3 بدلًا من مقياس الوسيط، مما أدى إلى `LOGICAL_ERROR` (`writeSlice expects same column types`) عند تمرير النتيجة إلى `arrayPushBack`/`arrayPushFront`/`arrayConcat`؛ وكانت المدخلات بدقة النانوثانية (المقياس 9) تُطلق `DECIMAL_OVERFLOW`؛ وكانت المدخلات ذات الأجزاء دون الثانية قبل epoch تُرجع ثانية تقويمية غير صحيحة. كما تم أيضًا إصلاح `timeSlots` مع `DateTime64`، إذ كان يتجاهل مقياس وسيط `Size` الاختياري في نوع الإرجاع المعلن ويُرجع timestamps غير صحيحة لأكبر مقياس في `Size`. [#108551](https://github.com/ClickHouse/ClickHouse/pull/108551) ([Groene AI](https://github.com/groeneai)). [#108681](https://github.com/ClickHouse/ClickHouse/pull/108681) ([Takumi Hara](https://github.com/takumihara)). [#108994](https://github.com/ClickHouse/ClickHouse/pull/108994) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام اسم مستعار لـ compound predicate في `GROUP BY` ثم الرجوع إليه مرة أخرى، مع تفعيل `enable_identifier_resolve_cache` (وهو الإعداد الافتراضي). [#108553](https://github.com/ClickHouse/ClickHouse/pull/108553) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Equal values are not contiguous within the range assumed to be sorted`) عند تشغيل `DISTINCT` على قراءة `STREAM` (`SELECT DISTINCT ... FROM table STREAM`). لم تعد تحسينات القراءة بالترتيب تُطبَّق على قراءات `STREAM`، لأنها تُنتج الصفوف وفق ترتيب الالتزام لا وفق ترتيب مفتاح الفرز. [#108568](https://github.com/ClickHouse/ClickHouse/pull/108568) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة كانت تؤدي إلى أن تُرجع projections القيمة الافتراضية لنوع العمود (مثل `0`) بدلًا من قيمة `DEFAULT` المعلنة له (مثل `-1`) في حالتين: عند قراءة عمود أُضيف باستخدام `ALTER TABLE ... ADD COLUMN ... DEFAULT` بعد إنشاء الـ projection (وكانت القراءات من base table صحيحة بالفعل)، وبعد انتهاء صلاحية `TTL` الخاصة بالعمود على Wide part. [#108569](https://github.com/ClickHouse/ClickHouse/pull/108569) ([Shaohua Wang](https://github.com/tiandiwonder)). [#109013](https://github.com/ClickHouse/ClickHouse/pull/109013) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح الخطأ `ReadBuffer is canceled. Can't read from it.` الذي كان قد يحدث عند إعادة محاولة الرفع إلى S3 (مثل نسخة احتياطية) بعد خطأ قراءة عابر. [#108573](https://github.com/ClickHouse/ClickHouse/pull/108573) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة كانت تجعل `ATTACH PARTITION ... FROM` يرفض الجداول التي تكون primary keys فيها متكافئة ولكن مُعلنة بصيغ مختلفة (إحداهما `PRIMARY KEY` صريحة، والأخرى ضمنية من `ORDER BY`). [#108590](https://github.com/ClickHouse/ClickHouse/pull/108590) ([Jordi Orihuela](https://github.com/jordiori)).
* إصلاح فشل direct read من text index عند وجود عدة text indexes ممثلة ماديًا جزئيًا. يُصلح هذا [#108530](https://github.com/ClickHouse/ClickHouse/issues/108530). [#108607](https://github.com/ClickHouse/ClickHouse/pull/108607) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح كشف metadata، حيث كانت `DESCRIBE loop('db', 'table')` و `DESCRIBE loop(<inner table function>)` تتجاوزان فحص الوصول إلى `SHOW COLUMNS` / المصدر، مما يتيح لمستخدم غير مخوّل قراءة مخطط أعمدة الجدول. [#108624](https://github.com/ClickHouse/ClickHouse/pull/108624) ([Groene AI](https://github.com/groeneai)).
* إصلاح العمود الافتراضي `_etag` في محركي الجدول `S3Queue` و `AzureQueue`: إذ كان مُعلنًا لكنه لم يكن يُملأ مطلقًا، لذلك كان `SELECT _etag` يُرجع دائمًا سلسلة فارغة. وهو الآن يُرجع ETag الخاص بالكائن، مثل محرك `S3` و table function ‏`s3`. [#108625](https://github.com/ClickHouse/ClickHouse/pull/108625) ([Groene AI](https://github.com/groeneai)).
* إصلاح قراءة ملفات `Arrow` و`ArrowStream` وملفات `ORC` المعتمدة على Arrow عندما كان عمود timestamp فيها يحمل إزاحة UTC رقمية ثابتة (مثل `+05:30` و`-08:00` و`00:00`) أو الوسم غير التابع لـ IANA وهو `fixed` بوصفه timezone له، إذ كان ذلك يفشل سابقًا مع `Cannot load time zone ...` (`BAD_ARGUMENTS`). [#108633](https://github.com/ClickHouse/ClickHouse/pull/108633) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء (`LOGICAL_ERROR: Join is supported only for pipelines with one output port` أو `NOT_IMPLEMENTED: MergeJoinAlgorithm is not implemented for strictness Semi`) عند استخدام `join_algorithm = 'full_sorting_merge'` مع join من نوع `SEMI`/`ANTI`، بما في ذلك عمليات join الناتجة عن فك الارتباط في correlated subquery من نوع `EXISTS`. وأصبح `full_sorting_merge` الآن يرفض تراكيب strictness/kind التي لا يمكنه تنفيذها، بحيث يعود المخطط إلى استخدام خوارزمية أخرى مفعّلة أو يُبلغ بأن join لا يمكن تنفيذه. [#108658](https://github.com/ClickHouse/ClickHouse/pull/108658) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاوز سعة مخزن مؤقت في heap عند بناء فهرس نصي باستخدام `positions = 1` على عدد كبير من الرموز القصيرة المختلفة. [#108659](https://github.com/ClickHouse/ClickHouse/pull/108659) ([Groene AI](https://github.com/groeneai)).
* أصبح الآن يُبلَّغ عن أي استعلام يقرأ من S3 أو يكتب إليه ويُلغى (مثلًا بواسطة `KILL QUERY`) أثناء وجود طلب S3 قيد التنفيذ على أنه مُلغى، بدلًا من الإبلاغ عنه كخطأ مضلل في الشبكة أو S3. وعلى وجه الخصوص، أصبح أي نسخ احتياطي أو استعادة إلى S3 يتم إلغاؤه يُبلَّغ عنه الآن على أنه `BACKUP_CANCELLED`/`RESTORE_CANCELLED` في `system.backups`. [#108673](https://github.com/ClickHouse/ClickHouse/pull/108673) ([Julia Kartseva](https://github.com/jkartseva)).
* تم إصلاح حالة فشل عند بدء التشغيل، حيث كانت قاعدة بيانات `DataLakeCatalog` التي أُنشئت بإصدار أقدم (25.12 أو ما قبله) مع `auth_header` غير صحيح التنسيق، تتعذر تهيئتها بعد الترقية إلى 26.2 أو أحدث، مما كان يمنع الخادم من البدء. أصبح `auth_header` الآن يُتحقق منه فقط عند `CREATE`، وعند `ATTACH` يُنشأ الكتالوج بشكل كسول عند أول استخدام بدلًا من إنشائه أثناء بدء التشغيل، لذا لم تعد قاعدة بيانات كتالوج واحدة سيئة الإعداد أو غير قابلة للوصول تمنع بدء تشغيل الخادم. [#108674](https://github.com/ClickHouse/ClickHouse/pull/108674) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (`Sort order of blocks violated`) أثناء الدمج، إلى جانب قراءات غير صحيحة، عندما يُستخدم عنصر `LowCardinality` غير قابل لـ `NULL` من عمود `Nullable(Tuple(...))` كعمود فرعي، مثل استخدامه كمفتاح فرز. [#108679](https://github.com/ClickHouse/ClickHouse/pull/108679) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل محتمل (use-after-free) عندما يعمل `SYSTEM FLUSH DISTRIBUTED` بالتزامن مع `DROP TABLE` للجدول `Distributed` نفسه. [#108684](https://github.com/ClickHouse/ClickHouse/pull/108684) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل في فك ترميز Base64 لمفتاح حساب Azure، ويمكن الوصول إليه عبر `azureBlobStorage` (ودوال الجداول ووحدات التخزين المرتبطة بـ Azure) عندما لا يكون المفتاح Base64 صالحًا: إذ كانت قيمة بايت `>= 0x80` تتسبب في قراءة خارج الحدود، وكان أي بايت غير صالح يؤدي إلى سلوك undefined. وأصبح الآن يُرفض المفتاح غير الصالح بشكل سليم. [#108716](https://github.com/ClickHouse/ClickHouse/pull/108716) ([Groene AI](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) ([Groene AI](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)).
* تم إصلاح استثناء (`Cannot find sharding key column`، وفي بُنى debug و sanitizer كان يحدث إيقاف للخادم) عندما يكون مفتاح التجزئة لجدول `Distributed` تعبيرًا يختزله المحلل إلى ثابت، مثل `if(1, toInt32(id), toInt32(id) + 1)`، مع `optimize_skip_unused_shards = 1`. [#108737](https://github.com/ClickHouse/ClickHouse/pull/108737) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (`Bad cast from type DB::ColumnNullable to DB::ColumnString`) واحتمال ظهور نتائج غير صحيحة عند استخدام `group_by_use_nulls` مع مفتاح تجميع ثابت من نوع `LowCardinality` في `GROUPING SETS`/`ROLLUP`/`CUBE`. [#108771](https://github.com/ClickHouse/ClickHouse/pull/108771) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تعطُّل استبعاد partition والمفتاح الأساسي بصمت عندما يكون عمود المفتاح `LowCardinality(FixedString)` (أو `LowCardinality(Nullable(FixedString))`) ملفوفًا داخل دالة في المفتاح، مثل `PARTITION BY sipHash64(k) % N` مع `WHERE k = 'literal'`. كانت مثل هذه الاستعلامات تفحص جميع أقسام partition بدلًا من استبعادها. [#108777](https://github.com/ClickHouse/ClickHouse/pull/108777) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي (يؤدي إلى إيقاف الخادم في بنيات debug وsanitizer) عند إلغاء `INSERT ... SELECT` عبر جدول `Alias`، أو إلى جدول `TimeSeries`، من دون استثناء، مثلًا عند استخدام `timeout_overflow_mode = 'break'`. [#108783](https://github.com/ClickHouse/ClickHouse/pull/108783) ([Groene AI](https://github.com/groeneai)). [#108796](https://github.com/ClickHouse/ClickHouse/pull/108796) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح خطأ منطقي من النوع `Bad cast from type DB::ColumnSparse to DB::ColumnString` (يؤدي إلى إيقاف الخادم في بنيات debug وsanitizer) عند تطبيق `groupConcat` على `Tuple` يكون عنصر `String` فيه مخزَّنًا بشكل sparse. [#108790](https://github.com/ClickHouse/ClickHouse/pull/108790) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `TYPE_MISMATCH` في `mapFilter` و`mapSort` و`mapReverseSort` و`mapPartialSort` و`mapConcat` عندما تحتوي قيمة `Map` على `Map` متداخل مع `LowCardinality`، مثل `mapFilter((k, v) -> 1, map('a'::LowCardinality(String), map('x'::LowCardinality(String), 'y')))`. [#108798](https://github.com/ClickHouse/ClickHouse/pull/108798) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عدم قيام `insert_quorum = 'auto'` برفض inserts مسبقًا عندما يكون عدد replicas الحية أقل من الأغلبية. أصبحت مثل هذه inserts تفشل الآن فورًا برسالة `TOO_FEW_LIVE_REPLICAS` بدلًا من كتابة جزء محلي ثم انتهاء المهلة لاحقًا مع `UNKNOWN_STATUS_OF_INSERT`. [#108800](https://github.com/ClickHouse/ClickHouse/pull/108800) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* تم إصلاح bug كان يجعل صف `WITH TOTALS` في `JOIN` يحتوي أحيانًا على قيم default (مثل `0`) بدلًا من القيم الثابتة القادمة من استعلام فرعي ثابت على أحد جانبي join. كانت النتيجة الخاطئة تظهر فقط مع بعض ترتيبات join أو مع الإعداد `query_plan_join_swap_table`. [#108807](https://github.com/ClickHouse/ClickHouse/pull/108807) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح fault ناتج عن segmentation (إلغاء مرجع مؤشر فارغ) كان يمكن أن يحدث عند تنفيذ إيقاف الخادم بالتزامن مع إيقاف جدول `S3Queue`/`AzureQueue`. [#108810](https://github.com/ClickHouse/ClickHouse/pull/108810) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح توقف عند بدء التشغيل (`Cannot allocate ThreadStack`, `EINVAL`) في بنيات glibc التي تعمل على معالجات CPU ذات حجم كبير لمكدس الإشارات (مثل Intel Sapphire Rapids / Granite Rapids مع نواة تدعم AMX)، حيث لم يكن حجم مكدس الإشارات البديل يُقرَّب إلى مضاعف لحجم الصفحة. [#108813](https://github.com/ClickHouse/ClickHouse/pull/108813) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فشل الاستعلامات الموزعة أحيانًا برسالة `UNEXPECTED_PACKET_FROM_SERVER` (`expected TablesStatusResponse, got ProfileInfo`) عند إعادة استخدام connection من المجمّع كانت query ملغاة سابقة قد تركتها في حالة عدم تزامن. [#108854](https://github.com/ClickHouse/ClickHouse/pull/108854) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ منطقي (استثناء في إصدارات build النهائية، وإيقاف للخادم في إصدارات debug وsanitizer) كان يمكن أن يحدث عند استدعاء دالة لها أكثر من وسيط `LowCardinality` واحد على distributed table، مثل `concatAssumeInjective((SELECT toLowCardinality('p')), s)` عند استخدامها كمفتاح `GROUP BY` مع table function ‏`remote`. وكانت الرسائل هي `Default functions implementation for LowCardinality is supported only with a single LowCardinality argument` أو `Expected the argument ... to have N rows, but it has M`. [#108871](https://github.com/ClickHouse/ClickHouse/pull/108871) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `reinterpret(x, 'Decimal128(scale)')` (وكذلك الأهداف `Decimal32`/`Decimal64`/`Decimal256`/`DateTime64`) الذي كان ينتج عمود نتائج يكون فيه scale الداخلي هو scale المصدر بدلًا من scale الهدف المطلوب، عندما كان المصدر والهدف من النوع الفيزيائي نفسه. كانت القيم صحيحة، لكن كائن العمود كان غير متسق بنيويًا مع نوعه المُعلَن. [#108878](https://github.com/ClickHouse/ClickHouse/pull/108878) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` (`New empty part is about to materialize but the directory already exist`) كان يمكن أن يؤدي إلى إيقاف الخادم في إصدارات debug وsanitizer عندما تُنفَّذ عملية `DROP`/`DETACH`/`MOVE`/`REPLACE PARTITION` على جدول `MergeTree` بعد أن تكون عملية سابقة من هذا النوع قد انقطعت (مثل transaction جرى التراجع عنها أو تعطل) وتركت خلفها directory قديمًا باسم `tmp_empty_<part>`. وأصبح الآن يُستعاد هذا الـ directory القديم بدلًا من الفشل. [#108879](https://github.com/ClickHouse/ClickHouse/pull/108879) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح ClickHouse Keeper الذي كان يعيد القيمة `dataLength = 0` بشكل غير صحيح في `Stat` ضمن استجابات `Create2`، وكذلك عميل ClickHouse ZooKeeper الذي لم يكن يفك تسلسل `Stat` في استجابات `Create2`. [#108909](https://github.com/ClickHouse/ClickHouse/pull/108909) ([unintended](https://github.com/unintended)).
* تم إصلاح `clickhouse-local` الذي كان يرفض قيمة خيار فارغة مكتوبة مباشرة بجوار الرمز `=` (مثل `--format_csv_null_representation=''`)؛ وهو الآن يتصرف بالطريقة نفسها كما في `--format_csv_null_representation ""` و `SET format_csv_null_representation = ''`. [#108910](https://github.com/ClickHouse/ClickHouse/pull/108910) ([Vismay](https://github.com/vismaytiwari)).
* تم إصلاح `LOGICAL_ERROR` (`Inconsistent AST formatting`) كان يؤدي إلى إيقاف الخادم في إصدارات debug وsanitizer عند formatting لنوع البيانات `Tuple` الذي يجمع بين عناصر مسماة وغير مسماة (مثل `Tuple(a UInt8, UInt16)`). [#108915](https://github.com/ClickHouse/ClickHouse/pull/108915) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ segmentation fault عند دمج aggregate states الخاصة بـ `uniqExact` مع `GROUPING SETS` أو `ROLLUP` أو `CUBE` ومع `max_threads > 1`. [#108928](https://github.com/ClickHouse/ClickHouse/pull/108928) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح احتمال ظهور نتائج غير صحيحة أو reads خارج الحدود عندما يتم التراجع عن `INSERT` بعد حدوث خطأ في منتصف الدفعة (مثل جداول `Buffer`، أو asynchronous inserts، أو محركات `Kafka`/`RabbitMQ`/`FileLog`) أثناء تفعيل lazy replication للأعمدة (`enable_lazy_columns_replication`). [#108935](https://github.com/ClickHouse/ClickHouse/pull/108935) ([Groene AI](https://github.com/groeneai)).
* أصبح `join_any_take_last_row` الآن مُطبَّقًا في جميع مسارات join المدعومة والمعتمدة على hash، بما في ذلك عمليات join التي تستخدم spilling to disk تلقائيًا. [#108936](https://github.com/ClickHouse/ClickHouse/pull/108936) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* تم إصلاح bug في analyzer حيث كان `FINAL` على أحد جداول `JOIN` (مثل `FROM t1 FINAL JOIN t2`) يُطبَّق بشكل غير صحيح على الجداول الأخرى المنضمة أيضًا، مما كان قد يجعل مثل هذه الاستعلامات أبطأ. [#108979](https://github.com/ClickHouse/ClickHouse/pull/108979) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح `LOGICAL_ERROR` ("يتعذر العثور على العمود `__grouping_set` في ترويسة MergingAggregatedTransform مع grouping sets"، أو "لم يتم تعيين معلومات chunk لـ chunk في MergingAggregatedTransform") الذي كان يمكن أن يحدث، عند تعطيل المحلل، مع `UNION ALL`/`INTERSECT`/`EXCEPT` إذا كان أحد الفروع يستخدم `GROUP BY GROUPING SETS` مع parallel replicas بينما يستخدم فرع آخر `FINAL`. [#109003](https://github.com/ClickHouse/ClickHouse/pull/109003) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` في مخطِّط parallel replicas التلقائي، والذي كان يمكن أن يحدث عند تمكين `automatic_parallel_replicas_mode` مع ضبط `parallel_replicas_min_number_of_rows_per_replica` على قيمة أكبر من 0. [#109011](https://github.com/ClickHouse/ClickHouse/pull/109011) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تخصيص مفرط للذاكرة أثناء استنتاج المخطط لتنسيق `MsgPack`: فلم يعد الإدخال التالف الذي يعلن رأس array/map/string/binary فيه عن عدد هائل من العناصر يتسبب في عملية تخصيص واحدة بحجم عدة غيغابايت، بل يُرفض الآن بوصفه إدخالًا غير صالح. ويعالج هذا حالة نفاد الذاكرة في إصدارات build النهائية (وحالة الإنهاء `allocation-size-too-big` عند استخدام أدوات sanitizer). [#109019](https://github.com/ClickHouse/ClickHouse/pull/109019) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاهل `use_client_time_zone` لقيم string الحرفية من نوع `DateTime`/`DateTime64` التي تُفسَّر على الخادم (`INSERT` غير المتزامن، والقيم الحرفية في `SELECT`). يمرِّر العميل الآن منطقته الزمنية المحلية باعتبارها `session_timezone` عند تمكين `use_client_time_zone`، بحيث تتطابق المعالجة على جانب الخادم مع مسار `INSERT` المتزامن. [#109051](https://github.com/ClickHouse/ClickHouse/pull/109051) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند تمكين `query_plan_optimize_lazy_final` مع مرشح `WHERE` مدفوع جزئيًا إلى `PREWHERE` (عبر `optimize_move_to_prewhere_if_final`). [#109073](https://github.com/ClickHouse/ClickHouse/pull/109073) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ عند استخدام النجمة المؤهلة مثل `b.*` في استعلام تكون فيه `b` اسمًا مستعارًا لجدول (أو subquery/CTE) ويتطابق اسمه مع اسم عمود غير مركب في جدول آخر. لم تعد مثل هذه الاستعلامات تفشل، وأصبحت تختار جميع أعمدة `b` بشكل صحيح. [#109078](https://github.com/ClickHouse/ClickHouse/pull/109078) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح الخطأ المنطقي `Block structure mismatch in JoinStep` (وهو إجهاض للخادم في إصدارات debug وsanitizer) عندما تُحوَّل subquery مترابطة إلى join وتحمل العلاقة المصدرية اسم العمود نفسه أكثر من مرة، مثل `WITH t AS (SELECT number, * FROM numbers(3)) SELECT *, (SELECT t.number WHERE t.number >= 0) FROM t` مع `correlated_subqueries_default_join_kind = 'right'`. [#109114](https://github.com/ClickHouse/ClickHouse/pull/109114) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حالة تعليق كان فيها استعلام يقرأ عبر filesystem cache قد يواصل الانتظار لتنزيل جارٍ حتى بعد إلغائه باستخدام `KILL QUERY`، كما كان إسقاط refreshable materialized view أو تنفيذ `SYSTEM STOP VIEW` عليها، إذا كان تحديثها عالقًا في انتظار مماثل، يؤدي إلى الحظر. [#109116](https://github.com/ClickHouse/ClickHouse/pull/109116) ([Murphy](https://github.com/murphy-4o)).
* تم إصلاح تجاهل الإعداد `parallel_view_processing` عند الإدراج في جدول يحتوي على materialized views — فمنذ الإصدار 25.10، كانت views تعمل دائمًا بالتوازي بغض النظر عن هذا الإعداد. [#109170](https://github.com/ClickHouse/ClickHouse/pull/109170) ([Antonio Andelic](https://github.com/antonio2368)).
* تم إصلاح حالة عدم اتساق في المحلل، إذ كانت قائمة الأعمدة في `INSERT` تقبل مطابِق أعمدة مؤهلًا مكتوبًا بصيغة `t.* LIKE '<pattern>'` / `t.* ILIKE '<pattern>'` لكنها ترفض صيغته القياسية `t.COLUMNS('<regexp>')`، مما كان يكسر إمكانية التحويل ذهابًا وإيابًا لتنسيق الاستعلام (ويتسبب أيضًا في إجهاض الخادم في إصدارات debug وsanitizer). [#109176](https://github.com/ClickHouse/ClickHouse/pull/109176) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الزيادات غير الأحادية في `ProfileEvents`: إذ كان من الممكن زيادة العدّادين `NetworkReceiveBytes` و`AIOWriteBytes` بمقدار سالب (مما يؤدي إلى الالتفاف إلى قيمة ضخمة) عند انتهاء مهلة المقبس أو فشل AIO، كما كان `MemoryOvercommitWaitTimeMicroseconds` يُقاس باستخدام ساعة غير أحادية. [#109180](https://github.com/ClickHouse/ClickHouse/pull/109180) ([Azat Khuzhin](https://github.com/azat)).
* تم إصلاح استنتاج المخطط لتنسيقات `Arrow` و`ArrowStream` و`Avro` ولقارئات `ORC` و`Parquet` القديمة، إذ كانت تُرجع `Nullable(Tuple)` لأعمدة البنية القابلة لأن تكون فارغة، رغم أن النوع `Nullable(Tuple)` غير مسموح به (عند تعطيل `allow_experimental_nullable_tuple_type`). كان `DESCRIBE` يُرجع نوعًا يرفضه `CREATE TABLE`، لذلك كان إنشاء جدول أو إدراج بيانات باستخدام المخطط المستنتج يفشل مع الخطأ `Nullable Tuple type is not allowed`. [#109185](https://github.com/ClickHouse/ClickHouse/pull/109185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح نتيجة غير صحيحة لعبارتي `EXISTS` المترابطة والاستعلامات الفرعية ذات القيمة المفردة عندما يظهر الارتباط فقط في إسقاط الاستعلام الفرعي مع وجود عبارة `WHERE` غير مترابطة (إذ كان من الممكن أن يُقيَّم الاستعلام الفرعي إلى false / `NULL` لكل صف). يصلح [#105760](https://github.com/ClickHouse/ClickHouse/issues/105760). [#109186](https://github.com/ClickHouse/ClickHouse/pull/109186) ([Dmitry Novik](https://github.com/novikd)).
* تم إصلاح `CREATE USER ... HOST LIKE 'a', 'b'` (و`ALTER USER` المكافئ له) الذي كان يحتفظ بصمت بالنمط الأول فقط. تُخزَّن الآن جميع أنماط `HOST LIKE` المحددة في قائمة السماح بالمضيفات الخاصة بالمستخدم. [#109187](https://github.com/ClickHouse/ClickHouse/pull/109187) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح حالة كان فيها فهرس نصي معرّف على `mapValues(map)` أو `mapKeys(map)` لا يُستخدم بصمت عند الاستعلام عن جدول عبر جدول بمحرك `Distributed` باستخدام analyzer. كان الفهرس يُستخدم للجدول المحلي وعبر دوال الجداول `cluster`/`remote`، لكن الاستعلام عبر جدول بمحرك `Distributed` كان يتجاوزه (ويفشل مع `INDEX_NOT_USED` تحت `force_data_skipping_indices`). [#109188](https://github.com/ClickHouse/ClickHouse/pull/109188) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` زائف (`There was an error on <host>: Cannot obtain error message (probably it's a bug)`) كان يمكن أن يتسبب في إيقاف الخادم في بنى debug وsanitizer عند تشغيل استعلام DDL على قاعدة بيانات `Replicated` بعد أن تكون عقدة حالة `finished` الخاصة بكل مضيف في Keeper قد نُظِّفت بالفعل. [#109192](https://github.com/ClickHouse/ClickHouse/pull/109192) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نسب `SAMPLE` ذات الأسّ الذي يتجاوز مقدارُه نطاق `Int32` (مثل `SAMPLE 1e-3000000000`) والتي كانت تُعامَل بصمت على أنها `SAMPLE 1`. [#109197](https://github.com/ClickHouse/ClickHouse/pull/109197) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح التحقق من صلاحية الوصول لـ `SYSTEM PREWARM PRIMARY INDEX CACHE ... ON CLUSTER`، والذي كان يتطلب خطأً صلاحية `SYSTEM PREWARM MARK CACHE` بدلًا من `SYSTEM PREWARM PRIMARY INDEX CACHE`. [#109198](https://github.com/ClickHouse/ClickHouse/pull/109198) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح فشل استعلامات `ALTER` لجداول `MergeTree` المُنشأة بإعداد `disk` مخصص (`SETTINGS disk = disk(...)`). يصلح [#63019](https://github.com/ClickHouse/ClickHouse/issues/63019). [#109199](https://github.com/ClickHouse/ClickHouse/pull/109199) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تم إصلاح تعطل في الخادم عند الجمع بين حالات الدوال التجميعية `cramersV` و`cramersVBiasCorrected` و`contingency` أو `theilsU` من سياق نافذة (`OVER ()`) ومن تجميع عادي عبر set operations متسلسلة (`EXCEPT`, `INTERSECT`) أو `UNION ALL` متداخلة، ثم قراءتها، على سبيل المثال عبر المُركِّب `-Merge`. [#109200](https://github.com/ClickHouse/ClickHouse/pull/109200) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتيجة غير صحيحة لـ `ANY JOIN` مع شرط `ON` ثابت (مثل `t1 ANY INNER JOIN t2 ON 1`): إذ كان الاستعلام يعيد حاصل الضرب الديكارتي الكامل بدلًا من ناتج `ANY JOIN`. [#109207](https://github.com/ClickHouse/ClickHouse/pull/109207) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح تعطل في الخادم عند asynchronous insert مع deduplication عندما يتسبب `optimize_on_insert` في أن تصبح inserted block فارغة (على سبيل المثال، الصفوف التي يكون مجموعها صفرًا في `SummingMergeTree`). [#109229](https://github.com/ClickHouse/ClickHouse/pull/109229) ([Den Kalantaevskii](https://github.com/Diskein)).
* إصلاح `SYSTEM DROP REPLICA` و`SYSTEM DROP DATABASE REPLICA ... FROM ZKPATH` بحيث يرفضان مسارات ZooKeeper الفارغة أو التي تشير إلى الجذر فقط وقت التحليل باستخدام `BAD_ARGUMENTS`، ويوجِّهان مسارات Keeper المساعدة إلى Keeper المسمى، ويوحِّدان مسارات Keeper بحيث لا تتمكن فحوصات الحماية الذاتية المحلية من استهداف replica المقصودة بالخطأ أو تجاوزها. [#109230](https://github.com/ClickHouse/ClickHouse/pull/109230) ([Groene AI](https://github.com/groeneai)).
* إصلاح أولوية إعدادات S3 بحيث تكون الأولوية لكتلة نقطة النهاية `<s3>` ذات نطاق `URL` على إعدادات `<s3>` الافتراضية في المستوى الأعلى. [#109251](https://github.com/ClickHouse/ClickHouse/pull/109251) ([Bharat Nallan](https://github.com/bharatnc)).
* تم إصلاح خلل كانت فيه قيم `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) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل `CREATE TABLE ... AS SELECT` من `s3Cluster` (وسائر cluster table functions مثل `fileCluster`/`urlCluster`) مع `NOT_FOUND_COLUMN_IN_BLOCK` داخل قاعدة بيانات `Replicated`. [#109266](https://github.com/ClickHouse/ClickHouse/pull/109266) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `SHOW TABLES` و`SELECT ... FROM system.tables` اللذين كانا يعيدان نتائج مختلفة لقواعد بيانات Data Lake Catalog: إذ أصبحت الجداول التي لا يستطيع ClickHouse قراءتها مخفيةً الآن بشكل متسق في كلتيهما. [#109273](https://github.com/ClickHouse/ClickHouse/pull/109273) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* تم إصلاح خلل كان يؤدي فيه دمج جدول `MergeTree` يحتوي على projections، مع تفعيل الإعداد `enable_block_number_column` أو `enable_block_offset_column`، إلى إنتاج projection parts تحتوي على العمود الزائد `_block_number`/`_block_offset`. وبعد ذلك لم يعد projection part المدمج يطابق تعريف projection ولا projection parts الناتجة عن الإدراج، لذلك كان `CHECK TABLE` و`OPTIMIZE ... DRY RUN` يبلغان عنه على أنه تالف (`CORRUPTED_DATA`). [#109284](https://github.com/ClickHouse/ClickHouse/pull/109284) ([Groene AI](https://github.com/groeneai)).
* السماح بقراءة `array` من Avro مكوَّنة من سجلات ثنائية الحقول `{key, value}` إلى عمود `Map` في ClickHouse. وهذا هو الترميز الذي ينتجه Iceberg وSpark لـ `MAP<K, V>` ذي مفتاح غير نصي (إذ إن خرائط Avro الأصلية لا تدعم إلا المفاتيح النصية). في السابق، كان يمكن قراءة مثل هذا الملف على أنه `Array(Tuple(key, value))`، ولكن ليس على أنه `Map(K, V)`، إذ كان يفشل مع `Type Map(...) is not compatible with Avro array`. [#109289](https://github.com/ClickHouse/ClickHouse/pull/109289) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل في الخادم عند `CREATE HYPOTHETICAL INDEX ... TYPE set` (وكذلك `ngrambf_v1`/`tokenbf_v1`) عند إغفال وسيطة الفهرس المطلوبة. وتُرفَض هذه العبارات الآن برسالة خطأ واضحة. [#109294](https://github.com/ClickHouse/ClickHouse/pull/109294) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` (`Current component is empty`) الذي كان يمكن أن تسببه عمليات mutation مثل `KILL MUTATION` على جدول `MergeTree` يخزّن بياناته الوصفية في Keeper، عند تمكين إعداد الخادم `enforce_keeper_component_tracking`. [#109297](https://github.com/ClickHouse/ClickHouse/pull/109297) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة timestamps من `ORC` التي تتجاوز تقريبًا سنة 2262 إلى عمود `DateTime64` ذي scale أقل من 9. إذ كان قارئ `ORC` الأصلي يحوّل كل timestamp سابقًا عبر قيمة وسيطة ثابتة من نوع `DateTime64(9)`، مما يؤدي إلى overflow في `Int64` عند مستوى النانوثانية ويرفض هذه القيم مع `VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE`، حتى عندما يكون scale المطلوب لـ `DateTime64` (مثل `DateTime64(6)`، كما ينتجه Iceberg) قادرًا على تمثيل القيمة. وتُقرأ timestamps الآن مباشرةً وفق scale المطلوب، كما يُراعى `date_time_overflow_behavior` حتى عندما يتعذر على scale الهدف نفسه استيعاب القيمة. [#109302](https://github.com/ClickHouse/ClickHouse/pull/109302) ([Groene AI](https://github.com/groeneai)).
* أصبح `clickhouse-local`، عند تشغيله كخادم (بعد `SYSTEM START LISTEN HTTP`)، يقدّم HTTP connections باستخدام output format الافتراضي `TabSeparated`، بما يتوافق مع `clickhouse-server`، بدلًا من الافتراضي التفاعلي `PrettyCompact`. ويعالج هذا مشكلة الاتصال بـ `clickhouse-local` عبر HTTP باستخدام برامج تشغيل مثل `clickhouse-connect`. وتظل جلسة terminal التفاعلية تعرض النتائج بصيغة `PrettyCompact`. [#109362](https://github.com/ClickHouse/ClickHouse/pull/109362) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح إخفاق عابر من النوع `Code: 499 ... InvalidPart` (`S3_ERROR`) في multipart uploads على S3. فقد قد يُبلغ MinIO، لفترة وجيزة، عن part تم رفعه للتو على أنه مفقود عند `CompleteMultipartUpload`؛ ويُعاد الآن هذا الخطأ كما هو الحال مع `NoSuchKey` الذي كانت تتم معالجته مسبقًا، وذلك ضمن الحدود التي يفرضها `s3_max_unexpected_write_error_retries`. [#109364](https://github.com/ClickHouse/ClickHouse/pull/109364) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `UNKNOWN_IDENTIFIER` في `ALTER TABLE ... DROP COLUMN` عندما يحتوي عمود آخر على expression من نوع `DEFAULT` أو `MATERIALIZED` يعرّف alias مضمنًا ويشير إليه. [#109374](https://github.com/ClickHouse/ClickHouse/pull/109374) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح data race (وما قد ينتج عنها من تعطل نادر) في الدمج المتوازي لحالات aggregate للدالة `uniqExact` مع sets ثنائية المستوى، وهو ما كان يمكن أن يحدث مع `GROUPING SETS` و`ROLLUP` و`CUBE`. [#109389](https://github.com/ClickHouse/ClickHouse/pull/109389) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ (`NOT_FOUND_COLUMN_IN_BLOCK`، أو `std::bad_function_call` في الإصدارات الأقدم) عند تشغيل `CREATE TABLE ... ON CLUSTER ... AS SELECT` مع قراءة جدول `Distributed` على cluster يحتوي على shardين أو أكثر. [#109407](https://github.com/ClickHouse/ClickHouse/pull/109407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح عمليات الدمج للجداول التي تحتوي على `TTL ... GROUP BY` (rollup): إذ كان يمكن إعادة جدولة parts التي جرى تجميعها بالكامل مسبقًا للدمج مرة تلو الأخرى إلى ما لا نهاية، كما كانت الجداول التي تحتوي على أعمدة `MATERIALIZED` أو persistent virtual columns مفعّلة تُعالَج بشكل غير صحيح — وتُجمَّع هذه الأعمدة الآن باستخدام `any`. يُغلق [#105647](https://github.com/ClickHouse/ClickHouse/issues/105647). [#109410](https://github.com/ClickHouse/ClickHouse/pull/109410) ([Mikhail Artemenko](https://github.com/Michicosun)). [#109532](https://github.com/ClickHouse/ClickHouse/pull/109532) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تم إصلاح `IN` عند استخدام array column مجردة في argument الأيمن، إذ كانت تعيد بصمت نتيجة خاطئة (دائمًا false) أو تطرح استثناءً، بحيث أصبح `x IN arr` يتصرف مثل `has(arr, x)`. [#109416](https://github.com/ClickHouse/ClickHouse/pull/109416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح أخطاء `UNKNOWN_IDENTIFIER` في عمليات `ALTER TABLE` (`RENAME`/`ADD`/`MODIFY COLUMN`، و`MATERIALIZE INDEX` على table تحتوي على parts أُدرجت حديثًا) في جداول `MergeTree` التي تتضمن min-max index ضمنيًا على persistent virtual columns ‏`_block_number`/`_block_offset` (مفعّل عبر `add_minmax_index_for_block_number_column`/`add_minmax_index_for_block_offset_column`). [#109428](https://github.com/ClickHouse/ClickHouse/pull/109428) ([Groene AI](https://github.com/groeneai)). [#110236](https://github.com/ClickHouse/ClickHouse/pull/110236) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` في `arrayFold` على argument غير ثابت من النوع `Array(LowCardinality(T))` (على سبيل المثال `arrayFold((acc, x) -> acc + x, materialize([1, 2, 3]::Array(LowCardinality(Int64))), toInt64(0))`)؛ إذ كان يفشل مع `Arguments of 'plus' have incorrect data types` (وكان يتسبب في إيقاف server في بنى debug وsanitizer). [#109462](https://github.com/ClickHouse/ClickHouse/pull/109462) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `CHECK TABLE` على table من نوع `ReplicatedMergeTree` كانت تُبلّغ عن part سليمة على أنها معطوبة عند حدوث خطأ ZooKeeper عابر وقابل لإعادة المحاولة (مثل فقدان connection) أثناء الفحص؛ وتظهر هذه الأخطاء الآن بدلًا من ذلك كخطأ query قابل لإعادة المحاولة. [#109465](https://github.com/ClickHouse/ClickHouse/pull/109465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح أعطال segfault في `groupArrayLastMerge` وaggregate function ‏`largestTriangleThreeBuckets`: إذ أصبح deserialization لحالات aggregate function يُتحقق منه الآن، بحيث لا تؤدي الحالة المعطوبة إلى وصول إلى الذاكرة خارج الحدود. [#109485](https://github.com/ClickHouse/ClickHouse/pull/109485) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). [#109492](https://github.com/ClickHouse/ClickHouse/pull/109492) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح عدم فرض الحدّ العام `max_rows_in_join` / `max_bytes_in_join` على join algorithm ‏`parallel_hash`، إذ كان يمكن لـ query مع `join_overflow_mode = 'throw'` أن تنجح بصمت بدلًا من رفع `SET_SIZE_LIMIT_EXCEEDED`. [#109488](https://github.com/ClickHouse/ClickHouse/pull/109488) ([Hechem Selmi](https://github.com/m-selmi)).
* تم إصلاح قراءة Paimon tables المقسّمة حسب column من نوع `BIGINT` لا تتسع قيمته داخل `Int32`. وكانت قيم partition هذه تُقتطع (فعلى سبيل المثال كانت `9223372036854775807` تصبح `-1`)، مما كان ينتج عنه مسار partition خاطئ ويفشل مع خطأ filesystem. [#109510](https://github.com/ClickHouse/ClickHouse/pull/109510) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح crash عند قراءة Iceberg tables التي تحتوي على equality delete files. فإذا كانت column قابلة لأن تكون nullable في equality delete file لكنها غير nullable في table schema (أو العكس)، كانت values المقروءة من delete file تُدرج في column من نوع مختلف عبر cast غير متحقق منه (التباس في column type)، مما كان يفسد column ويتسبب في تعطل server. [#109551](https://github.com/ClickHouse/ClickHouse/pull/109551) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح عدم سريان `connect_timeout` ومهلتَي القراءة والكتابة الخاصة بـ MySQL: إذ كان يمكن لمحاولة connection إلى MySQL server غير مستجيب أن تظل معلّقة لأكثر من دقيقتين حتى مع `connect_timeout = 1`، لأن الإشارات الدورية الخاصة بـ sampling query profiler كانت تواصل إعادة ضبط مهلة poll الداخلية في MySQL client. [#109592](https://github.com/ClickHouse/ClickHouse/pull/109592) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح `LOGICAL_ERROR` (`creation_csn is not set while removal_csn is set to 1`) الذي كان يمكن أن يظهر عند تشغيل `TRUNCATE` غير معاملاتي بالتزامن مع معاملة غير مُعتمدة كانت قد أدخلت بيانات إلى الجدول نفسه. ولم يعد `TRUNCATE` من هذا النوع يزيل الأجزاء التي أنشأتها المعاملات التي لم تُعتمد بعد. [#109598](https://github.com/ClickHouse/ClickHouse/pull/109598) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح أخطاء `TYPE_MISMATCH` عند قراءة أعمدة struct في `Parquet` عندما تختلف قابلية NULL الفعلية عن نوع ClickHouse المطلوب: إذ يمكن الآن قراءة مجموعة `Parquet` غير القابلة لـ NULL على أنها `Nullable(Tuple(...))`، كما يمكن لقارئ `Parquet` الأصلي قراءة struct قابل فعليًا لـ NULL (أي مجموعة `OPTIONAL` في `Parquet`) على أنه `Nullable(Tuple(...))`. [#109615](https://github.com/ClickHouse/ClickHouse/pull/109615) ([Groene AI](https://github.com/groeneai)). [#109898](https://github.com/ClickHouse/ClickHouse/pull/109898) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فقدان صامت للبيانات عند إلحاق عبارة `INSERT ... VALUES` في دفق متعدد الاستعلامات بتعليق SQL ختامي (مثل `VALUES (1) -- comment`) ضمن مسار تحليل الإدراج المضمّن على جانب الخادم (`send_table_structure_on_insert_with_inline_data = 0`). إذ كان التعليق الختامي يُفسَّر على أنه بيانات صف بعد علامة الإنهاء `;`، ما كان يؤدي إلى تخطي الاستعلامات التالية في الدفق بصمت. [#109643](https://github.com/ClickHouse/ClickHouse/pull/109643) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ segfault عند وصول استعلام خلال نافذة زمنية ضيقة أثناء إيقاف تشغيل الخادم بعد حدوث خطأ عند بدء التشغيل. [#109675](https://github.com/ClickHouse/ClickHouse/pull/109675) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح فهارس التخطي القديمة (`text` و`bloom_filter` وغيرها) وprojections بعد materializing lightweight updates باستخدام `ALTER TABLE ... APPLY PATCHES`. سابقًا، كانت ملفات الفهرس وprojection التي تعتمد على عمود تم تحديثه عبر patch تبقى دون تغيير، لذلك كان يمكن أن تُرجع الاستعلامات التي تستخدمها نتائج غير صحيحة (مثل أن يفوّت `hasToken` صفًا مُحدَّثًا، أو أن تُرجع projection تجميعات قديمة بعد إزالة patch part المستهلَك). [#109709](https://github.com/ClickHouse/ClickHouse/pull/109709) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة قيام `system.tables` بتخطي قواعد البيانات بصمت للمستخدمين الذين لديهم أذونات على مستوى كل قاعدة بيانات، عندما يقرأ الاستعلام العمودين `name`/`database` فقط. قُدِّمت في 26.2. [#109723](https://github.com/ClickHouse/ClickHouse/pull/109723) ([Samay Sharma](https://github.com/samay-sharma)).
* إصلاح `LOGICAL_ERROR` عند كتابة عمود `LowCardinality(Time)` إلى تنسيق `Arrow` مع `output_format_arrow_low_cardinality_as_dictionary = 1`. [#109730](https://github.com/ClickHouse/ClickHouse/pull/109730) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة قيام `ObjectStorageQueue`/`AzureQueue` (ودالة الجدول `azureBlobStorage`) بتخطي الكائنات بصمت عندما تُرجع object storage صفحة سرد فارغة مع token متابعة. يحدث هذا في Azure Blob Storage (على سبيل المثال عند عبور السرد حدًا داخليًا لـ partition)، وكان مكرّر السرد غير المتزامن يتعامل مع الصفحة الفارغة على أنها نهاية السرد ويتجاهل الـ token. أما الآن فأصبح يتبع token المتابعة. [#109761](https://github.com/ClickHouse/ClickHouse/pull/109761) ([Gal Ben Moshe](https://github.com/GalBenMoshe)).
* تم إصلاح مشكلة تسبب partition pruning في عدم إرجاع أي صفوف لِـ Iceberg tables المقسّمة بحسب عمود timestamp (`DateTime64`). [#109764](https://github.com/ClickHouse/ClickHouse/pull/109764) ([Den Kalantaevskii](https://github.com/Diskein)).
* إصلاح استثناء `ILLEGAL_COLUMN` في الدالة `conv` لوسائط `FixedString`؛ إذ تُحوَّل الآن بشكل صحيح إلى `String`. يغلق [#109670](https://github.com/ClickHouse/ClickHouse/issues/109670). [#109771](https://github.com/ClickHouse/ClickHouse/pull/109771) ([hp](https://github.com/hp77-creator)).
* أصبحت الدالة `getClientHTTPHeader` تتعامل الآن مع أسماء الترويسات على أنها غير حساسة لحالة الأحرف، وفقًا لـ [RFC 9110](https://www.rfc-editor.org/info/rfc9110/#section-5.1)؛ وعلى وجه الخصوص، باتت ترويسة `authorization` تُستبعَد الآن بغض النظر عن حالة الأحرف. إغلاق [#103957](https://github.com/ClickHouse/ClickHouse/issues/103957). [#109791](https://github.com/ClickHouse/ClickHouse/pull/109791) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إصلاح مشكلة في `max_execution_time` (مع `timeout_overflow_mode = 'throw'`) حيث كان أحيانًا لا يُلغي الاستعلام مطلقًا: فعندما يكون مراقب المهلة الداخلي بانتظار استعلام له موعد نهائي لاحق، قد يُغفَل تمامًا استعلامٌ بموعد نهائي أبكر يُسجَّل بعد ذلك، مما يسمح له بالاستمرار بعد حدّه الزمني بمدة طويلة. [#109792](https://github.com/ClickHouse/ClickHouse/pull/109792) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح اسم الملف لملفات البيانات الوصفية لـ Iceberg المضغوطة بصيغة gzip. كان ClickHouse يكتبها بصيغة `v{N}.gzip.metadata.json` (رمز HTTP `Content-Encoding`)، بينما تتوقع مواصفة Iceberg الامتداد `gz` أي `v{N}.gz.metadata.json`. ونتيجةً لذلك، لم يتمكن Spark وغيره من القرّاء المعتمدين على كتالوج Hadoop من العثور على البيانات الوصفية التي كتبها ClickHouse. يكتب ClickHouse الآن `v{N}.gz.metadata.json`، وما يزال يقرأ الاسم القديم `gzip` حفاظًا على التوافق مع الإصدارات السابقة. [#109812](https://github.com/ClickHouse/ClickHouse/pull/109812) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `NOT_IMPLEMENTED` ‏("Method getDataAt is not supported for Nullable(String)") الذي كان يمكن أن ينشأ عند تنفيذ join مع `enable_join_runtime_filters = 1` (مفعّل افتراضيًا منذ 26.2) عندما يكون مفتاح join في جهة البناء هو `LowCardinality(Nullable(...))` مع قيم `NULL`، ويعود runtime filter إلى bloom filter الخاص به. [#109824](https://github.com/ClickHouse/ClickHouse/pull/109824) ([Groene AI](https://github.com/groeneai)).
* لم تعد محركات قواعد البيانات الخارجية (مثل `PostgreSQL`) تدفع مقارنات النطاق (`>=`, `>`, `<=`, `<`) إلى الأسفل على أعمدة `UUID`. يرتّب ClickHouse وقواعد البيانات الخارجية معرّفات UUID بطريقة مختلفة، لذا كان دفع هذه الشروط إلى الأسفل يؤدي بصمت إلى إسقاط صفوف من النتيجة؛ وتُقيَّم هذه الشروط الآن داخل ClickHouse بدلًا من ذلك. [#109833](https://github.com/ClickHouse/ClickHouse/pull/109833) ([Vismay](https://github.com/vismaytiwari)).
* تم إصلاح انهيار في الخادم عند تمرير تعبير لامبدا في موضع تتوقع فيه دالة عالية الرتبة قيمةً فعلية (مثل المُراكِم في `arrayFold`، كما في `arrayFold(lambda, arr, another_lambda)`). وتُرفَض مثل هذه الاستعلامات الآن بخطأ `ILLEGAL_TYPE_OF_ARGUMENT` بدلًا من التسبب في الانهيار عندما يكون `enable_analyzer = 0`. [#109840](https://github.com/ClickHouse/ClickHouse/pull/109840) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعريف `icebergLocal` table function و`IcebergLocal` engine لنوع object storage على أنه `azure` بدلًا من `local`، وهو ما كان يؤدي إلى فشلهما في التحقق من نوع القرص (`Disk type doesn't match`) عند استخدامهما مع قرص محلي عبر `SETTINGS disk = '...'`. [#109872](https://github.com/ClickHouse/ClickHouse/pull/109872) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح قراءة جداول Iceberg المُقسَّمة بحسب عمود المصدر نفسه أكثر من مرة (على سبيل المثال `PARTITIONED BY (hours(ts), ts)`). وكانت مثل هذه الجداول تفشل سابقًا برسالة `Cannot add column ...: column with this name already exists (ILLEGAL_COLUMN)`. [#109895](https://github.com/ClickHouse/ClickHouse/pull/109895) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج استعلام غير صحيحة ناتجة عن قيام فهرس المفتاح الأساسي باستبعاد الحبيبات على نحوٍ خاطئ في الجداول التي تحتوي على عمود مفتاح بترتيب معكوس (`DESC`) عندما لا تحتوي الأجزاء على علامة نهائية (granularity غير متكيفة، `index_granularity_bytes = 0`). [#109901](https://github.com/ClickHouse/ClickHouse/pull/109901) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح `generateRandomStructure` الذي كان يُنتج أحيانًا سلسلة بنية غير صالحة تتضمن نوعَي بيانات ملتصقين (مثل `Decimal32(7)IPv4`) عندما يتجاوز تداخل الأنواع حد العمق الداخلي، مما يجعل النتيجة متعذّرة التحليل. [#109928](https://github.com/ClickHouse/ClickHouse/pull/109928) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `NOT_IMPLEMENTED` (`Method getDataAt is not supported for Nullable(String) in case if value is NULL`) عند إنشاء فهرس `text` على `Array(LowCardinality(Nullable(String)))` (بما في ذلك حقول `Nested` المخزنة بهذه الطريقة) إذا كانت المصفوفة المفهرسة تحتوي على عنصر `NULL`. أصبحت عناصر `NULL` في المصفوفة الآن تُتخطى أثناء إنشاء الفهرس، بما يتوافق مع `Array(Nullable(String))`. [#110055](https://github.com/ClickHouse/ClickHouse/pull/110055) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح النتائج الخاطئة عند إنشاء skip index من نوع `minmax` على عمود `LowCardinality(Nullable(...))`: إذ كانت predicates من نوع `WHERE`/`PREWHERE`/`HAVING ... IS NULL` التي تُدفَع إلى طبقة التخزين تستبعد سابقًا كل granule وتُرجع 0 صفوف رغم أن العمود كان يحتوي على قيم `NULL`. [#110061](https://github.com/ClickHouse/ClickHouse/pull/110061) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `distinct_overflow_mode = 'break'`: أصبح `DISTINCT` الآن يُرجع النتيجة الجزئية المتراكمة حتى بلوغ الحد ويتوقف عن قراءة المصدر، كما هو موثّق. سابقًا، كانت الـ chunk التي تتجاوز `max_rows_in_distinct` / `max_bytes_in_distinct` تُهمَل (مما يؤدي إلى نتائج مقتطعة أو فارغة)، بينما كان الاستعلام يواصل القراءة والإدراج في مجموعة التجزئة حتى نهاية الإدخال، وقد ينتهي ذلك بـ `MEMORY_LIMIT_EXCEEDED`. [#110075](https://github.com/ClickHouse/ClickHouse/pull/110075) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* تم إصلاح خطأ منطقي `ChunkInfoRowNumbers does not exist` عند تنفيذ `OPTIMIZE TABLE` على Iceberg table يحتوي على ملف بيانات بتنسيق غير Parquet (مثل `ORC`) أحدث من جميع position delete files. [#110107](https://github.com/ClickHouse/ClickHouse/pull/110107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `max_bytes_in_distinct` و `max_bytes_in_set`: إذ تُخزَّن مفاتيح السلاسل النصية في arena لم تكن تُحتسب ضمن فحوصات الحدود، لذلك كان `DISTINCT` / `IN` على مفاتيح السلاسل النصية قد يحتفظ بذاكرة تتجاوز حد البايتات بمقدار payload المفتاح بالكامل (من دون حد لطول المفتاح). أصبحت الحدود الآن تحتسب الـ arena، بما يطابق التوثيق؛ وقد تتجاوز الاستعلامات ذات مفاتيح السلاسل النصية القريبة من حد البايتات هذا الحد في وقت أبكر الآن (على نحو صحيح). [#110120](https://github.com/ClickHouse/ClickHouse/pull/110120) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* تم إصلاح خطأ `LOGICAL_ERROR` (`Bad cast from type ColumnLowCardinality to ColumnString`) عندما يُغلّف `identity` (أو نتيجة استعلام فرعي قيَمي) قيمةً تحتوي على `LowCardinality` متداخلة ويستخدم الاستعلام `WITH TOTALS`/`WITH ROLLUP`. [#110138](https://github.com/ClickHouse/ClickHouse/pull/110138) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة ملفات `Npy` ذات الأبعاد الداخلية صفرية الحجم: أصبح عدد الصفوف المادية ونتائج `count` المحسّنة وغير المحسّنة متطابقًا الآن. [#110146](https://github.com/ClickHouse/ClickHouse/pull/110146) ([Yanjun Qiu](https://github.com/qiuyanjun888)).
* تم إصلاح تضخّم بزمن تربيعي (وعدم الاستجابة لـ `max_execution_time`) في aggregation in order عند التجميع بحسب عدة مفاتيح يكون sort order فيها مجرد بادئة لمفتاح التجميع. [#110159](https://github.com/ClickHouse/ClickHouse/pull/110159) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح خطأ منطقي (`Unexpected number of columns in result sample block`) عندما يُحسَّن عامل تصفية يحتوي على استعلام فرعي مترابط (مثل `exists((SELECT ...))`) باستخدام `convert_query_to_cnf` أو `optimize_and_compare_chain`. [#110187](https://github.com/ClickHouse/ClickHouse/pull/110187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح استثناء (`UNION mode UNION_DEFAULT must be normalized`) كان يحدث عندما تستخدم عملية mutation من نوع `DELETE` أو `ALTER UPDATE` عمليةً على المجموعات (`UNION`/`UNION ALL`/`UNION DISTINCT`/`EXCEPT`/`INTERSECT`) داخل استعلام فرعي في شرط `WHERE` أو في إسناد `UPDATE`. [#110196](https://github.com/ClickHouse/ClickHouse/pull/110196) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح الخطأ المنطقي `ReadBuffer is canceled. Can't read from it.` (توقف الخادم في بُنى debug/sanitizer) الذي كان يمكن أن يحدث أثناء قراءة أرشيف zip (مثلًا أثناء `RESTORE` من نسخة احتياطية بصيغة zip) بعد فشل قراءة سابقة من الأرشيف نفسه في منتصف التدفق. [#110197](https://github.com/ClickHouse/ClickHouse/pull/110197) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح بطء إيقاف تشغيل الخادم وعدم استجابة `KILL MUTATION` عندما كانت عملية mutation تحتوي على `x IN (subquery)` وتبني مجموعة الاستعلام الفرعي أثناء تحليل المفتاح الأساسي؛ ويُلغى الآن بناء المجموعة فورًا. [#110198](https://github.com/ClickHouse/ClickHouse/pull/110198) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يرفض Keeper الآن تعيين إعدادات coordination ‏`max_requests_batch_size` و`max_requests_append_size` إلى `0` بدلًا من أن يعلق في حلقة append-entries لا نهائية في إعداد متعدد العُقد. [#110200](https://github.com/ClickHouse/ClickHouse/pull/110200) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام `GROUP BY ALL` على تعبير tuple مع `ORDER BY`. [#110206](https://github.com/ClickHouse/ClickHouse/pull/110206) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند تنفيذ `INSERT` في جدول يحتوي على قيد `CHECK` يشير إلى subcolumn (مثل `x.null` لعمود `Nullable` أو `arr.size0` من `Array`). [#110208](https://github.com/ClickHouse/ClickHouse/pull/110208) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح قراءة Iceberg tables التي يشير فيها sort order الافتراضي إلى عمود يحتاج إلى وضعه بين علامتَي اقتباس (مثل `@timestamp`). وكانت هذه الجداول غير قابلة للقراءة لأن `ORDER BY` المُنشأ للتخزين كان يُبنى من اسم العمود الخام ويفشل تحليله مع `SYNTAX_ERROR`. [#110233](https://github.com/ClickHouse/ClickHouse/pull/110233) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `system.tables` لقاعدة بيانات `DataLakeCatalog` ‏(Iceberg/Glue)، حيث كان يؤدي إلى إيقاف الاستعلام بالكامل أو إسقاط الجداول بصمت عندما يتعذر حل metadata لجدول واحد. ويظل هذا الجدول الآن مُدرجًا بالاسم مع قيم default/`NULL` للأعمدة التي تحتاج إلى كائن التخزين المفتوح (`engine` و`total_rows` وما إلى ذلك)، بغض النظر عن `database_datalake_require_metadata_access`. ولا يزال الوصول المباشر إلى الجدول المعطوب يُبلغ عن الخطأ. [#110242](https://github.com/ClickHouse/ClickHouse/pull/110242) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح احتمال حدوث تعطل (heap-buffer-overflow) عندما كان عمود حالة دالة aggregate من عائلة `quantileTDigest` يُستخدم كمفتاح `GROUP BY` ويُسلسَل بالتوازي بواسطة عدة threads. [#110263](https://github.com/ClickHouse/ClickHouse/pull/110263) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح فشل `INSERT` في جدول `DataLakeCatalog` على Microsoft Fabric / OneLake مع `IncorrectEndpointError` ‏(HTTP 400)، وذلك بتوجيه عمليات كتابة ADLS Gen2 ‏(DFS) إلى المضيف ذي نقطة النهاية `.dfs` بدلًا من المضيف `.blob`. ملاحظة: عند استخدام `remote_url_allow_hosts`، يجب إدراج مضيفَي Fabric ‏`.blob` (للقراءة) و`.dfs` (للكتابة) في قائمة السماح لتنفيذ `INSERT`. [#110290](https://github.com/ClickHouse/ClickHouse/pull/110290) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* تم إصلاح إيقاف للخادم عند تحليل بعض استعلامات PRQL (`SET dialect = 'prql'`). كان حدوث panic داخل المصرّف `prqlc` يؤدي إلى إنهاء العملية بدلًا من الإبلاغ عنها كخطأ في الاستعلام. [#110316](https://github.com/ClickHouse/ClickHouse/pull/110316) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح نتائج استعلام خاطئة كانت تمر بصمت عندما كان projection part، المكتوب قبل تغيّر مجموعة أعمدة الـ projection (على سبيل المثال، بعد الترقية عبر إصدارات تُجسِّد مصدر عمود `ALIAS` بشكل مختلف، أو بعد أن يعيد `ALTER TABLE ... MODIFY COLUMN` توجيه عمود `ALIAS` يستخدمه projection)، يُقرأ عبر الـ projection أو يُدمج: إذ كان العمود المفقود يُملأ بقيم افتراضية بدلًا من البيانات الفعلية. تُقرأ هذه الأجزاء الآن من base table، وتعيد عمليات الدمج بناء الـ projection انطلاقًا من البيانات الأساسية. [#110328](https://github.com/ClickHouse/ClickHouse/pull/110328) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح عدم التزام `ORDER BY ... WITH FILL` بـ `max_execution_time` وبطئه في الإلغاء عند توليد نطاق fill كبير (خصوصًا مع `INTERPOLATE`). [#110332](https://github.com/ClickHouse/ClickHouse/pull/110332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح logical error (إيقاف للخادم في إصدارات debug/sanitizer) عند تنفيذ `ALTER` متعدد الأوامر مثل `UPDATE ..., DELETE ...` على Iceberg table. أصبحت مثل هذه mutations تُرفض الآن مع خطأ واضح `NOT_IMPLEMENTED`. [#110347](https://github.com/ClickHouse/ClickHouse/pull/110347) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح bug في parser حيث كان `COMMENT` يُفسَّر خطأً على أنه alias ضمني عندما ينتهي استعلام `SELECT` مباشرة بعد معرّف table مجرد (مثل `... FROM t COMMENT 'x'`)، مما كان يؤدي إلى خطأ صياغة مضلل بدلًا من تطبيق التعليق على الـ view/table. [#110372](https://github.com/ClickHouse/ClickHouse/pull/110372) ([Aditya Kumar](https://github.com/adityaksolves)).
* تم إصلاح تعطل في الخادم (overflow أصلي في المكدس) عند نسخ أو إتلاف قيمة حرفية متداخلة بعمق من النوع `Array`/`Tuple`/`Map`/`Object`، مثل استعلام يحتوي على قيمة حرفية شديدة التداخل عند رفع `max_parser_depth`. [#110393](https://github.com/ClickHouse/ClickHouse/pull/110393) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح حالتين كان يمكن فيهما لـ vector search أن يعيد عددًا من rows أقل من المتوقع: إذ كانت قيم `vector_search_index_fetch_multiplier` الأقل من 1.0 قد تختزل عدد fetch المحسوب إلى الصفر وتنتج نتيجة فارغة (وأصبحت هذه القيم الآن مرفوضة)، كما يُتخطى الآن optimization الخاص بـ vector search لاستعلامات `LIMIT ... WITH TIES`، لأن هذا optimization يقيّد البحث بعدد N من المرشحين بالضبط ويحذف rows المتعادلة مع الصف رقم N. [#110452](https://github.com/ClickHouse/ClickHouse/pull/110452) ([Tamish Mhatre](https://github.com/tamish560)). [#110453](https://github.com/ClickHouse/ClickHouse/pull/110453) ([Tamish Mhatre](https://github.com/tamish560)).
* تم إصلاح logical error ‏`Expected CommonSubplanReferenceStep to reference CommonSubplanStep`، والخطأ ‏`Subplan cannot be used to build pipeline`، وlogical error ‏`Trying to extract chunk from ChunkBuffer before all inputs are finished` في `IN (subquery)` عندما يحتوي الـ subquery على correlated subquery ويُبنى الـ set أثناء index analysis. [#110491](https://github.com/ClickHouse/ClickHouse/pull/110491) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح substitution الخاصة بـ query parameters داخل تعريفات عبارة `WINDOW` مسمّاة. سابقًا، كانت parameters هناك تُترك دون substitution بصمت، وكان parameter `Identifier` غير المعيَّن قد يؤدي إلى الاستثناء `Logical error: '!part.empty()'` أثناء `EXPLAIN SYNTAX`. [#110506](https://github.com/ClickHouse/ClickHouse/pull/110506) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح فشل بدء تشغيل الخادم لجداول `MergeTree` على object storage disks عندما يكون الملف المتبقي `txn_version.txt.tmp` قد أفسد metadata على مستوى disk. [#110519](https://github.com/ClickHouse/ClickHouse/pull/110519) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي في filesystem cache (`Expected file ... not to exist`) كان يمكن أن يحدث عند فشل تنزيل cache في الخلفية بسبب خطأ غير متعلق بـ filesystem (على سبيل المثال أثناء تشغيل `OPTIMIZE` على Iceberg table)، ما كان يترك ملف cache يتيمًا وفارغًا. [#110549](https://github.com/ClickHouse/ClickHouse/pull/110549) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قراءة stream تالف بتنسيق `Native` عندما يكون عدد الأنواع في `Dynamic` أو عدد المسارات في `JSON`/`Object` قريبًا من `SIZE_MAX`: إذ أصبح هذا الإدخال المشوّه يُرفض الآن برسالة خطأ واضحة `INCORRECT_DATA` بدلًا من `std::length_error` غير الملتقط. [#110590](https://github.com/ClickHouse/ClickHouse/pull/110590) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تعطل في الخادم ضمن database engine `MaterializedPostgreSQL` كان يمكن أن يحدث عندما يكون table في حالة detached (أو يتغير هيكله) بينما لا يزال مُدرجًا في قائمة انتظار المزامنة. [#110596](https://github.com/ClickHouse/ClickHouse/pull/110596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح السلوك غير الصحيح لـ `SET param_<name>` في العميل (وأعلام `--param_<name>`) عندما يطابق اسم parameter اسم setting مضمّنًا مثل `limit` أو `offset` أو `max_threads` أو `log_comment`. وبحسب setting المتصادم، كان query يفشل مع `CANNOT_PARSE_QUOTED_STRING`، أو كانت value تُطبَّع بصمت (مثلًا `max_threads=0` تصبح `auto(N)`)، أو كان اسم alias الخاص بـ setting يُفقد. كما كان هذا النوع من parameter يُعطّل جميع أوامر `SET param_*` اللاحقة في الجلسة نفسها. [#110597](https://github.com/ClickHouse/ClickHouse/pull/110597) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح قراءة subcolumns التابعة لـ column يحتوي على expression من نوع `DEFAULT` ولم يتم materialize له في part (مثلًا بعد `ALTER TABLE ADD COLUMN` أو أثناء `ALTER TABLE MATERIALIZE COLUMN`): إذ كان subcolumn يُملأ بالقيم default الخاصة بالنوع بدلًا من ناتج expression `DEFAULT` بعد تقييمه، كما كانت دوال Distance functions للمتجهات المنقولة (`cosineDistanceTransposed` وغيرها) على أعمدة `QBit` هذه تفشل بخطأ `SIZES_OF_ARRAYS_DONT_MATCH`. يغلق هذا [#110634](https://github.com/ClickHouse/ClickHouse/issues/110634). [#110636](https://github.com/ClickHouse/ClickHouse/pull/110636) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `LOGICAL_ERROR` بعنوان `Invalid partition key size: 0` كان يمكن أن يتسبب في فشل `INSERT` إلى table من نوع `MergeTree` ومقسّم إلى partition مع تفعيل `non_replicated_deduplication_window`، وذلك عندما تكون دفعة async insert قد خضعت لإزالة التكرار جزئيًا فقط (كانت بعض قيم `insert_deduplication_token` مكررة وبعضها جديدًا). [#110651](https://github.com/ClickHouse/ClickHouse/pull/110651) ([Groene AI](https://github.com/groeneai)).
* أصبحت عملية flush الخاصة بـ asynchronous insert في الخلفية تتوقف سريعًا عند إنهائها باستخدام `KILL QUERY`؛ إذ كانت عملية flush لحمولة كبيرة مخزنة مؤقتًا تواصل التحليل حتى النهاية وتتجاهل الإلغاء سابقًا. [#110652](https://github.com/ClickHouse/ClickHouse/pull/110652) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تم إصلاح نتائج خاطئة من `GROUP BY` مع `optimize_aggregation_in_order` و`DISTINCT` مع `optimize_distinct_in_order` عند وضعهما فوق JOIN من نوع `partial_merge`. فقد كان تحسين read-in-order يُمرَّر عبر partial-merge join، الذي يعيد ترتيب الإدخال الأيسر بحسب join key، وبالتالي لا يحافظ على الترتيب الأصلي لـ stream الأيسر، ما أدى إلى تجميع الصفوف بشكل غير صحيح. [#110671](https://github.com/ClickHouse/ClickHouse/pull/110671) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح overflow لعدد صحيح موقّع في `toStartOfInterval` عند استخدام عدد interval بالغ التطرف من `MONTH` أو `WEEK` أو `DAY` على قيم `Date`/`Date32`/`DateTime64`. [#110688](https://github.com/ClickHouse/ClickHouse/pull/110688) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` في الاستعلامات التي تحتوي على استعلام فرعي داخل `FROM` عند تشغيل النسخ المتماثلة المتوازية في وضع `custom_key_sampling` / `custom_key_range`. وكانت هذه الاستعلامات (مثل `SELECT * FROM (SELECT id, k, v FROM t WHERE id < 20) ORDER BY k`) تفشل سابقًا برسالة `Not found column __table2.id in block ...`. [#110690](https://github.com/ClickHouse/ClickHouse/pull/110690) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة رفض `readWKT` لسلاسل WKT التي تبدأ بمسافة بادئة (مثل `readWKT(' POINT(1 2)')`)، رغم أن قارئات `readWKTPoint`/`readWKTPolygon`/... المعرّفة نوعيًا تقبلها، وكذلك قواعد WKT نفسها. [#110706](https://github.com/ClickHouse/ClickHouse/pull/110706) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`Column ... already added for reading`، وهو ما يؤدي إلى إيقاف الخادم في buildات `debug`/`sanitizer`) عند استخدام predicate نفسه لفهرس نصي في كلٍّ من `PREWHERE` و`WHERE` ضمن استعلام على جدول `Merge` فوق جدول `Distributed`. [#110710](https://github.com/ClickHouse/ClickHouse/pull/110710) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` في دوال المسافة المنقولة على أعمدة `QBit` (مثل `cosineDistanceTransposed`) عند استدعائها باستخدام استعلام فرعي قياسي أو متجه مرجعي ثابت مع تفعيل النسخ المتماثلة المتوازية. وهذا يغلق [#110719](https://github.com/ClickHouse/ClickHouse/issues/110719). [#110729](https://github.com/ClickHouse/ClickHouse/pull/110729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ نادر من نوع `LOGICAL_ERROR` (`Unexpected number of parts to remove from parts_queue`؛ وهو ما يؤدي إلى إيقاف الخادم في buildات `debug`/`sanitizer`) في `ReplicatedMergeTree` عندما كانت عمليتا partition (مثل استعلامَي `MOVE PARTITION`/`REPLACE PARTITION`، أو عندما يتسابق أحدهما مع `DROP_RANGE` في الخلفية) تُلغيان فحص الجزء في الخلفية على ranges متداخلة في الوقت نفسه. [#110738](https://github.com/ClickHouse/ClickHouse/pull/110738) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ منطقي `Hash is not set for serialization` كان قد يحدث عندما يكون عمود ذو codec من نوع `Quantized(...)` مُغلّفًا داخل serialization أخرى، على سبيل المثال في جدول `Merge` فوق مصادر يكون فيها العمود ذو الاسم نفسه بأنواع مختلفة (مُدمجة في `Variant`). [#110776](https://github.com/ClickHouse/ClickHouse/pull/110776) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعليق الخادم عند ضرب state الخاصة بـ aggregate function من نوع `median`/`quantile` في ثابت صحيح ضخم (مثل `medianState(x) * 18446744073709551615`). إذ كان الاستعلام يصبح غير مستجيب للإلغاء وقد يستمر في العمل إلى أجل غير مسمى. [#110779](https://github.com/ClickHouse/ClickHouse/pull/110779) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم (قسمة عدد صحيح على صفر) عند استهلاك quota ذات interval بطول صفري (على سبيل المثال `CREATE QUOTA q FOR INTERVAL 0 SECOND MAX queries = 1000`). ويُرفض الآن عند إنشاء quota أي interval للحصة مدته غير موجبة. [#110846](https://github.com/ClickHouse/ClickHouse/pull/110846) ([Pedro Ferreira](https://github.com/PedroTadim)).
* تم إصلاح مشكلة `throwIf(notLike(col, pattern))` (وغيرها من حالات `throwIf` على دالة) التي كانت تتسبب في الرمي دون شرط عندما يكون `col` من نوع `LowCardinality`. إذ كان التنفيذ الافتراضي لـ `LowCardinality` يشغّل `throwIf` على الـ Dictionary بالكامل، والذي يحتوي دائمًا على default value المحجوزة حتى عندما لا يشير إليها أي row، لذا فإن وجود قيمة غير صفرية في ذلك الموضع غير المستخدم كان يؤدي إلى أن يرمي `throwIf` على بيانات لا تستوفي الشرط. [#110864](https://github.com/ClickHouse/ClickHouse/pull/110864) ([Groene AI](https://github.com/groeneai)).
* تمرير الأدوار النشطة للاستعلام (`SET ROLE` أو المعلمة `role`) إلى العقد البعيدة عند قراءات النسخ المتوازية وقراءات `Distributed` عبر عنقود مؤمَّن بسرّ interserver؛ إذ كانت العقد البعيدة سابقًا تعود إلى الأدوار الافتراضية للمستخدم، ما كان يؤدي إلى تقييم سياسات الصفوف على نحو غير متسق مع العقدة البادئة. [#110867](https://github.com/ClickHouse/ClickHouse/pull/110867) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح جداول Iceberg التي كانت تنتج معرّفات حقول مكررة بعد `ALTER TABLE ... ADD COLUMN` عندما يحتوي المخطط الأولي على حقول متداخلة (`Tuple`/`Array`/`Map`). يسجّل `last-column-id` الآن أكبر معرّف حقل مُسنَد، بما في ذلك الأبناء المتداخلون، لذلك لم يعد العمود المضاف لاحقًا يعيد استخدام معرّف حقل متداخل، ولم تعد القراءات تفشل بسبب `ICEBERG_SPECIFICATION_VIOLATION` (`Duplicate field id`). [#110884](https://github.com/ClickHouse/ClickHouse/pull/110884) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل في builds الخاصة بـ FIPS عند استخدام مفتاح SSH من نوع Ed25519 (`CREATE USER ... IDENTIFIED WITH ssh_key ... TYPE 'ssh-ed25519'`، أو مثل هذا المفتاح في `users.xml`). ‏Ed25519 غير معتمد من FIPS؛ لذا تُرفض هذه المفاتيح الآن برسالة `LIBSSH_ERROR` واضحة. [#110891](https://github.com/ClickHouse/ClickHouse/pull/110891) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح النتائج منخفضة الدقة لدوال المسافة المنقولة على أعمدة `QBit` (`cosineDistanceTransposed`, `L2DistanceTransposed`, `dotProductTransposed`). كانت القيم المقتطعة إلى مستويات البت `precision` يُعاد بناؤها مع ملء البتات المحذوفة بالأصفار، ما كان يحرّف كل قيمة معاد بناؤها نحو الصفر ويؤدي إلى سلوك متدهور عند الدقة المنخفضة: بالنسبة إلى `QBit(BFloat16)` عند `precision` يساوي 1 لا يبقى سوى بت الإشارة، لذلك كانت كل قيمة تُعاد بناؤها إلى `±0.0` وكانت المسافة ثابتة نفسها لكل صف، من دون أي معلومات للترتيب. تُعاد الآن القيم المقتطعة إلى نقطة وسط محدودة ضمن خلية الدقة المتبقية (شيفرات `Int8` الخام إلى مركز خليتها؛ مع الحفاظ على الأصفار الدقيقة واللانهايات)، بحيث تتيح قيمة `precision` الأصغر مبادلة الدقة بالسرعة من دون نتائج منحازة بشدة. أما النتائج ذات الدقة الكاملة فلم تتغير. هذا يغلق [#110898](https://github.com/ClickHouse/ClickHouse/issues/110898). [#110911](https://github.com/ClickHouse/ClickHouse/pull/110911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل في server (use-after-free) أثناء الإيقاف السلس بعد الاستعلام عن جداول Iceberg من جلسات استخدمت أيضًا جداول مؤقتة. [#110914](https://github.com/ClickHouse/ClickHouse/pull/110914) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح `LOGICAL_ERROR: Cannot sum Bools` (إيقاف server في debug/sanitizer builds) عند دمج aggregate states الخاصة بـ `sumMap`/`sumMapWithOverflow`/`sumMapFiltered` مع قيم `Bool` جرى serialize لها بتنسيق الحالة القديم (الإصدار 0). ويصحح الإصلاح نفسه أيضًا حالتين صامتتين لنتائج خاطئة مع حالات `Bool` من الإصدار 0: لم تكن مفاتيح map من النوع `Bool` تُزال ازدواجيتها عبر الحالات، وكانت عملية compaction للقيم الصفرية تُسقط الإدخالات الخاطئة. [#110922](https://github.com/ClickHouse/ClickHouse/pull/110922) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل عند استخدام aggregate function مع combinator ‏`-Tuple` مع `RESPECT NULLS` وإنتاجها حالة وسيطة (`-State`، أو aggregation موزعة، أو `WITH ROLLUP`/`WITH CUBE`). كانت الوظيفة المدمجة تُسمّى باسم متغير الحالة الخاطئ، لذلك كان النوع `AggregateFunction` المُسلسَل يُحلّ مجددًا إلى تخطيط غير متوافق في الذاكرة عند round-trip. [#110930](https://github.com/ClickHouse/ClickHouse/pull/110930) ([Groene AI](https://github.com/groeneai)).
* إصلاح `PREWHERE` (وسياسات مستوى الصف) على عمود في Iceberg أُعيدت تسميته عبر schema evolution، إذ كان يعيد بصمت `0` rows لملفات البيانات القديمة. تُرجِع مثل هذه الاستعلامات الآن الصفوف الصحيحة، بما يطابق `WHERE`. [#110941](https://github.com/ClickHouse/ClickHouse/pull/110941) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` (`LazyMaterializingTransform: Number of rows in lazy chunk N does not match number of offsets M`) الذي قد يحدث في استعلامات البحث المتجهي عند استخدام `vector_search_with_rescoring = 1` مع التجسيد الكسول عندما تتساوى عدة مسافات. [#111003](https://github.com/ClickHouse/ClickHouse/pull/111003) ([Groene AI](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) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح القراءات المتقادمة على أقراص `plain_rewritable` عند تمكين ذاكرة تخزين الصفحات المؤقتة. [#111105](https://github.com/ClickHouse/ClickHouse/pull/111105) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح خطأ `CANNOT_CONVERT_TYPE` للثوابت من النوع `Variant` (بما في ذلك `Geometry`) في الاستعلامات الموزعة والاستعلامات التي تستخدم النسخ المتماثلة المتوازية. [#111136](https://github.com/ClickHouse/ClickHouse/pull/111136) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح خلل كان قد يتسبب في فشل قراءة الملفات الكبيرة من HDFS أو قراءتها بشكل غير صحيح عندما يتجاوز طلب قراءة واحد حد الحجم 32-بت الخاص بـ `hdfsPread` (`INT_MAX`). [#98470](https://github.com/ClickHouse/ClickHouse/pull/98470) ([Arup Chauhan](https://github.com/arup-chauhan)).
* إصلاح الاستخدام غير الصحيح لفهرس النص في مقارنات المساواة مع قيمة بحث فارغة. [#108340](https://github.com/ClickHouse/ClickHouse/pull/108340) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح حالة تعليق في `SYSTEM SYNC MERGES` مع محدد الدمج `Manual` عندما يتعذر وضع دمج مجدول ضمن مجموعة خلفية ممتلئة. [#108770](https://github.com/ClickHouse/ClickHouse/pull/108770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `ATTACH TABLE ... AS REPLICATED` الذي كان يتجاهل البيانات المعتمدة ويعيد إحياء الصفوف السابقة لـ `mutation` عند ترك ملف `txn_version.txt.tmp` متقادمًا على جزء بيانات. [#108772](https://github.com/ClickHouse/ClickHouse/pull/108772) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة تسابق محتملة في `ALTER TABLE ... MOVE PARTITION TO TABLE` مع جداول `MergeTree` غير المتماثلة، والتي كان يمكن أن تنتج أجزاء بيانات متداخلة، لأن اعتماد الأجزاء المنقولة وتخصيص رقم الكتلة لم يكونا تحت القفل نفسه. [#108922](https://github.com/ClickHouse/ClickHouse/pull/108922) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح قراءة جداول `Iceberg` المكتوبة بواسطة Databricks UniForm، الذي يكتب مخططًا شكليًا placeholder (مع قائمة حقول فارغة) في ملفات manifest. [#108945](https://github.com/ClickHouse/ClickHouse/pull/108945) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح استخدام ذاكرة بعد تحريرها عند قراءة جدول `Hive` غير مقسَّم إلى partition باستخدام عدة خيوط. [#109164](https://github.com/ClickHouse/ClickHouse/pull/109164) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم إعادة مستوى سجل وحدة التحكم بعد بدء تشغيل الخادم عند تعيين `logger.startup_console_log_level`: إذ كان المستوى يُلتقط من مفتاح إعدادات خاطئ، لذلك ظلت وحدة التحكم على مستوى بدء التشغيل المرتفع طوال عمر الخادم. يغلق [#103472](https://github.com/ClickHouse/ClickHouse/issues/103472). [#109858](https://github.com/ClickHouse/ClickHouse/pull/109858) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* إصلاح اختلالات عزل اللقطة في معاملات metadata الخاصة بأقراص `plain_rewritable`. يُصلح [#92055](https://github.com/ClickHouse/ClickHouse/issues/92055). [#110948](https://github.com/ClickHouse/ClickHouse/pull/110948) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح حالة توقّف (`front() called on an empty vector`) في `clickhouse-client --login` عندما لا يتم تمرير المضيف كوسيط `--host` صريح، مثلًا إذا كان مأخوذًا من `--connection` أو ملف الإعدادات أو متغير البيئة `CLICKHOUSE_HOST`. يغلق [#103603](https://github.com/ClickHouse/ClickHouse/issues/103603). [#110279](https://github.com/ClickHouse/ClickHouse/pull/110279) ([Christoph Wurm](https://github.com/cwurm)).
* إصلاح خطأ منطقي (`!part.empty()`) عندما تكون وسيطة lambda معرّفًا محاطًا بعلامات backtick ويحتوي اسمه على نقطة (مثل `__table1.`). كان هذا الاستعلام ينتج سابقًا استثناءً مُعالَجًا في إصدارات release، ويتسبب في توقّف الخادم في إصدارات debug وsanitizer أثناء تنسيق رسالة الخطأ. [#108735](https://github.com/ClickHouse/ClickHouse/pull/108735) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` (`No set is registered for key`) في `ALTER TABLE ... DROP COLUMN`، وmutations الخاصة بـ `ALTER TABLE ... DELETE`/`UPDATE`، و`DELETE FROM` خفيف الوزن، على الجداول التي تحتوي على عمود `ALIAS` يستخدم تعبيره عامل التشغيل `IN` (بما في ذلك عبر عمود `ALIAS` آخر). [#111039](https://github.com/ClickHouse/ClickHouse/pull/111039) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح فقدان صامت للبيانات مع async inserts وإزالة التكرار (`async_insert=1`, `async_insert_deduplicate=1`). فعندما كانت عدة إدخالات async-insert ذات قيم `insert_deduplication_token` مختلفة تُدمج في عملية flush واحدة وتُكتب إلى partitions منفصلة، كان كل token يُسجَّل في سجل إزالة التكرار لكل partition لمستها عملية flush، وليس فقط في الـ partition التي انتهت فيها صفوفه. ونتيجةً لذلك، كان أي insert لاحق يعيد استخدام أحد هذه tokens في partition لم يسبق أن كتب إليها يُزال تكراره بصمت. والآن لم تعد tokens تُسجَّل إلا في الـ partition التي انتهت فيها صفوفها فعليًا. يغلق [#111031](https://github.com/ClickHouse/ClickHouse/issues/111031). [#111049](https://github.com/ClickHouse/ClickHouse/pull/111049) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء `LOGICAL_ERROR` (`ScatterExchangeStep should have one source shard, got 8`) وظهور صفوف مكررة عند الاستعلام عن جدول `Merge` فوق جداول أو عروض `Distributed` مع الإعداد التجريبي `make_distributed_plan = 1`. يغلق [#107946](https://github.com/ClickHouse/ClickHouse/issues/107946). [#108401](https://github.com/ClickHouse/ClickHouse/pull/108401) ([Groene AI](https://github.com/groeneai)).
* إجراء serialize لعمود `Nullable(Tuple(...))` كحقل `CSV` واحد بدلًا من تسطيحه إلى أعمدة منفصلة. سابقًا، كانت القيمة غير NULL تُكتب على شكل عدة حقول `CSV`، بينما كان `NULL` يُكتب كحقل واحد `\N`، مما جعل عدد الأعمدة يعتمد على الصف وأفسد ترويسات `CSVWithNames`/`CSVWithNamesAndTypes` وعمليات round-trip. [#108959](https://github.com/ClickHouse/ClickHouse/pull/108959) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي (`KeyCondition uses PREWHERE output`) في قارئ `Parquet` v3 عندما يشير شرط المفتاح على مستوى format إلى عمود لا تتم قراءته من ملف `Parquet`. [#109267](https://github.com/ClickHouse/ClickHouse/pull/109267) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج غير صحيحة لعمليات القراءة عبر table function مع `FINAL` أو `SAMPLE` عند استخدام `serialize_query_plan = 1`. وكذلك إصلاح مفتاح ذاكرة التخزين المؤقت لإحصاءات جدول hash الخاص بـ aggregation لِـ table functions، بحيث لم تعد table functions المختلفة تشترك في نفس مُدخل التخصيص المسبق. [#109847](https://github.com/ClickHouse/ClickHouse/pull/109847) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تنظيف `BACKUP ... TO Memory(...)` عند فشله قبل الإنهاء النهائي: إذ كان النسخ الاحتياطي الفاشل يبقى مسجلًا، وبالتالي لا يمكن إعادة استخدام اسمه. [#109947](https://github.com/ClickHouse/ClickHouse/pull/109947) ([Julia Kartseva](https://github.com/jkartseva)).
* إصلاح العمليات الحسابية للحالات القصوى لـ interval في `WITH FILL STEP` ودوال interval للتاريخ/الوقت `add*` / `subtract*`: لم تعد الفروق الخارجة عن النطاق تعتمد على overflow الموقَّع، ولم يعد `WITH FILL` مع خطوة `YEAR` كبيرة جدًا يتعطل بسبب إرجاع التقويم إلى الخلف. [#110158](https://github.com/ClickHouse/ClickHouse/pull/110158) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء `411 Length Required` من خدمات Azure: أصبح نقل Azure عبر HTTP المعتمد على Poco يضبط `Content-Length` استنادًا إلى request body لعملاء SDK الذين لا يضبطونه بأنفسهم، مثل Azure Key Vault. [#110299](https://github.com/ClickHouse/ClickHouse/pull/110299) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* لم يعد يُطبَّق تحسين `FINAL` الكسول (`query_plan_optimize_lazy_final`، وهو معطّل افتراضيًا) عندما يقرأ query وفق ترتيب مفتاح sorting، لأن plan الاستبدال الناتجة عنه لا تحافظ على هذا الترتيب وقد تُرجع نتائج بترتيب غير صحيح. كما لم يعد يُطبَّق عندما يُطبَّق `LIMIT` أصغر من عدد rows المطلوب قراءتها مباشرةً على step القراءة، لأن تمريرة بناء المجموعة الإلزامية تُفقد ميزة الإنهاء المبكر. [#110576](https://github.com/ClickHouse/ClickHouse/pull/110576) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح مشكلة قيام `readWKT` و`readWKTPoint` بإرجاع إحداثيات غير مهيأة (scalar) أو قديمة من row سابقة (vectorized) للقيمة `POINT EMPTY`. وأصبح `POINT EMPTY` يُرفَض الآن مع `CANNOT_PARSE_TEXT`، لأن `Point` في ClickHouse هو `Tuple(Float64, Float64)` ثابت ولا يملك تمثيلًا فارغًا. [#110692](https://github.com/ClickHouse/ClickHouse/pull/110692) ([Groene AI](https://github.com/groeneai)).
* إصلاح التعامل الخاطئ مع timezone عند materializing أعمدة الجهة اليمنى في hash joins. يغلق [#111033](https://github.com/ClickHouse/ClickHouse/issues/111033). [#111074](https://github.com/ClickHouse/ClickHouse/pull/111074) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح نتائج `count()` الخاطئة وسقوط rows عند ترشيح مفتاح من نوع `String` (أو `FixedString` أضيق) أو skip index من نوع minmax بمقارنة مع ثابت `FixedString` أعرض، مثل `toFixedString('abc', 257) = string_col`. كان كل من pruning لمفتاح primary وminmax يبنيان النطاق من الثابت المحشو بـ NUL ويتخطيان granules المطابقة على نحو خاطئ. [#111106](https://github.com/ClickHouse/ClickHouse/pull/111106) ([Groene AI](https://github.com/groeneai)).
* إصلاح عمليات inserts غير المتزامنة بتنسيق `Native` بحيث لم يعد إدخال واحد مخزَّن مؤقتًا يصبح غير متوافق بعد `ALTER ... MODIFY COLUMN` يتسبب في فشل الدفعة بالكامل. يغلق [#111064](https://github.com/ClickHouse/ClickHouse/issues/111064). [#111108](https://github.com/ClickHouse/ClickHouse/pull/111108) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إصلاح `CREATE OR REPLACE` لقاموس مع كائن من نوع آخر: كان يفشل مع `CANNOT_DETACH_DICTIONARY_AS_TABLE` بعد أن يكون الاستبدال قد committed بالفعل، مما يترك table يتيمة باسم `_tmp_replace_*`. [#111142](https://github.com/ClickHouse/ClickHouse/pull/111142) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح `INCOMPATIBLE_TYPE_OF_JOIN` لعملية join من نوع `ANY` على table بمحرك `Join` عندما كان filter `WHERE` على عمود من الجهة اليمنى يسمح لـ query planner بإعادة كتابة join إلى `SEMI` أو `ANTI`. فـ table بمحرك `Join` لها strictness معلنة وثابتة لا يمكن تغييرها، لذا أصبح هذا التحويل يُرفَض الآن لمثل هذه الجداول. [#111362](https://github.com/ClickHouse/ClickHouse/pull/111362) ([Groene AI](https://github.com/groeneai)).
* إصلاح table function `format` التي كانت لا تُرجع أي columns عندما تُحلَّل بيانات الإدخال إلى zero rows (على سبيل المثال، مستند JSON فارغ أو `FeatureCollection` من GeoJSON بلا features). وهي الآن تُرجع نتيجة فارغة مع columns الصحيحة بدلًا من إطلاق `NOT_FOUND_COLUMN_IN_BLOCK`. يغلق [#111390](https://github.com/ClickHouse/ClickHouse/issues/111390). [#111428](https://github.com/ClickHouse/ClickHouse/pull/111428) ([Groene AI](https://github.com/groeneai)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* أصبحت builds الخاصة بـ sanitizer تلتقط الآن تقرير sanitizer في المخزن المؤقت العام `sanitizer_report`، بحيث يتمكن محلل core dump من قراءته من core dump. [#109333](https://github.com/ClickHouse/ClickHouse/pull/109333) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* ابنِ `musl` من المصدر بدلًا من استخدام binaries المضمّنة. [#97452](https://github.com/ClickHouse/ClickHouse/pull/97452) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام تطبيقات SIMD للدوال `memcmp`/`memcpy`/`memmove`/`memset`/`bcmp`/`memmem` من LLVM-libc. [#107566](https://github.com/ClickHouse/ClickHouse/pull/107566) ([Konstantin Bogdanov](https://github.com/thevar1able)). وإصلاح تلف صامت في `memmove` في builds الخاصة بـ Debug عند `-O0` (`-DDEBUG_O_LEVEL=0`) على الأجهزة التي تدعم AVX-512. [#110904](https://github.com/ClickHouse/ClickHouse/pull/110904) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إزالة استخدامات مكتبة `curl` من كامل codebase ومن مكتبات third-party المضمّنة. [#108296](https://github.com/ClickHouse/ClickHouse/pull/108296) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تم تحديث `mariadb-connector-c` إلى 3.4.9. [#108328](https://github.com/ClickHouse/ClickHouse/pull/108328) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث `libssh` إلى 0.12.0. [#108329](https://github.com/ClickHouse/ClickHouse/pull/108329) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح تعليق عند تنفيذ `COMMIT` للمعاملة على MacOS. [#108375](https://github.com/ClickHouse/ClickHouse/pull/108375) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيف خيار CMake باسم `COMPRESS_DEBUG_SECTIONS` لضغط أقسام Debug من نوع DWARF في object files (`-gz`)، ويُفعَّل تلقائيًا حيث يدعمه المصرّف، لتقليص دليل builds الخاصة بـ Debug؛ وتبقى binaries النهائية غير مضغوطة، لذلك لا يتأثر ترميز رموز stack trace وقت التشغيل. [#109306](https://github.com/ClickHouse/ClickHouse/pull/109306) ([Murphy](https://github.com/murphy-4o)). كما تُبنى الآن سلسلة أدوات LLVM المضمّنة مع zlib، بحيث يدعم clang الخاص بها `-gz=zlib`، وأُضيف أيضًا الرابط الرمزي المفقود `clang++-21`. [#109596](https://github.com/ClickHouse/ClickHouse/pull/109596) ([Murphy](https://github.com/murphy-4o)).
* أصبحت builds الخاصة بـ Debug تُصرِّف الآن Rust crates المضمّنة مع معلومات Debug مخفّضة (`debug = 1`، مستوى cargo's `limited`) ومن دون incremental cache (`REDUCE_RUST_DEBUG_INFO`، مفعّل افتراضيًا)، ما يقلّص build artifacts الخاصة بـ Rust (\~12 → \~7 GB من الصفر) ويمنع النمو غير المحدود لذاكرة cache الخاصة بـ cargo عبر عمليات إعادة البناء. اضبط `-DREDUCE_RUST_DEBUG_INFO=OFF` لاستعادة DWARF الكامل وincremental compilation. [#109471](https://github.com/ClickHouse/ClickHouse/pull/109471) ([Murphy](https://github.com/murphy-4o)).
* دعم exchange الخاص بـ distributed query المتدفقة وعمليات reads لـ `STREAM` على MacOS. [#109769](https://github.com/ClickHouse/ClickHouse/pull/109769) ([Raúl Marín](https://github.com/Algunenano)).
* ترقية `libarchive` من 3.8.7 إلى 3.8.8. [#109874](https://github.com/ClickHouse/ClickHouse/pull/109874) ([Robert Schulze](https://github.com/rschu1ze)).
* ترقية `c-ares` من 1.34.6 إلى 1.34.8. [#109905](https://github.com/ClickHouse/ClickHouse/pull/109905) ([Robert Schulze](https://github.com/rschu1ze)).
* تحديث `krb5` لإصلاح CVE-2026-40355 و CVE-2026-40356. [#109910](https://github.com/ClickHouse/ClickHouse/pull/109910) ([Robert Schulze](https://github.com/rschu1ze)).
* أُزيلت التبعية التابعة لجهة خارجية `libpng`. ويستخدم `FORMAT PNG` الآن مُشفِّر PNG صغيرًا مدمجًا بدلًا منه، ويعتمد على zlib المضمَّن. [#110051](https://github.com/ClickHouse/ClickHouse/pull/110051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف تتبّع لتخصيصات C الخام (التي لا تمر عبر `operator new`) في `memory tracker` على macOS، وذلك عبر تغليف نطاق malloc الخاص بـ jemalloc، بحيث تُطبَّق عليها حدود الذاكرة. [#110370](https://github.com/ClickHouse/ClickHouse/pull/110370) ([Raúl Marín](https://github.com/Algunenano)).
* تُبنى الآن صور Docker ذات اللاحقة `-distroless` لكلٍّ من `clickhouse-server` و`clickhouse-keeper` انطلاقًا من مرحلة production الخالية من shell؛ بينما كان يجري سابقًا بناؤها من مرحلة debug وكانت تتضمّن `/busybox/sh`. يُغلق [#105677](https://github.com/ClickHouse/ClickHouse/issues/105677). [#105678](https://github.com/ClickHouse/ClickHouse/pull/105678) ([ashishch432](https://github.com/ashishch432)).
* تحديث `abseil-cpp` إلى LTS `20260526.0`. [#108991](https://github.com/ClickHouse/ClickHouse/pull/108991) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="266">
  ### إصدار ClickHouse 26.6، بتاريخ 2026-06-25. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.6/)، [الفيديو](https://www.youtube.com/watch?v=-NmqMH9y4EY)
</div>

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

* يزيل هذا التغيير الميزة `allow_experimental_query_deduplication`. ظلت هذه الميزة تجريبية لفترة طويلة، ولا توجد لها اختبارات، ولن تحظى بالدعم (إذ كانت الاختبارات الأولية غير مستقرة وقد أُزيلت في [#49579](https://github.com/ClickHouse/ClickHouse/pull/49579)). [#99398](https://github.com/ClickHouse/ClickHouse/pull/99398) ([Igor Nikonov](https://github.com/devcrafter)).
* تستخدم ميزة `SYSTEM INSTRUMENT` المستندة إلى XRay الآن `arguments` بدلًا من `parameters`: فقد أُعيدت تسمية العمود `system.instrumentation.parameters` إلى `arguments`، وأُعيدت تسمية الصياغة `SYSTEM INSTRUMENT ADD ... HANDLER PARAMETERS ...` إلى `SYSTEM INSTRUMENT ADD ... HANDLER ARGUMENTS ...`. يجب تحديث أي استعلامات أو عمليات أتمتة تستخدم العمود أو الصياغة القديمة لاستخدام الأسماء الجديدة؛ إذ لم تعد الأسماء القديمة مدعومة. [#103854](https://github.com/ClickHouse/ClickHouse/pull/103854) ([Pablo Marcos](https://github.com/pamarcos)).
* أُعيدت تسمية الإعداد `show_data_lake_catalogs_in_system_tables` إلى `show_remote_databases_in_system_tables` مع توسيع نطاقه: عندما تكون قيمته 0 (القيمة الافتراضية)، تُخفى أيضًا قواعد بيانات `MySQL` و`PostgreSQL` من `system.tables` و`system.columns` و`system.completions`، بالإضافة إلى كتالوجات بحيرات البيانات. ويظل اسم الإعداد القديم محفوظًا كاسم مستعار. [#104416](https://github.com/ClickHouse/ClickHouse/pull/104416) ([Pablo Marcos](https://github.com/pamarcos)).
* تستهدف بنية x86 الافتراضية الآن x86-64-v3 ‏(AVX2) بدلًا من x86-64-v2 ‏(SSE4.2). ويتطلب ذلك معالج CPU يدعم AVX2 ‏(Intel Haswell أو أحدث، وAMD Excavator أو أحدث). إذا كان معالج CPU لديك لا يدعم AVX2، فاستخدم بنية `amd64compat` التي تستهدف x86-64 العادي. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح يُرفض استخدام `Dynamic`/`Variant` المتداخلة في تجميعات `min`/`max` وفهارس `minmax`. سابقًا، كان التحقق يقتصر على `Dynamic`/`Variant` في المستوى الأعلى فقط. يُغلق [#104747](https://github.com/ClickHouse/ClickHouse/issues/104747). [#105468](https://github.com/ClickHouse/ClickHouse/pull/105468) ([Pavel Kruglov](https://github.com/Avogar)).
* يرفض كل من `icebergHash` و`icebergBucket` الآن وسائط `Int128` و`UInt128` و`Int256` و`UInt256` و`Decimal256` مع إظهار خطأ صريح. سابقًا، كانا يقتطعان القيم الأكبر بصمت وينتجان تجزئات متصادمة. لا تعرّف مواصفة Iceberg التجزئة إلا للأعداد الصحيحة ذات 32/64 بت وللأعداد العشرية ذات دقة تصل إلى 38؛ حوِّل إلى `Int64` أو `Decimal128` للحفاظ على السلوك السابق للقيم التي تتسع لها هذه الأنواع. [#105866](https://github.com/ClickHouse/ClickHouse/pull/105866) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيف تحكم دقيق في تكرار عرض الاستعلامات في CLI. يقبل الخيار `--echo` الآن قيمة منطقية اختيارية ويعمل في كل من الوضع التفاعلي ووضع الدُفعات. ويتحكم الخياران الجديدان `--echo-formatted` و`--echo-query-id` في ما إذا كانت الاستعلامات المعاد عرضها تُنسَّق وما إذا كان `query_id` يُطبع، على التوالي. كما يتحكم الخيار `--hilite`/`--highlight` الآن أيضًا في تمييز الاستعلامات المعاد عرضها. وكأثر جانبي، أصبح `--echo` الآن خيارًا يقبل قيمة منطقية، لذا فإن أي استعلام موضعي يأتي مباشرة بعد `--echo` المجرد يُعامَل على أنه قيمته؛ استخدم `--echo --query "..."` أو `--echo=false` بدلًا من ذلك. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُزيلت دوال 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) ([Groene AI](https://github.com/groeneai)).
* لم يعد `ALTER TABLE ... REPLACE PARTITION ... FROM ...` يحذف بصمت بيانات القسم في الوجهة عندما لا يحتوي جدول المصدر على أي أجزاء في القسم المطلوب. سابقًا، كان هذا الطلب يزيل قسم الوجهة ولا يكتب شيئًا بدلًا منه — وهو سلوك قد يتسبب بسهولة في فقدان البيانات. والآن، يُرفض هذا افتراضيًا مع `BAD_ARGUMENTS`. لاستعادة سلوك المسح الصامت السابق، اضبط الإعداد الجديد `allow_replace_partition_from_empty_source = 1`، أو اضبط `compatibility` على `26.5` أو أقل؛ ولحذف بيانات الوجهة صراحةً، استخدم `ALTER TABLE ... DROP PARTITION`. [#104939](https://github.com/ClickHouse/ClickHouse/pull/104939) ([Groene AI](https://github.com/groeneai)).
* تتغير القيمة الافتراضية لإعداد الخادم `insert_deduplication_version` من `compatible_double_hashes` إلى `new_unified_hash`. تعمل إزالة التكرار عند الإدراج الآن على كتلة الإدراج بالكامل (لكل عملية insert) بدلًا من أن تعمل على مستوى كل جزء/قسم: تظل إعادة محاولة عملية insert نفسها خاضعة لإزالة التكرار، لكن لم تعد عمليتا insert مختلفتان تنتجان جزءًا متطابقًا تخضعان لإزالة التكرار بشكل متبادل، كما أن عمليات insert للصفوف نفسها بعد إعادة ترتيبها لم تعد تخضع لإزالة التكرار. اضبط `insert_deduplication_version = compatible_double_hashes` لاستعادة السلوك السابق. ويجب على المثيلات التي تُرقّى مباشرةً من إصدار كان يستخدم `old_separate_hashes` افتراضيًا أن تعمل أولًا باستخدام `compatible_double_hashes` حتى تنقضي أطول نافذة إزالة تكرار ذات صلة قبل الاعتماد على `new_unified_hash`. [#107886](https://github.com/ClickHouse/ClickHouse/pull/107886) ([Sema Checherinda](https://github.com/CheSema)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* تمت إضافة دعم للاستعلامات المستمرة فوق جداول `MergeTree`، ويُنفَّذ ذلك عبر سلسلة من قراءات snapshot. وهذه خطوة أولى نحو دعم عام للاستعلامات المتدفقة. [#105114](https://github.com/ClickHouse/ClickHouse/pull/105114) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تمت إضافة فهارس تخطٍّ افتراضية (what-if). استخدم `CREATE HYPOTHETICAL INDEX ... ON t (expr) TYPE ...` لتعريف فهرس تخطٍّ افتراضي ضمن نطاق الجلسة، ثم `EXPLAIN WHATIF SELECT ...` لتقدير نسبة التخطي والتكلفة من دون إنشائه فعليًا. وتظهر الفهارس المعرّفة في الجدول الجديد `system.hypothetical_indexes`. [#104608](https://github.com/ClickHouse/ClickHouse/pull/104608) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أُضيفت واجهة ويب مضمّنة عند `/schema` إلى `clickhouse-server` تعرض بصريًا مخطط الاعتماديات بين الجداول، والعروض المادية، والعروض المادية القابلة للتحديث، والقواميس، والجداول الموزعة، والعروض. [#105276](https://github.com/ClickHouse/ClickHouse/pull/105276) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تمت إضافة دعم تنسيق الإخراج `PNG`، مما يتيح عرض نتائج الاستعلام مباشرةً على هيئة صور PNG. [#74691](https://github.com/ClickHouse/ClickHouse/pull/74691) ([Maksim Dergousov](https://github.com/m7kss1)).
* تمت إضافة اكتشاف وكيل البرمجة المعتمد على الذكاء الاصطناعي (Claude Code وCursor وCodex وGemini CLI وGoose وغيرها) الذي استدعى `clickhouse-client` أو `clickhouse-local`، وذلك استنادًا إلى متغيرات البيئة. ويُبلَّغ عن الوكيل المكتشَف في العمود الجديد `client_agent` ضمن `system.query_log` و`system.query_thread_log` و`system.processes`. [#106619](https://github.com/ClickHouse/ClickHouse/pull/106619) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة جدول نظام جديد باسم `system.documentation` يجمع التوثيق المرجعي المضمّن للمكوّنات الموحدة في النظام (الدوال، ومحركات الجداول، وأنواع البيانات، والإعدادات، والتنسيقات، وغيرها) في جدول واحد، مع عرض التوثيق بصيغة Markdown. [#107463](https://github.com/ClickHouse/ClickHouse/pull/107463) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف تنسيق الإدخال `GeoJSON` لقراءة مستندات `FeatureCollection` الخاصة بـ [GeoJSON](https://geojson.org/)، بحيث يُنتج صفًا واحدًا لكل معلم مع الأعمدة `id` (`String`) و`geometry` (`Geometry`) و`properties` (`Nullable(JSON)`). وتُقرأ الأشكال الهندسية من الأنواع `Point` و`LineString` و`MultiLineString` و`Polygon` و`MultiPolygon` إلى النوع الأصلي `Geometry` في ClickHouse. أما `GeometryCollection` و`MultiPoint`، اللذان لا يستطيع النوع `Geometry` تمثيلهما، فيُطلقان استثناءً افتراضيًا، أو يمكن تخزينهما على هيئة `NULL` عبر الإعداد `input_format_geojson_unsupported_geometry_handling`. يساهم ذلك في [#91533](https://github.com/ClickHouse/ClickHouse/issues/91533). [#98124](https://github.com/ClickHouse/ClickHouse/pull/98124) ([Mark Needham](https://github.com/mneedham)).
* تمت إضافة دوال لتقديم Mapbox Vector Tiles مباشرةً من SQL: تقوم `MVTEncodeGeom` بإسقاط شكل هندسي إلى فضاء البكسل لبلاطة slippy-map وقصّه، وتقوم `MVTEncode` بتجميع الأشكال الهندسية المُسقطة لمجموعة ما في البايتات الثنائية لبلاطة أحادية الطبقة، بينما تُرجع `MVTBoundingBox` / `MVTBoundingBoxMercator` المربع المحيط بالبلاطة لتقييد الصفوف به. ويدعم ذلك الأشكال الهندسية من نوع النقاط والخطوط والمضلعات. كما يتوفر أيضًا تحت الأسماء البديلة الخاصة بـ PostGIS، وهما `ST_AsMVTGeom` و`ST_AsMVT`. [#106107](https://github.com/ClickHouse/ClickHouse/pull/106107) ([Saarthak Gupta](https://github.com/saarthak2002)).
* يدعم `clickhouse-local` الآن الاستعلامين `SYSTEM START LISTEN` و`SYSTEM STOP LISTEN`، مما يتيح تحويله إلى خادم يقبل اتصالات TCP وHTTP. [#101143](https://github.com/ClickHouse/ClickHouse/pull/101143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة أمر `help` تفاعلي إلى `clickhouse-client` و`clickhouse-local`. تؤدي كتابة `help <name>` (وأيضًا `/help` و`man` و`/man`) إلى عرض توثيق دالة أو محرك جدول أو نوع بيانات أو تنسيق أو إعداد أو أي مكوّن آخر، مع تقديمه من Markdown داخل الطرفية مع تمييز صياغة SQL. وعندما تكون الكلمة ملتبسة، تُعرض جميع المطابقات، وعند عدم العثور عليها، تُقترح أسماء مشابهة. [#108042](https://github.com/ClickHouse/ClickHouse/pull/108042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم الكتابة إلى Azure Data Lake Storage Gen2. [#105406](https://github.com/ClickHouse/ClickHouse/pull/105406) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إضافة التنسيق `RowBinaryWithNamesAndTypesAndDefaults` لتحسين دعم schema evolution. [#105736](https://github.com/ClickHouse/ClickHouse/pull/105736) ([Mark Zitnik](https://github.com/mzitnik)).
* تنفيذ `ADD ENUM VALUES` في استعلامات `ALTER TABLE` لتبسيط إضافة قيم جديدة إلى نوع `Enum` موجود، من دون الحاجة إلى إعادة تحديد جميع قيم `Enum` الحالية. [#93830](https://github.com/ClickHouse/ClickHouse/pull/93830) ([Ilya Golshtein](https://github.com/ilejn)).
* أصبح العرض المادي القابل للتحديث يدعم الآن `REFRESH DEPENDS ON` لتشغيل عمليات التحديث استنادًا إلى تحديثات RMV آخر بدلًا من جدول زمني قائم على الوقت. (كانت `REFRESH EVERY ... DEPENDS ON` موجودة بالفعل، لكنها لم تكن قابلة للاستخدام بشكل موثوق لهذا السيناريو.) راجع توثيق `CREATE MATERIALIZED VIEW`. [#104440](https://github.com/ClickHouse/ClickHouse/pull/104440) ([Michael Kolupaev](https://github.com/al13n321)).
* إضافة دعم لاختيار الأعمدة بحسب نمط الاسم باستخدام `* LIKE '<pattern>'` و`* ILIKE '<pattern>'`، بما في ذلك الصيغ المؤهلة مثل `table.* LIKE '<pattern>'` و`table.* ILIKE '<pattern>'`. يطابق `LIKE` أسماء الأعمدة مع مراعاة حالة الأحرف، بينما يطابق `ILIKE` من دون مراعاة حالة الأحرف. [#104569](https://github.com/ClickHouse/ClickHouse/pull/104569) ([Yue Ni](https://github.com/niyue)).
* تمت إضافة صياغة `ESCAPE` التي تعرّف محرف إفلات مخصصًا في نمط `LIKE`، ما يتيح التعامل مع `%` و`_` كمحارف حرفية بدلًا من wildcards. [#99774](https://github.com/ClickHouse/ClickHouse/pull/99774) ([Ilya Yatsishin](https://github.com/qoega)).
* إضافة إعدادي الجدول `materialize_projections_on_insert` و`materialize_projections_on_merge` لـ `MergeTree`. عندما يكون `materialize_projections_on_insert = 0`، تتخطى عمليات `INSERT` إنشاء projection parts، مما يحسّن throughput الإدراج للجداول التي تحتوي على projections كثيرة. وعندما يكون `materialize_projections_on_merge = 1`، تعيد عملية merge إنشاء projection مفقود من جميع source parts الخاصة به، بحيث يمكن إنشاء projections أثناء merges بدلًا من on insert. وتظل merges تجمع فقط بين parts التي تشترك في المجموعة نفسها من projections. [#100993](https://github.com/ClickHouse/ClickHouse/pull/100993) ([Christoph Wurm](https://github.com/cwurm)).
* إضافة إعداد `MergeTree` جديد غير قابل للتغيير باسم `allow_tuple_element_aggregation`، وهو معطّل افتراضيًا. عند تفعيله، تقوم `SummingMergeTree` و`AggregatingMergeTree` و`CoalescingMergeTree` بتسطيح أعمدة `Tuple` بشكل متكرر وتجميع كل عنصر نهائي بصورة مستقلة أثناء merges، تمامًا كما لو كان عمودًا من المستوى الأعلى — إذ تقوم `SummingMergeTree` بجمعه، وتقوم `AggregatingMergeTree` بدمج حالة دالة التجميع الخاصة به، بينما تحتفظ `CoalescingMergeTree` بآخر قيمة غير `NULL` له. يجب تحديد هذا الإعداد عند إنشاء الجدول، ويُتجاهل بصمت من قِبل المحركات التي لا تدعمه. [#98039](https://github.com/ClickHouse/ClickHouse/pull/98039) ([johnjing](https://github.com/JingYanchao)).
* دالتان جديدتان `quantizeBFloat16ToInt8` و`dequantizeInt8ToBFloat16`: codec عددي يضغط مكونات التضمينات إلى 8-bit باستخدام مكمّم Gaussian Lloyd-Max ذي 256 مستوى، ويمكن استخراج شيفرات Int4/Int2/binary منه عبر اقتطاع البتات. [#108102](https://github.com/ClickHouse/ClickHouse/pull/108102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الدالتان `arrayTopK` و`arrayBottomK`: - تُرجِع `arrayTopK(k, array)` أكبر K عنصرًا بترتيب تنازلي - تُرجِع `arrayBottomK(k, array)` أصغر K عنصرًا بترتيب تصاعدي. [#104563](https://github.com/ClickHouse/ClickHouse/pull/104563) ([Vitaly Baranov](https://github.com/vitlibar)).
* أُضيف جدول نظام جديد `system.iceberg_files` يعرض البيانات الوصفية لكل ملف في جداول `Iceberg`، بصف واحد لكل ملف بيانات أو حذف في اللقطة الحالية لكل جدول. ويغلق هذا [#98777](https://github.com/ClickHouse/ClickHouse/issues/98777). [#104415](https://github.com/ClickHouse/ClickHouse/pull/104415) ([Asya Shneerson](https://github.com/asya-ch)).
* أُضيف جدول `system.constraints` الذي يوفّر معلومات عن جميع قيود `CHECK` و`ASSUME` عبر كل الجداول، بما في ذلك اسم القيد ونوعه والتعبير الخاص به. [#105337](https://github.com/ClickHouse/ClickHouse/pull/105337) ([Pedro Ferreira](https://github.com/PedroTadim)).
* أُضيف جدول جديد `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)).
* أُضيف جدول جديد `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)).
* جرى تنفيذ `SYSTEM RESTART DISK <name>`: إذ يعيد الآن تحميل البيانات الوصفية الموجودة في الذاكرة الخاصة بالقرص، ويعيد فحص الأجزاء البيانية لجداول النسخ المتماثلة للقراءة فقط الموجودة عليه. يتيح هذا لنسخة متماثلة للقراءة فقط من جدول على تخزين `plain_rewritable` مشترك أن ترى، عند الطلب، البيانات التي كتبها خادم آخر، من دون انتظار `refresh_parts_interval` أو إعادة تشغيل الخادم. [#106645](https://github.com/ClickHouse/ClickHouse/pull/106645) ([Jordi Villar](https://github.com/jrdi)).
* أصبحت صيغة 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)).
* أُضيفت استراتيجيتان جديدتان إلى `load_balancing`، هما `hostname_longest_common_prefix` و`hostname_longest_common_suffix`، وتُفضّلان النسخة المتماثلة التي يشترك اسم مضيفها مع اسم مضيف الجهة المُبادِئة في أطول بادئة مشتركة (أو لاحقة مشتركة، على الترتيب). وهما مفيدتان عندما يكون مركز البيانات مُشفّرًا كبادئة أو لاحقة في أسماء مضيفين تحتوي على مقاطع رقمية متفاوتة الطول، حيث تختار الاستراتيجيتان الحاليتان `nearest_hostname` و`hostname_levenshtein_distance` النسخة المتماثلة الخاطئة. [#107360](https://github.com/ClickHouse/ClickHouse/pull/107360) ([Denny \[DBA at Innervate\]](https://github.com/den-crane)).
* أُضيفت معلومات شهادة عميل TLS (الموضوعات، والرقم التسلسلي، والجهة المُصدِرة، وفترة الصلاحية) إلى جدول `system.session_log` لتحسين الأوبزرفابيليتي للمصادقة المستندة إلى الشهادات. [#107679](https://github.com/ClickHouse/ClickHouse/pull/107679) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف مُعرّف اعتماد اختياري `external_id` للوصول المستند إلى الدور في `S3`. [#106941](https://github.com/ClickHouse/ClickHouse/pull/106941) ([Elian Gidoni](https://github.com/eliangidoni)).
* أُضيف إعداد جديد لـ `S3Queue` باسم `after_processing_move_preserve_path`. عند تمكينه مع `after_processing='move'` و`after_processing_move_prefix`، تُنقل الكائنات المُعالجة مع الحفاظ على مسار المصدر الكامل ضمن بادئة الوجهة بدلًا من تسطيحها إلى اسم الملف فقط. [#105354](https://github.com/ClickHouse/ClickHouse/pull/105354) ([Asya Shneerson](https://github.com/asya-ch)).
* أُضيف إعداد على مستوى الخادم باسم `message_queue_disable_insertion` لتعطيل الإدراج من محركات طوابير الرسائل (`Kafka`, `RabbitMQ`, `NATS`) إلى العروض المادية المرفقة. وهذا مفيد لسيناريوهات النسخ المتماثلة للقراءة فقط. [#104911](https://github.com/ClickHouse/ClickHouse/pull/104911) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* أُضيف `LOCALTIME` و`LOCALTIMESTAMP` (بصياغة SQL القياسية / PostgreSQL). ‏`LOCALTIMESTAMP` هو اسم بديل لـ `now()` (ويُرجع `DateTime`)؛ ويُرجع `LOCALTIME` الوقت الحالي من اليوم بوصفه قيمة `Time`. [#106139](https://github.com/ClickHouse/ClickHouse/pull/106139) ([Thomas Cabral](https://github.com/thomas-cabral)).
* أُضيفت `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)).
* دعم متوافق مع PostgreSQL لـ `EXTRACT(TIMEZONE_HOUR FROM dt)` و`EXTRACT(TIMEZONE_MINUTE FROM dt)` لاستخراج جزأي الساعة والدقيقة من إزاحة المنطقة الزمنية، وكذلك `EXTRACT(<unit> FROM INTERVAL n <unit>)` / `date_part('<unit>', INTERVAL n <unit>)` لاستخراج القيمة من interval. [#106227](https://github.com/ClickHouse/ClickHouse/pull/106227) ([Vinayak Joshi](https://github.com/vinayakj592)).
* أُضيف اسمان بديلان تجميعيان `min_by` و`max_by` لـ `argMin` و`argMax`. [#105712](https://github.com/ClickHouse/ClickHouse/pull/105712) ([Joey Yu](https://github.com/itsjoeoui)). هذه الأسماء البديلة غبية، فالمهندسون الحقيقيون يستخدمون أسماء ClickHouse الأصلية.
* أُضيف `REGEXP_SUBSTR` بوصفه اسمًا بديلًا غير حساس لحالة الأحرف لـ `regexpExtract` لتحقيق التوافق مع Oracle/MySQL/Snowflake. [#105122](https://github.com/ClickHouse/ClickHouse/pull/105122) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف `SESSION_USER` بوصفه اسمًا بديلًا غير حساس لحالة الأحرف لـ `currentUser()` لتحقيق التوافق مع PostgreSQL / SQL القياسية. [#106081](https://github.com/ClickHouse/ClickHouse/pull/106081) ([Takumi Hara](https://github.com/takumihara)).
* دعم مُعدِّل لاحق `NULL` / `NOT NULL` في `ALTER TABLE ... ADD/MODIFY COLUMN`، على غرار `CREATE TABLE`. [#106150](https://github.com/ClickHouse/ClickHouse/pull/106150) ([Takumi Hara](https://github.com/takumihara)).
* يمكنك الآن استخدام الدالة `h3PolygonToCellsWithContainment` من h3 للاستفادة من خوارزميتهم الجديدة، التي تدعم أوضاع الاحتواء المعتمدة على المركز، والاحتواء الكامل، والتداخل. [#104455](https://github.com/ClickHouse/ClickHouse/pull/104455) ([Youssef Kadry](https://github.com/yousefQadry)).
* يضيف العلامتين `IPV4_PREFIX_BITS and IPV6_PREFIX_BITS` عند إجراء Keying باستخدام `IP_ADDRESS` أو `FORWARDED_IP_ADDRESS`. [#89270](https://github.com/ClickHouse/ClickHouse/pull/89270) ([Aditya Chopra](https://github.com/adityachopra29)).
* تقبل `formatReadableTimeDelta` الآن تعبير `INTERVAL` من نوع غير `Month` و`Year` كإدخال. [#64315](https://github.com/ClickHouse/ClickHouse/pull/64315) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* يمكن للمستخدم الآن تحديد وسيطة precision اختيارية للدوال `formatReadableSize` و`formatReadableDecimalSize` و`formatReadableQuantity` للتحكم في عدد الأرقام بعد الفاصلة العشرية. القيمة الافتراضية هي 2، مع الحفاظ على السلوك السابق. [#104648](https://github.com/ClickHouse/ClickHouse/pull/104648) ([Antonio Filipovic](https://github.com/antoniofilipovic)).
* يضيف الإعداد `output_format_float_precision` للتحكم في عدد الخانات العشرية في المخرجات النصية للأعداد ذات الفاصلة العائمة. [#99721](https://github.com/ClickHouse/ClickHouse/pull/99721) ([phulv94](https://github.com/phulv94)).
* أُضيف الإعداد `output_format_always_write_decimal_point_in_float_and_decimal` لعرض الفاصلة العشرية دائمًا مع الأعداد ذات الفاصلة العائمة وأعداد `Decimal` في التنسيقات النصية، حتى عندما تكون القيمة عددًا صحيحًا. على سبيل المثال، يُخرج `1.` بدلًا من `1`. وهو معطّل افتراضيًا. [#62614](https://github.com/ClickHouse/ClickHouse/pull/62614) ([Ilya Yatsishin](https://github.com/qoega)).
* يضيف دعمًا لعناصر config الجديدة لمعالجات HTTP: `<url_prefix>` و`<full_url_prefix>` (لمطابقة جميع المسارات تحت مسار أساسي، وهو مفيد مثلًا لمعالجات prometheus)، بالإضافة إلى `<url_regexp>` و`<full_url_regexp>` و`<headers_regexp>`. أما الصيغة القديمة `<url>regex:...</url>` فأصبحت Obsolete الآن. [#107492](https://github.com/ClickHouse/ClickHouse/pull/107492) ([Vitaly Baranov](https://github.com/vitlibar)).
* يدعم إحصاءات `basic`، وهي إحصاءات مدمجة لكل column تخزن الحد الأدنى/الأقصى الرقمي، ومتوسط طول السلسلة النصية، وعدد قيم NULL حيثما ينطبق ذلك. [#106048](https://github.com/ClickHouse/ClickHouse/pull/106048) ([Han Fei](https://github.com/hanfei1991)).
* يدعم عقد TTL في ClickHouse Keeper، مع تفعيل اختياري عبر flag الميزة `create_ttl`. [#100397](https://github.com/ClickHouse/ClickHouse/pull/100397) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* يقدّم ميزة memory reservation لأحمال العمل. راجع وثائق [Workload scheduling](https://clickhouse.com/docs/operations/workload-scheduling). [#82414](https://github.com/ClickHouse/ClickHouse/pull/82414) ([Sergei Trifonov](https://github.com/serxa)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* تنفيذ الاستعلامات الموزعة متعددة المراحل: يقسم المُخطِّط خطة الاستعلام إلى مراحل مترابطة عبر تبادلات scatter / broadcast / gather / shuffle، ثم يوزّع أجزاء الخطة على عُقد worker. وتُبث البيانات بين المراحل عبر TCP أو تُمرَّر عبر temporary files في object storage مشتركة. ويدعم هذا المسار distributed shuffle وbroadcast hash joins وshuffle aggregation وdistributed sort. هذه الميزة Experimental وهي معطلة افتراضيًا. [#106020](https://github.com/ClickHouse/ClickHouse/pull/106020) ([Alexander Gololobov](https://github.com/davenger)). ويمكن الآن لمحرك distributed query plan التجريبي (`make_distributed_plan`) استخدام منفذ مختلف لكل worker لكل من توزيع المهام وstreaming exchange، ويُضبط ذلك لكل replica في `<remote_servers>` باستخدام `stateless_worker_port` و`streaming_exchange_port`. وعند عدم تعيينهما، تُستخدم منافذ server السابقة على مستوى الخادم (`stateless_worker_client.port` و`distributed_query.streaming_exchange_port`). وهذا يتيح تشغيل عدة workers على مضيف واحد. [#107885](https://github.com/ClickHouse/ClickHouse/pull/107885) ([Alexander Gololobov](https://github.com/davenger)).
* أُضيفت خوارزمية إعادة ترتيب `join` التجريبية `dphyp` لعمليات inner joins كخيار للإعداد `query_plan_optimize_join_order_algorithm`، وكذلك الإعداد `query_plan_optimize_join_order_max_searched_plans`، الذي يضع حدًا لبحث ترتيب join ويعود إلى الخوارزمية التالية في السلسلة عند تجاوز هذا الحد؛ اضبطه على `0` للحفاظ على سلوك البحث السابق غير المقيّد. [#98798](https://github.com/ClickHouse/ClickHouse/pull/98798) ([Alexander Gololobov](https://github.com/davenger)).
* أُضيفت الدالة `aiEmbed` لاستخدام واجهات LLM API في توليد embeddings من داخل ClickHouse. [#102922](https://github.com/ClickHouse/ClickHouse/pull/102922) ([George Larionov](https://github.com/george-larionov)).
* أُضيف canary تجريبي لـ Linux OOM: sacrificial child process يستهدفه قاتل نفاد الذاكرة (OOM) في Linux قبل عملية server الرئيسية. وعند تفعيله باستخدام `oom_canary_enable`، فإنه يخفف memory pressure عبر تنظيف caches الخاصة بالمُخصِّص، وإلغاء queries، وإلغاء عمليات الدمج، وتسجيل حدث في `system.crash_log`. وتتطلب الاستجابة لحالة OOM وجود دليل على OOM-kill من `memory.events` في cgroup v2. [#101942](https://github.com/ClickHouse/ClickHouse/pull/101942) ([Peng](https://github.com/fastio)).
* أصبحت واجهة web terminal عند `/webterminal` الآن ميزة جاهزة للإنتاج ومفعّلة افتراضيًا. ويجري التحكم فيها عبر إعداد server الجديد `enable_webterminal`؛ أما الإعداد السابق `allow_experimental_webterminal` فقد أصبح deprecated لكنه ما يزال مدعومًا حفاظًا على backward compatibility. ولتعطيل الـ endpoint، اضبط `enable_webterminal` على `false`. [#106255](https://github.com/ClickHouse/ClickHouse/pull/106255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تدعم نقاط نهاية PromQL عبر HTTP الآن تحديد database وtable عبر URL query parameters (`database=`, `table=`, أو `table=db.table`). وقد أُزيل fallback الضمني السابق للجدول `default.prometheus`: فإذا لم تُحدِّد لا مواصفة handler ولا URL جدولًا، فسيُرجع handler الآن `The time series table name is not set`. وللاحتفاظ بالسلوك السابق، اضبط `<table>default.prometheus</table>` أو مرِّر `table=...` في URL. [#107553](https://github.com/ClickHouse/ClickHouse/pull/107553) ([Vitaly Baranov](https://github.com/vitlibar)).
* أُضيف دعم لدالة PromQL `histogram_quantile` في Table functions‏ `prometheusQuery` و`prometheusQueryRange`. ويتيح ذلك حساب quantiles على buckets الخاصة بـ Prometheus histogram التقليدي والمُعرَّفة بالوسم `le`. [#103477](https://github.com/ClickHouse/ClickHouse/pull/103477) ([Joe Smith](https://github.com/Yasumoto)).
* أُضيف وضع lazy posting list apply mode إلى text index. وعند تفعيله عبر `SET allow_experimental_text_index_lazy_apply = 1` و`SET text_index_posting_list_apply_mode = 'lazy'`، تُفك شيفرة posting lists عند الطلب على مستوى packed-block باستخدام أسلوب قائم على cursor بدلًا من تمثيلها كاملًا في Roaring Bitmaps، مما يقلل استهلاك الذاكرة ووقت CPU في text index queries الانتقائية. [#100035](https://github.com/ClickHouse/ClickHouse/pull/100035) ([Peng](https://github.com/fastio)).
* تمت إضافة دعم ABI الخاص بـ [AssemblyScript](https://www.assemblyscript.org) لـ WebAssembly UDFs. يمكنك تجربة ABI الخاص بـ AssemblyScript بدون تثبيت سلسلة الأدوات محليًا باستخدام [playground](https://pastila.nl/?0009878e/b9768c4e2144d0c2f3dd512e7a1aaf69.html) المستند إلى المتصفح، والذي يترجم شيفرة AssemblyScript ويحمّل وحدة WebAssembly الناتجة إلى ClickHouse المحلي. [#104606](https://github.com/ClickHouse/ClickHouse/pull/104606) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إتاحة إرفاق معالجات Prometheus على منفذ HTTP الرئيسي مع بادئة اختيارية. [#104975](https://github.com/ClickHouse/ClickHouse/pull/104975) ([James Cunningham](https://github.com/JTCunning)).
* تمت إضافة إعداد تجريبي في `MergeTree` باسم `packed_skip_index_max_bytes` يجمع التدفقات الفرعية الصغيرة لـ skip-index في أرشيف `skp_idx.packed` واحد لكل جزء، مما يقلل الضغط على inode عند تعريف عدد كبير من فهارس التخطي على جدول. ويُتخذ القرار لكل تدفق فرعي وقت الكتابة: فالتدفقات الفرعية التي يبقى حجمها المتسلسل دون العتبة تُوضَع في الأرشيف، بينما يحتفظ أي شيء أكبر بتخطيط `skp_idx_<name>.idx2` / `.mrk2` المستقل. ويمكن لجزء واحد أن يجمع بين التخطيطين. فهارس النص الكامل غير مدعومة وتظل دائمًا لكل ملف. القيمة الافتراضية هي 0 (التجميع معطّل). [#105321](https://github.com/ClickHouse/ClickHouse/pull/105321) ([Raúl Marín](https://github.com/Algunenano)).
* دعم serialization لـ `Buffers` في WebAssembly UDFs باستخدام `ABI BUFFERED_V1`، وإضافة `webassembly_udf_enable_fuel` كإعداد persisted لدالة WASM UDF. [#105574](https://github.com/ClickHouse/ClickHouse/pull/105574) ([Antonio Andelic](https://github.com/antonio2368)).
* إضافة إعداد تجريبي باسم `use_reader_executor` (معطّل افتراضيًا) يوجّه reads عبر `ReaderExecutor` جديد قائم على pipeline بدلًا من سلسلة read buffers الـ legacy. [#106570](https://github.com/ClickHouse/ClickHouse/pull/106570) ([Sema Checherinda](https://github.com/CheSema)). كما أُضيفت metrics خاصة بـ observability لمسار القراءة التجريبي `use_reader_executor`، بما في ذلك KPI لتكلفة القراءة المُنمذجة (`ReaderExecutorModeledCostMsPerRequestedMiB`). [#106968](https://github.com/ClickHouse/ClickHouse/pull/106968) ([Sema Checherinda](https://github.com/CheSema)). وتم تقديم المخزن المؤقت `ChainedBuffers` ضمن مسار القراءة التجريبي `use_reader_executor`، مع metric باسم `ReaderExecutorChainedBufferBytes`. [#107210](https://github.com/ClickHouse/ClickHouse/pull/107210) ([Sema Checherinda](https://github.com/CheSema)).
* أصبح ترتيب الفرز التنازلي في sorting key الخاصة بـ `MergeTree` (مثل `ORDER BY (time DESC, key)`) مدعومًا دائمًا الآن، ولم يعد يتطلب الإعداد التجريبي `allow_experimental_reverse_key`، الذي أصبح مهملًا. [#106440](https://github.com/ClickHouse/ClickHouse/pull/106440) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبح `Nullable(Tuple(...))` الآن في مرحلة Beta. وهو معطّل افتراضيًا؛ اضبط `enable_nullable_tuple_type = 1` لاستخدامه. [#107754](https://github.com/ClickHouse/ClickHouse/pull/107754) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* تغييرات متنوعة في Keeper تجعله أسرع إجمالًا بنحو الضعف (تحسين التجميع، وتمرير الرسائل إلى القائد عبر خطوط الأنابيب، وتمرير إلحاقات السجل عبر خطوط الأنابيب). [#101757](https://github.com/ClickHouse/ClickHouse/pull/101757) ([Michael Kolupaev](https://github.com/al13n321)).
* تقليل الحمل الإضافي لكل query في استعلامات `SELECT` البسيطة (التحليل النحوي، والتحليل، والتخطيط). على سبيل المثال، أصبح `SELECT count() FROM hits` عبر connection واحدة أسرع بنحو 50%. [#104513](https://github.com/ClickHouse/ClickHouse/pull/104513) ([Raúl Marín](https://github.com/Algunenano)).
* تحسين index analysis لـ primary key index في primary keys الطويلة وعالية الكاردينالية. بالنسبة إلى primary key طويل، أصبح زمن تشغيل index analysis يعتمد الآن أساسًا على تعقيد filter الخاص بـ query (أي key columns التي يستخدمها فعليًا)، لا على طول primary key — لذا فإن توسيع sorting key يضيف حملًا إضافيًا ضئيلًا جدًا إلى index analysis في queries التي تُجري filter على عدد قليل فقط من columns الخاصة به. أما في حالة primary key عالي الكاردينالية، حيث يحتفظ ClickHouse في الذاكرة فقط بـ prefix انتقائي من key columns ولا يحمّل الأعمدة اللاحقة، فإن index analysis يعمل الآن على هذا الـ in-memory prefix فقط بدلًا من المفتاح بالكامل. هذا التحسين مفعّل افتراضيًا، ويمكن تعطيله عبر الإعداد الجديد `use_lightweight_primary_key_index_analysis`. يغلق [#65103](https://github.com/ClickHouse/ClickHouse/issues/65103). [#91836](https://github.com/ClickHouse/ClickHouse/pull/91836) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أصبح build الافتراضي لـ x86 يستهدف الآن x86-64-v3 ‏(AVX2) بدلًا من x86-64-v2 ‏(SSE4.2). ويتطلب ذلك CPU يدعم AVX2 ‏(Intel Haswell أو أحدث، AMD Excavator أو أحدث). إذا كان CPU لديك لا يدعم AVX2، فاستخدم build ‏`amd64compat` الذي يستهدف x86-64 القياسي. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* استخدام `ipnsort` و`driftsort` ‏(sorting مستقر) — وهما منفذان بلغة C++ لتنفيذات الفرز في المكتبة القياسية لـ Rust — في عمليات sorts للمقارنة العامة. وهذا يسرّع `ORDER BY` على columns غير الرقمية وعمليات الفرز المستقرة، ويزيل إحدى أسوأ الحالات عند الإدخال المفروز عكسيًا. [#106650](https://github.com/ClickHouse/ClickHouse/pull/106650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين جديد لـ `GROUP BY` للمفاتيح عالية الكاردينالية والمتوزعة بالتساوي، يوزّع الصفوف عبر threads من خلال hash لمفتاح التجميع، بحيث يجمّع كل thread مجموعة منفصلة من المفاتيح من دون مرحلة merge. اضبط `enable_sharding_aggregator = 1` لتفعيله. [#104233](https://github.com/ClickHouse/ClickHouse/pull/104233) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تفعيل prefetching لـ hash table في queries ‏`GROUP BY` ذات المفاتيح النصية، مما يحسّن أداء aggregation النصية عالية الكاردينالية بنحو 8%. [#101007](https://github.com/ClickHouse/ClickHouse/pull/101007) ([Le Zhang](https://github.com/damahua)).
* تقليل Peak memory usage عند merge نتائج two-level aggregation الجزئية ذات aggregate states الكبيرة (مثل `groupArray`)، وذلك بتحرير الحالات المصدرية لكل bucket تدريجيًا أثناء الـ merge بدلًا من إبقائها جميعًا نشطة حتى اكتمال الـ merge. [#102330](https://github.com/ClickHouse/ClickHouse/pull/102330) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* جرى تحسين التمثيل في الذاكرة لـ `Enum` `DataType`. ويمكن أن يتحسن استهلاك الذاكرة للجداول التي تحتوي على النوع `Enum` بما يصل إلى 10 أضعاف لمكوّن `Enum`. كما أن زمن استرجاع name حسب value (الرقم) مماثل أو أسرع. أما البحث حسب الاسم فأبطأ قليلًا، لكن هذا النمط من الوصول أقل شيوعًا. [#95668](https://github.com/ClickHouse/ClickHouse/pull/95668) ([Ilya Yatsishin](https://github.com/qoega)).
* إضافة تخزين مؤقت لحلّ المعرّفات لمنع تكرار حلّها أثناء query analysis. [#88043](https://github.com/ClickHouse/ClickHouse/pull/88043) ([Max Justus Spransy](https://github.com/maxjustus)).
* تحسين أداء تحليل الاستعلامات للاستعلامات التي تعمل على جداول تضم عدداً كبيراً من الأعمدة: إذ جرى تجنّب حساب قيم hash لعُقد الأعمدة (التي تتضمن تعبير الجدول المصدر بالكامل) عند عدم الحاجة إليها. وأصبح تحليل الاستعلامات الفرعية المتداخلة `SELECT *` فوق جدول يحتوي على نحو 1200 عمود أسرع الآن بحوالي 50 مرة. [#106957](https://github.com/ClickHouse/ClickHouse/pull/106957) ([Dmitry Novik](https://github.com/novikd)).
* تسريع تحليل الاستعلامات التي تتضمن عدداً كبيراً من استدعاءات الدوال أو استدعاءات دوال متداخلة بعمق، وذلك بإزالة قيمة hash زائدة لشجرة الاستعلام من cache تحليل الدوال. [#107516](https://github.com/ClickHouse/ClickHouse/pull/107516) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح حالات التعطل الطويلة عند تسجيل الدخول وبدء الاستعلامات في مخزن الوصول المتماثل عند تغيّر عدد كبير من كيانات الوصول (سياسات الصفوف، والأدوار، والحصص، وملفات تعريف الإعدادات) دفعة واحدة. وأصبحت كل cache على مستوى الكيان تعيد الحساب مرة واحدة لكل Batch من الإشعارات بدلاً من مرة لكل كيان متغيّر، مما يزيل عملاً تربيعياً كان قد يُبقي قفل الوصول محتجزاً لعدة دقائق. [#107672](https://github.com/ClickHouse/ClickHouse/pull/107672) ([Azat Khuzhin](https://github.com/azat)).
* مشاركة `FixedHashMap` الخاصة بـ hash join كعامل تصفية وقت التشغيل للربط على جهة probe. فعندما يكون جدول hash على جهة build من نوع `FixedHashMap` (أو يمكن تحويله إليه)، يُنشر بوصفه عامل تصفية وقت التشغيل ويستبدل `Set`/`BloomFilter` الذي كان `BuildRuntimeFilterStep` سيُثبّته في الحالة العادية. ويتحكم في ذلك الإعداد الجديد `join_runtime_filter_from_fixed_hash_table` (القيمة الافتراضية `true`). [#105640](https://github.com/ClickHouse/ClickHouse/pull/105640) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* تطبيق lazy لفهارس selector وفهارس replication في حالة وجود `JOIN` يتبعه `LIMIT` انتقائي أو `TopN` أو `JOIN` آخر. وللتحكم في عدد أعمدة الحمولة المطلوبة لتفعيل فهارس selector المؤجلة، استخدم الإعداد `query_plan_min_columns_for_join_lazy_indexing` (تعني القيمة 0 أن التحسين معطّل). وللتحكم في قيمة `LIMIT` التي يُطبَّق عندها هذا التحسين، استخدم الإعداد `query_plan_max_limit_for_join_lazy_indexing`. [#106566](https://github.com/ClickHouse/ClickHouse/pull/106566) ([Hechem Selmi](https://github.com/m-selmi)).
* أصبح الآن مسموحاً بإعادة ترتيب `JOIN` باستخدام DP (البرمجة الديناميكية) مع parallel replicas. [#105889](https://github.com/ClickHouse/ClickHouse/pull/105889) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين query plan عندما يستخدم `JOIN` عوامل تصفية وقت التشغيل (مع تفعيل `enable_join_runtime_filters` افتراضياً): إذ أصبح نموذج تكلفة إعادة ترتيب الربط يتجاوز `WindowTransform` (وغيره من plan step التي تحافظ على الصفوف) في الشجرة الفرعية اليمنى، ويستخدم عدد الصفوف الأساسي وNDV لكل عمود بدلاً من الرجوع إلى غياب الإحصاءات. [#107229](https://github.com/ClickHouse/ClickHouse/pull/107229) ([UnamedRus](https://github.com/UnamedRus)).
* إزالة الافتراضية من عملية إخراج الصفوف غير المنضمّة في RIGHT وFULL join عبر تجميعها على شكل Batch. [#105679](https://github.com/ClickHouse/ClickHouse/pull/105679) ([Hechem Selmi](https://github.com/m-selmi)).
* دعم طريقتَي `keys32` و`keys64` المعبأتين في `HashJoin`. [#107202](https://github.com/ClickHouse/ClickHouse/pull/107202) ([Nikita Taranov](https://github.com/nickitat)).
* دعم طريقتَي `keys32` و`keys64` المعبأتين في `Set`. [#107564](https://github.com/ClickHouse/ClickHouse/pull/107564) ([Nikita Taranov](https://github.com/nickitat)).
* معالجة أكثر كفاءة للأعمدة القابلة للقيم الفارغة في aggregation. [#106015](https://github.com/ClickHouse/ClickHouse/pull/106015) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين أداء استعلامات `LIMIT BY`. [#103349](https://github.com/ClickHouse/ClickHouse/pull/103349) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع استعلامات `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) ([Nihal Z. Miaji](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) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع استعلامات `LIMIT BY` على جداول `MergeTree` المُقسَّمة إلى partitions عبر تنفيذ `LIMIT BY` داخل تدفق كل partition على نحو متوازٍ، بدلًا من دمج جميع التدفقات في تدفق واحد قبل تطبيق الحد. ينطبق ذلك عندما يكون partition expression دالة حتمية لأعمدة `LIMIT BY`، بحيث لا يمكن لأي مجموعة `LIMIT BY` أن تمتد عبر قسمين. يتحكم في ذلك الإعداد الجديد `allow_limit_by_partitions_independently` (مُمكّن افتراضيًا). [#105126](https://github.com/ClickHouse/ClickHouse/pull/105126) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع استعلامات `LIMIT BY` عبر إزالة key expressions الزائدة: فيُسقَط المفتاح الذي يكون دالة حتمية للمفاتيح الأخرى (مثلًا `LIMIT 5 BY x, f(x)` تصبح `LIMIT 5 BY x`)، وتُستبدل الدالة الحقنية للمفتاح بالـ argument الخاص بها (مثلًا `LIMIT 5 BY toString(x)` تصبح `LIMIT 5 BY x`). يقلّل ذلك عدد تعبيرات التي تُقيَّم لكل row وتكلفتها. يتحكم في ذلك الإعدادان الجديدان `optimize_limit_by_function_keys` و `optimize_injective_functions_in_limit_by`، وكلاهما مُمكّن افتراضيًا. [#106818](https://github.com/ClickHouse/ClickHouse/pull/106818) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تسريع aggregation الموزّع على الشظايا، وتقسيم `grace_hash` join إلى buckets، وتقسيم window المتوازي، عبر استبدال تجزئة الأعمدة لكل chunk بنواة تستخدم CRC32C العتادي. [#106538](https://github.com/ClickHouse/ClickHouse/pull/106538) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* تحسين `L1Distance` و`L2Distance` و`L2SquaredDistance` و`LinfDistance` و`cosineDistance` لوسائط Array باستخدام المعالجة المتجهية التلقائية متعددة الأهداف على x86-64-v4/v3. وبالنسبة إلى وسائط Array غير الثابتة، يمكن الآن لجميع هذه الدوال، باستثناء `LpDistance` التي تستخدم `std::pow` مع exponent وقت التشغيل، الاستفادة من kernels ذات معالجة متجهية من قِبل المصرّف. كما جرى الحفاظ على مسارات التسريع الحالية AVX-512 وSapphire Rapids لوسائط `BFloat16` الثابتة في `L2Distance` و`cosineDistance`. [#101310](https://github.com/ClickHouse/ClickHouse/pull/101310) ([Peng](https://github.com/fastio)).
* تحسّن أداء الدالة `{Norm}Distance` و`dotProduct`. [#106007](https://github.com/ClickHouse/ClickHouse/pull/106007) ([Nikita Taranov](https://github.com/nickitat)).
* تحسّن أداء الدالة `arrayNorm`. [#106211](https://github.com/ClickHouse/ClickHouse/pull/106211) ([Nikita Taranov](https://github.com/nickitat)).
* تحسّن أداء `dotProduct` في بعض الحالات. [#106210](https://github.com/ClickHouse/ClickHouse/pull/106210) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين أداء مسارات AVX-512 ذات المعامل الثابت على اليسار لكل من `L2Distance` و`cosineDistance` على `Array(Float32)` و`Array(Float64)` و`Array(BFloat16)` عندما يكون طول المصفوفة قابلاً للقسمة تمامًا على عرض المعالجة المتجهية. [#104625](https://github.com/ClickHouse/ClickHouse/pull/104625) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* تمكين توليد شيفرة AVX-512 لمعالجات amd، مع تحسين توليد الشيفرة للدالة `arrayDistance`. [#106505](https://github.com/ClickHouse/ClickHouse/pull/106505) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين أداء الدالتين `L2DistanceTransposed` و`cosineDistanceTransposed` لنوع البيانات `QBit`. [#106701](https://github.com/ClickHouse/ClickHouse/pull/106701) ([Raufs Dunamalijevs](https://github.com/rienath)).
* تحسين أداء الدوال `encrypt` و`decrypt` و`tryDecrypt` و`aes_encrypt_mysql` و`aes_decrypt_mysql` بما يصل إلى عشرة أضعاف، مع استعادة الأداء المفقود نتيجة الترحيل من BoringSSL إلى OpenSSL 3.x ‏(24.4). [#107339](https://github.com/ClickHouse/ClickHouse/pull/107339) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحسين أداء الدوال `encrypt` و`decrypt` و`halfMD5` من خلال تجنب عمليات lookup الضمنية لكل صف على provider في OpenSSL 3.x. [#99105](https://github.com/ClickHouse/ClickHouse/pull/99105) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إضافة تنفيذ SIMD للدالة `SHA1` يحسب قيم hash لعدة مدخلات بالتوازي باستخدام AVX-512، مما يحسن الإنتاجية. [#105459](https://github.com/ClickHouse/ClickHouse/pull/105459) ([Joanna Hulboj](https://github.com/jh0x)).
* إضافة backend ‏AArch64 ASIMD/NEON لتنفيذ `MD5` متعدد المخازن المؤقتة. [#105563](https://github.com/ClickHouse/ClickHouse/pull/105563) ([Venkata  Vineel ](https://github.com/vyalamar)).
* دمج blocks المصدر قبل حساب الإسقاط أثناء `MATERIALIZE PROJECTION` لتقليل عدد projection parts المؤقتة وتقليل overhead الدمج. أدى ذلك إلى تسريع بنحو \~3.4x على table تضم 50 مليون صف. [#100047](https://github.com/ClickHouse/ClickHouse/pull/100047) ([Amos Bird](https://github.com/amosbird)).
* تقليل latency لأوامر `INSERT` في جداول `MergeTree` التي تحتوي على skip indices على columns الخاصة بـ `ORDER BY`، وذلك عبر تجنب تبديلات الأعمدة غير الضرورية أثناء كتابة part (بنحو \~17% على workloads بنمط traces). [#101101](https://github.com/ClickHouse/ClickHouse/pull/101101) ([Amos Bird](https://github.com/amosbird)).
* تمكين مسارات شيفرة SIMD الخاصة بـ Arrow (‏NEON على ARM، وSSE4.2/AVX2/AVX512 على x86)، واستخدامها لتسريع فك ترميز columns من نوع Parquet ‏`FLOAT`/`DOUBLE` المرمزة باستخدام `BYTE_STREAM_SPLIT`. [#106376](https://github.com/ClickHouse/ClickHouse/pull/106376) ([Raúl Marín](https://github.com/Algunenano)).
* تحسين أداء الإدراج لأعمدة `LowCardinality` التي تحتوي على فهارس `bloom_filter`. [#106410](https://github.com/ClickHouse/ClickHouse/pull/106410) ([Michael Jarrett](https://github.com/EmeraldShift)).
* تنفيذ نسخ blob بالتوازي في `DiskObjectStorageTransaction::copyFile` باستخدام thread pool مخصص لكل disk. [#105089](https://github.com/ClickHouse/ClickHouse/pull/105089) ([Asya Shneerson](https://github.com/asya-ch)).
* تجنب قراءة محتويات file عند استخدام input format ‏`One` مع table functions الشبيهة بالملفات مثل `file` و`s3`. [#105157](https://github.com/ClickHouse/ClickHouse/pull/105157) ([Yue Ni](https://github.com/niyue)).
* تسريع بدء تشغيل `clickhouse` على macOS بنحو 3x من خلال عدم تصدير الرموز الديناميكية، التي كان الرابط الديناميكي سيعالجها لولا ذلك عند كل تشغيل. [#107768](https://github.com/ClickHouse/ClickHouse/pull/107768) ([Raúl Marín](https://github.com/Algunenano)).
* تسريع تحميل filesystem cache عند بدء التشغيل من خلال تجنّب فتح directory إضافي لكل مفتاح cache. [#107414](https://github.com/ClickHouse/ClickHouse/pull/107414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تسريع تحميل filesystem cache عند بدء التشغيل عبر تمكين خيوط سرد directory من المساعدة في تحميل metadata الخاصة بـ cache فور انتهاء السرد، بدلًا من ترك نصف الخيوط في حالة idle. [#107416](https://github.com/ClickHouse/ClickHouse/pull/107416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تقليل overhead بدء تشغيل عملية `clickhouse` من خلال تحديث مكتبة WasmEdge المضمّنة، التي لم تعد تُنشئ قيمة hash سرية عشوائية في مهيّئ عام عند كل بدء تشغيل. [#107869](https://github.com/ClickHouse/ClickHouse/pull/107869) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح بإمكان المفتاح الأساسي في `MergeTree` وفهارس التخطي الآن استبعاد granules عند تطبيق عامل تصفية يغلّف فيه `ifNull` أو `coalesce` شرطًا ما، مثل `ifNull(key = 0, 0)` أو `coalesce(key = 0, 0)`. وكانت مثل هذه predicates — التي تُنشئها مولدات query غالبًا لتحويل مقارنة قد تكون `NULL` إلى قيمة منطقية محددة — غير مفهومة سابقًا لتحليل الفهارس، وبالتالي لم يكن ممكنًا تخطي granules. ويُوسّع هذا الإعداد الحالي `allow_key_condition_coalesce_rewrite` (المُمكَّن افتراضيًا). يغلق [#106264](https://github.com/ClickHouse/ClickHouse/issues/106264). [#106272](https://github.com/ClickHouse/ClickHouse/pull/106272) ([Andy Zhao](https://github.com/andyzzhao)).
* ينبغي أن يستهلك تقييم فهرس التخطي على أنواع `DateTime64` قدرًا أقل من CPU في 26.6. [#107707](https://github.com/ClickHouse/ClickHouse/pull/107707) ([Shankar Iyer](https://github.com/shankar-iyer)).
* تحسين أداء تحليل text index في عمليات البحث متعددة token عبر تحسين التعامل مع token النادرة. [#98226](https://github.com/ClickHouse/ClickHouse/pull/98226) ([Anton Popov](https://github.com/CurtizJ)).
* استخدام cache لمقاطع segments المضغوطة لقائمة الترحيل الخاصة بـ text index. [#106299](https://github.com/ClickHouse/ClickHouse/pull/106299) ([Anton Popov](https://github.com/CurtizJ)).
* تحسين أداء generic exclusion search لطلبات query التي تحدد نطاقات متتالية كبيرة من الجدول. [#93813](https://github.com/ClickHouse/ClickHouse/pull/93813) ([Michael Jarrett](https://github.com/EmeraldShift)).
* تتشارك clients ‏`S3` التي تستخدم endpoint وbucket نفسيهما cache واحدة، مما يتجنب تكرار discovery للمنطقة. يغلق [#92482](https://github.com/ClickHouse/ClickHouse/issues/92482). [#96802](https://github.com/ClickHouse/ClickHouse/pull/96802) ([Andrey Zvonov](https://github.com/zvonand)).
* إذا احتوت query على `has(<constant array>, <expr>)`، فسيقوم analyzer بتحويل العقدة لاستخدام تنفيذ `in` أسرع إذا كان ذلك ممكنًا. [#97341](https://github.com/ClickHouse/ClickHouse/pull/97341) ([Shankar Iyer](https://github.com/shankar-iyer)).
* عند جدولة job جديدة في `ThreadPool`، أيقِظ worker thread التي أصبحت idle مؤخرًا (LIFO) بدلًا من واحدة عشوائية. يقلل هذا من تجزؤ الذاكرة الناتج عن cacheات allocator الخاصة بكل thread. ولا يتغير ترتيب معالجة jobs. [#100177](https://github.com/ClickHouse/ClickHouse/pull/100177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء Runtime Filters التقريبية وفهارس bloom filter. [#100201](https://github.com/ClickHouse/ClickHouse/pull/100201) ([Christoph Viebig](https://github.com/cv4g)).
* السماح لـ `ASOF JOIN` باستخدام خوارزمية join ‏`parallel_hash`، مع تنفيذ مرحلة البناء بالتوازي عبر قيم مفاتيح المساواة المميّزة. في السابق، كان `ASOF` مستبعدًا دائمًا من `parallel_hash`. [#105375](https://github.com/ClickHouse/ClickHouse/pull/105375) ([Greg Maher](https://github.com/gregakinman)).
* تجنّب قراءة مدخلات غير محدودة لطلبات query ‏`INTERSECT` و`EXCEPT` عندما تجعل مدخلة فارغة النتيجة معروفة مسبقًا بأنها فارغة. [#105393](https://github.com/ClickHouse/ClickHouse/pull/105393) ([Yue Ni](https://github.com/niyue)).
* إضافة `constinit` لمجموعة متنوعة من مانعات `MemoryTracker`. [#105490](https://github.com/ClickHouse/ClickHouse/pull/105490) ([Azat Khuzhin](https://github.com/azat)).
* تحسين أداء `bitmapContains` لحالات `groupBitmap` غير `UInt64` عبر تجنّب استدعاءات `rb_max` المتكررة أثناء التحقق من النطاق. [#105960](https://github.com/ClickHouse/ClickHouse/pull/105960) ([Yue Ni](https://github.com/niyue)).
* تسريع الاستعلامات غير المتصلة لأعمدة `LowCardinality` المعتمدة على قاموس واحد. [#103662](https://github.com/ClickHouse/ClickHouse/pull/103662) ([Ivan Babrou](https://github.com/bobrik)).
* إضافة مسار سريع لمرحلة probe في `HashJoin` عندما تحتوي الكتلة على صف واحد. [#106008](https://github.com/ClickHouse/ClickHouse/pull/106008) ([Nikita Taranov](https://github.com/nickitat)).
* أصبحت predicates في استعلامات مثل `SELECT ... FROM view(SELECT ... FROM remote(...)) WHERE ... ` تُدفَع الآن إلى الاستعلام المُرسَل إلى الـ shard البعيد. وكان التحسين `allow_push_predicate_ast_for_distributed_subqueries` يفتقر إلى حالة خاصة بـ table functions. [#105986](https://github.com/ClickHouse/ClickHouse/pull/105986) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تفعيل `enable_join_transitive_predicates` افتراضيًا. [#103724](https://github.com/ClickHouse/ClickHouse/pull/103724) ([Alexander Gololobov](https://github.com/davenger)).
* إضافة دعم للدوال `multiSearchAny` و`multiSearchAnyUTF8` و`multiMatchAny` في text indexes. كما جرى تحسين index analysis في text indexes للدالة `match`، بحيث يمكن الآن للأنماط التي تحتوي على مجموعات بديلة تخطي المزيد من granules. [#106279](https://github.com/ClickHouse/ClickHouse/pull/106279) ([Anton Popov](https://github.com/CurtizJ)).
* السماح بدمج عوامل التصفية التي تُضاف بعد اختيار PREWHERE الأولي (predicate pushdown، أو Runtime Filters، أو PREWHERE صريح مع WHERE يحدده المخطط) في PREWHERE الحالي خلال تمريرة ثانية للمحسّن، بدلًا من بقائها كخطوة Filter منفصلة فوق قراءة `MergeTree`. [#105445](https://github.com/ClickHouse/ClickHouse/pull/105445) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* يسجّل `QueryConditionCache` الآن granules التي تُستبعَد بالتصفية بشكل منفصل، حتى داخل دفعات القراءة التي تجتاز PREWHERE جزئيًا، مما يقلّل عدد العلامات التي تعيد الاستعلامات اللاحقة قراءتها عند استخدام condition نفسه. [#105335](https://github.com/ClickHouse/ClickHouse/pull/105335) ([Han Fei](https://github.com/hanfei1991)).
* إضافة إعداد Keeper وهو `nuraft_use_bg_thread_for_snapshot_io`، والمفعّل افتراضيًا، بحيث يقرأ `NuRaft` كائنات snapshot من خيط خلفي بدلًا من worker threads الخاصة بـ Raft. [#106285](https://github.com/ClickHouse/ClickHouse/pull/106285) ([Antonio Andelic](https://github.com/antonio2368)).
* تقليل ذروة استخدام الذاكرة عند تطبيق snapshots المستلَمة في ClickHouse Keeper باستخدام `KeeperMemoryStorage`. [#105851](https://github.com/ClickHouse/ClickHouse/pull/105851) ([Antonio Andelic](https://github.com/antonio2368)).
* توجيه allocations الخاصة بـ LLVM/JIT إلى arena مخصّص في jemalloc. ويؤدي ذلك إلى تقليل تجزئة RSS الناتجة عن تداخل عمليات التتبّع طويلة العمر الخاصة بـ JIT مع allocations قصيرة العمر الخاصة بالاستعلامات. كما تُضاف مقاييس غير متزامنة جديدة هي `jemalloc.jit_arena.active_bytes` و`jemalloc.jit_arena.dirty_bytes` و`CompiledExpressionCacheBytesMax` و`CompiledExpressionCacheCountMax` لأغراض الرصد. وأصبح `SYSTEM DROP COMPILED EXPRESSION CACHE` الآن يحذف أيضًا مثيلات CHJIT الأساسية ويفرّغ JIT arena. [#104113](https://github.com/ClickHouse/ClickHouse/pull/104113) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح الزيادة المفرطة في حجز الذاكرة عند قراءة أعمدة `Nullable(String)` المتناثرة والمشفّرة بالقاموس من `Parquet` باستخدام القارئ native V3. [#102805](https://github.com/ClickHouse/ClickHouse/pull/102805) ([Francisco](https://github.com/Milias)).
* تم إصلاح `CREATE TABLE ... CLONE AS (and REPLACE / ATTACH PARTITION ... FROM)` على الأقراص المشفّرة بحيث لم يعد ينسخ البيانات بدلًا من إنشاء روابط صلبة إليها. [#106731](https://github.com/ClickHouse/ClickHouse/pull/106731) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تم تحسين تقدير cardinality في مُحسّن plan للاستعلام: فالعمود الناتج عن دالة حتمية أحادية الوسيط (مثل `toYear(date)`) يرث الآن عدد القيم المميزة لوسيطه باعتباره حدًا أعلى، بدلًا من تركه بلا إحصاءات، مما يؤدي إلى إعادة ترتيب أكثر دقة لعمليات join. [#107757](https://github.com/ClickHouse/ClickHouse/pull/107757) ([Alexander Gololobov](https://github.com/davenger)).
* تم تقليل الحمل الإضافي على CPU الناتج عن logging غير المتزامن عند ارتفاع معدلات السجلات، وذلك عبر إخطار consumer السجل فقط عند انتقال queue من فارغة إلى غير فارغة بدلًا من كل رسالة. [#107352](https://github.com/ClickHouse/ClickHouse/pull/107352) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تمت إزالة العمليات الحسابية المكررة أثناء query execution في مزيد من السيناريوهات. [#106113](https://github.com/ClickHouse/ClickHouse/pull/106113) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تمت موازاة معالجة نتيجة تعبير الجدول الشائع التعاودي: لم يعد `GROUP BY` أو أي إجراء آخر على نتيجة `WITH RECURSIVE` كبيرة الحجم مقصورًا على thread واحد. [#107694](https://github.com/ClickHouse/ClickHouse/pull/107694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تحسين أداء البحث غير الحساس لحالة الأحرف عن substring (`positionCaseInsensitiveUTF8` و`ILIKE` و`multiSearchAnyCaseInsensitiveUTF8` والدوال ذات الصلة) عبر إضافة مسار NEON SIMD على ARM ونواة AVX2 أوسع على x86. [#107882](https://github.com/ClickHouse/ClickHouse/pull/107882) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح تراجع في throughput بنسبة تقارب 16% لبرنامج الترميز `FPC` ذي الفاصلة العائمة على ARM، وكان قد أُدخل عندما بدأت جداول التنبؤ الخاصة به تستخدم `VectorWithMemoryTracking`. [#108182](https://github.com/ClickHouse/ClickHouse/pull/108182) ([Groene AI](https://github.com/groeneai)).

<div id="268-improvement">
  #### تحسينات
</div>

* يُحدِّث `MemoryWorker` الذي يعمل في الخلفية الآن الحد الصارم للذاكرة في الخادم بشكل دوري استنادًا إلى استخدام الذاكرة الحالي ومقدار الذاكرة الذي تُبلغ النواة بأنه متاح، بحيث يترك ClickHouse هامشًا للعمليات الأخرى التي تعمل على المضيف نفسه. الصيغة هي `(resident memory + system MemAvailable) * max_server_memory_usage_to_ram_ratio`. ويتحكم إعداد الخادم نفسه `max_server_memory_usage_to_ram_ratio` في كلٍّ من الحد الأقصى عند بدء التشغيل والضبط الديناميكي؛ اضبطه على `0` لتعطيلهما معًا. وللاحتفاظ فقط بالحد الثابت عند بدء التشغيل/إعادة التحميل (وهو سلوك الإصدارات السابقة)، اضبط إعداد الخادم الجديد `memory_worker_dynamic_hard_limit` على `0`. [#104964](https://github.com/ClickHouse/ClickHouse/pull/104964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم PostgreSQL client لـ C# في بروتوكول `PostgreSQL`. يُغلق هذا [#18611](https://github.com/ClickHouse/ClickHouse/issues/18611). [#80785](https://github.com/ClickHouse/ClickHouse/pull/80785) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تستخدم mutations الآن analyzer. [#98884](https://github.com/ClickHouse/ClickHouse/pull/98884) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* أُضيف تحكم دقيق في إظهار الاستعلامات في CLI. وأصبح الخيار `--echo` يقبل الآن قيمة Boolean اختيارية، ويعمل في كلٍّ من الوضع التفاعلي وbatch mode. وتتحكم الخيارات الجديدة `--echo-formatted` و`--echo-query-id` في ما إذا كانت الاستعلامات المعروضة ستُنسَّق، وما إذا كان سيتم طباعة `query_id`، على التوالي. كما يتحكم الخيار `--hilite`/`--highlight` الآن أيضًا في تمييز الاستعلامات المعروضة. وكنتيجة جانبية، أصبح `--echo` الآن خيارًا ذا قيمة Boolean، لذا فإن الاستعلام الموضعي الذي يأتي مباشرة بعد `--echo` بدون قيمة صريحة يُعامَل على أنه قيمته؛ استخدم `--echo --query "..."` أو `--echo=false` بدلًا من ذلك. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم تطور المخطط مع عمليات التحقق المتزامنة من الاتساق لكتالوجات بحيرة البيانات. [#106102](https://github.com/ClickHouse/ClickHouse/pull/106102) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* السماح باستخدام cache disk لمحركات جداول بحيرة البيانات. [#102017](https://github.com/ClickHouse/ClickHouse/pull/102017) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* إصلاح قراءة بيانات الجداول في قواعد بيانات `DataLakeCatalog` التي تستخدم `catalog_type = 'onelake'` عبر استخدام endpoint الخاص بـ OneLake Blob (`.blob.fabric.microsoft.com`) افتراضيًا. اضبط `onelake_use_blob_endpoint = false` للإبقاء على السلوك السابق لنقطة نهاية DFS (`.dfs.fabric.microsoft.com`). [#106843](https://github.com/ClickHouse/ClickHouse/pull/106843) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تحديث القيمة الافتراضية للإعداد `persistent_processing_node_ttl_seconds` في `S3(Azure)Queue` من `1 hour` إلى `6 hours` (وهو ما يمثل وقت التنظيف الناتج عن إعادة تشغيل غير نظيفة للخدمة، وما إلى ذلك). كانت القيمة الافتراضية السابقة مناسبةً لـ ttl لعُقد المعالجة، لكنها تُستخدم أيضًا لـ ttl لقفل bucket، الذي قد يبقى محتفَظًا به لمدة أطول، لذلك لم تكن ساعة واحدة كافية. [#106838](https://github.com/ClickHouse/ClickHouse/pull/106838) ([Kseniia Sumarokova](https://github.com/kssenii)).
* خُفِّض الحجم الافتراضي لـ metadata cache الخاصة بـ `Iceberg` من 1 GB إلى 128 MB. [#106492](https://github.com/ClickHouse/ClickHouse/pull/106492) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تمرير `query_id` لمهمة streaming في `S3Queue` إلى عمليات insert في الجداول التابعة. [#106494](https://github.com/ClickHouse/ClickHouse/pull/106494) ([Christoph Wurm](https://github.com/cwurm)).
* تعبئة `used_storages` في `system.query_log` باسم محرك التخزين عند الاستعلام عن الجداول عبر `DataLakeCatalog`. [#100706](https://github.com/ClickHouse/ClickHouse/pull/100706) ([Melvyn Peignon](https://github.com/melvynator)).
* يمكنك التحقق من قيمتي `operation` و`summary` الموجودة في snapshots الخاصة بـ Iceberg. يفيد ذلك في الاختبار وتصحيح الأخطاء. [#106246](https://github.com/ClickHouse/ClickHouse/pull/106246) ([Den Kalantaevskii](https://github.com/Diskein)).
* أصبح طلب الرفع النهائي متعدد الأجزاء إلى `S3` يُستكمَل الآن بشكل غير متزامن عبر متتبّع المهام، بحيث يمكن أن يتداخل مع رفع الجزء الأخير بدلًا من تشغيله تسلسليًا في مرحلة الإنهاء. [#105487](https://github.com/ClickHouse/ClickHouse/pull/105487) ([Asya Shneerson](https://github.com/asya-ch)).
* أُضيفت أربعة إعدادات جدول جديدة إلى `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) ([Anton Popov](https://github.com/CurtizJ)).
* أصبح بإمكان projections تجاوز إعدادات `MergeTree` إضافية (الضغط، وتنسيق الأجزاء، والتسلسل) إلى جانب `index_granularity`، مع قائمة سماح للإعدادات المسموح بها والتحقق منها. [#101170](https://github.com/ClickHouse/ClickHouse/pull/101170) ([Amos Bird](https://github.com/amosbird)).
* أُضيفت الأعمدة `current_projection` و`current_projection_progress` و`projections_completed` و`projections_remaining` إلى `system.merges` لعرض تقدّم دمج projections. [#102611](https://github.com/ClickHouse/ClickHouse/pull/102611) ([Amos Bird](https://github.com/amosbird)).
* أُصلحت مشكلة في `PREWHERE` مع استعلام `IN` الفرعي على أعمدة المفتاح الأساسي، إذ لم يكن يستخدم فهرس المفتاح الأساسي في Granule pruning، ما كان يؤدي إلى فحص كامل للجدول بدلًا من قراءة granules ذات الصلة فقط. [#102570](https://github.com/ClickHouse/ClickHouse/pull/102570) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تفرض الدالة `h3PolygonToCells` الآن الحد الأقصى لحجم المصفوفة عبر جميع المضلعات في `MultiPolygon`، وتتحقق من رموز الإرجاع الخاصة بمكتبة H3 الأساسية، وترفض وسائط `MultiLineString` بدلًا من إرجاع نتيجة فارغة بصمت. [#106399](https://github.com/ClickHouse/ClickHouse/pull/106399) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيف جدول جديد مخصّص لـ Keeper فقط باسم `system.keeper_snapshots`، ويحتوي على معلومات عن snapshots المحلية في ClickHouse Keeper. [#105571](https://github.com/ClickHouse/ClickHouse/pull/105571) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيف جدول جديد مخصّص لـ Keeper فقط باسم `system.keeper_changelogs`، ويحتوي على معلومات عن ملفات changelog المحلية في ClickHouse Keeper (سجل Raft). [#105617](https://github.com/ClickHouse/ClickHouse/pull/105617) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيف جدول `system.keeper_cluster` مخصّص لـ Keeper فقط. ويحتوي على صف واحد لكل عضو في cluster الخاص بـ Raft كما يراه Keeper الحالي. [#105646](https://github.com/ClickHouse/ClickHouse/pull/105646) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُضيف المزيد من أحداث ملف تعريف Keeper (من جهة الخادم + جهة العميل) الخاصة بـ watches. يُغلق [#97703](https://github.com/ClickHouse/ClickHouse/issues/97703). [#105336](https://github.com/ClickHouse/ClickHouse/pull/105336) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُضيفت إعدادات `coordination_settings` في Keeper لـ `NuRaft` لتقييد قبول log entries غير المُعتمدة، ولتقييد الاستقصاء العكسي لـ append-entries. [#106108](https://github.com/ClickHouse/ClickHouse/pull/106108) ([Antonio Andelic](https://github.com/antonio2368)).
* أُضيف الإعداد `enable_compression` إلى table function ‏`mysql`، وtable engine ‏`MySQL`، وdatabase engine ‏`MySQL`، وDictionary ‏`SOURCE(MYSQL)`، وnamed collections. وعند تفعيله، يفاوض ClickHouse على Compression على مستوى بروتوكول MySQL لكل البيانات المنقولة عبر connection. [#103229](https://github.com/ClickHouse/ClickHouse/pull/103229) ([Bernard Lim](https://github.com/bernardlim)).
* تم تقليل زمن استجابة الإلغاء للاستعلامات التي تعمل عبر PostgreSQL wire protocol: إذ أصبح `KILL QUERY` الآن يوقف تسلسل الإخراج داخل chunk واحد بدلًا من انتظار إرسال الـ chunk بالكامل إلى العميل. [#106535](https://github.com/ClickHouse/ClickHouse/pull/106535) ([Roman Vasin](https://github.com/rvasin)).
* تم تقليل زمن استجابة الإلغاء للاستعلامات التي تعمل عبر MySQL wire protocol: إذ أصبح `KILL QUERY` الآن يوقف تسلسل الإخراج داخل chunk واحد بدلًا من انتظار إرسال الـ chunk بالكامل إلى العميل. [#107228](https://github.com/ClickHouse/ClickHouse/pull/107228) ([Roman Vasin](https://github.com/rvasin)).
* تم إصلاح قراءة طول `auth_response` في MySQL handshake، إذ كانت قيمة بايت الطول `>= 128` تُفسَّر على أنها قيمة بحجم عدة غيغابايت لأنه كان يُقرأ كـ `char` موقَّع. [#107384](https://github.com/ClickHouse/ClickHouse/pull/107384) ([uwezkhan](https://github.com/uwezkhan)).
* أصبح `MaterializedPostgreSQL` الآن يربط أعمدة PostgreSQL من النوع `numeric(p, 0)` ذات precision الأكبر من 76 (مثل `numeric(78, 0)` المستخدمة للأعداد الصحيحة بعرض 256 بت) مع `Int256` في ClickHouse بدلًا من الفشل برسالة "Precision too big". وتُرفَض القيم التي لا تتسع داخل `Int256` مع رسالة error واضحة. [#107431](https://github.com/ClickHouse/ClickHouse/pull/107431) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إرسال Exception إلى العميل عند فشل إعداد TCP connection. [#107317](https://github.com/ClickHouse/ClickHouse/pull/107317) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* يمكن للمستخدمين الآن insert حقول `Fixed` من `Avro` لمتغيرات الأعداد الصحيحة 8 بت و16 بت و32 بت و64 بت. [#98139](https://github.com/ClickHouse/ClickHouse/pull/98139) ([Patrick Pichler](https://github.com/patrickpichler)).
* أصبح format `AvroConfluent` الآن يعيد المحاولة في Confluent Schema Registry HTTP client عند الإخفاقات المؤقتة (مهلات النقل، ورفض connection، وأخطاء DNS، وأخطاء HTTP `5xx`/`408`/`429`) باستخدام backoff أُسِّي، بدلًا من إيقاف عملية INSERT عند أول خلل شبكي. ويتحكم الإعدادان الجديدان `format_avro_schema_registry_max_retries` (القيمة الافتراضية `5`) و`format_avro_schema_registry_retry_initial_backoff_ms` (القيمة الافتراضية `100`) في هذه السياسة. وتظل validation error الخاصة بـ schema (HTTP `409` أو Avro JSON غير صالح) قاتلة. [#106661](https://github.com/ClickHouse/ClickHouse/pull/106661) ([Groene AI](https://github.com/groeneai)).
* تُسجَّل الآن الامتيازات في `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` والاستعلامات المشابهة التي تستخدم table functions `file` / `s3` / `azure` / `url`. ولم يتغير فرض الوصول. [#104693](https://github.com/ClickHouse/ClickHouse/pull/104693) ([Alexey Bakharew](https://github.com/alexbakharew)).
* أُضيفت المقاييس Asynchronous `TotalUncompressedBytesOfMergeTreeTables` و`TotalUncompressedBytesOfMergeTreeTablesSystem`، وتعرضان إجمالي uncompressed size للبيانات المخزنة في جداول MergeTree-family. [#106364](https://github.com/ClickHouse/ClickHouse/pull/106364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف حدث profile باسم `GlobalMemoryLimitExceeded` لكي يتمكن Operators من مراقبة وقت بلوغ memory limit على مستوى الخادم بالكامل. [#106466](https://github.com/ClickHouse/ClickHouse/pull/106466) ([Sacheendra Talluri](https://github.com/sacheendra)).
* تمّ ملء العدّادات `ProfileEvents` الخاصة بـ `ExecutableUserDefinedFunction*` لوظائف UDF من النوع `executable_pool`. وأصبحت الآن قيمة عدد مرات الاستدعاء لكل نداء، ووقت التنفيذ الفعلي ووقت انتظار المجمّع، واستهلاك CPU للعمليات الفرعية وذروة الذاكرة، وبايتات stdin/stdout، مرئية في `system.query_log.ProfileEvents`. [#105010](https://github.com/ClickHouse/ClickHouse/pull/105010) ([Xu Jia](https://github.com/XuJia0210)) [#105618](https://github.com/ClickHouse/ClickHouse/pull/105618) ([Ilya Andreev](https://github.com/andreev-io)).
* أُضيفت المقاييس غير المتزامنة `ExecutableUserDefinedFunctionMemoryResidentBytes` و`ExecutableUserDefinedFunctionProcesses`، وهما يبلّغان عن الذاكرة المقيمة (`VmRSS`) وعدد العمليات الحية لوظائف user-defined function من النوعين `executable` و`executable_pool`، بما في ذلك العمليات التابعة وعمّال المجمّع الخاملون. [#107300](https://github.com/ClickHouse/ClickHouse/pull/107300) ([Hanzi Jiang](https://github.com/HanziJiang)).
* أُضيفت ثلاثة مقاييس غير متزامنة تعمل على Linux فقط — `MemoryThreadStacksCount` و`MemoryThreadStacksVirtual` و`MemoryThreadStacksResident` — وتبلّغ عن ذاكرة مكدسات pthread بشكل منفصل عن بقية الذاكرة المجهولة. ويجري تفعيلها عبر `asynchronous_metrics_enable_heavy_metrics`. ويتطلب ذلك Linux 5.17+ (`prctl(PR_SET_VMA_ANON_NAME)`) وإمكانية قراءة `/proc/self/smaps`؛ وإلا فلن تظهر هذه المقاييس وسيُبلّغ عن هذا القيد في `system.warnings`. [#106230](https://github.com/ClickHouse/ClickHouse/pull/106230) ([Raúl Marín](https://github.com/Algunenano)).
* أُتيحت المقاييس غير المتزامنة `MemoryThreadStacks*` (الحجم المقيم/الافتراضي وعدد مكدسات الخيوط) على macOS. [#107752](https://github.com/ClickHouse/ClickHouse/pull/107752) ([Raúl Marín](https://github.com/Algunenano)).
* أصبحت table engines تتضمن وثائق مضمّنة يمكن فحصها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.table_engines`. [#106177](https://github.com/ClickHouse/ClickHouse/pull/106177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت database engines تتضمن وثائق مضمّنة يمكن فحصها عبر الأعمدة الجديدة `description` و`syntax` و`examples` و`introduced_in` و`related` في جدول `system.database_engines`. [#106178](https://github.com/ClickHouse/ClickHouse/pull/106178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت data types تتضمن وثائق مضمّنة يمكن فحصها عبر الأعمدة الجديدة `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)).
* أصبحت combinators الخاصة بالدوال التجميعية تتضمن وثائق مضمّنة يمكن فحصها عبر الأعمدة الجديدة `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)).
* أُضيف خيار سطر الأوامر `--chime` إلى `clickhouse-client` و`clickhouse-local` والعميل المضمّن. عند انتهاء الاستعلام (سواء بنجاح أو بخطأ) بعد تشغيله لمدة لا تقل عن N ثانية، يكتب العميل المحرف التحكمي ASCII `BEL` (`\x07`) إلى stderr. وتحدّد بيئات `terminal` ما إذا كانت ستصدر صوتًا أو وميضًا مرئيًا وفقًا لتفضيلات المستخدم. ويكون هذا مفعّلًا افتراضيًا بعتبة قدرها 5 ثوانٍ؛ مرّر `--chime N` لتحديد عتبة مخصّصة أو `--chime 0` للتعطيل. يغلق [#92718](https://github.com/ClickHouse/ClickHouse/issues/92718). [#104545](https://github.com/ClickHouse/ClickHouse/pull/104545) ([Groene AI](https://github.com/groeneai)).
* في `clickhouse-client`، عندما لا تدعم الطرفية اللصق بين الأقواس، تُدمَج الآن فواصل الأسطر المضمَّنة في الاستعلام متعدد الأسطر الملصَق داخل مخزن التحرير نفسه بدلًا من الانتقال إلى موجّه المتابعة لكل سطر. ويبقى الاستعلام الملصَق ضمن موجّه واحد، كما تتيح مفاتيح الأسهم التنقّل بين أسطره. وهذا تحسين يُقدَّم على أساس أفضل جهد ويعتمد على سلوك اللصق المعتاد المخزَّن مؤقتًا في TTY. [#104299](https://github.com/ClickHouse/ClickHouse/pull/104299) ([Alexey Milovidov](https://github.com/alexey-milovidov)). ويعمل الآن أيضًا عند تعطيل تمييز بناء الجملة (`--highlight 0`). [#106665](https://github.com/ClickHouse/ClickHouse/pull/106665) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت آلية للتحكم في مقسّم الصفحات وقت التشغيل بأسلوب MySQL لكل من `clickhouse-client` و`clickhouse-local`. [#105706](https://github.com/ClickHouse/ClickHouse/pull/105706) ([Azat Khuzhin](https://github.com/azat)).
* أصبح `clickhouse-client` الآن يراعي الطرفيات غير UTF-8: فعندما لا يكون ترميز محارف الطرفية هو UTF-8 (مثلًا عند استخدام `LANG=C`)، تعود تنسيقات `Pretty` إلى حدود شبكية ASCII بدلًا من طباعة محارف Unicode الخاصة برسم الصناديق، والتي قد تُفسد عرض الطرفية. [#106213](https://github.com/ClickHouse/ClickHouse/pull/106213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* جرى تنظيف سلاسل العرض التي يزوّد بها server عند معالجة packet ‏`Hello` في `clickhouse-client` (اسم server، وtime zone، واسم العرض، وأنماط ورسائل قواعد password) بحيث لا يتمكن server خبيث من حقن بايتات يعرضها client حرفيًا، مع تقييد حجمها أيضًا للحماية من allocation غير المقيّد. [#105243](https://github.com/ClickHouse/ClickHouse/pull/105243) ([Raúl Marín](https://github.com/Algunenano)).
* تعرض واجهة الويب الآن النتيجة على هيئة image عندما يستخدم query تنسيق output format للصور مثل `FORMAT PNG`، بدلًا من عرض raw bytes كجدول. [#107638](https://github.com/ClickHouse/ClickHouse/pull/107638) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإعداد `output_format_pretty_use_nbsp_for_padding` لعرض padding الخاص بتخطيط الجدول في تنسيقات `Pretty` ذات نمط الجدول باستخدام `U+00A0` NO-BREAK SPACE عندما تكون `output_format_pretty_grid_charset` هي `UTF-8`. ويساعد ذلك على احتفاظ مخرجات `Pretty` المنسوخة بمحاذاة الجدول في الأدوات التي تطوي المسافات العادية. ويكون هذا الإعداد معطّلًا افتراضيًا، بينما يحتفظ خرج مجموعة المحارف `ASCII` بالمسافات العادية. [#103559](https://github.com/ClickHouse/ClickHouse/pull/103559) ([Ashrith Bandla](https://github.com/ashrithb)).
* يقوم برنامج التثبيت النصي universal الآن أيضًا بتثبيت `clickhousectl` في `~/.local/bin` على Linux وmacOS، مع وصلة رمزية `chctl`. اضبط `CLICKHOUSE_ONLY=1` لتخطي ذلك. [#105399](https://github.com/ClickHouse/ClickHouse/pull/105399) ([Alasdair Brown](https://github.com/sdairs)).
* تم إصلاح الخطأ العارض `Syntax error: Unterminated quoted string` الذي كان قد يظهر بشكل متقطع عند تثبيت ClickHouse عبر `curl https://clickhouse.com/ | sh` بينما كان الملف التنفيذي `clickhouse` موجودًا بالفعل في الدليل الحالي. [#106417](https://github.com/ClickHouse/ClickHouse/pull/106417) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح ارتفاع اللوحة اليسرى في صفحة `play.html` عند فتح web terminal، بحيث يبقى زر toggle الخاص بالطرفية في الأسفل مرئيًا. [#105087](https://github.com/ClickHouse/ClickHouse/pull/105087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تجنّب تحديد الاستعلام الوحيد في واجهة الويب بعد تشغيله. [#105711](https://github.com/ClickHouse/ClickHouse/pull/105711) ([Joey Yu](https://github.com/itsjoeoui)).
* توسّع واجهة SQL على الويب الآن محرر الاستعلام عندما لا يزيد ارتفاع الاستعلام على 30% من ارتفاع المحرر الحالي. [#105713](https://github.com/ClickHouse/ClickHouse/pull/105713) ([Joey Yu](https://github.com/itsjoeoui)).
* في واجهة الويب، رتّب أيقونات القائمة السفلية (طرفية الويب وGitHub) أفقيًا عند توسيع اللوحة اليسرى، مما يمنح قائمة قواعد البيانات والجداول مساحة رأسية أكبر. [#106427](https://github.com/ClickHouse/ClickHouse/pull/106427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في واجهة الويب (`play.html`)، يؤدي الضغط على `Escape` الآن إلى إلغاء تنشيط الخلية المحددة حاليًا في جدول النتائج. [#107777](https://github.com/ClickHouse/ClickHouse/pull/107777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسينات على لوحة قاعدة البيانات في واجهة SQL على الويب (Play): تلميح عند أيقونة قاعدة البيانات، وزر لإخفاء اللوحة، وإتاحة النقر على أسماء قواعد البيانات والجداول بعرض كامل، وإصلاح تغيّر عرض اللوحة عند ظهور شريط التمرير. [#108013](https://github.com/ClickHouse/ClickHouse/pull/108013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة إعداد خادم (`min_allocation_size_to_throw_on_memory_limit`) للسماح لأي عملية تخصيص بأن تُطلق `MEMORY_LIMIT_EXCEEDED`، مما يساعد على منع حالات نفاد الذاكرة (OOM). [#105265](https://github.com/ClickHouse/ClickHouse/pull/105265) ([Azat Khuzhin](https://github.com/azat)).
* السماح بمصادقة `NONE` مع SSH (لمنع طلب كلمة المرور لمستخدمي `no_password`). [#105476](https://github.com/ClickHouse/ClickHouse/pull/105476) ([Azat Khuzhin](https://github.com/azat)).
* إعادة تعيين قائمة المجموعات الإضافية في `clickhouse su` قبل إسقاط الامتيازات، بما يطابق سلوك `/bin/su` و`sudo`. سابقًا، كانت العملية التي أُسقطت امتيازاتها ترث المجموعات الإضافية للمستدعي. [#105247](https://github.com/ClickHouse/ClickHouse/pull/105247) ([Raúl Marín](https://github.com/Algunenano)).
* إضافة دعم `BFloat16` إلى دوال predicate العددية (`isFinite`, `isNaN`). [#105391](https://github.com/ClickHouse/ClickHouse/pull/105391) ([Mohamed Hussain S](https://github.com/mohhddhassan)).
* تقليل استخدام الذاكرة في polygon dictionaries (`polygon_index_cell`, `polygon_index_each`) وجعل `system.dictionaries.bytes_allocated` يعكس بشكل صحيح فهرس البحث الذي تنشئه. [#105431](https://github.com/ClickHouse/ClickHouse/pull/105431) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح مستهلكي Kafka table engine الذين استمروا في استخدام فترة استطلاع قصيرة بعد تعيين partition، بحيث يعودون إلى القيمة المضبوطة `kafka_poll_timeout_ms` ويتجنبون عمليات استطلاع فارغة مفرطة، وأجزاءً مُدرجة أصغر، وعبئًا إضافيًا على الدمج بعد إعادة التوازن. [#100431](https://github.com/ClickHouse/ClickHouse/pull/100431) ([sugaf1204](https://github.com/sugaf1204)).
* تحديد الأعمدة بحسب الموضع (بدلًا من الاسم) عند إزالة الأعمدة غير المستخدمة في query plan. يتيح ذلك إزالة الأعمدة غير المستخدمة عند وجود أسماء أعمدة مكررة. [#100586](https://github.com/ClickHouse/ClickHouse/pull/100586) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* يُطلق ClickHouse استثناءً مناسبًا عند محاولة استخدام `table_readonly` مع المحركات المكررة، مع تحسين معالجة الاستثناءات لاستعلامات DDL (و`DatabaseReplicated`) المرتبطة بهذا الإعداد. [#100950](https://github.com/ClickHouse/ClickHouse/pull/100950) ([alesapin](https://github.com/alesapin)). لم يعد `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`. متابعة لـ [#97652](https://github.com/ClickHouse/ClickHouse/issues/97652). [#105109](https://github.com/ClickHouse/ClickHouse/pull/105109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تحديثات العرض المادي القابل للتحديث التي كان يمكن أن تفشل بخطأ `UNKNOWN_TABLE` بعد استبدال الجدول الهدف (على سبيل المثال عبر `EXCHANGE TABLES` أو الحذف ثم إعادة الإنشاء): إذ أصبح التحديث الآن يحدّد الجدول الهدف بالاسم بدلًا من الاعتماد على UUID قديم. [#102724](https://github.com/ClickHouse/ClickHouse/pull/102724) ([Seva Potapov](https://github.com/seva-potapov)).
* أُضيف إعداد `wait_for_part_commit_in_dependent_materialized_views` (القيمة الافتراضية `false`). عندما يقرأ `SELECT` في عرض مادي مرة أخرى من جدول المصدر الخاص به (على سبيل المثال عبر `INNER JOIN` مع المصدر)، كان التنفيذ المتسلسل قد يفوّت الصف الذي يُدرج حاليًا، لأن الجزء المُدرج لا يُعتمَد إلا بعد تشغيل العروض التابعة. يؤدي تفعيل هذا الإعداد إلى اعتماد الجزء قبل تشغيل العروض التابعة، بحيث تتمكن من رؤية الصف قيد الإدراج، لكن على حساب تقليل insert parallelism. [#105943](https://github.com/ClickHouse/ClickHouse/pull/105943) ([Elmi Ahmadov](https://github.com/ahmadov)).
* عدم تجاهل الأخطاء الفادحة (مثل `MEMORY_LIMIT_EXCEEDED`) في `tryDeserialize`. [#106808](https://github.com/ClickHouse/ClickHouse/pull/106808) ([Azat Khuzhin](https://github.com/azat)).
* التحقق من امتياز `CREATE TEMPORARY TABLE` عند الحاجة في `InverseDictionaryLookupPass`. [#107098](https://github.com/ClickHouse/ClickHouse/pull/107098) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح خطأ `ILLEGAL_TYPE_OF_ARGUMENT` في distributed queries مع `serialize_query_plan = 1` التي تحتوي على lambda ذات argument ثابت (مثل `arrayMap(t -> t.2, ...)`). أصبحت الأعمدة الثابتة لعُقد `INPUT` في `ActionsDAG` محفوظة الآن أثناء serialization لـ query plan. [#107124](https://github.com/ClickHouse/ClickHouse/pull/107124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت عملية إلغاء تسلسل حالات الدوال التجميعية `contingency` و`cramersV` و`cramersVBiasCorrected` و`theilsU` تتحقق من أن الأعداد المخزنة تشكّل جدول contingency متسقًا، وتطرح استثناء `CORRUPTED_DATA` بخلاف ذلك. يُغلق [#106899](https://github.com/ClickHouse/ClickHouse/issues/106899). [#107185](https://github.com/ClickHouse/ClickHouse/pull/107185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* الحفاظ على رموز الخطأ الأصلية للاستثناءات المغلّفة داخل `arrow::Status`. [#107267](https://github.com/ClickHouse/ClickHouse/pull/107267) ([Azat Khuzhin](https://github.com/azat)).
* دعم `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)).
* لم يعد إعداد compatibility يطبّق الإعدادات المهملة، لذلك لم يعد يضع عليها علامة بأنها تغيّرت أو يُصدر تحذيرات بشأن الإعدادات المهملة. [#107737](https://github.com/ClickHouse/ClickHouse/pull/107737) ([Maxim Orlovsky](https://github.com/UberDever)).
* لم تعد async inserts تسجّل القائمة الكاملة لـ `query_id`s عند مستوى `trace`/`debug`، وهو ما كان يمكن منذ 26.2 أن يتسبب في تضخّم `text_log` على الخدمات ذات حركة async insert الكثيفة. أصبحت الأسطر التفصيلية الآن عند مستوى `test`. [#107852](https://github.com/ClickHouse/ClickHouse/pull/107852) ([Sema Checherinda](https://github.com/CheSema)).
* تحسين filesystem cache: منع إدخالات priority غير الصالحة من تثبيت `KeyMetadata`. متابعة لـ [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387). [#107903](https://github.com/ClickHouse/ClickHouse/pull/107903) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تحسين مقاييس `FileCache`. [#106116](https://github.com/ClickHouse/ClickHouse/pull/106116) ([Kseniia Sumarokova](https://github.com/kssenii)).
* لا تطبع المقدمة "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)).
* إصلاح احتمال حدوث overflow في `roundUpToMultiple` عند حساب محاذاة حدود filesystem cache لإزاحات كبيرة جدًا. [#92579](https://github.com/ClickHouse/ClickHouse/pull/92579) ([Bharat Nallan](https://github.com/bharatnc)).
* أصبح `EXPLAIN SYNTAX` الآن ينسّق Operators على هيئة استدعاءات دوال بشكل متّسق في مخرجات الشرح (على سبيل المثال `plus(1, 2)` بدلًا من `1 + 2`). [#94681](https://github.com/ClickHouse/ClickHouse/pull/94681) ([Mohamed Abdelhalim ](https://github.com/1abdelhalim)).
* تحسين التلميحات الخاصة بأسماء الجداول في رسائل الخطأ: لم تعد تقترح الاسم نفسه حرفيًا، وأصبحت تتضمن اسم قاعدة البيانات في الاقتراح (مثلًا: "Maybe you meant `other_db.my_table`?"). [#95116](https://github.com/ClickHouse/ClickHouse/pull/95116) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* تحسين رسالة الخطأ الخاصة بالمعرّفات غير المحلولة في الاستعلامات التي لا تحتوي على عبارة `FROM`، بحيث تقترح إضافتها. [#101769](https://github.com/ClickHouse/ClickHouse/pull/101769) ([Yash ](https://github.com/Onyx2406)).
* إضافة خيار `EXPLAIN PIPELINE` لضغط سلاسل المعالجات المتكررة. [#104662](https://github.com/ClickHouse/ClickHouse/pull/104662) ([Yue Ni](https://github.com/niyue)).
* إصلاح قراءة heap-buffer-overflow أثناء إنشاء رسالة خطأ الصياغة (`UTF8::computeWidthImpl` عبر `parseQuery.cpp`) كانت تحدث عندما يتراجع parser إلى ما قبل أول فاصلة منقوطة / رمز نهاية الدفق؛ إذ كانت إصدارات release تُدرج بايتات من ذاكرة الكومة المجاورة ضمن الخطأ المعروض، بينما كانت إصدارات ASan تُوقف التنفيذ. [#105086](https://github.com/ClickHouse/ClickHouse/pull/105086) ([Groene AI](https://github.com/groeneai)).
* جعل استراتيجية partition الخاصة بـ hive هي الافتراضية ضمن إعداد التوافق `file_like_engine_default_partition_strategy`. [#86746](https://github.com/ClickHouse/ClickHouse/pull/86746) ([Kseniia Sumarokova](https://github.com/kssenii)).
* استخدام مكدس thread أكبر (8 MiB) على macOS لمطابقة القيمة الافتراضية في Linux، ما يعالج حالات تعطل server النادرة الناتجة عن stack overflow أثناء ترجمة JIT. [#107033](https://github.com/ClickHouse/ClickHouse/pull/107033) ([Raúl Marín](https://github.com/Algunenano)).
* لم يعد حد حجم التخزين المؤقت لـ `clickhouse-local` مضبوطًا برمجيًا على 1 GiB. وقد رُفعت القيمة الافتراضية إلى 1 TiB، ويمكن ضبطها عبر server setting ‏`max_temporary_data_on_disk_size`. [#106689](https://github.com/ClickHouse/ClickHouse/pull/106689) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة الأمر `read-checksums` إلى `clickhouse-disks`. يقرأ ملف `checksums.txt` الخاص بـ `MergeTreeDataPart` ويطبعه كجدول مقروء للبشر ومفصول بعلامات الجدولة. [#106901](https://github.com/ClickHouse/ClickHouse/pull/106901) ([Asya Shneerson](https://github.com/asya-ch)).
* تمت إضافة الأمر `read-bitmap` إلى `clickhouse-disks`. [#107834](https://github.com/ClickHouse/ClickHouse/pull/107834) ([murphy-4o](https://github.com/murphy-4o)).
* Chdig: تمكين TLS للاتصالات الآمنة (إذ كان الوضع السابق يؤدي إما إلى "unknown setting `skip_verify`" أو "connection reset by peer"). [#105864](https://github.com/ClickHouse/ClickHouse/pull/105864) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.5.1](https://github.com/azat/chdig/releases/tag/v26.5.1). [#105918](https://github.com/ClickHouse/ClickHouse/pull/105918) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.6.1](https://github.com/azat/chdig/releases/v26.6.1) - `{asynchronous_,}metric_log`، وأنماط الاستعلامات، والخرائط الحرارية، والسجلات/التتبعات المخزنة على القرص (إذ كان قد يستهلك سابقًا >40GiB لساعة واحدة من التتبعات). [#107678](https://github.com/ClickHouse/ClickHouse/pull/107678) ([Azat Khuzhin](https://github.com/azat)).
* تضبط إعدادات الخادم (`programs/server/config.xml`) الآن `keep_alive_timeout` على 30 (بدلًا من 10 سابقًا)، بما يتوافق مع القيمة الافتراضية الفعلية الموثقة والمطبقة. [#107779](https://github.com/ClickHouse/ClickHouse/pull/107779) ([Dan Checkoway](https://github.com/dcheckoway)).
* تغيّرت القيمة الافتراضية لإعداد الخادم `disk_connections_rcvbuf` من `0` (الضبط التلقائي لـ TCP في النواة) إلى `204800` (200 كيلوبايت)، مما يضع حدًا أقصى لذاكرة التخزين المؤقت لاستقبال TCP لكل مقبس في اتصالات الأقراص الخاصة بتخزين الكائنات (`S3`/`Azure`/`GCS`). [#107859](https://github.com/ClickHouse/ClickHouse/pull/107859) ([Sema Checherinda](https://github.com/CheSema)).
* يجمع مُحسِّن `PREWHERE` الآن المقترنات التي تشير إلى مجموعة الأعمدة نفسها قبل تقدير الانتقائية، بحيث تُقيَّم شروط مثل `a > 2500 AND a < 2502` معًا كنطاق واحد بدلًا من معاملتها كمسندين مستقلين، مما ينتج عنه تقدير أكثر دقة للانتقائية. [#106337](https://github.com/ClickHouse/ClickHouse/pull/106337) ([Han Fei](https://github.com/hanfei1991)).
* تمت إضافة تطبيقات للمقابس الآمنة والعادية تراعي silk fiber. [#107680](https://github.com/ClickHouse/ClickHouse/pull/107680) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح رسالة خطأ مشوشة (بسبب تبديل الوسيطات) وخطأ مطبعي في الدالة `nested`. [#108031](https://github.com/ClickHouse/ClickHouse/pull/108031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة أمر `sed` إلى `clickhouse-disks` يطبّق تعبير sed على مسار معيّن مباشرةً في مكانه. [#107131](https://github.com/ClickHouse/ClickHouse/pull/107131) ([Asya Shneerson](https://github.com/asya-ch)).
* تمت إضافة الإعداد `materialized_postgresql_use_extended_date_and_time_types` الخاص بوقت الإنشاء إلى محرك قاعدة البيانات `MaterializedPostgreSQL`. افتراضيًا (عند تمكينه)، يُستدل على أعمدة PostgreSQL ‏`date`/`timestamp` على أنها `Date32`/`DateTime64`؛ أما ضبطه على `0` وقت `CREATE DATABASE` فيؤدي إلى استنتاج النوعين الأضيق `Date`/`DateTime`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* إتاحة حذف detached parts ذات اللاحقة `tryN`. [#58957](https://github.com/ClickHouse/ClickHouse/pull/58957) ([János Benjamin Antal](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)).
* إصلاح خلل في `splitMultipartQuery` كان يتسبب في ظهور خطأ "Empty query" في الاستعلامات التي تنتهي بتعليق بعد الفاصلة المنقوطة. [#85491](https://github.com/ClickHouse/ClickHouse/pull/85491) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء في `ARRAY JOIN`: `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink`، ويحدث ذلك عند استخدام الأنواع الرقمية `LowCardinality` (المشكلة [#57243](https://github.com/ClickHouse/ClickHouse/issues/57243)). [#91784](https://github.com/ClickHouse/ClickHouse/pull/91784) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام `LIMIT BY` مع الأعمدة الثابتة إلى جانب `DISTINCT` و `ORDER BY` مع المحلل الجديد. [#93195](https://github.com/ClickHouse/ClickHouse/pull/93195) ([Ashrith Bandla](https://github.com/ashrithb)).
* إصلاح مشكلة إنشاء أعمدة `NOT NULL` بصمت على أنها `Nullable` عندما تكون `data_type_default_nullable = 1` ويُنشأ الجدول في قاعدة بيانات `Replicated` أو عبر `ON CLUSTER`. [#97572](https://github.com/ClickHouse/ClickHouse/pull/97572) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* إصلاح استقرار الاتصال بـ HiveCatalog من خلال إضافة آلية إعادة محاولة تلقائية ومنطق لإعادة الاتصال للتعامل مع أخطاء TTransportException عند التواصل مع Hive Metastore. [#98471](https://github.com/ClickHouse/ClickHouse/pull/98471) ([Dmitriy Borisenko](https://github.com/otselnik)).
* إصلاح الدالة `nested` (المستخدمة داخليًا بواسطة `ARRAY JOIN`) التي كانت تزيل `LowCardinality` من أنواع الأعمدة، مما يؤدي إلى تحوّل `Array(LowCardinality(String))` إلى `Array(String)` في المخرجات. يغلق [#95582](https://github.com/ClickHouse/ClickHouse/issues/95582). [#98974](https://github.com/ClickHouse/ClickHouse/pull/98974) ([Yash ](https://github.com/Onyx2406)).
* إصلاح استثناء "Distributed task iterator is not initialized" عند استخدام `url` أو `s3` أو table functions مشابهة في الاستعلامات مع تفعيل النسخ المتماثلة المتوازية. [#100146](https://github.com/ClickHouse/ClickHouse/pull/100146) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء logical error عند قراءة Iceberg tables التي رُقِّي إصدار التنسيق الخاص بها بواسطة أداة خارجية (مثل Spark). [#100407](https://github.com/ClickHouse/ClickHouse/pull/100407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت الدوال `like` و `ilike` و `notLike` و `notILike` و `match` تدعم الآن haystack ثابتًا مع needle غير ثابت (مثل `'foo' LIKE pattern_column`)، بعدما كان ذلك يؤدي سابقًا إلى `ILLEGAL_COLUMN`. [#100479](https://github.com/ClickHouse/ClickHouse/pull/100479) ([Yash ](https://github.com/Onyx2406)).
* إصلاح عدد الصفوف غير الصحيح الذي يعيده استعلام `MaterializedView` مع `query_plan_enable_optimizations = 0` عندما يربط العرض عمودًا صحيحًا بعمود `Bool`. [#100692](https://github.com/ClickHouse/ClickHouse/pull/100692) ([Maksim Moisiuk](https://github.com/Maximus5)).
* إصلاح استثناء (`LOGICAL_ERROR: 'PREWHERE passed to format that doesn't support it'`) عند قراءة Iceberg tables التي تحتوي على data files بتنسيق ORC مع تفعيل PREWHERE optimization. [#101206](https://github.com/ClickHouse/ClickHouse/pull/101206) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة سباق في RestCatalog. [#101216](https://github.com/ClickHouse/ClickHouse/pull/101216) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` عند تنفيذ select من VIEW فوق table تحتوي على projection عادي. [#101218](https://github.com/ClickHouse/ClickHouse/pull/101218) ([Amos Bird](https://github.com/amosbird)).
* إصلاح البيانات الوصفية القديمة في FileLog عند حذف ملف ثم إعادة إنشائه. [#101408](https://github.com/ClickHouse/ClickHouse/pull/101408) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح إعادة ترتيب join التي كانت تؤدي بصمت إلى إسقاط الصفوف غير المتطابقة في `RIGHT`/`LEFT JOIN` عند ضمّها بفاصلة (cross) مع table أخرى، مثل `t1 RIGHT JOIN t2 ON t1.c = t2.c, t3`. كان query يعيد سابقًا نتيجة inner-join بدلًا من outer-join. [#101684](https://github.com/ClickHouse/ClickHouse/pull/101684) ([Groene AI](https://github.com/groeneai)).
* إصلاح استهلاك clause ‏`FORMAT` من قِبل `INSERT` بدلًا من تطبيقها على مخرجات `EXPLAIN` في `EXPLAIN INSERT INTO ... SELECT ... FORMAT ...`. [#101772](https://github.com/ClickHouse/ClickHouse/pull/101772) ([Yash ](https://github.com/Onyx2406)).
* إصلاح الاختيار غير الصحيح لـ compression codec لأجزاء `MergeTree` عندما يكون workload setting ‏`default_compression_codec` على مستوى table مُعدًّا صراحةً. كانت الأجزاء المكتوبة on insert، وأثناء merges، ولـ projections تستخدم الـ codec الافتراضي على مستوى server بدلًا من الإعداد على مستوى table (ويشمل ذلك الآن أيضًا الجزء الفارغ الناتج عن mutation تحذف كل البيانات). [#101784](https://github.com/ClickHouse/ClickHouse/pull/101784) ([Yash ](https://github.com/Onyx2406)).
* رفض قيم `Float64` السالبة (مثل `-100.5`) في workload settings مثل `max_bytes_per_second` و`max_cpus` وغيرها. سابقًا كان التحقق يقتصر على الأعداد الصحيحة السالبة، ما سمح للقيم العشرية السالبة بإنشاء عُقد scheduler معطوبة بصمت. يُغلق [#101825](https://github.com/ClickHouse/ClickHouse/issues/101825). [#101842](https://github.com/ClickHouse/ClickHouse/pull/101842) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("Port is not connected"، الرمز 49) التي كان يمكن أن تحدث عند تنفيذ queries تتضمن VIEW فيها aggregation داخل JOIN. [#102574](https://github.com/ClickHouse/ClickHouse/pull/102574) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح عدم اتساق البيانات الوصفية للجزء بعد mutations على columns ذات serializations غير الافتراضية. [#102817](https://github.com/ClickHouse/ClickHouse/pull/102817) ([Eduard Karacharov](https://github.com/korowa)).
* إصلاح تحديث البيانات الوصفية قبل تنفيذ mutation، ما يحل [#96806](https://github.com/ClickHouse/ClickHouse/issues/96806). [#102882](https://github.com/ClickHouse/ClickHouse/pull/102882) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح بطء queries من نوع SELECT بشكل ملحوظ عند تشغيل عمليات INSERT متزامنة. سابقًا كانت pipeline الخاصة بـ INSERT تحجز CPU slots حتى `max_threads` عند بدء query حتى عندما لا تُستخدم معظم الـ slots مطلقًا، مما كان يحرم عمليات SELECT المتزامنة من الموارد. أصبح تخصيص CPU slot الآن قائمًا على الطلب: لا تطلب pipeline الـ slots إلا عند دفع عمل قابل للتوازي فعليًا. ينطبق ذلك على كلٍّ من التحكم في Concurrency والـ scheduler الاستباقي للـ CPU الخاص بـ workloads. ويعمل server setting الجديد `concurrent_threads_lazy_allocation` (القيمة الافتراضية `true`) كآلية تراجع. [#102928](https://github.com/ClickHouse/ClickHouse/pull/102928) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح تمرير `NULL` عند قراءة الأعمدة الفرعية المستخرجة من أعمدة `Nullable(Tuple(...))`. على سبيل المثال، في `tup Nullable(Tuple(s Nullable(String)))`، يُرجِع `SELECT tup.s` الآن `NULL` بشكل صحيح في الصفوف التي تكون فيها الـ tuple الخارجية `NULL` بدلًا من قيم المهملات. ويشمل ذلك جميع أنواع العناصر التي يمكنها تمثيل `NULL`: ‏`Nullable` و`Dynamic` و`Variant` و`LowCardinality(Nullable(...))`. يُغلق [#105356](https://github.com/ClickHouse/ClickHouse/issues/105356). [#102942](https://github.com/ClickHouse/ClickHouse/pull/102942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إطلاق `INCORRECT_DATA` بدلًا من `LOGICAL_ERROR` عندما تكون البيانات التي يرسلها العميل بتنسيق Native format مقتطعة أو غير سليمة. [#102975](https://github.com/ClickHouse/ClickHouse/pull/102975) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إضافة فحص للإلغاء إلى عملية القراءة في ObjectStorage. يُغلق [#98165](https://github.com/ClickHouse/ClickHouse/issues/98165). [#103016](https://github.com/ClickHouse/ClickHouse/pull/103016) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* مراعاة `input_format_binary_max_type_complexity` عند فك ترميز معاملات aggregate function. يُغلق [#102903](https://github.com/ClickHouse/ClickHouse/issues/102903). [#103026](https://github.com/ClickHouse/ClickHouse/pull/103026) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح استنتاج nullable لأعمدة geo في Parquet reader المستند إلى Arrow. يُغلق [#101845](https://github.com/ClickHouse/ClickHouse/issues/101845). [#103032](https://github.com/ClickHouse/ClickHouse/pull/103032) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `recursiveRemoveLowCardinality` الذي كان يمحو أسماء أنواع geometry المخصصة (مثل `LineString` مقابل `Ring`، و`MultiLineString` مقابل `Polygon`)، مما كان يؤدي إلى تفسير نوع geometry بشكل خاطئ. يُغلق [#103207](https://github.com/ClickHouse/ClickHouse/issues/103207). [#103041](https://github.com/ClickHouse/ClickHouse/pull/103041) ([Joanna Hulboj](https://github.com/jh0x)).
* إصلاح تجاهل `input_format_max_block_size_bytes` بصمت أثناء parsing لـ `INSERT` عندما تكون `max_insert_block_size_bytes` مساوية لـ `0` (القيمة الافتراضية). يقيّد هذا الإعداد الآن بشكل صحيح حجم blocks الناتجة عن row input formats. [#103068](https://github.com/ClickHouse/ClickHouse/pull/103068) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إصلاح قيام ClickHouse أحيانًا بإنتاج tokens غير صالحة لـ GSSAPI بسبب إزالة غير صحيحة للـ null byte اللاحقة. [#103114](https://github.com/ClickHouse/ClickHouse/pull/103114) ([Michael Jarrett](https://github.com/EmeraldShift)).
* إصلاح طيّ الثوابت في وقت analyzer للدوال ذات short-circuit (`if` و`multiIf` و`and` و`or` وغيرها)، بحيث لم تعد branches غير القابلة للوصول إحصائيًا تثير استثناءات أثناء التحليل. على سبيل المثال، يُرجِع `WITH 0 AS n SELECT multiIf(n = 0, 0, intDiv(100, n))` الآن `0` بشكل صحيح بدلًا من الفشل بخطأ قسمة على الصفر. [#103157](https://github.com/ClickHouse/ClickHouse/pull/103157) ([Peng](https://github.com/fastio)).
* يوسّع `EXPLAIN SYNTAX` parameterized views. [#103263](https://github.com/ClickHouse/ClickHouse/pull/103263) ([Jordi Villar](https://github.com/jrdi)).
* إصلاح تلف البيانات عند كتابة Parquet (وصيغ أخرى تحتوي على trailer مثل ORC وArrow) إلى HDFS عبر `INSERT INTO FUNCTION hdfs(...)`. منذ الإصدار 26.1، لم يكن `WriteBufferFromHDFS` يفرّغ buffer العمل الخاص به عند `finalize()`، لذا كانت آخر `DBMS_DEFAULT_BUFFER_SIZE` بايت — أو أقل — من كل ملف تُفقَد بصمت، بما في ذلك footer الخاص بـ Parquet `PAR1`. وكانت قراءة مثل هذه الملفات تُرجِع `Not a Parquet file (wrong magic bytes at the end of file)`. [#103268](https://github.com/ClickHouse/ClickHouse/pull/103268) ([Groene AI](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) ([Groene AI](https://github.com/groeneai)).
* إصلاح خلل كان يؤدي إلى أن `ALTER TABLE ... MODIFY SETTING` على جدول `EmbeddedRocksDB` قد يحفظ قيمة إعداد غير صالحة في ملف البيانات الوصفية للجدول حتى عندما يرفض الخادم الاستعلام. وعند إعادة تشغيل الخادم في المرة التالية، كان الجدول يفشل في الإرفاق مع `CANNOT_PARSE_BOOL` (أو خطأ parsing مشابه)، وفي قواعد البيانات التي تكون فيها إخفاقات التحميل قاتلة، كان الخادم يرفض البدء. وأصبحت قيم الإعدادات غير الصالحة تُرفض الآن قبل كتابة أي بيانات وصفية. [#103417](https://github.com/ClickHouse/ClickHouse/pull/103417) ([Groene AI](https://github.com/groeneai)).
* إصلاح إجهاض للخادم عند إنشاء جدول باستخدام محرك تخزين كائنات (`AzureBlobStorage`, `DeltaLakeAzure`, `S3`, `HDFS`) مع عدد غير مدعوم من الوسائط. يُرجع الخادم الآن الخطأ `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` بشكل واضح بدلًا من الإجهاض في بنيات debug/sanitizer. [#103544](https://github.com/ClickHouse/ClickHouse/pull/103544) ([Groene AI](https://github.com/groeneai)).
* إصلاح انهيار في الخادم أثناء parsing لمعاملات نوعَي البيانات `JSON` و`Dynamic` عندما تكون شجرة البنية المجرّدة (AST) مشوّهة بنيويًا (على سبيل المثال عند إنشائها بواسطة AST fuzzer): إذ كان يمكن أن يبقى تعبير المعامل `equals(name, value)` بأقل من عنصرين فرعيين، ثم يقوم `DataTypeObject` و`DataTypeDynamic` بفكّ الإشارة إليه من دون التحقق من الحدود. [#103545](https://github.com/ClickHouse/ClickHouse/pull/103545) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء منطقية في المحلل عند تصادم أسماء الأعمدة داخل lambda مستخدمة في `PREWHERE`. يغلق [#103584](https://github.com/ClickHouse/ClickHouse/issues/103584). [#103627](https://github.com/ClickHouse/ClickHouse/pull/103627) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الخطأ المتقطع `Logical error: 'Database <name> not found'` من `DataLakeConfiguration::getCatalog` عند تحميل جدول بمحرك `Iceberg` داخل قاعدة بيانات عادية أثناء التحميل غير المتزامن للبيانات الوصفية. [#103775](https://github.com/ClickHouse/ClickHouse/pull/103775) ([Groene AI](https://github.com/groeneai)).
* إصلاح أخطاء `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 *` على self-join مع تداخل في أسماء الأعمدة، مع parallel replicas و`parallel_replicas_local_plan = 0`. يغلق [#74324](https://github.com/ClickHouse/ClickHouse/issues/74324). [#103806](https://github.com/ClickHouse/ClickHouse/pull/103806) ([Groene AI](https://github.com/groeneai)).
* إصلاح إجهاض للخادم عندما يستخدم استعلام مقارنات `coalesce`/`ifNull` متداخلة (مثل `WHERE coalesce(a, b, coalesce(c, d), e) = const`) على جدول `MergeTree` مع عدة skip indexes من نوع `minmax` و`use_skip_indexes_for_disjunctions = 1`. وأصبحت الآن إعادة كتابة skip index للتعبير `<op>(coalesce(...), const)` تُطبَّق بشكل تعاودي على وسائط coalesce الداخلية، بحيث يطابق RPN الخاص بكل `KeyCondition` قالب RPN كما يفترضه بالفعل كود تتبّع الفصل. [#103929](https://github.com/ClickHouse/ClickHouse/pull/103929) ([Groene AI](https://github.com/groeneai)).
* إصلاح تجاهل `max_rows_to_transfer` و`max_bytes_to_transfer` بصمت في استعلامات `GLOBAL IN` و`GLOBAL JOIN` ضمن analyzer الجديد. ترفع هذه الإعدادات الآن الخطأ `SET_SIZE_LIMIT_EXCEEDED` (أو تتوقف، بحسب `transfer_overflow_mode`) عندما يتجاوز external table المُجسَّد الحد المُعدّ، بما يطابق سلوك analyzer القديم. يغلق [#103333](https://github.com/ClickHouse/ClickHouse/issues/103333). [#104119](https://github.com/ClickHouse/ClickHouse/pull/104119) ([Groene AI](https://github.com/groeneai)).
* إصلاح القراءات المفرطة لـ metadata الخاصة بـ catalog/S3 عندما يشير `INSERT` أو DDL statement إلى table غير موجود في database من نوع DataLake catalog مع تفعيل `show_data_lake_catalogs_in_system_tables`. كان مسار اقتراح تصحيح الخطأ المطبعي يحمّل metadata الكاملة لكل table في Iceberg على مستوى catalog بأكمله، مما قد يستنفد الذاكرة في catalogs الكبيرة. [#104124](https://github.com/ClickHouse/ClickHouse/pull/104124) ([DQ](https://github.com/il9ue)).
* إصلاح انهيار (`LOGICAL_ERROR` "Columns are assumed to be of identical types, but they are different in Nullable" في builds التنقيح، وSIGSEGV بسبب مؤشر فارغ في `ColumnString::compareAt` في builds الإصدار) ونتيجة غير صحيحة كان يمكن أن تحدث في queries التي تستخدم `direct` `join_algorithm` مع table على الجانب الأيمن من نوع `MergeTree` عندما كانت query plan الخاصة بالبحث تعيد ترتيب columns أثناء optimization. كان يمكن أن تنتهي columns الخاصة بالجانب الأيمن في مواضع تحمل أسماء خاطئة، بحيث يرى عامل تصفية أو مقارنة على join key عمودًا من type غير صحيح. كُشف عنها بواسطة AST fuzzer تحت STID 2139-5111 وتم الإبلاغ عنها في [#107272](https://github.com/ClickHouse/ClickHouse/issues/107272). [#104174](https://github.com/ClickHouse/ClickHouse/pull/104174) ([Groene AI](https://github.com/groeneai)).
* رفض partition ID من نوع integer إذا كان خارج النطاق لـ `Date` بدلًا من حدوث overflow بصمت أو `LOGICAL_ERROR` في `ALTER`. [#104250](https://github.com/ClickHouse/ClickHouse/pull/104250) ([Azat Khuzhin](https://github.com/azat)).
* تعطيل `additional_table_filters` مع parallel replicas وanalyzer من دون serialization لـ query plan. كان هذا قد يؤدي سابقًا إلى نتائج غير صحيحة. [#104296](https://github.com/ClickHouse/ClickHouse/pull/104296) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح قيام `dictGetOrNull` بالكتابة فوق columns الأخرى في إسقاط `SELECT` بالقيمة `NULL` بصمت عند استدعائه باستخدام Key column من نوع `Nullable` تكون قيمه Missing في Dictionary. كانت الدالة تُعدّل خريطة null المرتبطة بالإدخال في موضعها؛ وهي الآن تنشئ نسخة عميقة من result column قبل mutation. يغلق [#73633](https://github.com/ClickHouse/ClickHouse/issues/73633). [#104327](https://github.com/ClickHouse/ClickHouse/pull/104327) ([Groene AI](https://github.com/groeneai)).
* إصلاح patch part معطوب بعد `ALTER TABLE ... DROP PARTITION ID 'patch-...'` متبوعًا بـ `DETACH`/`ATTACH TABLE`. سابقًا كان part المغطي الفارغ يُكتب من دون `partition.dat` و`source_parts.dat`، مما يؤدي إلى ظهور الإدخال `broken-on-start_patch-...` في `system.detached_parts` بعد attach التالي أو إعادة تشغيل الخادم. يغلق [#93132](https://github.com/ClickHouse/ClickHouse/issues/93132). يغلق [#102103](https://github.com/ClickHouse/ClickHouse/issues/102103). [#104353](https://github.com/ClickHouse/ClickHouse/pull/104353) ([Groene AI](https://github.com/groeneai)).
* إصلاح `INSERT` المتدفق مع `input_format_max_block_wait_ms` لواجهة `HTTP` ولـ `INSERT SELECT FROM input`، بحيث تُكتب كتل الإدخال الجزئية إلى التخزين قبل انتهاء request. [#104534](https://github.com/ClickHouse/ClickHouse/pull/104534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح خلل كان يؤدي إلى أن تُرجِع الاستعلامات التي تجمع بين `arrayJoin` و`ORDER BY ... LIMIT` بعد `JOIN` صفر صفوف بصمت. ولم يعد تحسين مخطط الاستعلام الذي يرفع تقييم الدالة فوق `SortingStep` يُطبَّق عندما يحتوي التعبير المرفوع على `arrayJoin`، لأن `arrayJoin` قد يغيّر عدد الصفوف. يغلق [#82279](https://github.com/ClickHouse/ClickHouse/issues/82279). [#104558](https://github.com/ClickHouse/ClickHouse/pull/104558) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة إجهاض نادرة للخادم أثناء إتلاف جدول من عائلة `MergeTree`. كان ذلك قد يحدث عندما يطلق `shutdown` استثناءً قبل توقف مجدول المهام الخلفية بالكامل: فإذا نُفِّذت مهمة في الخلفية خلال تلك النافذة الضيقة، فقد ترسل نداءً `virtual` عبر كائن تخزين مُتلف جزئيًا وتصطدم بـ `__cxa_pure_virtual`. [#104561](https://github.com/ClickHouse/ClickHouse/pull/104561) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتيجة غير متسقة في subcolumn المجمّع `JSON` عند استخدام type hint يحتوي على قيمة null. [#104584](https://github.com/ClickHouse/ClickHouse/pull/104584) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح نتائج خاطئة أو projection مفقود عندما يحتوي aggregate projection على عدة تجميعات `sumIf` بشروط `IN (...)` مختلفة. [#104765](https://github.com/ClickHouse/ClickHouse/pull/104765) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح عدد صفوف خاطئ ناتج عن `arrayJoin()` المستخدم داخل `JOIN ON`: إذ كانت النتيجة تُضرَب في طول المصفوفة مرة إضافية. [#104785](https://github.com/ClickHouse/ClickHouse/pull/104785) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح `deltaSumTimestamp` الذي كان يُرجع نتائج خاطئة لأنواع الأعداد الصحيحة الموقعة عند عبور الصفر. يحل [#104750](https://github.com/ClickHouse/ClickHouse/issues/104750). [#104830](https://github.com/ClickHouse/ClickHouse/pull/104830) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح عدم تطابق بنية الكتلة في UnionStep بعد دفع عامل التصفية إلى الأسفل مع ثوابت NULL. يغلق [#104821](https://github.com/ClickHouse/ClickHouse/issues/104821). [#104853](https://github.com/ClickHouse/ClickHouse/pull/104853) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الخطأ `Logical error: 'Metadata is not initialized'` الذي كان يظهر عند تنفيذ `DELETE FROM` على جدول `Iceberg` أو `DeltaLake` أو `Hudi` مُرفَق حديثًا إذا كان ملف البيانات الوصفية تالفًا أو يتعذر تحميله. ويُبلَّغ الآن بدلًا من ذلك عن استثناء عادي موجه للمستخدم، مع استمرار الخادم في العمل. يغلق [#104891](https://github.com/ClickHouse/ClickHouse/issues/104891). [#104917](https://github.com/ClickHouse/ClickHouse/pull/104917) ([Groene AI](https://github.com/groeneai)).
* أُصلِح عدم تحديث `max_memory_usage_soft_limit` آنيًا عند تغيّر الإعدادات. كان حد الذاكرة المرن يُحتسَب مرة واحدة عند بدء التشغيل ويُخزَّن مؤقتًا، لذلك لم تكن لإعادات تحميل الإعدادات اللاحقة أي فاعلية. وبعد هذا الإصلاح، يُعاد حساب الحد ويُطبَّق فورًا مع كل إعادة تحميل للإعدادات، من دون الحاجة إلى إعادة تشغيل Keeper. [#104940](https://github.com/ClickHouse/ClickHouse/pull/104940) ([Kai Zhu](https://github.com/nauu)).
* إصلاح تحليل الرموز في JIT على macOS بحيث لم يعد التجميع الفوري لـ sort وexpression وaggregate يفشل مع `CANNOT_COMPILE_CODE: Could not find symbol _<name>`. [#104946](https://github.com/ClickHouse/ClickHouse/pull/104946) ([Alexei Fedotov](https://github.com/leshikus)).
* إصلاح استثناء (`Received signal 6 (abort)` في تقوية المتجهات، ويظهر على هيئة `Tuple::back()` على متجه فارغ) عند تنفيذ استعلام بالصيغة `SELECT ... FROM <Distributed table> WHERE/HAVING/GROUP BY ... (sharding_key_column IN tuple())` مع تفعيل `optimize_skip_unused_shards_rewrite_in` ضمن analyzer الجديد. [#104966](https://github.com/ClickHouse/ClickHouse/pull/104966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح توقّف الخادم بسبب `Logical error: 'Inconsistent AST formatting'` ‏(STID 1941-1bfa) في استعلامات مثل `CREATE TABLE t (c0 Int CODEC(not((not(materialize(1), materialize(2)))), ZSTD)) ENGINE = Memory` ضمن بنى debug / sanitiser. لم يعد المنسّق يُصدر أقواسًا خارجية زائدة حول استدعاء الدالة `tuple(...)` متعددة الوسائط عندما يظهر داخل قوائم وسائط `CODEC` / `STATISTICS` / `BACKUP_NAME` (حيث تكون الصيغة العاملية `(a, b)` معطّلة)، مما يحافظ على استقرار دورة format-parse-format ذهابًا وإيابًا. [#104991](https://github.com/ClickHouse/ClickHouse/pull/104991) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `NOT_FOUND_COLUMN_IN_BLOCK` الذي يطرحه `ALTER TABLE ... MATERIALIZE INDEX` على الأجزاء التي أُنشئت في 25.8 وتحتوي على skip index على column أُضيف عبر `ALTER TABLE ... ADD COLUMN` منفصل. أصبحت mutation الآن تقرأ بصورة صحيحة كل column مطلوب من كل skip index وprojection موجودَين مسبقًا على الجزء أثناء إعادة الحساب القسرية. يغلق [#104872](https://github.com/ClickHouse/ClickHouse/issues/104872). [#105039](https://github.com/ClickHouse/ClickHouse/pull/105039) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالتين من `LOGICAL_ERROR: Reading from materialized CTE 'X' before it has been materialized` كانت تطرحهما الاستعلامات التي تستخدم `enable_materialized_cte`: ‏(1) materialized CTE مُعاد استخدامه ومُرشَّح بواسطة `IN (subquery)` فوق materialized CTE آخر، و(2) materialized CTE يُشار إليه مباشرةً وداخل مرشح `WHERE ... IN (...)` يصل إلى primary key في MergeTree عبر IN-subquery متداخل. كما تأثر `EXPLAIN` للاستعلامات نفسها أيضًا لأن العيوب كانت تظهر أثناء optimization للخطة. يغلق [#101940](https://github.com/ClickHouse/ClickHouse/issues/101940)، ويغلق [#102320](https://github.com/ClickHouse/ClickHouse/issues/102320). [#105041](https://github.com/ClickHouse/ClickHouse/pull/105041) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح تقدير selectivity الخاص بـ`PREWHERE` لإحصاءات `countmin` في columns من نوع `Float32`. تسبّب عيبان في أن تُنتج إحصاءات `countmin` تقديرات خاطئة بصمت لـcolumns من نوع `Float32`: إذ كان `ConditionSelectivityEstimator` يتخطّى الإحصاءات بالكامل عندما يكون column type ‏(`Float32`) أضيق من literal type ‏(`Float64`)، فيعود إلى selectivity الافتراضية ويتجاهل sketch؛ كما أن `StatisticsCountMinSketch::estimateEqual` كان يُجري hash على أول N بايت من الكائن `Field`، لكن `Field` يخزّن `Float32` على أنه `Float64` (`NearestFieldType<Float32>` = `Float64`)، لذلك كان نمط البايتات المستخدم عند query time مختلفًا عن بايتات `Float32` الفعلية المخزنة أثناء build. [#105047](https://github.com/ClickHouse/ClickHouse/pull/105047) ([Han Fei](https://github.com/hanfei1991)).
* أصبحت استعلامات `ATTACH TABLE name <clauses>;` التي توفّر clauses للتخزين (`ORDER BY` و`PARTITION BY` و`PRIMARY KEY` و`SAMPLE BY` و`TTL` و`UNIQUE KEY` أو `SETTINGS` الخاصة بالـengine) من دون `ENGINE` تطرح الآن `BAD_ARGUMENTS` بدلًا من إعادة Attach للـtable بصمت باستخدام تعريفها المخزَّن وتجاهل clauses التي قدّمها المستخدم. وما تزال `SETTINGS` الخاصة بالجلسة على مستوى query (مثل `log_comment`) تُطبَّق. استخدم `ATTACH TABLE t;` لإعادة Attach باستخدام metadata المخزَّنة، أو `ALTER TABLE t MODIFY SETTING ...` بعد `ATTACH` لتغيير settings. [#105068](https://github.com/ClickHouse/ClickHouse/pull/105068) ([Groene AI](https://github.com/groeneai)).
* إصلاح use-after-free في `runningAccumulate` عند استدعائها على column تُرجع aggregate function الخاصة به حالتها الخاصة (مثل `uniqStateOrDefaultState` و`sumStateOrDefaultState` و`uniqStateForEachState`). [#105085](https://github.com/ClickHouse/ClickHouse/pull/105085) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح خطأ في Web UI ‏(`play.html`): كان تشغيل query بينما يكون المؤشر بعد `;` الختامية الوحيدة يُبلغ عن "empty query" بدلًا من تشغيل الاستعلام. [#105107](https://github.com/ClickHouse/ClickHouse/pull/105107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR: 'No user in current context, it's a bug'` عند تنفيذ `CREATE TABLE ... AS SELECT` داخل قاعدة بيانات `Replicated` مع القراءة من `system.current_roles` أو `system.enabled_roles`. ينجح الاستعلام الآن ويُرجع مجموعة نتائج فارغة في سياق عامل DDL الداخلي هذا. [#105150](https://github.com/ClickHouse/ClickHouse/pull/105150) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `ILLEGAL_TYPE_OF_ARGUMENT` عند دمج حالات التجميع `quantileExactWeightedInterpolated` أو `quantileDD` أو `quantilePrometheusHistogram` مع نظائرها بصيغة الجمع `quantilesXxxMerge` (والعكس صحيح). تشترك الصيغتان المفردة والجمع لهذه العائلات الثلاث من quantile في حالة التجميع الداخلية نفسها، لكنها لم تكن مُدرجة في جدول ربط الأسماء الداخلي، لذلك كان يُرفض دمج الحالة بين الدوال — وكذلك تحسين دمج الدوال لهذه العائلات. [#105189](https://github.com/ClickHouse/ClickHouse/pull/105189) ([Groene AI](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`. ويُصلح هذا أيضًا نتائج الاستعلام الخاطئة (استبعاد `parts` و`granules` بشكل غير صحيح) عند استخدام مثل هذه الدوال في `WHERE` على مفتاح `Date32` أو `DateTime64` يحتوي على قيم خارج النطاق. [#105244](https://github.com/ClickHouse/ClickHouse/pull/105244) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح خطأ منطقي في `arrayRemove` عندما تكون الوسيطة الأولى مصفوفة من `Variant` وكانت جميع بدائلها غير متوافقة مع نوع الوسيطة الثانية وكان `variant_throw_on_type_mismatch` معطّلًا. تتعامل الدالة الآن مع المقارنة على أنها "لا تتساوى مطلقًا" وتُرجع المصفوفة كما هي بدلًا من التسبب في فشل `assertTypeEquality` على جانب الخادم. [#105248](https://github.com/ClickHouse/ClickHouse/pull/105248) ([Groene AI](https://github.com/groeneai)).
* يمكن الآن تنفيذ الاستعلام بنجاح حتى إذا فشل `FileCache` في إنشاء بعض الأدلة على القرص لأغراض التخزين المؤقت. [#105250](https://github.com/ClickHouse/ClickHouse/pull/105250) ([Den Kalantaevskii](https://github.com/Diskein)).
* إصلاح توقّف الخادم مع `Assertion 'px != 0' failed` في `ExtremesTransform` عندما يواجه استعلام فيه `extremes = 1` استثناءً (مثل `MEMORY_LIMIT_EXCEEDED`) بينما كان التحويل يبني أعمدة `Extremes` من أول chunk. يتلقى العميل الآن الاستثناء الأصلي بدلًا من تعطل الخادم. [#105264](https://github.com/ClickHouse/ClickHouse/pull/105264) ([Groene AI](https://github.com/groeneai)).
* أصبح `LEFT ANTI JOIN` الآن يُرجع بشكل صحيح عمود مفتاح `join` من الجانب الأيمن بالقيم الافتراضية للصفوف غير المطابقة، بدلًا من تكرار قيمة المفتاح الأيسر. سابقًا، كان `SELECT a.x AS l, b.x AS r FROM a LEFT ANTI JOIN b ON a.x = b.x` قد يُرجع `r = a.x` للصفوف غير المطابقة، بينما كان ينبغي أن يُرجع القيمة الافتراضية (`0` لـ `Int32`، و`''` لـ `String`، و`NULL` لـ `Nullable`). كان التأثير مقتصرًا على عمود مفتاح `join` فقط؛ أما الأعمدة اليمنى غير المفتاحية فكانت تُضبط بالفعل على القيم الافتراضية بشكل صحيح. وظهر الخطأ نفسه في `RIGHT ANTI JOIN` كلما بدّل المُحسِّن الجانبين. يُغلق [#99959](https://github.com/ClickHouse/ClickHouse/issues/99959). [#105278](https://github.com/ClickHouse/ClickHouse/pull/105278) ([Groene AI](https://github.com/groeneai)).
* إصلاح فقدان البيانات في `clickhouse-local` عند تشغيله بشكل متكرر باستخدام `--default_database` غير `default` (على سبيل المثال `clickhouse-local --path X -- --default_database=mydb`): كان البحث عن معرّف UUID لقاعدة البيانات المحفوظة مُثبتًا على `metadata/default`، لذلك كان كل إعادة تشغيل تُنشئ معرّف UUID جديدًا وتُخفي جداول التشغيل السابق. يغلق [#101831](https://github.com/ClickHouse/ClickHouse/issues/101831). [#105284](https://github.com/ClickHouse/ClickHouse/pull/105284) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `Mutation of `Memory` table produced incomplete output` الذي كان يظهر عند تشغيل `ALTER TABLE <memory_table> APPLY PATCHES` أو `ALTER TABLE <memory_table> APPLY DELETED MASK`. لا تمتلك جداول `Memory` patch parts أو أقنعة حذف، لذا يُعامَل الأمران الآن بشكل صحيح على أنهما بلا تأثير. [#105286](https://github.com/ClickHouse/ClickHouse/pull/105286) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستعلامات طويلة التشغيل مع Unity Catalog عبر تمرير معلمة `table_id` في طلب الاستعلام. [#105303](https://github.com/ClickHouse/ClickHouse/pull/105303) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح `CANNOT_CONVERT_TYPE` في `Merge` فوق `Merge` فوق `Distributed` مع `distributed_group_by_no_merge=1`. [#105330](https://github.com/ClickHouse/ClickHouse/pull/105330) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تجاهل `clickhouse local` و`clickhouse client` للخيار `--query`/`-q` بصمت عند تمرير وسيطة موضعية لملف أيضًا. كلا الشكلين يُنتجان الآن `BAD_ARGUMENTS` بصورة متسقة. [#105334](https://github.com/ClickHouse/ClickHouse/pull/105334) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح قيام `REPLACE TEMPORARY TABLE` بإنشاء جدول جديد بصمت عندما لا يكون الهدف موجودًا. الآن يُصدر `UNKNOWN_TABLE`، بما يطابق دلالات `REPLACE TABLE`. استخدم `CREATE OR REPLACE TEMPORARY TABLE` للحفاظ على سلوك الإنشاء أو الاستبدال. [#105373](https://github.com/ClickHouse/ClickHouse/pull/105373) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل عمليات القراءة طويلة التشغيل (مثل `INSERT ... SELECT`) من قاعدة بيانات `DataLakeCatalog` مع `catalog_type = 'glue'` بخطأ `ExpiredToken` بمجرد انتهاء صلاحية بيانات اعتماد جلسة AWS STS التي جرى التقاطها عند وقت تحميل البيانات الوصفية للجدول. تُحدَّث بيانات اعتماد AWS STS الآن أثناء تنفيذ الاستعلام، لذا تستمر هذه القراءات بعد انتهاء صلاحية الرمز المميز. [#105381](https://github.com/ClickHouse/ClickHouse/pull/105381) ([Pratima Patel](https://github.com/pratimapatel2008)).
* إصلاح خطأ منطقي في `LIMIT BY` السالب في بعض الحالات عند استخدامه مع `ARRAY JOIN`. [#105403](https://github.com/ClickHouse/ClickHouse/pull/105403) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تضخم `read_bytes` (وكذلك البايتات/الثانية المشتقة المعروضة في `system.query_log` وشريط التقدم وما إلى ذلك) عند قراءة ملفات Parquet. كان التنفيذ السابق يبلّغ عن الحجم المضغوط الإجمالي لـ row group عند كل chunk، لذا كانت قراءة K من أصل N من الأعمدة تؤدي إلى احتساب زائد بمقدار `N / K`. والآن لا يُجمَع إلا عبر الأعمدة المحددة. كما يُصلح أيضًا تتبع التقدم على مستوى الملف لجداول Iceberg، والذي لم يكن يبلّغ سابقًا عن حجم ملف البيانات مطلقًا. [#105413](https://github.com/ClickHouse/ClickHouse/pull/105413) ([Groene AI](https://github.com/groeneai)).
* إصلاح احتمال حدوث segfault في الخادم في cluster table functions (`s3Cluster`, `urlCluster`, `fileCluster`, ...) عندما يُنتج المخطِّط `SELECT` مع تعيين العلامة `recursive_with` ولكن من دون تعبير `WITH`. يغلق [#105370](https://github.com/ClickHouse/ClickHouse/issues/105370). [#105433](https://github.com/ClickHouse/ClickHouse/pull/105433) ([Groene AI](https://github.com/groeneai)).
* إصلاح النتيجة الخاطئة لـ `countDistinct` / `uniqExact` على الأعمدة من النوع `Nullable` عندما يكون `count_distinct_optimization = 1` (كانت مجموعة NULL تُحتسب على نحو غير صحيح). [#105439](https://github.com/ClickHouse/ClickHouse/pull/105439) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح heap-buffer-overflow عند قراءة ملفات Arrow أو ArrowStream التي تحتوي على offsets وسيطة تالفة في عمود ثنائي أو نصي، وكذلك إلغاء مرجعية لمؤشر NULL عند قراءة أعمدة Arrow الموسومة جغرافيًا. [#105449](https://github.com/ClickHouse/ClickHouse/pull/105449) ([Raúl Marín](https://github.com/Algunenano)).
* التحقق من أنواع `Dynamic`/`Variant` في window `PARTITION BY`، إذ لم يكن يُتحقق منها سابقًا عندما يكون `allow_suspicious_types_in_group_by` معطّلًا. يُغلق [#105028](https://github.com/ClickHouse/ClickHouse/issues/105028). [#105450](https://github.com/ClickHouse/ClickHouse/pull/105450) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح عدم عمل `input_format_json_empty_as_default` في تنسيقات JSONStrings\*. يُغلق [#104913](https://github.com/ClickHouse/ClickHouse/issues/104913). [#105453](https://github.com/ClickHouse/ClickHouse/pull/105453) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح إدراج `NULL` في عمود `Variant` عبر تنسيق `VALUES` أثناء parsing للتعبيرات. يُغلق [#104909](https://github.com/ClickHouse/ClickHouse/issues/104909). [#105455](https://github.com/ClickHouse/ClickHouse/pull/105455) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح قيام `dictGetOrDefault` بإطلاق `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN` عندما تكون الوسيطة الافتراضية تعبيرًا من نوع `Nullable` ويكون `short_circuit_function_evaluation` مفعّلًا مع مزيج من مفاتيح Dictionary الموجودة وغير الموجودة. [#105461](https://github.com/ClickHouse/ClickHouse/pull/105461) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح اقتطاع القيم بصمت في أعمدة `Dynamic` عندما يعود قارئ النص `Quoted` (Values) إلى `String` للأنواع المستنتجة غير المكتملة مثل `Map(Array(Nothing), ...)`. سابقًا، كان مسار fallback يغلّف الحقل الخام بربط بسيط على شكل `'...'`، لذا كان وجود علامة اقتباس مفردة داخلية (وهي موجودة دائمًا في مثل هذه الحالات) يُنهي السلسلة المقتبسة مبكرًا، فتُفقد بقية القيمة. [#105463](https://github.com/ClickHouse/ClickHouse/pull/105463) ([Groene AI](https://github.com/groeneai)).
* إصلاح SIGSEGV عند قراءة subcolumns لـ `Dynamic` من جدول `Memory` مضغوط بعد `ALTER`. يُغلق [#104901](https://github.com/ClickHouse/ClickHouse/issues/104901). [#105464](https://github.com/ClickHouse/ClickHouse/pull/105464) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تجاهل `toFloat64`/`toUInt32`/`toString`/إلخ. على `Dynamic` للإعداد `cast_keep_nullable`. يُغلق [#104789](https://github.com/ClickHouse/ClickHouse/issues/104789). [#105467](https://github.com/ClickHouse/ClickHouse/pull/105467) ([Pavel Kruglov](https://github.com/Avogar)).
* تضمين `skip_first_lines` في مفتاح cache الخاص بالمخطط لتنسيقات `WithNames`. يُغلق [#104527](https://github.com/ClickHouse/ClickHouse/issues/104527). [#105469](https://github.com/ClickHouse/ClickHouse/pull/105469) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح segfault في server داخل `uniqStateOrNull` / `uniqStateOrDefault` / `uniqOrNullState` (وسلاسل combinator مشابهة فوق `uniq`) عند استخدامها مع `GROUP BY ... WITH ROLLUP` أو `WITH CUBE` أو `WITH TOTALS` ومع وسيطة `Nullable`. [#105470](https://github.com/ClickHouse/ClickHouse/pull/105470) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند الجمع بين `ORDER BY ... WITH FILL INTERPOLATE` و `LIMIT N BY` مع تفعيل analyzer. يُغلق [#103474](https://github.com/ClickHouse/ClickHouse/issues/103474). [#105481](https://github.com/ClickHouse/ClickHouse/pull/105481) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح `toStartOfMillisecond` و`toStartOfMicrosecond` اللتين كانتا تعيدان نتيجة منحرفة بنحو ثانية تقريبًا لقيم `DateTime64` السالبة (ما قبل الحقبة الزمنية)، وإصلاح مشكلة signed-integer-overflow التي يرصدها `UndefinedBehaviorSanitizer` في `toStartOfSecond` و`toStartOfMillisecond` و`toStartOfMicrosecond` لمدخلات `DateTime64` القريبة من `INT64_MIN`. [#105482](https://github.com/ClickHouse/ClickHouse/pull/105482) ([Groene AI](https://github.com/groeneai)).
* إضافة إعداد توافق جديد `analyzer_compatibility_prefer_alias_over_subcolumn` (معطّل افتراضيًا). عند تفعيله، يفضّل المحلّل الجديد تفسير بادئة الاسم المستعار على مطابقة العمود الفرعي في `Tuple` / الأعمدة المنقوطة للمعرّفات متعددة الأجزاء، مما يعيد سلوك المفسّر السابق. وهذا يتجنب أخطاء `AMBIGUOUS_IDENTIFIER` (وما يتصل بها) عندما يُجري استعلام عملية join مع جدول يطابق اسمه جدولًا داخليًا ضمن تعبير الجدول الشائع/استعلام فرعي يستخدم `SELECT *` فوق join، حيث كان يمكن بخلاف ذلك أن تؤدي الأعمدة المعاد تسميتها بواسطة النجمة (مثل `b.id`) إلى تسرّب معرّفات الجدول الداخلي إلى النطاق الخارجي. [#105491](https://github.com/ClickHouse/ClickHouse/pull/105491) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أصبح استعلام بحث المتجهات الذي يُنفَّذ باستخدام تحسين *index only* يعيد الآن القيمة الصحيحة للدالة `L2Distance()` إذا كانت ضمن قائمة `SELECT`. إذ كانت الدالة تعيد بشكل غير صحيح قيمة المسافة *L2-squared*. لاحظ أن استعلام بحث المتجهات كان يعيد النتائج بالترتيب الصحيح، وأن التطبيقات التي **تسترجع قيمة `L2Distance()` وتفسّرها صراحةً** هي فقط التي كانت سترى القيمة المربعة. [#105495](https://github.com/ClickHouse/ClickHouse/pull/105495) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إصلاح مشكلة نادرة في Kafka table engine الجديد، حيث كان يمكن التعامل مع الرسائل بشكل غير صحيح أثناء إعادة تعيين partition للموضوع، مما قد يؤدي إلى تخطي رسائل بعد التراجع عن الإزاحة. [#105500](https://github.com/ClickHouse/ClickHouse/pull/105500) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح استثناء (`Trying to execute PLACEHOLDER action` logical error) عند استخدام تعبير جدول شائع `MATERIALIZED` يكون جسمه استعلامًا فرعيًا مترابطًا كطرف أيمن لـ `IN`. ويُرفض هذا النوع من التعبيرات الآن في وقت التحليل، اتساقًا مع رفض النمط نفسه بالفعل عند الإشارة إلى تعبير الجدول الشائع مباشرةً في `FROM`. [#105518](https://github.com/ClickHouse/ClickHouse/pull/105518) ([Groene AI](https://github.com/groeneai)).
* إصلاح عدم تطبيق الضغط على stdout/stdin عند تحديد format صراحةً. يغلق [#104441](https://github.com/ClickHouse/ClickHouse/issues/104441). [#105528](https://github.com/ClickHouse/ClickHouse/pull/105528) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح SEGFAULT في إلغاء التسلسل لـ `singleValueOrNull` للنوع `JSON`. يغلق [#103630](https://github.com/ClickHouse/ClickHouse/issues/103630). [#105535](https://github.com/ClickHouse/ClickHouse/pull/105535) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح قيام `clickhouse-format --backslash` بإسقاط بيانات `INSERT` `VALUES` بصمت. يغلق [#103533](https://github.com/ClickHouse/ClickHouse/issues/103533). [#105536](https://github.com/ClickHouse/ClickHouse/pull/105536) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح عدم قيام `variant_throw_on_type_mismatch/dynamic_throw_on_type_mismatch=false` بالتقاط الاستثناءات أثناء تنفيذ الدالة. يغلق [#103484](https://github.com/ClickHouse/ClickHouse/issues/103484). [#105543](https://github.com/ClickHouse/ClickHouse/pull/105543) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تجاهل `input_format_try_infer_datetimes` أثناء الإدراج في البيانات المشتركة في `JSON`. يغلق [#103221](https://github.com/ClickHouse/ClickHouse/issues/103221). [#105544](https://github.com/ClickHouse/ClickHouse/pull/105544) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `histogram` الذي كان يُنتج نتائج غير صحيحة مع المدخلات الصغيرة غير المرتبة. يغلق [#103109](https://github.com/ClickHouse/ClickHouse/issues/103109). [#105548](https://github.com/ClickHouse/ClickHouse/pull/105548) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح التفاف `DateTime` عند القيم الخارجة عن النطاق في `JSONExtract` وعمليات إلغاء التسلسل النصية. يغلق [#103094](https://github.com/ClickHouse/ClickHouse/issues/103094). [#105551](https://github.com/ClickHouse/ClickHouse/pull/105551) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح استخدام جدول الإدراج في دوال الجداول عند تفعيل `optimize_trivial_insert_select`. يغلق [#103083](https://github.com/ClickHouse/ClickHouse/issues/103083). [#105555](https://github.com/ClickHouse/ClickHouse/pull/105555) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعبير `CASE` الذي كان يعيد الفرع `ELSE` بدلًا من `THEN` المطابق عندما كانت كلٌّ من قيمة التعبير وقيمة `WHEN` تساوي `NULL`. [#105556](https://github.com/ClickHouse/ClickHouse/pull/105556) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطل في `replxx` ناتج عن بلوغ حد `FD_SETSIZE` الخاص بـ `select` (وقد استُبدل الآن بـ `poll`). سابقًا، كان هذا قد يؤدي إلى تعطل الخادم عند تمكين SSH أو واجهة الويب الطرفية. [#105559](https://github.com/ClickHouse/ClickHouse/pull/105559) ([Azat Khuzhin](https://github.com/azat)).
* تحويل الأعمدة الفرعية إلى صورة مادية في `executePartitionByExpression` قبل تنفيذ التعبير. يغلق [#103057](https://github.com/ClickHouse/ClickHouse/issues/103057). [#105573](https://github.com/ClickHouse/ClickHouse/pull/105573) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الاستثناء `NOT_FOUND_COLUMN_IN_BLOCK` عندما يشير تعبير `TTL` إلى عمود فرعي. [#105578](https://github.com/ClickHouse/ClickHouse/pull/105578) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعطل في الخادم (SIGSEGV) يمكن لأي مستخدم لديه صلاحيات `CREATE TABLE` التسبب فيه عند إرسال `CREATE TABLE ... TO INNER UUID '...'` من دون clause ‏`ENGINE` عبر HTTP أو البروتوكول الأصلي. وكان الخطأ نفسه يؤدي أيضًا إلى تعطل client. يُبلغ parser الآن عن خطأ `BAD_ARGUMENTS` مناسب بدلًا من إلغاء مرجعية مؤشر null. [#105579](https://github.com/ClickHouse/ClickHouse/pull/105579) ([Groene AI](https://github.com/groeneai)).
* إصلاح الدالة النافذية `estimateCompressionRatio` التي كانت تفقد البيانات المتراكمة بين الصفوف. يغلق [#101738](https://github.com/ClickHouse/ClickHouse/issues/101738). [#105581](https://github.com/ClickHouse/ClickHouse/pull/105581) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعطل عند إدراج tuples بأحجام مختلفة في clause ‏VALUES نفسها داخل عمود `String`. يغلق [#101727](https://github.com/ClickHouse/ClickHouse/issues/101727). [#105582](https://github.com/ClickHouse/ClickHouse/pull/105582) ([Pavel Kruglov](https://github.com/Avogar)).
* أصبح استخراج قيمة partition في Hive يراعي الآن الإعداد `cast_string_to_date_time_mode` ويقبل طوابع زمنية بتنسيق ISO 8601 مع لواحق timezone (مثل `+0000` و`+00:00` و`Z`) في مفاتيح partition افتراضيًا. [#105584](https://github.com/ClickHouse/ClickHouse/pull/105584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `NOT_IMPLEMENTED` في `toString` من `DateTime` مع Timezone يحتوي على قيمة `NULL`. يغلق [#103712](https://github.com/ClickHouse/ClickHouse/issues/103712). [#105587](https://github.com/ClickHouse/ClickHouse/pull/105587) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح قراءة OOB في إلغاء التسلسل `Native` لعمود `Dynamic` المسطّح. [#105666](https://github.com/ClickHouse/ClickHouse/pull/105666) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الخطأ `LOGICAL_ERROR` ‏(`Unexpected return type from if`) الذي كان يظهر أثناء تخطيط الاستعلام لتعبيرات `if` التي يكون نوع نتيجتها `Variant`، ويكون فيها الفرع الثاني أو الثالث عبارة عن `if` ذي شرط ثابت على قيمة `UInt64` حرفية يمكن أن تلائم `Int64`. يغلق [#105649](https://github.com/ClickHouse/ClickHouse/issues/105649). [#105680](https://github.com/ClickHouse/ClickHouse/pull/105680) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج غير صحيحة عند قراءة جدول Iceberg مع `iceberg_use_version_hint = 1` بعد أن يقوم writer آخر (مثل الدالة الجدولية `icebergLocal`/`icebergS3`) من دون هذا الإعداد بتحديث الجدول. أصبح الآن `version-hint.text` يُزامَن بواسطة كل writer بمجرد وجود الملف، بحيث يرى القرّاء اللاحقون الذين يستخدمون هذا التلميح أحدث snapshot. [#105682](https://github.com/ClickHouse/ClickHouse/pull/105682) ([Groene AI](https://github.com/groeneai)).
* إصلاح نقص صامت في العدّ في استعلامات `SELECT` عندما يكون `use_query_condition_cache = 1` (الإعداد الافتراضي). كان استعلام بالنمط `PREWHERE pk_prefix = X WHERE non_pk IN (...)` على عمود يحتوي على bloom-filter skip index يفسد `QueryConditionCache` للمسند `pk_prefix = X`، بحيث إن استعلامًا لاحقًا وبسيطًا من نوع `SELECT count() ... WHERE pk_prefix = X` كان يعيد نتيجة غير صحيحة بعدد أقل من الواقع. تأثرت بذلك جميع إصدارات 26.x. [#104781](https://github.com/ClickHouse/ClickHouse/issues/104781). [#105686](https://github.com/ClickHouse/ClickHouse/pull/105686) ([Groene AI](https://github.com/groeneai)).
* إصلاح `singleValueOrNullMerge` الذي كان يعيد قيمة فعلية بدلًا من `NULL` عند دمج حالة كانت قد رصدت مسبقًا عدة قيم مميزة. [#105734](https://github.com/ClickHouse/ClickHouse/pull/105734) ([Minh Vu](https://github.com/fallintoplace)).
* إصلاح استعادة التعافي من الأخطاء في input format ‏`Template` بعد الصفوف غير الصالحة. [#105735](https://github.com/ClickHouse/ClickHouse/pull/105735) ([Yue Ni](https://github.com/niyue)).
* إصلاح تعطل في الدالة الجدولية `mongodb`، وتخزين MongoDB، وdictionary source الخاصة بـ MongoDB عندما يكون اسم collection فارغًا أو يحتوي على بايتات NUL. [#105776](https://github.com/ClickHouse/ClickHouse/pull/105776) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تنظيف snapshot في `Keeper` بعد فشل عمليات writes، بحيث تُنظَّف snapshots الجزئية بأمان ويمكن إعادة محاولة writes الفاشلة من دون تقديم `latest_snapshot_meta`. [#105779](https://github.com/ClickHouse/ClickHouse/pull/105779) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح رفض `ALTER TABLE ... CLEAR COLUMN` لأعمدة `columns_to_sum` الصريحة في `SummingMergeTree` و`CoalescingMergeTree`. [#105785](https://github.com/ClickHouse/ClickHouse/pull/105785) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح assertion في `DatabaseCatalog::tryGetDatabase` (وما ينتج عنه من الخطأ `UNKNOWN_DATABASE` في إصدارات release) عند إنشاء parameterized view يكون اسم database فيها مُمرَّرًا عبر query parameter، على سبيل المثال `CREATE VIEW {db:Identifier}.v AS SELECT {p:UInt64}`. تُستبدل الآن Parameters في أجزاء DDL من عبارة `CREATE` وقت الإنشاء، بينما تبقى Parameters في متن `SELECT` متاحة للاستبدال وقت استدعاء العرض. [#105799](https://github.com/ClickHouse/ClickHouse/pull/105799) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `Bad get: has Decimal32, requested Decimal128` في `sumMap` و`sumMapWithOverflow` على عمود `Nested(... Nullable(Decimal(P, S)))` عندما تكون aggregate state مُسلسلة (مثل parallel replicas، أو `sumMapState` عبر formatter للحالة الثنائية، أو external aggregation). [#105816](https://github.com/ClickHouse/ClickHouse/pull/105816) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأين `Expected ColumnLowCardinality, got String` / `Bad cast from type DB::ColumnString to DB::ColumnLowCardinality` عند استخدام `apply_mutations_on_fly = 1` على جدول يحتوي على عمليات mutation معلّقة أثناء التنفيذ من نوع `UPDATE`/`DELETE` كانت قد أُدرجت في الطابور قبل عملية mutation من نوع `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#105847](https://github.com/ClickHouse/ClickHouse/pull/105847) ([Raúl Marín](https://github.com/Algunenano)).
* أصبحت عمليات الكتابة في Iceberg تحافظ على قيم NULL في أعمدة partition من النوع `Nullable(T)`. سابقًا، كانت قيمة NULL التي يكتبها ClickHouse تظهر كأنها القيمة الافتراضية للنوع الداخلي (`0` في حالة `int`) عند قراءتها مرة أخرى بواسطة Spark أو قارئات Iceberg الأخرى. يُغلق [#105852](https://github.com/ClickHouse/ClickHouse/issues/105852). [#105862](https://github.com/ClickHouse/ClickHouse/pull/105862) ([Groene AI](https://github.com/groeneai)).
* إصلاح pushdown للمرشحات في `Parquet` و`ORC` لمرشحات `IN (subquery)`، مما يتيح لعملية pruning على مستوى row-group/page/bloom-filter أن تعمل مع قراءات `file` و`url` و`s3` وobject storage. [#105863](https://github.com/ClickHouse/ClickHouse/pull/105863) ([Arsen Muk](https://github.com/arsenmuk)).
* إصلاح القراءة بالترتيب لجداول `Merge` (باستخدام المحلّل الجديد). [#105867](https://github.com/ClickHouse/ClickHouse/pull/105867) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح مشكلة إرجاع صفوف غير صحيحة في عمليات حذف المواضع merge-on-read في Iceberg v2 عندما يشير ملف حذف واحد إلى عدة data files وتُطبَّق عدة ملفات حذف من هذا النوع على ملف البيانات نفسه. أصبح القارئ المتدفق (`use_roaring_bitmap_iceberg_positional_deletes = 0`) الآن يرشّح صفوف ملفات الحذف بحسب `file_path` في C++ بدلًا من الاعتماد على pruning لمجموعات صفوف Parquet، مما يعيد الحفاظ على invariant الخاص بترتيب المواضع التصاعدي. [#105888](https://github.com/ClickHouse/ClickHouse/pull/105888) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `Cannot find column` في distributed queries التي تستخدم مرشح `IN Array(...)` مع المحلّل الجديد. [#105894](https://github.com/ClickHouse/ClickHouse/pull/105894) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح SIGSEGV في `ALTER TABLE ... MODIFY COLUMN ... Nullable(...)` على جداول `MergeTree` عندما يُحذف، بالتزامن، عمود يحتوي على `STATISTICS` بواسطة أمر `ALTER` آخر. يُغلق [#105912](https://github.com/ClickHouse/ClickHouse/issues/105912). [#105917](https://github.com/ClickHouse/ClickHouse/pull/105917) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل في الخادم كان قد يحدث عند إلغاء استعلام يقرأ من PostgreSQL — عبر postgresql table function، أو PostgreSQL table engine، أو dictionary بمصدر PostgreSQL — (على سبيل المثال باستخدام KILL QUERY)، إذا فشل إلغاء استعلام PostgreSQL البعيد. [#105949](https://github.com/ClickHouse/ClickHouse/pull/105949) ([Rory Shanks](https://github.com/rorylshanks)).
* إصلاح تنسيق `SYSTEM INSTRUMENT ADD` بحيث تُفصل arguments الخاصة بالمعالج بمسافة واحدة، ورفض قوائم arguments غير الصالحة لـ `SLEEP` instrumentation التي تحتوي على أكثر من قيمتين أو على نطاق يكون فيه الحد الأدنى أكبر من الحد الأقصى. [#105984](https://github.com/ClickHouse/ClickHouse/pull/105984) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح نتائج قد تكون غير صحيحة للاستعلامات التي تجمع بين outer join وinner join لاحق يشير إلى الجانب المزوِّد بقيم NULL في outer join. كان من الممكن أن تؤدي إعادة ترتيب join إلى اختيار خطة تسحب شروط inner join إلى عبارة ON الخاصة بـ outer join. [#105992](https://github.com/ClickHouse/ClickHouse/pull/105992) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح تعطل محتمل بسبب إرسال literal نصي كبير جدًا داخل الاستعلام. [#105996](https://github.com/ClickHouse/ClickHouse/pull/105996) ([Nikita Taranov](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)).
* إصلاح فشل عمليات partition في `ALTER TABLE` بصمت عند استخدام مفاتيح partition من النوع `Bool`. يغلق [#101722](https://github.com/ClickHouse/ClickHouse/issues/101722). [#106004](https://github.com/ClickHouse/ClickHouse/pull/106004) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `JSONExtractRaw` و`JSONHas` لمسارات `JSON` المعرّفة بأنواع والتي تتضمن قيمًا افتراضية. يغلق [#101721](https://github.com/ClickHouse/ClickHouse/issues/101721). [#106005](https://github.com/ClickHouse/ClickHouse/pull/106005) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح إضافة البادئة '/' بشكل غير صحيح إلى basepaths الفارغة في إعدادات بحيرة البيانات. يغلق [#105989](https://github.com/ClickHouse/ClickHouse/issues/105989). [#106013](https://github.com/ClickHouse/ClickHouse/pull/106013) ([thewisenerd](https://github.com/thewisenerd)).
* إصلاح تحوّل محرك الجدول `IcebergLocal` إلى وضع القراءة فقط بعد دورة `DETACH` + `ATTACH` أو إعادة تشغيل الخادم، مما كان يؤدي إلى فشل كل عملية `INSERT` لاحقة مع `Local object storage Local is readonly. (READONLY)`. [#106016](https://github.com/ClickHouse/ClickHouse/pull/106016) ([Groene AI](https://github.com/groeneai)).
* إصلاح أعطال `Keeper` أثناء catch-up على العقدة follower عندما كان من الممكن أن يمتلئ طابور استجابات request dispatcher الجديد قبل بدء خيط الاستجابة. [#106049](https://github.com/ClickHouse/ClickHouse/pull/106049) ([Antonio Andelic](https://github.com/antonio2368)).
* تحسين التوافق مع المحلل القديم. إذا كان الجدول يحتوي على أعمدة مثل `x.a Array, x.b Array, x String`، فستُفضَّل المصفوفات عند `ARRAY JOIN x`. [#106069](https://github.com/ClickHouse/ClickHouse/pull/106069) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح تعطيل ذاكرة التخزين المؤقت لنظام الملفات بصمت مع Azure Blob Storage (مثل جداول Delta Lake على Azure)، لأن البيانات الوصفية للكائن لم تكن تتضمن blob ETag. [#106091](https://github.com/ClickHouse/ClickHouse/pull/106091) ([thewisenerd](https://github.com/thewisenerd)).
* إصلاح قيام `system.dictionaries` بإرجاع 0 صفوف عند وجود سحب جزئي لصلاحية `SHOW DICTIONARIES`. [#106105](https://github.com/ClickHouse/ClickHouse/pull/106105) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعطل الخادم عند الاستعلام عن جداول DeltaLake مع تفعيل `allow_experimental_delta_kernel_rs` ووجود بيانات اعتماد أو خيار يحتوي على بايتات غير صالحة (حدث panic في Rust FFI عبر الحد `extern "C"`). [#106109](https://github.com/ClickHouse/ClickHouse/pull/106109) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح النتائج غير الصحيحة للاستعلامات على الجداول التي يحتوي `ORDER BY` فيها على دالة متناقصة رتيبًا مثل `(c0 / -42)` أو `intDiv(c0, -42)`. كان من الممكن أن تؤدي predicates على العمود الأساسي (مثل `c0 < 0`) إلى استبعاد granules تحتوي على صفوف مطابقة بشكل خاطئ، مما ينتج عنه نتائج ناقصة. يغلق [#106084](https://github.com/ClickHouse/ClickHouse/issues/106084). يغلق [#106124](https://github.com/ClickHouse/ClickHouse/issues/106124). يغلق [#106080](https://github.com/ClickHouse/ClickHouse/issues/106080). [#106136](https://github.com/ClickHouse/ClickHouse/pull/106136) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح دعم استخدام `WASM` SQL UDFs في تعريفات `MATERIALIZED VIEW`. [#106161](https://github.com/ClickHouse/ClickHouse/pull/106161) ([Yue Ni](https://github.com/niyue)).
* أصبح Iceberg partition pruning يتعامل الآن بصورة صحيحة مع عوامل التصفية `WHERE partition_col = (SELECT ... FROM ...)` عندما يغلّف analyzer نتيجة الاستعلام الفرعي القيَمي داخليًا في `_CAST(Const, 'TargetType')` مع تطابق نوعَي المصدر والهدف. سابقًا، كانت مثل هذه العوامل تعطّل Iceberg partition pruning وتؤدي إلى full table scan. [#106204](https://github.com/ClickHouse/ClickHouse/pull/106204) ([Groene AI](https://github.com/groeneai)).
* إصلاح المعامل `--query_id` في clickhouse local للسماح بتحديد معرّف استعلام مخصص. [#106205](https://github.com/ClickHouse/ClickHouse/pull/106205) ([Yue Ni](https://github.com/niyue)).
* تم إصلاح تجاهل فئة تخزين S3 (`s3_storage_class` / `s3_storage_class_name`) للكائنات المكتوبة عبر multipart upload على أقراص `S3` وobject storage، مما كان يؤدي إلى إنشاء الكائنات الكبيرة بالفئة الافتراضية `STANDARD`. وأصبح اسم الخيار الآن مقبولًا بصيغتَي `s3_storage_class` و`s3_storage_class_name` للأقراص وobject storage والنسخ الاحتياطية. [#106214](https://github.com/ClickHouse/ClickHouse/pull/106214) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح مشكلة تعلّق Keeper أحيانًا عند بدء التشغيل عندما يكون الإعداد `nuraft_max_log_gap_in_stream` مضبوطًا على قيمة غير افتراضية (القيمة الافتراضية هي 0، أي تعطيل pipelining لطلبات `append_entries`). [#106220](https://github.com/ClickHouse/ClickHouse/pull/106220) ([Michael Kolupaev](https://github.com/al13n321)).
* التحقق من سلامة حالة دالة التجميع `DDSketch` التالفة (مفاتيح bin) عند الإدراج بدلًا من قبول البيانات غير الصالحة. [#106236](https://github.com/ClickHouse/ClickHouse/pull/106236) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح عدم تطابق وضع coordinator عندما تتجاوز الاستعلامات الفرعية إعدادات التنفيذ بالترتيب. [#106243](https://github.com/ClickHouse/ClickHouse/pull/106243) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح مشكلة عدم تطبيق `optimize_skip_unused_shards` (وفشل `force_optimize_skip_unused_shards` بشكل خاطئ) عند الاستعلام عن جدول `Distributed` عبر جدول `Merge` أو table function ‏`merge`، مع تطبيق predicate فوقه. [#106250](https://github.com/ClickHouse/ClickHouse/pull/106250) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح قيام `INTERPOLATE ()` بطرح الخطأ `INVALID_WITH_FILL_EXPRESSION` عندما تكون أعمدة `ORDER BY` مستخدمة بأسماء مستعارة في قائمة `SELECT` مع analyzer القديم. يغلق [#106248](https://github.com/ClickHouse/ClickHouse/issues/106248). [#106252](https://github.com/ClickHouse/ClickHouse/pull/106252) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تم إصلاح حالة abort عند إلغاء تسلسل حالة `AggregateFunction(uniqTheta, ...)` غير صالحة من إدخال `RowBinary` أو من query parameter. وأصبح الإدخال غير الصحيح يُرفض الآن بخطأ `CORRUPTED_DATA` بدلًا من أن يتسرّب على هيئة `std::exception` ويتسبب في إجهاض العملية عبر `abortOnFailedAssertion`. [#106260](https://github.com/ClickHouse/ClickHouse/pull/106260) ([Groene AI](https://github.com/groeneai)).
* رفض بايتات `IntervalKind` الخارجة عن النطاق أثناء فك ترميز النوع في `RowBinaryWithNamesAndTypes` (`input_format_binary_decode_types_in_binary_format = 1`) مع إظهار خطأ `INCORRECT_DATA` واضح، بدلًا من إنشاء `DataTypeInterval` بنوع غير صالح قد يؤدي لاحقًا إلى سلوك غير معرّف في مسارات hash. [#106261](https://github.com/ClickHouse/ClickHouse/pull/106261) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة التراجع عند فشل downgrade لـ `SLRU` في `26.1+`. وإصلاح priority لتقسيم cache بين `System`/`Data` مع ميزة `keep_free_space_ratio`. [#106286](https://github.com/ClickHouse/ClickHouse/pull/106286) ([Kseniia Sumarokova](https://github.com/kssenii)).
* قراءة العمود الفرعي `null` كمسار `JSON` في `Nullable(JSON)` بدلًا من خريطة القيم null. يُغلق [#106085](https://github.com/ClickHouse/ClickHouse/issues/106085). [#106295](https://github.com/ClickHouse/ClickHouse/pull/106295) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح إرجاع `RestCatalog::empty` نتيجة غير صحيحة عندما يحتوي REST Catalog لـ Iceberg على جداول. [#106301](https://github.com/ClickHouse/ClickHouse/pull/106301) ([Lefteris](https://github.com/LefterisXefteris)).
* تم إصلاح استثناء في استعلامات `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) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تم إصلاح تحويل غير صحيح لقيم `Float16` دون العادية إلى `Float32` (مثلًا عند قراءتها من ملفات Numpy `.npy`) بسبب إزاحة زائدة بمقدار واحد في المانتيسا. [#106343](https://github.com/ClickHouse/ClickHouse/pull/106343) ([Joanna Hulboj](https://github.com/jh0x)).
* إصلاح تعطل وخطأ محتمل `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام التحسين المعتمد على القيود (`optimize_using_constraints`) مع الاستعلامات الفرعية المترابطة. [#106349](https://github.com/ClickHouse/ClickHouse/pull/106349) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح قراءة خارج الحدود في `sipHash64Keyed` و`sipHash128Keyed` و`sipHash128ReferenceKeyed` عند إجراء hash لعمود تكون جميع مصفوفاته فارغة ولا يكون المفتاح ثابتًا. [#106355](https://github.com/ClickHouse/ClickHouse/pull/106355) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح قيام `SYSTEM RELOAD CONFIG` بإسقاط إعدادات Azure Blob Storage الخاصة بكل نقطة نهاية (مثل `use_native_copy`)، ما كان يؤدي إلى تجاهل الإعدادات المهيأة للقرص في `BACKUP`/`RESTORE` إلى أن يُعاد تشغيل الخادم. [#106357](https://github.com/ClickHouse/ClickHouse/pull/106357) ([Julia Kartseva](https://github.com/jkartseva)).
* إصلاح `regexpExtract(haystack, pattern)` بحيث تُرجع الأنماط التي لا تحتوي على مجموعة التقاط المطابقة كاملةً بدلًا من إطلاق `INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE`. [#106374](https://github.com/ClickHouse/ClickHouse/pull/106374) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء `LOGICAL_ERROR` أثناء التنزيل المسبق لذاكرة التخزين المؤقت عندما يُستبدل كائن S3 بعيد بمحتوى أقصر بين الإدراج والقراءة. [#106375](https://github.com/ClickHouse/ClickHouse/pull/106375) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح ازدياد استخدام الذاكرة في ذاكرة التخزين المؤقت لنظام الملفات. [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح عدة حالات قراءة خارج حدود الكومة في قارئ تنسيق Arrow IPC (`ArrowColumnToCHColumn`). كان يمكن لملف Arrow غير صالح أن يعلن عن عدد صفوف أكبر مما تحتويه مخازنه المؤقتة، أو يعلن عن أطوال child في list/struct/map غير متسقة مع الأصل، أو يوفّر offsets غير رتيبة للقوائم، أو يقتطع bitmap صلاحية child، مما يؤدي إلى قراءات تتجاوز نهاية تخصيصات الكومة. يمكن الوصول إلى هذا من أي مستخدم لديه صلاحية `SELECT` عبر `file()` أو `format()` أو table functions أو مدخلات ArrowFlight. ويجري الآن التحقق من جميع مخازن البيانات وoffsets وview-struct وvalidity-bitmap قبل أي وصول إلى مؤشرات خام، كما يجري التحقق من اتساق أشكال وoffsets الخاصة بـ list/struct/map. [#106395](https://github.com/ClickHouse/ClickHouse/pull/106395) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح فشل النسخ الاحتياطية مع `FILE_DOESNT_EXIST` عندما يُجمَع هدف REPLACE الخاص بـ refreshable materialized view على قاعدة بيانات Replicated أو Shared، بينما لم تكن الـ materialized view قد أُنشئت بعد على الـ replica التي بدأت النسخ الاحتياطي. [#106411](https://github.com/ClickHouse/ClickHouse/pull/106411) ([Julia Kartseva](https://github.com/jkartseva)).
* إصلاح خطأ منطقي `Column identifier ... is already registered` عندما يحتوي الشرط في `mutation` (`DELETE`/`UPDATE`) على استعلام فرعي `IN`/`EXISTS` يقرأ من تعبير جدول افتراضي متداخل داخل استعلام فرعي آخر. [#106414](https://github.com/ClickHouse/ClickHouse/pull/106414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي (`Left and right columns have same names`) في مُحسِّن ترتيب `join` كان قد يحدث في عمليات `join` المنفَّذة باستخدام النسخ المتماثلة المتوازية عندما تشترك علاقتان في مخطط الربط في أسماء الأعمدة نفسها. [#106418](https://github.com/ClickHouse/ClickHouse/pull/106418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي عند إنشاء قاموس مضلعات من بيانات مصدر تحتوي على إحداثيات نقاط `NaN` أو لا نهائية. تُرفَض هذه الإحداثيات الآن برسالة خطأ واضحة. [#106423](https://github.com/ClickHouse/ClickHouse/pull/106423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح خلل كان يؤدي إلى احتواء العمودين `used_privileges` و`missing_privileges` في `system.query_log` على سلاسل امتيازات متسرّبة من استعلامات سابقة غير مرتبطة تعود إلى مستخدم أو قاعدة بيانات أو جلسة مختلفة. [#106425](https://github.com/ClickHouse/ClickHouse/pull/106425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت الدوال `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)).
* إصلاح نتائج غير صحيحة متقطعة لاستعلامات `ORDER BY ... DESC` عند قراءة الأجزاء العريضة بترتيب عكسي مع `read_in_order_use_virtual_row_per_block = 1` وقيمة صغيرة لـ `max_block_size`. [#106429](https://github.com/ClickHouse/ClickHouse/pull/106429) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أُصلِح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند الاستعلام عن جدول Iceberg أو S3 باستخدام `WHERE` مركّبة تحتوي على `IS NOT NULL` لعمود غير موجود في قائمة `SELECT`، وذلك عند استخدام القارئ الأصلي لـ Parquet V3. [#106443](https://github.com/ClickHouse/ClickHouse/pull/106443) ([Shaohua Wang](https://github.com/tiandiwonder)).
* يتيح للمستخدم تحديد ترويسات لـ `HTTPDictionary` باستخدام المجموعات المسماة. [#106459](https://github.com/ClickHouse/ClickHouse/pull/106459) ([Jan Rada](https://github.com/ZelvaMan)).
* إصلاح حالة كان يمكن أن يبقى فيها خيط عامل مرتبطًا بمجموعة خيوط قديمة بعد فشل `CurrentThread::attachToGroup` في منتصف العملية، مما يؤدي إلى فشل المهام اللاحقة على الخيط نفسه برسالة `Thread is already attached to a group`. [#106462](https://github.com/ClickHouse/ClickHouse/pull/106462) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* أُصلِح استثناء كان يحدث عندما يستخدم استعلام بحث متجهي فهرسًا متجهيًا، ويستخدم أيضًا فهرس تخطٍّ آخر مثل `minmax` مع `use_skip_indexes_on_data_read = 1`. [#106473](https://github.com/ClickHouse/ClickHouse/pull/106473) ([Shankar Iyer](https://github.com/shankar-iyer)).
* أصبحت قيم enum غير الصالحة في `Avro` تُتحقَّق الآن وتُرفَض بخطأ بدلًا من التسبب في قراءة خارج الحدود وإنهاء التنفيذ عند إلغاء تسلسل بيانات `Avro` التالفة. [#106476](https://github.com/ClickHouse/ClickHouse/pull/106476) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح تضخُّم تقارير التقدّم عند القراءة من جداول Iceberg باستخدام عوامل التصفية `_file` أو `_path`. سابقًا، كان تقدّم `total_bytes_to_read` يتضمن جميع الملفات من الـ manifest بغضّ النظر عن التصفية. [#106491](https://github.com/ClickHouse/ClickHouse/pull/106491) ([Pedro Ferreira](https://github.com/PedroTadim)).
* تم إصلاح الاستثناء `Bad cast exception` في قواميس Redis التي تستخدم `STORAGE_TYPE 'simple'` مع تخطيط `cache`/`direct` ومفتاح سلسلة نصية واحد (معقّد)؛ وتعمل هذه القواميس الآن كما ينبغي، كما تُظهر المفاتيح المركبة فوق تخزين `simple` رسالة خطأ واضحة. [#106501](https://github.com/ClickHouse/ClickHouse/pull/106501) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح خلل كان يؤدي إلى نتائج خاطئة، إذ كان `WHERE c0 = const` لا يعيد أي صفوف للجداول التي تحتوي على `ORDER BY f(c0)` عندما يُقيَّم `f(const)` إلى NaN، مثل `ORDER BY sqrt(c0)` مع ثابت سالب. وكان تحليل المفتاح الأساسي يستبعد كل granule بشكل غير صحيح ويفسد query condition cache للاستعلامات اللاحقة. [#106507](https://github.com/ClickHouse/ClickHouse/pull/106507) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عدم التزام `LIMIT WITH TIES` و`LIMIT WITH TIES` الكسري بـ Collation من `ORDER BY ... COLLATE` عند تحديد الصفوف المتعادلة. كانت الصفوف المتساوية وفقًا لـ Collation (على سبيل المثال `'1'` و`'01'` ضمن Collation رقمي) تُقارَن على مستوى البايتات، لذلك كان يجري إسقاط بعض الصفوف المتعادلة من النتيجة بشكل خاطئ. [#106539](https://github.com/ClickHouse/ClickHouse/pull/106539) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح تحسينات `DISTINCT` in order و`LIMIT BY` in order (بما في ذلك `LIMIT BY` السالب) التي كانت تُرجع نتائج خاطئة عندما يكون الإدخال مرتبًا باستخدام Collation (`ORDER BY ... COLLATE`). فالصفوف المتساوية وفقًا لـ Collation (على سبيل المثال `'a'` و`'A'` ضمن Collation غير حساس لحالة الأحرف) تُرتَّب بحسب مفتاح Collation ولا تكون متجاورة من حيث القيمة، لذلك يُتخطّى الآن تحسين in order عند استخدام collator. [#106564](https://github.com/ClickHouse/ClickHouse/pull/106564) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح النتائج الخاطئة للاستعلام `SELECT c, count() FROM t WHERE c GROUP BY c` على الجداول التي تحتوي على `_minmax_count_projection` ضمني، أو projection تجميعي صريح، أو projection عادي: إذ كانت كل مجموعة تنهار سابقًا إلى صف واحد بمفتاح ثابت وإجمالي عدد الصفوف. [#106590](https://github.com/ClickHouse/ClickHouse/pull/106590) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خلل كان يمنع المستخدمين من استخدام استعلامات فرعية ذات قيمة مفردة في الوسيطة الأولى لـ `IN` عندما تكون الوسيطة الثانية tuple غير ثابتة. [#106610](https://github.com/ClickHouse/ClickHouse/pull/106610) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح الاستثناء `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) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاهل `session_timezone` عند تسلسل أعمدة `LowCardinality(DateTime)` إلى text formats ‏(CSV وTSV وJSONEachRow وغيرها). سابقًا، بعد أول عملية كتابة لعمود `LowCardinality(DateTime)` على server، كان كل query لاحق يكتب هذا النوع من الأعمدة يعرض سلسلة الوقت المحلي وفق أي timezone صودفت أولًا، بغض النظر عن `session_timezone`. [#106634](https://github.com/ClickHouse/ClickHouse/pull/106634) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` "Trying to get name of not a column: `ExpressionList`" الذي كانت تثيره queries تمرّر علامة النجمة داخل `multiIf` إلى وسيطة table function، مثل `numbers(multiIf(*, ...), 2)`. ويرفض query الآن هذا المطابق غير القابل للحل باستخدام `UNSUPPORTED_METHOD`. [#106647](https://github.com/ClickHouse/ClickHouse/pull/106647) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل الخادم في بدء التشغيل مع الخطأ `Too many marks in file ...skp_idx_idx.cmrk4, marks expected 0 (bytes size 0)` عندما يحتوي جدول `MergeTree` على جزء skip-index بعدد صفري من granules وملف marks غير فارغ على القرص. [#106675](https://github.com/ClickHouse/ClickHouse/pull/106675) ([Groene AI](https://github.com/groeneai)).
* رفض أنماط glob الخاصة بـ`file` الشاذة التي قد تتسبب في تكرار غير محدود عند سرد محتويات الدليل. يُفرَض الآن حد أقصى لعمق التكرار يبلغ 1000؛ وأي query يتجاوزه سيؤدي إلى الخطأ `TOO_DEEP_RECURSION` بدلًا من تعطل الخادم بسبب stack overflow. [#106676](https://github.com/ClickHouse/ClickHouse/pull/106676) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقف الخادم بسبب الخطأ `Bad cast from type DB::ColumnNothing to DB::ColumnVector<char8_t>` في `FunctionIf::executeForConstAndNullableCondition` عندما يُطوى شرط `if`/`multiIf` كثابت إلى `Const(Nullable(Nothing))` (على سبيل المثال، استخدام فهرس خارج النطاق على مصفوفة فارغة مثل `arraySort(x -> x, [])[toNullable(1)]`). [#106678](https://github.com/ClickHouse/ClickHouse/pull/106678) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناء `'Trying to read from input() twice.'` الذي كان يظهر عند تغليف table function `input` داخل تعبير جدول شائع غير MATERIALIZED ثم الإشارة إليه من أكثر من موضع في query. أصبح query يُرفَض الآن بخطأ واضح `INVALID_USAGE_OF_INPUT` في مرحلة التخطيط. فـ`input` عبارة عن تدفق client أحادي الاستخدام، ولا يمكن استهلاكه إلا من source واحد في query plan. [#106682](https://github.com/ClickHouse/ClickHouse/pull/106682) ([Groene AI](https://github.com/groeneai)).
* جعل `FORMAT` يُطبَّق أيضًا على مخرجات `EXPLAIN` في `EXPLAIN ... INSERT ... SELECT ... FORMAT ...` حتى عندما تسبق `SETTINGS` قيمة `FORMAT` أو عندما يكون output format هو `Values`. متابعة لـ [#101772](https://github.com/ClickHouse/ClickHouse/issues/101772). [#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") لاستعلام كان قد مُنح بالفعل حق الوصول إلى مورد workload، وكان السبب إعادة استخدام كائن طلب محلي للخيط احتفظ بحالة فشل من طلب سابق. [#106690](https://github.com/ClickHouse/ClickHouse/pull/106690) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة تسابق بين تدمير كائنات `INATSConsumer` واستدعاء `INATSConsumer::onMsg` عليها عبر callbacks في مكتبة NATS. [#106692](https://github.com/ClickHouse/ClickHouse/pull/106692) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح `match` و`extract` و`extractAll` و`countMatches` التي كانت تُرجع نتائج غير صحيحة للتعبيرات النمطية التي تتضمن محارف هروب ست عشرية أو ثمانية. [#106709](https://github.com/ClickHouse/ClickHouse/pull/106709) ([ofeliacode](https://github.com/ofeliacode)).
* أصبحت طبقة TLS الداخلية لـ Raft في Keeper تحترم الآن الإعداد `openSSL.client.verificationMode`. في السابق، كان التحقق من certificate الخاصة بالنظير مفعّلًا دائمًا لاتصالات Raft بين عقد Keeper بغض النظر عن هذا الإعداد، لذا كانت القيمة `none` تُتجاهل بصمت. الآن، تؤدي `none` صراحةً إلى تعطيل certificate verification الخاصة بنظير Raft، بينما يؤدي غياب الإعداد إلى الإبقاء على السلوك السابق الآمن افتراضيًا. أما configuration التي تضبط `none` صراحةً فستتوقف بعد upgrade عن التحقق من certificates الخاصة بنظراء Raft، بما يتوافق مع السلوك المقصود من الإعداد. [#106726](https://github.com/ClickHouse/ClickHouse/pull/106726) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح خطأ منطقي في نصوص البدء البرمجية في `SYSTEM RELOAD CONFIG`. بالإضافة إلى ذلك، أصبح يتم تحميل نصوص البدء البرمجية عند `SYSTEM RELOAD CONFIG` أيضًا (وظيفة متاحة حاليًا بشكل خاص فقط). [#106727](https://github.com/ClickHouse/ClickHouse/pull/106727) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* التراجع عن تغيير كان يجعل `sumMap` / المُركِّب `-Map` يرفضان أنواع القيم الرقمية ذات الأسماء المخصّصة (مثل `SimpleAggregateFunction(sum, T)` و`Bool`) مع ظهور الخطأ `ILLEGAL_TYPE_OF_ARGUMENT: Values for -Map cannot be summed`، مما أدى إلى تعطيل عمليات التجميع التي كانت تعمل سابقًا. [#106729](https://github.com/ClickHouse/ClickHouse/pull/106729) ([Nikita Fomichev](https://github.com/fm4v)).
* أُصلحت عدة مشكلات تتعلق بسلامة الذاكرة واستنزاف الموارد في قارئات التنسيقات التي يمكن الوصول إليها عبر مدخلات غير موثوقة: قراءة خارج حدود الكومة في معالجة أطوال مستويات التعريف/التكرار ضمن `DataPageV2` في قارئ Parquet الأصلي، وفيض في المكدس في ملفات Parquet ذات البُنى شديدة التداخل، وعمليات تخصيص تجاهلت `max_memory_usage` عند تحليل هندسة GeoParquet بصيغ WKB/WKT وسلاسل/بايتات Avro. [#106739](https://github.com/ClickHouse/ClickHouse/pull/106739) ([Raúl Marín](https://github.com/Algunenano)).
* أُصلح فيض المخزن المؤقت في الكومة (تعطل server) في `decodeHTMLComponent` عند فك ترميز السلاسل التي تحتوي على كيانات HTML الموسَّعة `&nGt;` أو `&nLt;`، ويمكن لأي مستخدم الوصول إليه عبر تنفيذ `SELECT` واحد. [#106741](https://github.com/ClickHouse/ClickHouse/pull/106741) ([Raúl Marín](https://github.com/Algunenano)).
* أصبحت أوامر `CREATE TABLE` و`ALTER TABLE ADD INDEX` و`CREATE INDEX` التي تستخدم `GRANULARITY 0` مع skipping indexes تُرفض برسالة `BAD_ARGUMENTS` واضحة. سابقًا، كان هذا يؤدي إلى استثناء `Inconsistent AST formatting` في إصدارات التصحيح. [#106783](https://github.com/ClickHouse/ClickHouse/pull/106783) ([Groene AI](https://github.com/groeneai)).
* أُصلح تجاهل Azure BACKUP/RESTORE لإعدادات endpoint في أقراص `azure_blob_storage` ذات الصيغة القديمة. [#106784](https://github.com/ClickHouse/ClickHouse/pull/106784) ([Julia Kartseva](https://github.com/jkartseva)).
* أُصلح استثناء `Bad cast` أثناء تقليم الأجزاء استنادًا إلى إحصاءات `MinMax` عندما يكون Key column من النوع `LowCardinality` ويكون ثابت predicate من النوع `LowCardinality(Nullable(...))`. [#106793](https://github.com/ClickHouse/ClickHouse/pull/106793) ([Groene AI](https://github.com/groeneai)).
* إصلاح الأعمدة غير المتسقة (التي تؤدي لاحقًا إلى `LOGICAL_ERROR`) عند حدوث استثناء (مثل `MEMORY_LIMIT_EXCEEDED`) أثناء parsing. [#106802](https://github.com/ClickHouse/ClickHouse/pull/106802) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح المشكلة التي كانت تتسبب في أن يعيد server استجابة HTTP عند إرسال طلبات من عملاء HTTPS بعد ضبط `keeper_server.http_control.secure_port`. [#106822](https://github.com/ClickHouse/ClickHouse/pull/106822) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* إصلاح logical error في `parseDateTime` عند وجود بايتات إدخال غير ASCII. [#106856](https://github.com/ClickHouse/ClickHouse/pull/106856) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `SHOW CREATE ROW POLICY` بحيث لم يعد يُخرج `restrictive`/`permissive` بأحرف صغيرة بدلًا من الأحرف الكبيرة، خلافًا لما هو متبع مع الكلمات المفتاحية الأخرى. [#106865](https://github.com/ClickHouse/ClickHouse/pull/106865) ([Valery Petrov](https://github.com/valerypetrov)).
* إصلاح الحالة التي لم يكن فيها وضع parallel replicas يُطبَّق على view يحتوي على `UNION` بسبب وجود table فارغ داخل `UNION`. [#106900](https://github.com/ClickHouse/ClickHouse/pull/106900) ([Igor Nikonov](https://github.com/devcrafter)).
* إصلاح تعطل server ‏(SIGSEGV) عند قراءة بيانات `Protobuf` مقتطعة مع `input_format_allow_errors_num > 0`. [#106905](https://github.com/ClickHouse/ClickHouse/pull/106905) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* إصلاح استثناء `THERE_IS_NO_COLUMN` في distributed queries التي تتضمن optimization ‏`optimize_rewrite_aggregate_function_with_if` عندما تتطلب وسيطة الدالة التجميعية تحويلاً إلى النوع `Nullable`. [#106908](https://github.com/ClickHouse/ClickHouse/pull/106908) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح استثناء (`LOGICAL_ERROR`) في عامل تصفية وقت التشغيل لـ JOIN عندما يحتوي مفتاح JOIN على نوع `Variant` أو `Dynamic` متداخل داخل `Tuple` أو `Array` أو `Map`، ويكون في الجانب الأيمن من JOIN قيمة مميزة واحدة فقط. [#106931](https://github.com/ClickHouse/ClickHouse/pull/106931) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تجاوز سعة عدد صحيح موقّع (سلوك غير معرّف) في `arrayLevenshteinDistanceWeighted` و`arraySimilarity` عندما تحتوي مصفوفات الأوزان على قيم صحيحة كبيرة. وأصبحت المسافة الموزونة الآن تتراكم في عدد صحيح أوسع عند استخدام الأوزان الصحيحة، لذا لم تعد الأوزان الصحيحة الكبيرة تتسبب في تجاوز السعة وتظل النتائج دقيقة. [#106934](https://github.com/ClickHouse/ClickHouse/pull/106934) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل في الخادم (إلغاء مرجعية مؤشر فارغ) عند تنفيذ `TRUNCATE` أو `DROP` على جدول `EmbeddedRocksDB` بعد تحرير مقبض RocksDB الخاص به، مثل جدول `read_only` الذي أُفرغ دليل بياناته بواسطة `TRUNCATE` سابق. [#106940](https://github.com/ClickHouse/ClickHouse/pull/106940) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء (`std::length_error` يُبلَّغ عنه على أنه `LOGICAL_ERROR`) عند القراءة من table function `*Cluster` مثل `urlCluster` مع إعداد `max_streams_for_files_processing_in_cluster_functions` كبير جدًا. وأصبح عدد التدفقات الآن مقيّدًا بقيمة معقولة. [#106946](https://github.com/ClickHouse/ClickHouse/pull/106946) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل في الخادم (إلغاء مرجعية مؤشر فارغ لـ `DB::IConnections`) في `RemoteQueryExecutor` عندما يُلغى استعلام موزّع مباشرة قبل إرساله إلى shard. [#106950](https://github.com/ClickHouse/ClickHouse/pull/106950) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة بقاء `elapsed_us` مساويًا للصفر دائمًا، واحتساب `read_rows`/`read_bytes` بأقل من قيمتهما الفعلية، في `system.processors_profile_log` و`system.query_log` لاستعلامات flush الخاصة بعمليات insert غير المتزامنة (`AsyncInsertFlush`). [#106982](https://github.com/ClickHouse/ClickHouse/pull/106982) ([Christoph Wurm](https://github.com/cwurm)).
* إصلاح تعطل (`Source column is not Map` / `SIGSEGV`) عند دمج blocks مرتبة تحتوي على عمود `Variant` مع متغير `Map` يختلف ترتيب تخزينه المحلي عن ترتيبه العام. [#107011](https://github.com/ClickHouse/ClickHouse/pull/107011) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي `conflicted_part_name.has_value()` كان يظهر أثناء insert متزامن إلى جدول `ReplicatedMergeTree` عندما تكون inserted block قد خضعت لإزالة تكرار بالكامل، وكانت عقدة إزالة التكرار الخاصة بالجزء المتعارض قد أُزيلت بالفعل (على سبيل المثال بسبب `DROP PARTITION` متزامن). [#107026](https://github.com/ClickHouse/ClickHouse/pull/107026) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء (خطأ منطقي `this->visited_views == right->visited_views`) عند `INSERT` عندما تكتب materialized views اثنتان على source table نفسه إلى target table نفسه، بينما يقرأ view تابع ذلك الهدف، مع تفعيل `materialized_views_squash_parallel_inserts`. [#107027](https://github.com/ClickHouse/ClickHouse/pull/107027) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ المنطقي `Block structure mismatch in UnionStep stream` (توقف الخادم في builds التصحيح/sanitizer، و`Code: 49` في builds الإصدار) الذي كان يحدث عندما يقرأ أحد فروع `UNION`/`INTERSECT`/`EXCEPT` عمودًا مُسلسَلًا بصيغة `Sparse`، بينما يقرأ الفرع المقابل العمود نفسه باعتباره عمودًا كاملًا (على سبيل المثال عند الدفع إلى materialized view). [#107041](https://github.com/ClickHouse/ClickHouse/pull/107041) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح استثناء `LOGICAL_ERROR` عند الإدراج في جدول DeltaLake يحتوي على أعمدة لا تطابق مخطط الكتابة الخاص به (على سبيل المثال، عمود `Nested` يُفك إلى أعمدة فرعية، أو table function مع مجموعة أعمدة صريحة). أصبحت عمليات الإدراج هذه الآن تفشل بخطأ `INCOMPATIBLE_COLUMNS` ظاهر للمستخدم بدلًا من ذلك. يغلق [#87402](https://github.com/ClickHouse/ClickHouse/issues/87402). [#107058](https://github.com/ClickHouse/ClickHouse/pull/107058) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ `TYPE_MISMATCH` ("Cannot convert string ... to type ...") في استعلامات `ORDER BY <numeric column> ... LIMIT n` عندما كانت lazy materialization تضع عمودًا آخر قبل عمود الفرز. تُقرأ الآن عتبة top-K من عمود الفرز الصحيح. [#107060](https://github.com/ClickHouse/ClickHouse/pull/107060) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ نحوي عندما تأتي عبارة `FORMAT` أو `SETTINGS` أو `INTO OUTFILE` بعد `SHOW ROW POLICIES` أو `SHOW MASKING POLICIES` (مثل `SHOW ROW POLICIES FORMAT TabSeparated`). [#107061](https://github.com/ClickHouse/ClickHouse/pull/107061) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح العبارة المركبة `ALTER TABLE ... RENAME COLUMN a TO b, RENAME COLUMN c TO a` التي تعيد استخدام اسم عمود تم تحريره (أي "تبديل") بين أعمدة من أنواع مختلفة. كان الجزء materialized يسجّل نوع عمود غير صحيح، لذلك كان `SELECT` لاحقًا يفشل برسالة `Conversion between numeric types and IPv6 is not supported` (أو يتوقف عند تحميل الجزء في debug builds). [#107064](https://github.com/ClickHouse/ClickHouse/pull/107064) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح النتائج غير الحتمية للدالة `roundDown` عندما تحتوي مصفوفة الحدود على `NaN`. فقد كانت قيمة الإدخال نفسها قد تُرجِع حدًا finite أو `NaN` بحسب الصفوف المحيطة في الدفعة. يتم الآن تجاهل حدود `NaN`، لذا تعتمد النتيجة فقط على الحدود finite. [#107065](https://github.com/ClickHouse/ClickHouse/pull/107065) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح إطلاق `quantileTDigest` و`quantileTDigestWeighted` للخطأ `DECIMAL_OVERFLOW` مع الوسيطات `Date` و`DateTime` عندما تكون quantile المستوفاة كسرية لكنها ضمن النطاق (على سبيل المثال `quantileTDigestWeighted(date, weight)` على قيم تقع كلها ضمن النوع). تُقتطع النتيجة الكسرية الآن إلى نوع النتيجة، بما يتوافق مع `quantilesTDigestWeighted`؛ أما القيم الفعلية خارج النطاق فما زالت تؤدي إلى خطأ. يغلق: [#106722](https://github.com/ClickHouse/ClickHouse/issues/106722). [#107066](https://github.com/ClickHouse/ClickHouse/pull/107066) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح إطلاق `trimLeft` و`trimRight` و`trimBoth` (وكذلك الأسماء البديلة `ltrim` و`rtrim` و`trim`) للخطأ `TOO_LARGE_STRING_SIZE` عندما تكون character set المخصصة للتشذيب أطول من 16 محرفًا. أصبحت مجموعات التشذيب بأي طول مدعومة مجددًا. [#107071](https://github.com/ClickHouse/ClickHouse/pull/107071) ([Nikita Fomichev](https://github.com/fm4v)).
* تم إصلاح الاقتطاع الصامت لقيم الأعداد الصحيحة الخارجة عن النطاق في تعريفات النوع `Enum8`/`Enum16`. أصبح `Enum8('a' = 200)` الآن يطلق `ARGUMENT_OUT_OF_BOUND` بدلًا من إنشاء `Enum8('a' = -56)` بصمت. [#107081](https://github.com/ClickHouse/ClickHouse/pull/107081) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الترتيب غير الصحيح للصفوف (وظهور `LOGICAL_ERROR` برسالة "Rows are not sorted with permutation" في debug builds) في استعلامات `ORDER BY ... LIMIT` متعددة الأعمدة التي تُفرَز حسب أعمدة `Nullable` عندما تتساوى عدة صفوف في الأعمدة الأولى. [#107094](https://github.com/ClickHouse/ClickHouse/pull/107094) ([Groene AI](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` فرعي مترابط جرى فكّ ترابطه إلى join). [#107095](https://github.com/ClickHouse/ClickHouse/pull/107095) ([Groene AI](https://github.com/groeneai)).
* إصلاح إعادة إنشاء جلسة ZooKeeper دون داعٍ عند إعادة تحميل الإعدادات. [#107096](https://github.com/ClickHouse/ClickHouse/pull/107096) ([Azat Khuzhin](https://github.com/azat)).
* عدم الاحتفاظ بالـ mutex أثناء قراءات ZooKeeper عند تحديث كيانات الوصول. [#107097](https://github.com/ClickHouse/ClickHouse/pull/107097) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح استثناء `Logical error: Too large size passed to allocator` عند تنفيذ `INSERT` في جدول `MergeTree` عندما تكون `adaptive_write_buffer_initial_size` مضبوطة على قيمة كبيرة للغاية. ويُقيَّد الآن الحجم الابتدائي التكيفي لمخزن الكتابة المؤقت بالحد الأقصى للمخزن المؤقت. [#107104](https://github.com/ClickHouse/ClickHouse/pull/107104) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL ERROR` (`Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`) عند مقارنة ثابت `Variant` يحتوي على عضو `LowCardinality` بعمود مفتاح تكون فيه key expression دالة deterministic غير رتيبة (على سبيل المثال، skip index من نوع `minmax` على `sipHash64(col)`). [#107111](https://github.com/ClickHouse/ClickHouse/pull/107111) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `Bad cast from type DB::IColumn const* to DB::ColumnNullable const*` عندما يُمرَّر asterisk مؤهل (`t.*`) على مفتاح `JOIN ... USING` إلى aggregate function، ويكون على الجانب الآخر من OUTER JOIN مفتاح `Nullable` (مع `join_use_nulls = 0`). [#107129](https://github.com/ClickHouse/ClickHouse/pull/107129) ([Groene AI](https://github.com/groeneai)).
* إصلاح دفعات `ALTER TABLE ... ON CLUSTER` التي تمزج بين `MODIFY SETTING`/`RESET SETTING` وتغيير comment (على سبيل المثال `MODIFY COMMENT 'x', MODIFY SETTING old_parts_lifetime = 123`) إذ كان يجري تطبيقها فقط على replica القائدة، مما يترك replicas الأخرى غير متطابقة. كما أُصلحت أيضًا حالة `MODIFY COLUMN ... COMMENT` الموضعية أو الخاصة بكل عمود عبر `SETTINGS`، التي كانت تُصنَّف خطأً على أنها تغيير محلي في metadata يقتصر على comment فقط، مما كان يستبعد إعادة ترتيب الأعمدة من metadata المكرّرة وقد يسبب `INCOMPATIBLE_COLUMNS` عند إعادة تشغيل replica. [#107142](https://github.com/ClickHouse/ClickHouse/pull/107142) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ("Table expression ... data must be initialized") الذي كان يظهر عندما يشير matcher asterisk مؤهل (على سبيل المثال `x.*`) إلى CTE تعاودي بالاسم داخل جزئه التعاودي نفسه. وتُوسِّع هذه المطابقات الآن أعمدة الجدول التعاودي، بالطريقة نفسها التي يفعلها فيها العمود المؤهل (`x.a`) أو matcher غير المؤهل (`*`) بالفعل في ذلك الموضع. [#107144](https://github.com/ClickHouse/ClickHouse/pull/107144) ([Groene AI](https://github.com/groeneai)).
* إصلاح query results غير صحيحة تسببت فيها query condition cache عندما كانت mutations الفورية (`apply_mutations_on_fly`) أو patch parts تُرشّح الصفوف قبل `PREWHERE`. كان يمكن لاستعلام يقرأ باستخدام `apply_mutations_on_fly = 1` أن يفسد cache، بحيث يؤدي إلى أن يتخطى استعلام لاحق مع `apply_mutations_on_fly = 0` ونفس predicate علاماتٍ كان ينبغي قراءتها، ومن ثم يُرجع عددًا أقل من الصفوف. ويشمل هذا الإصلاح أيضًا سياسات الأمان على مستوى الصفوف، التي تُضاف مسبقًا كـ filter قبل `PREWHERE`: إذ كان يمكن لاستعلام يُشغَّل تحت row policy مقيِّدة أن يفسد cache لاستعلام لاحق يستخدم predicate نفسه من دون تلك policy. [#107145](https://github.com/ClickHouse/ClickHouse/pull/107145) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `BACKUP` إلى `AzureBlobStorage`: كان نسخ ملف بيانات داخل نسخة احتياطية يكتب الكائن الهدف خارج دليل النسخة الاحتياطية. كما أصبحت عمليات التحقق من وجود كائنات النسخ الاحتياطي على وجهات `S3` تستخدم طلبات `HeadObject` دقيقة بدلًا من السرد بحسب البادئة، مما يمنع المطابقات الخاطئة للمفاتيح ذات البادئات المتشابهة. [#107153](https://github.com/ClickHouse/ClickHouse/pull/107153) ([Pablo Marcos](https://github.com/pamarcos)).
* تم إصلاح تجاوز سعة عدد صحيح موقّع في `quantileExactExclusive` و`quantilesExactExclusive` و`quantileExactInclusive` و`quantilesExactInclusive`، كان يمكن أن يؤدي إلى نتيجة خاطئة لمدخلات `Int64` التي تمتد عبر نطاق كبير. [#107154](https://github.com/ClickHouse/ClickHouse/pull/107154) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` ("Unexpected exception in refresh scheduling") كان يمكن أن يُدخل الخادم في حلقة تعطل عند إعادة التشغيل عندما يكون للعرض المادي القابل للتحديث تبعية `REFRESH ... DEPENDS ON <name>` ويطابق اسمها غير المؤهل اسم جدول مؤقت أو اسم تعبير جدول شائع. [#107156](https://github.com/ClickHouse/ClickHouse/pull/107156) ([Groene AI](https://github.com/groeneai)).
* تم التأكد من عدم تشغيل سكربتات بدء التشغيل عند إعادة تحميل الإعدادات، لأن ذلك غير صحيح دلاليًا وغير متوقع للمستخدمين، وقد عُرف بأنه عرضة للأخطاء. [#107187](https://github.com/ClickHouse/ClickHouse/pull/107187) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* وُضع حد أقصى للقيمة القصوى لـ `queue_size` للحجز المسبق. [#107205](https://github.com/ClickHouse/ClickHouse/pull/107205) ([Elian Gidoni](https://github.com/eliangidoni)).
* تم إصلاح الخطأ `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) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تم إصلاح الترتيب غير الصحيح للنتائج في `ORDER BY` فوق `UNION ALL` عند تمكين `optimize_read_in_order`، وذلك عندما جرى تضييق مسار union بسبب إعدادات `max_streams_for_union_step`؛ ويتم الآن تخطي هذا التضييق عندما تعتمد الخطة على تدفقات إخراج UNION المرتبة. يغلق [#106880](https://github.com/ClickHouse/ClickHouse/issues/106880). [#107208](https://github.com/ClickHouse/ClickHouse/pull/107208) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تم إصلاح احتمال فكّ إشارة مؤشر فارغ أثناء تحليل إعدادات الوكيل خلال المراحل المتأخرة من إيقاف الخادم. [#107231](https://github.com/ClickHouse/ClickHouse/pull/107231) ([Pedro Ferreira](https://github.com/PedroTadim)).
* تم إصلاح استعلامات `UPDATE` خفيفة الوزن مع تمكين parallel replicas القديمة لجداول `MergeTree` غير المكررة. [#107246](https://github.com/ClickHouse/ClickHouse/pull/107246) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح توقف للخادم (`std::out_of_range` logical error) عند الإدراج في جدول `Iceberg` لا تتطابق فيه أسماء أعمدة كتلة الكتابة مع معرّفات الحقول في أحدث مخطط (على سبيل المثال، بعد أن يعيد كاتب متزامن تسمية عمود ضمن نافذة `iceberg_metadata_staleness_ms`). أصبح الإدراج الآن يفشل بخطأ استعلام واضح بدلًا من تعطل الخادم. [#107279](https://github.com/ClickHouse/ClickHouse/pull/107279) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خلل تعذّر الإيقاف في الخادم ووضع local بسبب احتفاظ مجمّعات الخيوط الثابتة بالخيوط الخاملة إلى أجل غير مسمى إذا كان `max_*_thread_pool_free_size > 0`. [#107291](https://github.com/ClickHouse/ClickHouse/pull/107291) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح تجاهل دالة الجدول `s3` بصمت لقيمة `partition_strategy` الموضعية المكتوبة بأحرف صغيرة (مثل `hive`). [#107297](https://github.com/ClickHouse/ClickHouse/pull/107297) ([Julia Kartseva](https://github.com/jkartseva)).
* تم إصلاح التعامل مع `low_cardinality_allow_in_native_format=0` في تجهيز الكتل المتوازية. [#107319](https://github.com/ClickHouse/ClickHouse/pull/107319) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح النتائج الخاطئة (وغالبًا الفارغة) من `ORDER BY <col> LIMIT n` عند تفعيل تحسين `use_skip_indexes_for_top_k` ووجود part يحتوي على skip index من نوع `minmax` على عمود الفرز بعد إزالة rows منه باستخدام lightweight `DELETE`. لم يعد التحسين يقدّم minmax القديم للأجزاء التي حُذفت منها rows باستخدام lightweight `DELETE` على الأجزاء التي تحتوي على أعلى rows الحية. [#107320](https://github.com/ClickHouse/ClickHouse/pull/107320) ([Groene AI](https://github.com/groeneai)).
* إصلاح bug في ClickHouse Keeper حيث كانت metadata الخاصة بـ snapshot، والمبلّغ عنها عبر `last_snapshot` (وكذلك `zk_latest_snapshot_size` في `mntr`)، قد تتراجع بعد تثبيت snapshot قديم أو مكرر. وكان هذا قد يسمح أيضًا لـ snapshot محلي يحمل الفهرس نفسه بأن يستبدل snapshot file مسجّلًا في مكانه بينما كان لا يزال يُبث إلى peer أو يُرفع إلى S3. [#107321](https://github.com/ClickHouse/ClickHouse/pull/107321) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح احتمال حدوث server stack overflow ‏(crash) عند قراءة schema أو Value متداخل بعمق في formats ‏`MsgPack` و`BSON` و`ORC` و`Parquet` و`JSON` و`DeltaLake` و`Iceberg` و`Paimon`. ويُرفض الآن هذا الإدخال شديد التداخل مع إرجاع exception. [#107341](https://github.com/ClickHouse/ClickHouse/pull/107341) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح احتمال حدوث logical error في `SYSTEM SYNC DATABASE REPLICA ... STRICT` وجعل المُعدِّل `STRICT` يُطبَّق فعليًا على database replicas. [#107344](https://github.com/ClickHouse/ClickHouse/pull/107344) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح توقف server في builds الخاصة بـ debug/sanitizer عند قراءة table من نوع `DeltaLake` تكون فيها أسماء schema في ClickHouse تشير إلى column غير موجود في Delta column mapping، على سبيل المثال بعد إعادة تسمية column أو إسقاطه في Delta log. يفشل query الآن بدلًا من ذلك بخطأ `INCORRECT_DATA` يمكن التقاطه. [#107347](https://github.com/ClickHouse/ClickHouse/pull/107347) ([Groene AI](https://github.com/groeneai)).
* إصلاح توليد `ORDER BY ... WITH FILL` لصفوف إضافية عندما يستخدم column في `ORDER BY` يسبق عمود الملء ترتيب Collation عبر `COLLATE`. وتُجمَّع rows الآن بحسب sorting prefix باستخدام ذلك الترتيب، بما يطابق sort order. [#107365](https://github.com/ClickHouse/ClickHouse/pull/107365) ([Groene AI](https://github.com/groeneai)).
* إصلاح crash ‏(`LOGICAL_ERROR` في builds الخاصة بـ debug) وbug صامت يؤدي إلى نتائج خاطئة (في builds الخاصة بالإصدار) عند قراءة Iceberg table تعيد فيها metadata ربط `schema-id` موجود مسبقًا بـ schema مختلفة عبر إصدارات metadata. وتُرفض مثل هذه metadata الآن مع `ICEBERG_SPECIFICATION_VIOLATION`. [#107370](https://github.com/ClickHouse/ClickHouse/pull/107370) ([Groene AI](https://github.com/groeneai)).
* إصلاح `LOGICAL_ERROR` ‏(`Variant N (T) has size X, but expected Y`) عند تطبيق function مثل `toString` أو `concat` على column من نوع `Variant` أو `Dynamic` يحتوي على variant واحد غير فارغ إلى جانب قيم NULL، وتُرجِع function column الإدخال الخاص بها دون تغيير. [#107374](https://github.com/ClickHouse/ClickHouse/pull/107374) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Logical error: 'Duplicate announcement received for replica number N'` الذي كان يمكن أن يحدث مع parallel replicas عندما يحتوي استعلام فرعي قيَمي على subqueries متداخلة تقرأ table نفسها. [#107381](https://github.com/ClickHouse/ClickHouse/pull/107381) ([Groene AI](https://github.com/groeneai)).
* إصلاح `getServerSetting` لكي يعيد القيمة الفعلية السارية لـ server settings القابلة للتغيير أثناء runtime ‏(مثل `max_server_memory_usage` و`mark_cache_size` و`max_concurrent_queries` وأحجام thread pool وغيرها)، بما يطابق ما يبلّغ عنه `system.server_settings`. [#107388](https://github.com/ClickHouse/ClickHouse/pull/107388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `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` ‏(`block.rows() == getRows()`) الذي كان يظهر عند تنفيذ `INSERT` غير متزامن إلى جدول من نوع `Alias` عندما يكون `use_strict_insert_block_limits` مفعّلًا. [#107400](https://github.com/ClickHouse/ClickHouse/pull/107400) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ منطقي ‏(`Unexpected return type from equals. Expected Nullable(UInt8). Got UInt8`) عندما يدفع تحسين إنزال شرط الفصل (المسند الجزئي) شرطًا فوق مفتاح `USING` الذي يوسّع `JOIN` نوعه. كما أُصلح تعطّل في الخادم (segmentation fault) في المُحلِّل عند حلّ المعرّفات في استعلامات `JOIN ... USING` التي تحتوي على فروع `if`/`multiIf` قابلة لطيّ الثوابت وتشير إلى معرّفات غير معروفة. [#107407](https://github.com/ClickHouse/ClickHouse/pull/107407) ([Groene AI](https://github.com/groeneai)).
* إصلاح heap buffer overflow ‏(تعطّل في الخادم) في `windowFunnel` عند إنهاء حالة دالة تجميع مُشكّلة خصيصًا مع نوع حدث خارج النطاق، ويمكن لأي مستخدم الوصول إلى ذلك عبر `SELECT` واحد. [#107412](https://github.com/ClickHouse/ClickHouse/pull/107412) ([uwezkhan](https://github.com/uwezkhan)).
* إصلاح سلوك غير معرّف عند تمرير قيمة فاصلة عائمة غير منتهية (مثل `nan` أو `inf`) كوسيط طابع زمني/مدة إلى دوال الجداول `prometheusQuery` / `prometheusQueryRange`. يرفع هذا الوسيط الآن `BAD_ARGUMENTS` بدلًا من إنتاج طابع زمني غير صالح. [#107417](https://github.com/ClickHouse/ClickHouse/pull/107417) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقّف `MaterializedPostgreSQL` بصمت عن نسخ التغييرات متماثلًا عندما يحتوي اسم قاعدة البيانات أو الجدول في PostgreSQL على أحرف كبيرة (إذ كان مستهلك `pgoutput` يطلب اسم `publication` غير موضوع بين علامتَي اقتباس ومحوّلًا إلى أحرف صغيرة، ما لا يطابق `publication` التي تحتفظ بحالة الأحرف). [#107423](https://github.com/ClickHouse/ClickHouse/pull/107423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء ‏(`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) ([Groene AI](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) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء زائف من النوع `filesystem error: in last_write_time: No such file or directory` عند سرد دليل تخزين الكائنات على قرص محلي (مثل جدول Iceberg على قرص `local`) بينما تُستبدل الملفات بالتوازي. وأصبح الآن يتم تجاهل الإدخال الذي يُزال بالتوازي بدلًا من إيقاف عملية السرد. [#107432](https://github.com/ClickHouse/ClickHouse/pull/107432) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `THERE_IS_NO_COLUMN` عندما يكون `optimize_if_transform_strings_to_enum = 1` ويكون التعبير المُحسَّن لـ `if`/`transform` فوق قيم `string` الحرفية مفتاحًا في `GROUP BY` أو `ORDER BY` على جدول Distributed أو parallel replicas. [#107455](https://github.com/ClickHouse/ClickHouse/pull/107455) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعطل نادر في الخادم أثناء معالجة `DISTINCT` كان قد يحدث عند فشل تخصيص للذاكرة (على سبيل المثال، عند بلوغ حد الذاكرة) أثناء تهيئة مجموعة المفاتيح المميزة. [#107467](https://github.com/ClickHouse/ClickHouse/pull/107467) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `LOGICAL_ERROR: Unexpected return type from materialize` (وأخطاء عدم تطابق الأنواع المشابهة) عند استخدام `apply_mutations_on_fly = 1` على جدول يحتوي على `UPDATE` معلّق يُطبَّق أثناء التنفيذ، وكان العمود المستهدف فيه يُقرأ أيضًا كمدخل لدالة بواسطة `UPDATE` سابق يُطبَّق أثناء التنفيذ، وذلك قبل mutation من نوع `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#107475](https://github.com/ClickHouse/ClickHouse/pull/107475) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تقادم بيانات اعتماد AWS STS عند قراءة جداول `DeltaLake` عبر `S3`: إذ يحتفظ المحرك الآن بعميل `S3` المزوَّد ببيانات الاعتماد المُحدَّثة عند تحديث اللقطة snapshot، لذلك لم تعد عمليات القراءة طويلة التشغيل تفشل بعد انتهاء TTL لرمز STS. كما أصبح موفّر بيانات اعتماد assume-role الخاص بـ STS يراعي أيضًا تحديث بيانات الاعتماد لأي وصول إلى `S3` باستخدام STS. [#107480](https://github.com/ClickHouse/ClickHouse/pull/107480) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تم إصلاح قيام `SELECT ... FINAL` و `OPTIMIZE TABLE ... FINAL` بإرجاع صفوف مكررة بعد `CREATE TABLE ... CLONE AS` أو `ATTACH PARTITION ... FROM` أو `MOVE PARTITION ... TO TABLE` عند اعتماد أجزاء من `MergeTree` عادي إلى `ReplacingMergeTree` أو `SummingMergeTree` أو `AggregatingMergeTree`. ويُعاد الآن ضبط merge level للجزء المُعتمَد إلى 0 عندما تختلف محركات المصدر والوجهة، بحيث تُزيل الوجهة التكرار عنه في عملية الدمج التالية. [#107481](https://github.com/ClickHouse/ClickHouse/pull/107481) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح underflow عددي صحيح في parser الخاص بـ PostgreSQL wire protocol، حيث كانت رسالة ذات حقل طول أقل من 4 تتسبب في التفاف `size - 4` وحدوث `resize`/`ignore` بحجم مفرط. [#107485](https://github.com/ClickHouse/ClickHouse/pull/107485) ([uwezkhan](https://github.com/uwezkhan)).
* أصبح تتبع إلغاء query أفضل أثناء انتظار quorum في ReplicatedMergeTree. [#107513](https://github.com/ClickHouse/ClickHouse/pull/107513) ([Nikita Taranov](https://github.com/nickitat)).
* تم إصلاح الخطأ `Not-ready Set is passed as the second argument for function 'in'` (`LOGICAL_ERROR`) عند الاستعلام عن جدول يحتوي على مفتاح `PARTITION BY` مع استعلام فرعي من نوع `IN`/`NOT IN` ملفوف داخل expression أكبر، مثل `WHERE (c0 IN (SELECT ...)) != 0`. [#107515](https://github.com/ClickHouse/ClickHouse/pull/107515) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تقييم `currentUser()` و `user()` و `SESSION_USER` و `authenticatedUser()` إلى سلسلة فارغة في مسار تفريغ asynchronous insert (مع `async_insert = 1`). وقد أثّر ذلك في تعبيرات الأعمدة `DEFAULT`/`MATERIALIZED` وmaterialized views التي تشير إلى هذه الدوال، إذ كانت تخزّن بصمت سلسلة فارغة بدلًا من المستخدم الذي قام بعملية الإدراج. [#107541](https://github.com/ClickHouse/ClickHouse/pull/107541) ([Groene AI](https://github.com/groeneai)).
* مع `enable_analyzer = 1` (وهو الإعداد الافتراضي)، أصبح الاستعلام عن جدول باسمه فقط، عندما لا يكون موجودًا إلا في قاعدة بيانات أخرى، يقترح الجدول الصحيح؛ فعلى سبيل المثال، يعرض `SELECT * FROM functions` الرسالة `Maybe you meant system.functions?`. سابقًا كان analyzer الجديد يعرض الخطأ `Unknown table expression identifier` من دون أي تلميح، بينما كان analyzer القديم يقدّم هذا الاقتراح المفيد بالفعل. [#107550](https://github.com/ClickHouse/ClickHouse/pull/107550) ([Groene AI](https://github.com/groeneai)).
* أصبحت الذاكرة التي تستخدمها مكتبة rapidjson (في `prettyPrintJSON` و `JSONMergePatch` وparser JSON الخاص بـ rapidjson) تُحتسب ضمن memory tracker، بحيث تُرفَض المدخلات الشاذة بخطأ `MEMORY_LIMIT_EXCEEDED` بدلًا من الاستمرار في التخصيص بلا حدود. [#107555](https://github.com/ClickHouse/ClickHouse/pull/107555) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح `LOGICAL_ERROR` (`updateFormatPrewhereInfo called more than once`) الذي كان يظهر عند الاستعلام عن مصدر `file()` أو `url()` أو مصدر تخزين كائنات عند استخدام `PREWHERE` صريح و`WHERE` معًا، بينما كان `optimize_prewhere_after_pushdown` مفعّلًا. [#107568](https://github.com/ClickHouse/ClickHouse/pull/107568) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل (إلغاء مرجعية مؤشر فارغ) كان يمكن أن يحدث عند تنفيذ خطة استعلام موزعة محليًا (`make_distributed_plan` + `distributed_plan_execute_locally`) مع `log_formatted_queries = 1`. [#107570](https://github.com/ClickHouse/ClickHouse/pull/107570) ([Groene AI](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) ([Groene AI](https://github.com/groeneai)).
* إضافة فحوصات حدود مفقودة أثناء تحليل Elf وDWARF. [#107579](https://github.com/ClickHouse/ClickHouse/pull/107579) ([Michael Kolupaev](https://github.com/al13n321)).
* إضافة فحوصات حدود مفقودة في قارئ ORC. [#107580](https://github.com/ClickHouse/ClickHouse/pull/107580) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح استثناء (`Digest does not match` خطأ منطقي) كان يمكن أن يحدث مع `RENAME TABLE` أو `RENAME DATABASE` أو `CREATE OR REPLACE TABLE` عند التعامل مع جدول `TimeSeries` داخل قاعدة بيانات `Replicated`. وأصبحت إعادة تسمية جدول `TimeSeries` مدعومة الآن. [#107583](https://github.com/ClickHouse/ClickHouse/pull/107583) ([Groene AI](https://github.com/groeneai)).
* إصلاح ثغرة حجب خدمة بسبب استنفاد الذاكرة من دون مصادقة على منفذ بروتوكول MySQL. [#107599](https://github.com/ClickHouse/ClickHouse/pull/107599) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح `DROP TABLE` لجدول `TimeSeries` في قاعدة بيانات `Replicated`، والذي كان سابقًا يسرّب الجداول الداخلية ويترك مهمة الإسقاط في الخلفية تعيد المحاولة بلا نهاية (وكان `DROP TABLE ... SYNC` يعلّق). [#107604](https://github.com/ClickHouse/ClickHouse/pull/107604) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلتين لاجتياز المسار في بروتوكول جلب الأجزاء المكرّرة، وكان من الممكن أن تسمحا لنسخة متماثلة خبيثة بكتابة ملفات خارج مجلد الجزء. [#107606](https://github.com/ClickHouse/ClickHouse/pull/107606) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح الخطأ 'Account must be specified error' عند قراءة جدول Delta Lake عبر Azure. [#107620](https://github.com/ClickHouse/ClickHouse/pull/107620) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح `ALTER TABLE ... REPLACE PARTITION` على جدول `MergeTree` عادي، إذ كان يعيد إحياء الأجزاء التي تم استبدالها بعد إعادة تشغيل الخادم، مما يجعل الجدول يعيد كلًا من الصفوف البديلة والصفوف القديمة المستبدلة. [#107623](https://github.com/ClickHouse/ClickHouse/pull/107623) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم عند قراءة materialized view يكون هدفها جدول `Distributed` بينما يعمل الاستعلام مع `enable_analyzer = 0`. [#107653](https://github.com/ClickHouse/ClickHouse/pull/107653) ([Groene AI](https://github.com/groeneai)).
* عند تعيين عدة quotas للمستخدم أو الدور نفسه، أصبحت تُفرَض جميعها معًا الآن (ويُرفَض الاستعلام إذا تم تجاوز أي منها)، بدلًا من فرض حصة واحدة فقط واختيارها بصورة غير حتمية. ويعرض `SHOW QUOTA` و`system.quota_usage` الآن جميع الحصص المفروضة على المستخدم الحالي. [#107664](https://github.com/ClickHouse/ClickHouse/pull/107664) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح قيام `s3` ودوال الجداول الأخرى الخاصة بتخزين الكائنات بإطلاق `LOGICAL_ERROR` بدلًا من `BAD_ARGUMENTS` عند تكرار وسيطة من نوع مفتاح-قيمة، مثل `s3('http://...', format = 'CSV', format = 'TSV')`. [#107670](https://github.com/ClickHouse/ClickHouse/pull/107670) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة عدم قابلية استخدام واجهة MySQL مع `MySQL Connector/J` 8.2.0 والإصدارات الأحدث (بما في ذلك 9.x). أصبح الحقل `info` في الحزمة `OK` الآن مُرمَّزًا بالطول، بما يتوافق مع MySQL server، بحيث يتمكن JDBC driver من الاتصال. [#107693](https://github.com/ClickHouse/ClickHouse/pull/107693) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح `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) ([Groene AI](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) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح استثناء `BAD_GET` ("Bad get: has String, requested UInt64") في تقدير column statistics الخاصة بـ `countmin` عندما يقارن استعلام عمودًا بقيمة حرفية من نوع مختلف لم تُحوَّل مسبقًا، مثل `numeric_col IN (SELECT '5')` أو `string_col IN (SELECT 5)`. [#107793](https://github.com/ClickHouse/ClickHouse/pull/107793) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح تعليق دوال الجداول `odbc` و`jdbc` لعدة دقائق وتجاهلها إلغاء الاستعلام (`KILL QUERY`, `max_execution_time`) عندما يصبح الجسر غير مستجيب أثناء استنتاج بنية الجدول البعيد. [#107809](https://github.com/ClickHouse/ClickHouse/pull/107809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح استثناء (`Logical error: 'index >= result.start'`) عند تنسيق استعلام غير صالح يمزج بين الصيغتين الموضعية والمسمّاة للوسيطة السرية في دوال الجداول `s3`/`gcs`، مثل `s3('url', 'a', 'b', secret_access_key = 'c')`. [#107818](https://github.com/ClickHouse/ClickHouse/pull/107818) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح عدم قيام فهرس التخطي set بعملية pruning للحبيبات على أعمدة `LowCardinality`. [#107868](https://github.com/ClickHouse/ClickHouse/pull/107868) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تم إصلاح قيام إزالة تكرار الإدراج بحساب قيم hash خاطئة لأعمدة `String` و`Array` مع إعداد الخادم `insert_deduplication_version = new_unified_hash`: إذ كان يمكن أن تفشل عمليات الإدراج المتطابقة في إزالة التكرار لأن hash إزالة التكرار كان يعتمد على موضع الصف داخل كتلة الإدراج. [#107915](https://github.com/ClickHouse/ClickHouse/pull/107915) ([Sema Checherinda](https://github.com/CheSema)).
* تم إصلاح النتائج غير الصحيحة لـ `ORDER BY` على أعمدة `Nullable` مع مفاتيح فرز متعددة على macOS (Apple Silicon)، والناجمة عن غياب توسيع الإشارة في مقارن الفرز المُصرَّف آنيًا (JIT). [#107973](https://github.com/ClickHouse/ClickHouse/pull/107973) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح تراجع الأداء عند قراءة أعمدة `Dynamic` باستخدام عدة خيوط. وكان السبب [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730). ويغلق [#107942](https://github.com/ClickHouse/ClickHouse/issues/107942). [#107997](https://github.com/ClickHouse/ClickHouse/pull/107997) ([Pavel Kruglov](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)).
* إصلاح logical error `Bad cast from type DB::ColumnSparse to DB::ColumnVector<char8_t>` عند قراءة query من نوع `LIKE` من index `text` عبر مسار fallback للقراءة المباشرة من column مخزّن بشكل sparse. [#108068](https://github.com/ClickHouse/ClickHouse/pull/108068) ([Groene AI](https://github.com/groeneai)).
* شغّل دائمًا handlers الخاصة بانتهاء batch لذاكرة التخزين المؤقت للوصول، حتى إذا كانت الـ batch فارغة. [#108124](https://github.com/ClickHouse/ClickHouse/pull/108124) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح `LOGICAL_ERROR` (`Column identifier is already registered`) في بعض queries التي تستخدم `UNION ALL`. [#100770](https://github.com/ClickHouse/ClickHouse/pull/100770) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح حالة use-after-free على mutex الخاص بـ workload storage أثناء إيقاف تشغيل server. [#101447](https://github.com/ClickHouse/ClickHouse/pull/101447) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح حالة deadlock في `ALTER DATABASE MODIFY COMMENT` مع catalog `Shared`. [#103683](https://github.com/ClickHouse/ClickHouse/pull/103683) ([Nikolay Degterinsky](https://github.com/evillique)).
* أصبح المعرّف الفارغ المحاط باقتباس Unicode يُطلق الآن `SYNTAX_ERROR` بدلًا من `CANNOT_PARSE_QUOTED_STRING`. [#104173](https://github.com/ClickHouse/ClickHouse/pull/104173) ([leonard9893](https://github.com/leonard9893)).
* الحفاظ على أنواع parameter الأصلية لدوال التجميع `timeSeries*` بحيث تُحفَظ أنواع `AggregateFunction` بشكل صحيح في round-trip عبر إعادة إرفاق الجداول وparallel replicas. [#104812](https://github.com/ClickHouse/ClickHouse/pull/104812) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح `LOGICAL_ERROR` في materialized CTE تحت `serialize_query_plan` مع parallel replicas. [#104896](https://github.com/ClickHouse/ClickHouse/pull/104896) ([Igor Nikonov](https://github.com/devcrafter)).
* إصلاح overflow للأعداد الصحيحة الموقعة في الدوال `timeSeries*ToGrid` عندما تكون parameter التقادم (window) قريبة من `INT64_MAX`. [#105319](https://github.com/ClickHouse/ClickHouse/pull/105319) ([Groene AI](https://github.com/groeneai)).
* لم تعد قيمة setting ‏`compatibility` تعيد `apply_row_policy_after_final` إلى `false`، لذا تُطبَّق row policies دائمًا بشكل صحيح مع `FINAL`. [#105637](https://github.com/ClickHouse/ClickHouse/pull/105637) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح `clickhouse chdig client` من خلال مراعاة `SETPGROUP`/`RESETIDS`/`SETSIGDEF` في stub الخاص بـ `posix_spawn`. [#105858](https://github.com/ClickHouse/ClickHouse/pull/105858) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح Exception أثناء فحوصات السلامة في merge-tree على projections عندما لم يكن executor الخاص بالدمج/التحوير مهيأً. [#105919](https://github.com/ClickHouse/ClickHouse/pull/105919) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أثناء index analysis على projections، أصبح index ‏`minmax` يُحمَّل الآن من projection نفسه بدلًا من الجزء parent، ما ينتج نتائج صحيحة. [#105940](https://github.com/ClickHouse/ClickHouse/pull/105940) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح Exception في `addMonotonicChain` لـ `materialize(monotonic_chain(...))`. [#106050](https://github.com/ClickHouse/ClickHouse/pull/106050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تم إصلاح فشل `RESTORE` على النسخ الاحتياطية التي تتضمن عناصر تابعة لـ `MASKING POLICY`. [#106086](https://github.com/ClickHouse/ClickHouse/pull/106086) ([Julia Kartseva](https://github.com/jkartseva)).
* تم إصلاح احتمال تلف الذاكرة عند توسيع دوال SQL المعرّفة من قبل المستخدم مع تفعيل `prefer_column_name_to_alias`. [#106121](https://github.com/ClickHouse/ClickHouse/pull/106121) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* أصبح القاموس الذي يستخدم اتصال الجسر يُعاد تحميله الآن بعد إعادة تشغيل الخادم، مع إعادة إنشاء الاتصال. يُغلق [#106151](https://github.com/ClickHouse/ClickHouse/issues/106151). [#106152](https://github.com/ClickHouse/ClickHouse/pull/106152) ([Pedro Ferreira](https://github.com/PedroTadim)).
* تم إصلاح filesystem cache لـ `LocalObjectStorage`. [#106239](https://github.com/ClickHouse/ClickHouse/pull/106239) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تم إصلاح المصدر البعيد المؤجل لدوال الجداول عند استخدام `use_delayed_remote_source`. [#106470](https://github.com/ClickHouse/ClickHouse/pull/106470) ([Nikolay Degterinsky](https://github.com/evillique)).
* تم إصلاح `timeSeriesLastToGrid` للطوابع الزمنية السابقة لبداية الشبكة وللطوابع الزمنية الواقعة خارج النافذة. [#106504](https://github.com/ClickHouse/ClickHouse/pull/106504) ([Vitaly Baranov](https://github.com/vitlibar)). [#106577](https://github.com/ClickHouse/ClickHouse/pull/106577) ([Vitaly Baranov](https://github.com/vitlibar)).
* تم إصلاح `LOGICAL_ERROR` (`Inconsistent AST formatting`) عند احتواء اسم الدالة على query parameters. [#106635](https://github.com/ClickHouse/ClickHouse/pull/106635) ([Vitaly Baranov](https://github.com/vitlibar)).
* تم إصلاح خطأ منطقي عند حذف جدول قبل إلغاء تسلسل مهمة distributed plan. [#106944](https://github.com/ClickHouse/ClickHouse/pull/106944) ([Alexander Gololobov](https://github.com/davenger)).
* استخدم مقارنةً دقيقةً لمفاتيح `GROUP BY` من النوع `Nullable`. [#107050](https://github.com/ClickHouse/ClickHouse/pull/107050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* تم إصلاح `LOGICAL_ERROR` (`Trying to get name of not a column`) الذي كان يظهر عندما لا تكون وسيطة table function تعبير عمود (على سبيل المثال، مطابقة `*` غير محلولة من `multiIf`/`CASE`). [#107411](https://github.com/ClickHouse/ClickHouse/pull/107411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح النمو غير المحدود لذاكرة التخزين المؤقت للمنطقة الزمنية (`DateLUT`) عند معالجة عدد كبير من أسماء المناطق الزمنية غير الصالحة والمختلفة. [#107464](https://github.com/ClickHouse/ClickHouse/pull/107464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* اكتب إدخال `part_log` قبل الإبلاغ عن اكتمال mutation عادي في `MergeTree`. [#107741](https://github.com/ClickHouse/ClickHouse/pull/107741) ([Azat Khuzhin](https://github.com/azat)).
* أصبح `arrayFold` الآن يتحقق من سلامة وسيطة Array الخاصة به في مواجهة الإدخال غير السليم. [#107932](https://github.com/ClickHouse/ClickHouse/pull/107932) ([Michael Kolupaev](https://github.com/al13n321)).
* تم إصلاح حالة نادرة من data race واحتمال استخدام بعد التحرير في قارئ أرشيف skip-index المخزّن مؤقتًا لجزء `MergeTree`، وقد يحدث ذلك عندما يقرأ استعلام فهارس التجاوز بينما يكون الجزء قيد النقل أو إعادة التسمية. [#107995](https://github.com/ClickHouse/ClickHouse/pull/107995) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح تراجع الأداء في subcolumns الخاصة بـ `Map` مع `PREWHERE`. [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `parseDateTimeBestEffort` عند استخدام منطقة زمنية، إذ كان يُطلق `CANNOT_PARSE_DATETIME` على الصفوف التي تحتوي على NULL في `toString(Nullable(DateTime64))`. [#108310](https://github.com/ClickHouse/ClickHouse/pull/108310) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح table function وengine ‏`ArrowFlight` اللذين كانا يرفضان named collection التي لا تتضمن المفتاح الاختياري `dataset` مع ظهور الخطأ `No such key 'dataset'`. [#108041](https://github.com/ClickHouse/ClickHouse/pull/108041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح logical error بعنوان `Inconsistent AST formatting` لوظيفة window function بلا argument داخل تعريف `CODEC` أو engine (مثل `CODEC(cume_dist() OVER (...))`)؛ إذ تحتفظ هذه الوظيفة الآن بأقواسها بحيث ينجح الاستعلام في round-trip للتنسيق/التحليل. [#107806](https://github.com/ClickHouse/ClickHouse/pull/107806) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `hasToken` عندما تحتوي الإبرة على فاصل، إذ كانت تُرجع النتائج بصمت عبر text index بدلًا من إطلاق `BAD_ARGUMENTS`. [#108189](https://github.com/ClickHouse/ClickHouse/pull/108189) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* يمكن الآن إعادة الإعداد `use_skip_indexes_on_data_read` إلى قيمته `default` السابقة لما قبل 26.1 (`false`) عبر الإعداد `compatibility`، ما يوفّر مخرجًا من تراجع في الأداء حيث يُفشل مسار القراءة من البيانات تقليم نطاقات علامات skip-index الخاصة بـ `minmax`/`set`/`bloom_filter`. [#108330](https://github.com/ClickHouse/ClickHouse/pull/108330) ([egor romanov](https://github.com/egor-click)).
* تم إصلاح crash محتمل (إلغاء مرجعية مؤشر فارغ) عندما لا يكون تجاوز `database`/`db` في named collection المُمرَّرة إلى `remote`/`remoteSecure` اسم database ثابتًا، مثل `remote(nc, database = (SELECT 1))`. ويفشل الاستعلام الآن برسالة error واضحة بدلًا من الانهيار. [#108271](https://github.com/ClickHouse/ClickHouse/pull/108271) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح refreshable materialized view التي كانت تعلق إذا فُقد اتصال ZooKeeper في لحظة غير مناسبة. [#108234](https://github.com/ClickHouse/ClickHouse/pull/108234) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح `Bad cast from type DB::ColumnVector<...> to DB::ColumnTuple` عند قراءة column من النوع `Array(Tuple(...))` تكون قيمتها مملوءة بالقيم الافتراضية، مثلًا بعد `ALTER TABLE ... ADD COLUMN` أو بعد mutation غير مكتملة من `ALTER TABLE ... CLEAR COLUMN` طُبقت أثناء التشغيل. [#107232](https://github.com/ClickHouse/ClickHouse/pull/107232) ([Groene AI](https://github.com/groeneai)).
* إصلاح logical error من نوع `Bad cast from type DB::ColumnDynamic to DB::ColumnNullable` عندما يُمرَّر مرجع صريح إلى مفتاح `JOIN ... USING` يكون common supertype الخاص به `Dynamic` إلى aggregate function، مثل `count(t.key) IGNORE NULLS`. [#107289](https://github.com/ClickHouse/ClickHouse/pull/107289) ([Groene AI](https://github.com/groeneai)).
* إصلاح فقدان بيانات صامت على `MergeTree` العادي (non-replicated) عند تشغيل `REPLACE PARTITION` أو `MOVE PARTITION` أو `DETACH PARTITION` أو `DETACH PART` على partition لا تزال تحتوي على تصحيحات lightweight `UPDATE` لم تُطبّق بعد. وترفض هذه العمليات الآن الأمر، كما يفعل `ReplicatedMergeTree` بالفعل. [#107386](https://github.com/ClickHouse/ClickHouse/pull/107386) ([Groene AI](https://github.com/groeneai)).
* إصلاح crash (‏SIGSEGV في إصدارات release، وassertion لعدم تطابق النوع في إصدارات debug) في `has` على `Map` بمفتاح `Dynamic` عندما تكون argument الخاصة بالبحث من نوع `LowCardinality`، مثل `has(map('a'::Dynamic, ...), toLowCardinality('b'))`. [#107956](https://github.com/ClickHouse/ClickHouse/pull/107956) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` ("عدم تطابق بنية block ... بين `ConvertingTransform` و`RemovingReplicatedColumnsTransform`") عند الإدراج في materialized view يكون جدول `TO` الهدف فيها يعرّف عمودًا من نوع `Enum` أوسع مما ينتجه `SELECT` الخاص بالعرض. ويُطبَّق الآن توسيع `Enum` الصحيح. [#107648](https://github.com/ClickHouse/ClickHouse/pull/107648) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح الخطأ `NUMBER_OF_COLUMNS_DOESNT_MATCH` عند الاستعلام عن جدول `Distributed` (أو عند استخدام parallel replicas) يحتوي على عدة أعمدة `ALIAS` تتوسع إلى التعبير نفسه، مع الإشارة إليها معًا في `ORDER BY`/`GROUP BY`/`HAVING`. [#107913](https://github.com/ClickHouse/ClickHouse/pull/107913) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تم إصلاح سلوك غير معرّف (تمرير مؤشر NULL إلى `memcpy`) في الدالتين `detectCharset` و`detectLanguageUnknown` عندما تكون سلسلة الإدخال أكبر من 32768 بايت ولا يمكن اكتشاف أي character set. [#108250](https://github.com/ClickHouse/ClickHouse/pull/108250) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `signed integer overflow` (سلوك غير معرّف) في `dateDiff` مع الوحدتين `hour` و`minute` عند قيم `DateTime64` القصوى القريبة من حدود نطاق `Int64`. [#108229](https://github.com/ClickHouse/ClickHouse/pull/108229) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `Too many marks` في text index على merged part فارغ. [#106867](https://github.com/ClickHouse/ClickHouse/pull/106867) ([Azat Khuzhin](https://github.com/azat)).
* تم إصلاح `LOGICAL_ERROR` ("نوع إرجاع غير متوقع من if") عند قراءة عمود مع `apply_mutations_on_fly = 1` بعد `ALTER UPDATE col = ... WHERE <cond>` مع condition غير ثابت أو false، يتبعه `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح إيقاف server (`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) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح خطأ نحوي عند ورود alias بعد subquery في `DESCRIBE TABLE (...) AS ...`. [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* يُعامَل `getClientHTTPHeader` الآن بشكل صحيح على أنه non-deterministic، لذلك لم تعد نتيجة استعلامه تُعاد الاستفادة منها بشكل غير صحيح بواسطة query result cache. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* ابنِ `delta-kernel-rs` باستخدام الميزة `default-engine-native-tls` لكي يتمكن عميل HTTP الخاص به (`reqwest`) من إعادة استخدام OpenSSL المرتبط مسبقًا بـ ClickHouse. وهذا ليس سوى تفعيل جزئي لـ `native-tls`: إذ لا يزال `object_store` يفرض `reqwest/rustls-tls-native-roots`، لذا ينتهي الأمر بـ `reqwest` باستخدام الواجهتين الخلفيتين `native-tls` و`rustls` معًا. ويظل `delta-kernel-rs` معطّلًا تحت MSan في الوقت الحالي لأن `ring` لا يزال يُصرَّف عبر `object_store` (سواءً بصورة غير مباشرة عبر `rustls` أو مباشرةً لتوقيع HMAC لطلبات AWS)، كما أن شيفرة التجميع المكتوبة يدويًا فيه لا تُنشئ الرموز التي يتطلبها MSan (ويجري تتبّع ذلك في المشروع الأصلي على [arrow-rs-object-store#585](https://github.com/apache/arrow-rs-object-store/pull/585)). [#96856](https://github.com/ClickHouse/ClickHouse/pull/96856) ([Austin Bonander](https://github.com/abonander)).
* أضف تحسين PGO (التحسين الموجَّه بملفات التعريف) وBOLT (أداة تحسين الثنائيات وتخطيطها) بعد الربط للملف التنفيذي `clickhouse`. تُجمَع ملفات التعريف من أعباء عمل CI وتُطبَّق كخطوة بأفضل جهد أثناء إصدارات البناء — وتعود كلتا المرحلتين إلى مخرجات غير مُحسَّنة إذا كان ملف التعريف قديمًا أو غير متوافق. وحتى الآن، لا توجد فوائد من PGO. [#100938](https://github.com/ClickHouse/ClickHouse/pull/100938) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أضف وضع `--storage` إلى `clickhouse keeper-bench` لإجراء اختبارات الأداء على `KeeperStorage` داخل العملية (`in-process`) (من دون شبكة، ومن دون raft، ومن دون state machine)، باستخدام قسمي الإعداد `setup` و`generator` نفسيهما كما في وضع الشبكة. [#103081](https://github.com/ClickHouse/ClickHouse/pull/103081) ([Michael Kolupaev](https://github.com/al13n321)).
* أصلِح البناء مع `ENABLE_AWS_S3=OFF`. [#105390](https://github.com/ClickHouse/ClickHouse/pull/105390) ([Yue Ni](https://github.com/niyue)).
* حدِّث `mongo-cxx-driver` إلى r4.3.0. [#105522](https://github.com/ClickHouse/ClickHouse/pull/105522) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصلِح البناء مع RapidJSON. [#105674](https://github.com/ClickHouse/ClickHouse/pull/105674) ([Ilya Golshtein](https://github.com/ilejn)).
* سرِّع البناء بإزالة التضمينات غير المباشرة من ترويسات `base/` واسعة الاستخدام، وحذف الشيفرة غير المستخدمة من `Poco/Logger.h` المضمَّن. [#105702](https://github.com/ClickHouse/ClickHouse/pull/105702) ([Raúl Marín](https://github.com/Algunenano)).
* تم تحديث `libxml2` من 2.15.1 إلى 2.15.3. [#105985](https://github.com/ClickHouse/ClickHouse/pull/105985) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدم `expat` 2.8.1 داخل Poco. [#105988](https://github.com/ClickHouse/ClickHouse/pull/105988) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* ارفع `thrift` إلى `v0.23.0`. [#105993](https://github.com/ClickHouse/ClickHouse/pull/105993) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدم الوسم `REL_18_4` الخاص بـ `postgres`. [#105994](https://github.com/ClickHouse/ClickHouse/pull/105994) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* رقِّ `krb5` إلى 1.22.2. [#106076](https://github.com/ClickHouse/ClickHouse/pull/106076) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* حدِّث نسخة `curl` المضمَّنة إلى 8.20.0. [#106077](https://github.com/ClickHouse/ClickHouse/pull/106077) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* رُقِّي `mariadb-connector-c` إلى 3.1.29. مع الحفاظ على جميع التصحيحات ذات الصلة بـ ClickHouse. [#106287](https://github.com/ClickHouse/ClickHouse/pull/106287) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* رُقِّيَت بصمات base image الخاصة بـ distroless لمعالجة ثغرات CVE في libssl3t64. [#106360](https://github.com/ClickHouse/ClickHouse/pull/106360) ([Rahul Nair](https://github.com/motsc)).
* استخدام `wasmtime` بالإصدار 45.0.1. [#106836](https://github.com/ClickHouse/ClickHouse/pull/106836) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* رُقِّي `openssl` إلى 3.5.7. [#106844](https://github.com/ClickHouse/ClickHouse/pull/106844) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* أصبح build الخاص بـ Distroless Docker يحدّث أيضًا الوسوم العائمة `:X.Y-distroless` و `:X.Y.Z-distroless`، وليس وسم الإصدار الكامل فقط. [#106932](https://github.com/ClickHouse/ClickHouse/pull/106932) ([Rahul Nair](https://github.com/motsc)).
* تعطيل ميزات `curl` غير المستخدمة، مثل مصادقة NTLM وملفات تعريف الارتباط و alt-svc و HSTS و DNS-over-HTTPS و netrc و MIME و AWS SigV4. [#107226](https://github.com/ClickHouse/ClickHouse/pull/107226) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* جرى تحديث `NuRaft` بإصلاح لحالة livelock أثناء تثبيت snapshot كانت تحدث عند تنفيذ snapshot IO على الخيط الخلفي. ويظل إعداد Keeper ‏`nuraft_use_bg_thread_for_snapshot_io` معطّلًا افتراضيًا؛ ويقوم CI الآن بتعيين قيم عشوائية له لتغطية كلا الوضعين. [#107338](https://github.com/ClickHouse/ClickHouse/pull/107338) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح build ‏`abseil` عندما يحتوي مسار checkout الخاص بـ ClickHouse على substring تطابق extension لترويسة. [#107349](https://github.com/ClickHouse/ClickHouse/pull/107349) ([zhiqiang](https://github.com/zhiqiang-hhhh)).
* تحديد cache size لذاكرة L2 من `CPUID` على x86\_64 بدلًا من `sysconf(_SC_LEVEL2_CACHE_SIZE)` الخاص بـ glibc، إذ لا يتوفر تحت musl libc. [#107469](https://github.com/ClickHouse/ClickHouse/pull/107469) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* زيادة حجم stack في builds الخاصة بـ musl إلى 8 MiB لدعم queries المتداخلة بعمق. [#107470](https://github.com/ClickHouse/ClickHouse/pull/107470) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* اشتقاق مجموعة رموز مكتبة C المترجَمة محليًا في مكتبات Rust الثابتة من المكتبات المرجعية الفعلية بدلًا من قائمة سماح تُدار يدويًا، بحيث تشمل جميع builtins الخاصة بـ compiler-rt ودوال libm الخاصة بالمنصة. [#107571](https://github.com/ClickHouse/ClickHouse/pull/107571) ([Raúl Marín](https://github.com/Algunenano)).
* تحويل imageَي server و Keeper من distroless إلى `gcr.io/distroless/base-nossl-debian13` بحيث لا يضمّان إلا المكتبات التي يرتبط بها ClickHouse فعليًا، مع التوقف عن pulling المكتبات التي نربطها نحن ربطًا ثابتًا. [#107837](https://github.com/ClickHouse/ClickHouse/pull/107837) ([Rahul Nair](https://github.com/motsc)).
* إعادة تفعيل 50 من الاختبارات عديمة الحالة على macOS (`arm_darwin`) التي كان يجري تخطيها لأنها stale، واستخدام `fsync` بدلًا من `F_FULLFSYNC` لمزامنة directory على macOS. [#107887](https://github.com/ClickHouse/ClickHouse/pull/107887) ([Raúl Marín](https://github.com/Algunenano)).

<div id="265">
  ### إصدار ClickHouse 26.5، 2026-05-21. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.5/)، [الفيديو](https://www.youtube.com/watch?v=P1IDAvsi7p8)
</div>

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

* تم تغيير القيم الافتراضية لكلٍّ من `date_time_input_format` و`cast_string_to_date_time_mode` من `basic` إلى `best_effort`. وقد تنجح الآن افتراضيًا الاستعلامات التي كانت تفشل سابقًا في تحليل سلاسل datetime غير الأساسية (مثل `2024 April 4` و`Apr 15, 2020 10:30:00`). وللاحتفاظ بسلوك التحليل الصارم السابق، اضبط هذين الإعدادين على `basic` (أو استخدم `compatibility`). [#89334](https://github.com/ClickHouse/ClickHouse/pull/89334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح اسم عنصر Tuple وهو `null` محظورًا الآن لأنه يتعارض مع اسم subcolumn المستخدم لخرائط null في Nullable، مما يؤدي إلى التباس في تحديد subcolumn. [#98377](https://github.com/ClickHouse/ClickHouse/pull/98377) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة الإعدادات `dynamic_disk_allow_from_env` و`dynamic_disk_allow_from_zk` و`dynamic_disk_allow_include` لمنع استخدام `from_env` و`from_zk` و`include` في dynamic disks. ويُعدّ هذا تغييرًا غير متوافق مع الإصدارات السابقة لأنه يحظر افتراضيًا سلوكًا كان مسموحًا به افتراضيًا من قبل. [#99138](https://github.com/ClickHouse/ClickHouse/pull/99138) ([Kseniia Sumarokova](https://github.com/kssenii)).
* لم يعد بإمكانك استخدام Parquet reader وwriter القديمين المعتمدين على Arrow. وسيُستخدم التنفيذ native بدلًا من ذلك. [#100949](https://github.com/ClickHouse/ClickHouse/pull/100949) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `SHOW CREATE TABLE t` يفضّل الآن temporary table عندما توجد table دائمة وtemporary table كلتاهما باسم `t` ولم يتم تحديد database، بما يتوافق مع السلوك الحالي لـ `DESCRIBE TABLE`. بالإضافة إلى ذلك، أصبح syntax الخاص بـ `DESCRIBE TEMPORARY TABLE` مدعومًا الآن. [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم خفض القيمة الافتراضية لـ `http_max_fields` من 1,000,000 إلى 1,000 و`http_max_field_name_size` من 128 KB إلى 4 KB للحد من memory usage قبل authentication بواسطة HTTP connections. وتمت إضافة الإعدادين `http_max_request_header_size` و`http_headers_read_timeout`. ويمكن للمستخدمين الذين يعتمدون على الحدود الأعلى السابقة استعادة هذه القيم عبر الإعدادات. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).
* تمت إضافة column متداخلة باسم `histograms` إلى `system.metric_log` تلتقط snapshot لكل مُدرَّج تكراري metric مسجلة في كل row، مع إعداد جديد هو `system_metric_log_show_zero_values_in_histograms` للتحكم في إخراج القيم الصفرية. وهذا يجعل table ‏`system.histogram_metric_log` مهملة. [#103770](https://github.com/ClickHouse/ClickHouse/pull/103770) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أصبح `CAST` إلى `DateTime` أو `DateTime64` من دون time zone صريحة يحافظ الآن على time zone الخاصة بـ argument المصدر (عندما يكون المصدر من نوع `DateTime`/`DateTime64` مع time zone صريحة)، بما يتوافق مع سلوك الدالتين `toDateTime`/`toDateTime64`. يُغلق [#55072](https://github.com/ClickHouse/ClickHouse/issues/55072). [#104433](https://github.com/ClickHouse/ClickHouse/pull/104433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُزيلت table function ‏`kql`. استخدم `SET dialect = 'kusto'` لتشغيل الاستعلامات بلهجة KQL. [#105101](https://github.com/ClickHouse/ClickHouse/pull/105101) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت window functions ‏`RANK` و`DENSE_RANK` ترفض arguments وتُطلق `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`، بما يتوافق مع معيار SQL. في السابق، كانت الاستعلامات مثل `RANK(x) OVER (ORDER BY id)` تُقبل بصمت مع تجاهل argument. ولاستعادة السلوك المتساهل السابق، اضبط `allow_rank_dense_rank_arguments = 1`. يُغلق [#49526](https://github.com/ClickHouse/ClickHouse/issues/49526). [#104324](https://github.com/ClickHouse/ClickHouse/pull/104324) ([Groene AI](https://github.com/groeneai)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* أُضيف إعداد جديد `max_bytes_ratio_before_external_join`، مماثلًا لـ `max_bytes_ratio_before_external_group_by` و`max_bytes_ratio_before_external_sort`. ويعبّر عن عتبة النقل إلى disk لعمليات hash join كنسبة من الذاكرة المتاحة؛ وعند استخدامه مع القيمة المطلقة `max_bytes_before_external_join`، تُطبَّق العتبة الأصغر الناتجة. [#103862](https://github.com/ClickHouse/ClickHouse/pull/103862) ([Alexey Milovidov](https://github.com/alexey-milovidov)). أصبح الإعداد `max_bytes_ratio_before_external_join` مفعّلًا افتراضيًا الآن بالقيمة 0.5، على غرار `max_bytes_ratio_before_external_group_by` و`max_bytes_ratio_before_external_sort`. وتنتقل عمليات hash join تلقائيًا إلى grace hash join بمجرد أن تتجاوز بيانات الجانب الأيمن نصف ذاكرة النظام المتاحة (عند تهيئة حدود الذاكرة). [#104285](https://github.com/ClickHouse/ClickHouse/pull/104285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت table function `filesystem`. وهي تتيح تمثيل بنية directory على شكل table، والاستعلام عن metadata الملفات ومحتوياتها باستخدام SQL. طُرحت في الأصل في [#42039](https://github.com/ClickHouse/ClickHouse/pull/42039) بواسطة @perst20. راجع [#42039](https://github.com/ClickHouse/ClickHouse/issues/42039). وراجع [#50208](https://github.com/ClickHouse/ClickHouse/issues/50208). [#53610](https://github.com/ClickHouse/ClickHouse/pull/53610) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح من الممكن تمرير أسماء الدوال مباشرةً إلى الدوال عالية الرتبة مثل `arrayMap` و`arrayFilter` وغيرها. على سبيل المثال، أصبح `arrayMap(negate, [1, 2, 3])` الآن مكافئًا لـ `arrayMap(x -> negate(x), [1, 2, 3])`. [#101033](https://github.com/ClickHouse/ClickHouse/pull/101033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإعداد `send_table_structure_on_insert_with_inline_data` وخيار client ‏`--inline-insert-data` للسماح لـ server بتحليل بيانات INSERT المضمّنة بنفسه عبر native protocol، ما يجنّب جولة الذهاب والإياب اللازمة لاستقبال بنية table ويحسّن الأداء عند وجود عدد كبير من عمليات insert الصغيرة. [#101034](https://github.com/ClickHouse/ClickHouse/pull/101034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت الدالتان `tokenizeQuery` و`highlightQuery` لتجزئة SQL query إلى tokens وإبراز الصياغة. تُرجع `tokenizeQuery` tokens الخاصة بالمحلل المعجمي مع offsets بالبايت وأنواع tokens؛ وتُرجع `highlightQuery` ranges لإبراز الصياغة استنادًا إلى parser، مع فئات الإبراز (keyword وidentifier وfunction وnumber وstring وغير ذلك). [#101054](https://github.com/ClickHouse/ClickHouse/pull/101054) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الإعداد `url_base` لحل relative URLs في table function ‏`url` وtable engine ‏`URL`، وفق دلالات RFC 3986. [#101113](https://github.com/ClickHouse/ClickHouse/pull/101113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم القيم السالبة في clause ‏`LIMIT BY` لاختيار rows من *نهاية* كل مجموعة بدلًا من بدايتها. على سبيل المثال، يعيد `LIMIT -2 BY id` آخر صفّين لكل `id`. كما أن offsets السالبة (`LIMIT -1 OFFSET -1 BY id`) والإشارات المختلطة (`LIMIT -2 OFFSET 1 BY id`) مدعومة أيضًا. [#103222](https://github.com/ClickHouse/ClickHouse/pull/103222) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أُضيف دعم للدالة `json_value` للإخراج باستخدام `tuple` و`array` لتحسين أداء استعلامات JSON المتعددة. [#78362](https://github.com/ClickHouse/ClickHouse/pull/78362) ([kevinyhzou](https://github.com/KevinyhZou)). وأُضيف أيضًا دعم وسيط JSONPath متعدد المسارات من نوع `Tuple`/`Array` في `JSON_VALUE` و`JSON_EXISTS` و`JSON_QUERY`، بواسطة @KevinyhZou. [#101102](https://github.com/ClickHouse/ClickHouse/pull/101102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت مَعلمة جديدة باسم `kafka_autodetect_client_rack`. عند ضبطها، يُكتشف Availability Zone عبر إمكانات السحابة ويُمرَّر على أنه المَعلمة `client.rack` في `librdkafka` لتجنّب الاتصالات العابرة للمناطق. [#81323](https://github.com/ClickHouse/ClickHouse/pull/81323) ([Ilya Golshtein](https://github.com/ilejn)).
* أُضيف نوع الحدث `Read` إلى `system.blob_storage_log` لتتبّع عمليات القراءة من object storage، ويتحكم فيه الإعداد الجديد `enable_blob_storage_log_for_read_operations`. [#96867](https://github.com/ClickHouse/ClickHouse/pull/96867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن للمستخدمين الآن الاطّلاع على watches الخاصة بـ ZooKeeper التي يُصدرها `clickhouse-server` باستخدام الجدول الجديد `system.zookeeper_watches`. [#99277](https://github.com/ClickHouse/ClickHouse/pull/99277) ([Den Kalantaevskii](https://github.com/Diskein)).
* أُضيف حدث ملف التعريف `Shards` الذي يحسب عدد shards المشاركة في distributed queries، مع جمعها عبر جميع الجداول. [#99470](https://github.com/ClickHouse/ClickHouse/pull/99470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن الآن تعريف دوال `WASM` المعرّفة من المستخدم على أنها `DETERMINISTIC`، لتخضع لطيّ الثوابت. [#100005](https://github.com/ClickHouse/ClickHouse/pull/100005) ([Vasily Chekalkin](https://github.com/bacek)).
* أُضيف الإعداد `parallel_replicas_prefer_local_replica`: عند تعطيله، تُختار parallel replicas بالكامل وفقًا لخوارزمية load balancing، مما يتيح توجيه الاستعلامات حتى مع `max_parallel_replicas = 1` إلى مضيف آخر. [#100139](https://github.com/ClickHouse/ClickHouse/pull/100139) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيفت إعدادات الخادم `{disk,storage,http}_connections_rcvbuf` و`{disk,storage,http}_connections_sndbuf` للتحكم في أحجام مخازن مقابس TCP على اتصالات HTTP الصادرة، بما يتيح للمشغّلين تجاوز autotuning الخاص بالنواة ووضع حدّ لاستخدام الذاكرة لكل اتصال. [#100478](https://github.com/ClickHouse/ClickHouse/pull/100478) ([Sema Checherinda](https://github.com/CheSema)).
* دعم `CREATE OR REPLACE MATERIALIZED VIEW` بنفس دلالات الاستبدال الذرّي الخاصة بـ `CREATE OR REPLACE TABLE`. يعمل ذلك مع الجداول الداخلية، وجداول `TO`، و`POPULATE`، و`REFRESH`، و`ON CLUSTER`. [#100539](https://github.com/ClickHouse/ClickHouse/pull/100539) ([DQ](https://github.com/il9ue)).
* أُضيفت histogram metrics `s3_read_request_duration_microseconds` و`s3_read_request_bytes` لمراقبة مدة اتصال طلبات GET إلى S3 وحجم البايتات المستهلكة، وهي متاحة في `system.histogram_metrics` وعبر Prometheus endpoint. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* أُضيفت table engines `Paimon` و`PaimonS3` و`PaimonAzure` و`PaimonHDFS` و`PaimonLocal` مع دعم Incremental read بالاستناد إلى تتبّع تقدّم snapshots الخاصة بـ Keeper. يعيد الوضع التزايدي الصفوف الجديدة فقط منذ آخر snapshot معتمدة. كما تتوفر قراءات delta موجَّهة للّقطات عبر `paimon_target_snapshot_id`، وحدود snapshots لكل استعلام عبر `max_consume_snapshots`. ويمكن ضبط metadata refresh في الخلفية عبر `paimon_metadata_refresh_interval_sec`. ويخضع ذلك للإعداد `allow_experimental_paimon_storage_engine`. [#102343](https://github.com/ClickHouse/ClickHouse/pull/102343) ([XiaoBinMu](https://github.com/Binnn-MX)).
* أُضيف إعداد جديد لجدول Kafka باسم `kafka_map_virtual_columns_on_write`. عند تفعيله، تُنتَج الأعمدة المسماة `_key` و`_timestamp` و`_headers.name` و`_headers.value` في مخطط Kafka table على أنها مفتاح رسالة Kafka والطابع الزمني وheaders المقابلة عند `INSERT`، وتُستبعَد من message payload. [#103243](https://github.com/ClickHouse/ClickHouse/pull/103243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف الاستعلامان `SYSTEM PAUSE VIEW [db.]name` و`SYSTEM PAUSE VIEWS` للعروض المادية القابلة للتحديث. وعلى خلاف `SYSTEM STOP VIEW`، لا يقطع `SYSTEM PAUSE VIEW` عملية التحديث الجارية حاليًا — إذ يُسمح للتحديث قيد التنفيذ بأن يكتمل، ولا تُمنَع إلا عمليات التحديث اللاحقة. ويمكن التراجع عن ذلك باستخدام `SYSTEM START VIEW` أو `SYSTEM START VIEWS`، اللذين يزيلان الآن، بصورة موحّدة، حالتي الإيقاف والإيقاف المؤقت معًا. [#103252](https://github.com/ClickHouse/ClickHouse/pull/103252) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أُضيفت الدالة `regexpPosition` (مع الأسماء البديلة المتوافقة مع PostgreSQL: `regexpInstr` و`regexp_instr`) التي تُرجع موضع البايت للمطابقة رقم N للتعبير النمطي داخل سلسلة نصية. وهي تدعم إزاحة البداية، ووضع الإرجاع بعد المطابقة، وأعلام التعبير النمطي، واختيار مجموعة الالتقاط. [#104172](https://github.com/ClickHouse/ClickHouse/pull/104172) ([Abhinav Agarwal](https://github.com/aagarwal-gtr)).
* أُضيفت الدالتان الجديدتان `isPrime` و`isProbablePrime` للتحقق من أولية الأعداد. تُرجع `isPrime` نتيجة دقيقة للأعداد الصحيحة غير الموقعة حتى `UInt64`. كما تدعم `isProbablePrime` أيضًا `UInt128` و`UInt256`؛ وبالنسبة إلى هذه الأنواع الأوسع، فإن `0` تعني أن العدد مركب قطعًا، و`1` تعني أنه أولي على الأرجح. وتتحكم الوسيطة الاختيارية الثانية في `isProbablePrime`، وهي `rounds`، بدرجة الثقة (بحد أقصى `256`)؛ إذ يحد الإعداد الافتراضي البالغ `25` جولة من معدل الإيجابيات الكاذبة لعدد مركب عشوائي إلى أقل من `10^-15`، كما يمكن إلغاء `isProbablePrime`. [#104234](https://github.com/ClickHouse/ClickHouse/pull/104234) ([Nihal Z. Miaji](https://github.com/nihalzp)). [#104639](https://github.com/ClickHouse/ClickHouse/pull/104639) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#104806](https://github.com/ClickHouse/ClickHouse/pull/104806) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أصبح `clear` و`/clear` الآن يمسحان الطرفية في أدوات سطر الأوامر الخاصة بـ ClickHouse بدلًا من تنفيذهما على أنهما استعلام خاطئ. [#104318](https://github.com/ClickHouse/ClickHouse/pull/104318) ([Tyler Hannan](https://github.com/tylerhannan)).
* أصبح يُسمح الآن لدالة الجدول `file` بقبول `Array(String)` من المسارات في استعلامات `SELECT`. [#104442](https://github.com/ClickHouse/ClickHouse/pull/104442) ([Yue](https://github.com/niyue)).
* أُضيف العمودان `deterministic` و`higher_order` إلى جدول `system.functions`. [#104479](https://github.com/ClickHouse/ClickHouse/pull/104479) ([Pedro Ferreira](https://github.com/PedroTadim)).
* أُضيف مُعامِل اختياري لمتغير الترميز إلى `bech32Encode` (`bech32` / `bech32m`) ووضع فك ترميز خام إلى `bech32Decode` لترميز العناوين غير الخاصة بـ SegWit (مثل Cosmos SDK وInjective وOsmosis). [#98986](https://github.com/ClickHouse/ClickHouse/pull/98986) ([Yash ](https://github.com/Onyx2406)).
* يمكنك الآن كتابة البيانات بتنسيق `AvroConfluent`، الذي كان سابقًا مخصصًا للإدخال فقط. يتيح ذلك إنتاج رسائل Avro مؤطّرة بواسطة Confluent Schema Registry مباشرةً من ClickHouse، مثلًا عند الكتابة إلى Kafka. ويُسجَّل المخطط تلقائيًا في سجل المخططات. استخدم الإعداد الجديد `output_format_avro_confluent_subject` لتحديد اسم الـ subject. [#101935](https://github.com/ClickHouse/ClickHouse/pull/101935) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* أُضيفت الدالة `prettyPrintJSON` لتنسيق سلسلة JSON إلى صيغة مقروءة للبشر. وهي مفيدة للوحات المعلومات أو التقارير، حيث كان تحسين التنسيق يتطلب سابقًا خطوة إضافية على جانب العميل. ويغلق ذلك [#62523](https://github.com/ClickHouse/ClickHouse/issues/62523). [#102594](https://github.com/ClickHouse/ClickHouse/pull/102594) ([Dmitry Prokofyev](https://github.com/prokofyevDmitry)).
* تمت إضافة `STRING_AGG` كاسم مستعار غير حساس لحالة الأحرف لـ `groupConcat` للتوافق مع PostgreSQL / معيار SQL. [#105125](https://github.com/ClickHouse/ClickHouse/pull/105125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح الآن بالإمكان تخزين نتائج كل استعلام فرعي مؤقتًا بشكل مستقل باستخدام `SETTINGS use_query_cache = true` في استعلامات فرعية محددة، من دون تخزين الاستعلام الخارجي بالكامل مؤقتًا. كما يتيح الإعداد الجديد `query_cache_for_subqueries = true` تعميم `use_query_cache` على جميع الاستعلامات الفرعية دفعةً واحدة. ملاحظة: لم يعد `use_query_cache` في الاستعلام الخارجي يُطبَّق تلقائيًا على الاستعلامات الفرعية. [#99804](https://github.com/ClickHouse/ClickHouse/pull/99804) ([Vincent Voyer](https://github.com/vvo)).
* تمت إضافة تمييز الصياغة البرمجية المعتمد على المحلّل المعجمي إلى محرر الاستعلامات في واجهة الويب (`play.html`)، على غرار ألوان `clickhouse-client`. [#105105](https://github.com/ClickHouse/ClickHouse/pull/105105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* أُضيفت واجهة طرفية تجريبية عبر الويب عند `/webterminal` توفّر جلسة `clickhouse-client` تفاعلية في المتصفح عبر WebSocket. وهي معطّلة افتراضيًا؛ ويمكن تفعيلها باستخدام إعداد الخادم `allow_experimental_webterminal`. اطّلع عليها [هنا](https://play.clickhouse.com/webterminal?user=play). [#100277](https://github.com/ClickHouse/ClickHouse/pull/100277) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105191](https://github.com/ClickHouse/ClickHouse/pull/105191) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105059](https://github.com/ClickHouse/ClickHouse/pull/105059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح المحرّك `Kafka2` (تجريبي، مع تخزين الإزاحات المستند إلى Keeper) يدعم الآن استعلامات `SELECT` المباشرة والإعداد `kafka_commit_on_select`. [#100276](https://github.com/ClickHouse/ClickHouse/pull/100276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن الآن لـ UDFs الخاصة بـ `WASM` إجراء تحويل قسري لمزيد من الأنواع العددية: من الأعداد الصحيحة الأصغر إلى الأعداد الصحيحة الأوسع (مثل `Int8` إلى `UInt64`)، ومن أي عدد صحيح إلى عدد ذي فاصلة عائمة (مثل `Int32` إلى `Float32`). [#100435](https://github.com/ClickHouse/ClickHouse/pull/100435) ([Vasily Chekalkin](https://github.com/bacek)).
* إضافة دعم الدالة `LIKE` في استعلام `DELETE FROM system.webassembly_modules`. [#104397](https://github.com/ClickHouse/ClickHouse/pull/104397) ([Vladimir Cherkasov](https://github.com/vdimir)).
* دعم الأنواع الجغرافية في `Iceberg`. [#103113](https://github.com/ClickHouse/ClickHouse/pull/103113) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إضافة دعم العبارات المُحضّرة إلى خادم ArrowFlight SQL. [#103047](https://github.com/ClickHouse/ClickHouse/pull/103047) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تحسين متانة محلّل KQL (لدعم لغة Kusto) عبر الحفاظ على عمق المحلّل وعدادات التراجع عبر مراحل محلّل KQL، بحيث تُتتبَّع حدود المحلّل بصورة متسقة في استعلامات KQL المعقّدة. [#103528](https://github.com/ClickHouse/ClickHouse/pull/103528) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* أَعِد استخدام metadata cache الخاصة بتذييل Parquet عند قراءة ملفات Parquet المحلية عبر table function ‏`file` أو table engine ‏`File`. سابقًا، لم يكن يُستفاد من هذه cache إلا مع backends الخاصة بـ object storage. [#104260](https://github.com/ClickHouse/ClickHouse/pull/104260) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* مرِّر `ORDER BY ... LIMIT n` عبر عمليات JOIN من نوع `LEFT`/`RIGHT` عندما لا يشير مفتاح الفرز إلا إلى columns من الجانب الذي يحتفظ به JOIN، ما يقيِّد عدد rows التي يجب أن يُنتجها الإدخال من ذلك الجانب قبل تنفيذ JOIN. ويتحكم في ذلك الإعداد الجديد `query_plan_top_k_through_join` (مُمكَّن افتراضيًا). [#104268](https://github.com/ClickHouse/ClickHouse/pull/104268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* فعِّل الإعدادين `use_top_k_dynamic_filtering` و`use_skip_indexes_for_top_k` افتراضيًا لتحسين أداء queries من نوع `ORDER BY ... LIMIT N`. [#99537](https://github.com/ClickHouse/ClickHouse/pull/99537) ([Alexey Milovidov](https://github.com/alexey-milovidov)). واقصر `use_top_k_dynamic_filtering` افتراضيًا على columns الفرز ذات الطول الثابت، لتجنّب التراجعات في queries من نوع `ORDER BY <var-length-column> LIMIT N` عندما تتجاوز تكلفة مقارنة threshold لكل row وفورات I/O. ويظل السلوك السابق متاحًا عبر الإعداد الجديد `use_top_k_dynamic_filtering_for_variable_length_types`. [#104216](https://github.com/ClickHouse/ClickHouse/pull/104216) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدم ميزة oversize-arena في `jemalloc` لتقليل أخطاء الصفحات. [#103958](https://github.com/ClickHouse/ClickHouse/pull/103958) ([Nikita Taranov](https://github.com/nickitat)).
* قلِّل عدد streams النشطة بالتزامن في `UNION ALL` لتقليل Peak memory usage. [#100176](https://github.com/ClickHouse/ClickHouse/pull/100176) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* حسِّن userspace page cache قليلًا. [#100300](https://github.com/ClickHouse/ClickHouse/pull/100300) ([Alexey Milovidov](https://github.com/alexey-milovidov)). والآن أصبحت userspace page cache أفضل دائمًا من OS page cache.
* أصبحت cold reads من object storage عبر userspace page cache (`use_page_cache_for_object_storage = 1`) أسرع بكثير، لأن حالات الإخفاق المتتالية في cache تُدمج الآن في HTTP request واحد بدلًا من طلب واحد لكل block بحجم `page_cache_block_size`. [#104230](https://github.com/ClickHouse/ClickHouse/pull/104230) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* سرِّع index analysis الذي يتضمن CAST وتطبيق FUNCTION. يُغلق [#55653](https://github.com/ClickHouse/ClickHouse/issues/55653). [#100366](https://github.com/ClickHouse/ClickHouse/pull/100366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* سرِّع queries الضخمة على جداول `Merge` عبر عدد هائل من underlying tables. يُغلق [#32465](https://github.com/ClickHouse/ClickHouse/issues/32465). [#100369](https://github.com/ClickHouse/ClickHouse/pull/100369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أزِل `vtable` من types حقول الإعدادات، ما يقلّل حجم نسخ `Settings` بنحو 28x ويحسّن تموضع cache عبر typed-array layout لجميع أنواع الإعدادات. [#102269](https://github.com/ClickHouse/ClickHouse/pull/102269) ([Raúl Marín](https://github.com/Algunenano)).
* أضِف الإعدادين `max_threads_min_free_memory_per_thread` و`max_insert_threads_min_free_memory_per_thread` لتقليل query parallelism تلقائيًا عندما تنخفض الذاكرة الحرة على server. [#100383](https://github.com/ClickHouse/ClickHouse/pull/100383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قلِّل memory usage على الأنظمة منخفضة الذاكرة (\< 4 GiB). [#100389](https://github.com/ClickHouse/ClickHouse/pull/100389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `OptimizeTrivialGroupByLimitPass`. في استعلامات `SELECT ... FROM t GROUP BY k LIMIT n` البسيطة (من دون `HAVING` أو `ORDER BY` أو دوال النوافذ)، يضبط المحلل الآن `max_rows_to_group_by = n + offset` مع `group_by_overflow_mode = 'any'`، بحيث يتوقف التجميع بمجرد إنتاج `n` مفاتيح مميزة بدلًا من تجميع كامل الإدخال. ويتحكم في ذلك الإعداد الجديد `optimize_trivial_group_by_limit_query` (مُمكَّن افتراضيًا). [#104473](https://github.com/ClickHouse/ClickHouse/pull/104473) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* فهرس min-max ضمني على مستوى الـ granule للعمودين الافتراضيين `_part_offset` و `_block_number`، بما في ذلك الإسقاطات. يتيح استبعادًا سريعًا للـ granules استنادًا إلى شروط الأعمدة الافتراضية. [#103952](https://github.com/ClickHouse/ClickHouse/pull/103952) ([Mikhail Artemenko](https://github.com/Michicosun)). [#104746](https://github.com/ClickHouse/ClickHouse/pull/104746) ([Mikhail Artemenko](https://github.com/Michicosun)). [#105137](https://github.com/ClickHouse/ClickHouse/pull/105137) ([Mikhail Artemenko](https://github.com/Michicosun)).
* بالنسبة إلى عائلة أساليب التجميع `prealloc_serialized`، تُحسب قيم hash لكل صف مسبقًا أثناء تمريرة التسلسل الدفعي، ثم تُستخدم من أجل (أ) تجنب إعادة حساب hash في `emplaceKey`/`findKey` و(ب) إجراء software prefetch لـ bucket الخاصة بالصف التالي. يسرّع ذلك التجميع متعدد المفاتيح للسلاسل/البيانات المُسلسلة عبر تقليل زمن الانتظار الناتج عن إخفاقات cache في hash table. [#104475](https://github.com/ClickHouse/ClickHouse/pull/104475) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* query condition cache لجداول `Iceberg`. [#102115](https://github.com/ClickHouse/ClickHouse/pull/102115) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تحسين `cramersV` و`cramersVBiasCorrected` و`theilsU` و`contingency` عند استخدامها مع دوال النوافذ. يُغلق [#83521](https://github.com/ClickHouse/ClickHouse/issues/83521). [#93384](https://github.com/ClickHouse/ClickHouse/pull/93384) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أُضيف تحسين للاستعلامات يعيد كتابة `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), N)` إلى `dictGet('dict', 'a', key)`، ما يتجنب جلب سمات Dictionary غير الضرورية. ويتحكم في ذلك الإعداد `optimize_dictget_tuple_element` (مُمكَّن افتراضيًا). [#100186](https://github.com/ClickHouse/ClickHouse/pull/100186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تفعيل buffering لخطوات الفرز على initiator من أجل distributed queries التي تتضمن فرزًا. [#100661](https://github.com/ClickHouse/ClickHouse/pull/100661) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين في الأداء لـ `partial_merge` JOIN. [#100945](https://github.com/ClickHouse/ClickHouse/pull/100945) ([Artem Zuikov](https://github.com/4ertus2)).
* تقليل طفيف في التخصيص الزائد للذاكرة في `partial_merge` JOIN. [#100963](https://github.com/ClickHouse/ClickHouse/pull/100963) ([Artem Zuikov](https://github.com/4ertus2)).
* تحسين allocations/deallocations عبر التخزين المؤقت لإعدادات sampling بدلًا من اجتياز التسلسل الهرمي الكامل لمتعقّب الذاكرة. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* تقليل overhead تخصيص الذاكرة أثناء multipart upload إلى S3 عبر التخصيص المسبق لحاويات التتبع الداخلية. [#101799](https://github.com/ClickHouse/ClickHouse/pull/101799) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* إضافة software prefetch في مرحلة probe الخاصة بـ hash join لتقليل زمن الوصول إلى الذاكرة مع جداول hash الكبيرة، ويتحكم في ذلك الإعداد `enable_software_prefetch_in_join`. [#102444](https://github.com/ClickHouse/ClickHouse/pull/102444) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* تحسين بنية `MemoryTracker`، مما حسّن أداءه بنحو \~25%. [#103464](https://github.com/ClickHouse/ClickHouse/pull/103464) ([Azat Khuzhin](https://github.com/azat)).
* إعادة كتابة predicates `coalesce(a, b, ...) <op> const` و `ifNull(a, b) <op> const` قبل index analysis، بحيث تتمكن primary key و skip indexes لكل عمود في كل argument من استبعاد granules. ويتحكم في ذلك الإعداد الجديد `allow_key_condition_coalesce_rewrite` (مفعّل افتراضيًا). [#103468](https://github.com/ClickHouse/ClickHouse/pull/103468) ([Manuel](https://github.com/raimannma)).
* تحسّن query performance بشكل ملحوظ عند قراءة Iceberg catalogs التي تحتوي على ملفات metadata كبيرة بتنسيق JSON، وذلك من خلال تحسين معالجة الشرطات المائلة المُهرَّبة. [#103998](https://github.com/ClickHouse/ClickHouse/pull/103998) ([Mohaidoss](https://github.com/mohaidoss)).
* تجنّب overhead الخاص بـ index uncompressed cache عند تعطيل cache (server setting `index_uncompressed_cache_size = 0`، وهي القيمة default). [#104063](https://github.com/ClickHouse/ClickHouse/pull/104063) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح queries من نوع `ORDER BY ... LIMIT` ذات الحد الصغير التي كانت تقرأ granules أكثر من اللازم عند اقترانها بـ filter غير انتقائي في `WHERE`. سابقًا، كان أي filter فوق قراءة مرتبة يعطّل تقسيم المهام لكل نطاق علامات، بحيث لا يتمكن pipeline من الإلغاء بين granules وينتهي به الأمر إلى قراءة part بالكامل لكل stream. [#104112](https://github.com/ClickHouse/ClickHouse/pull/104112) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح عدم إعادة استخدام cache لأحجام hash table بعد إعادة ترتيب جانبي JOIN. [#104131](https://github.com/ClickHouse/ClickHouse/pull/104131) ([Nikita Taranov](https://github.com/nickitat)).
* عند تفعيل `fsync_after_insert`، أصبح تنفيذ fsync لملفات part يتم in parallel باستخدام IO thread pool، مما يسرّع إتمام insert في wide tables. وأصبح تحميل ClickBench الكامل لجدول `hits` أسرع بنحو 22%. [#104137](https://github.com/ClickHouse/ClickHouse/pull/104137) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحويل `find_first_symbols` و `find_first_not_symbols` و `find_last_symbols_or_null` و `find_last_not_symbols_or_null` و `splitInto` إلى تنفيذ متّجه على AArch64 باستخدام NEON. سابقًا، لم يكن لدى هذه helpers مسار SIMD إلا على x86 (SSE2 / SSE4.2)، وكانت تنتقل إلى حلقة scalar على ARM. يسرّع ذلك parsing لملفات TSV بنحو \~2x، ودوال URL و `splitByChar` بنحو \~1.3x على dataset `hits` من ClickBench؛ بينما يتراجع parsing الكثيف جدًا لـ JSON (بتواتر حقول أقل من 16 بايت) بشكل طفيف، بما يتماشى مع المقايضة الحالية في SSE2. [#104228](https://github.com/ClickHouse/ClickHouse/pull/104228) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت قراءة data عبر عمود `ALIAS` بسيط (مثل `some_alias['key']` حيث `some_alias ALIAS m`) تمر عبر مسار القراءة نفسه لكل subcolumn كما لو تمت الإشارة إلى underlying column مباشرةً، مما يعيد وفورات I/O الكبيرة لأعمدة `Map` و `Array` و `Tuple` و `Nullable` المستعارة. [#104245](https://github.com/ClickHouse/ClickHouse/pull/104245) ([Raúl Marín](https://github.com/Algunenano)).
* تقليل التنافس على الأقفال في مسار القراءة Asynchronous من نظام الملفات البعيد عبر جعل `AsyncReadCounters` الخاص بكل query بلا أقفال. [#104374](https://github.com/ClickHouse/ClickHouse/pull/104374) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* query plan أفضل قليلًا لعملية المسح المرتب لـ projections. [#103723](https://github.com/ClickHouse/ClickHouse/pull/103723) ([Mikhail Artemenko](https://github.com/Michicosun)).
* توسيع `optimizeUseNormalProjections` ليتعامل أيضًا مع حالة محددة لم يُرشَّح فيها شيء، لكن sorting key الخاص بـ projection يمكنه إزالة خطوة الفرز من query plan. [#104680](https://github.com/ClickHouse/ClickHouse/pull/104680) ([Mikhail Artemenko](https://github.com/Michicosun)).
* السماح لكتابة الاختصار `json.path[]` وتلميحات الأنواع الصريحة بالعمل بشكل صحيح على مسارات `JSON` محددة النوع. [#99179](https://github.com/ClickHouse/ClickHouse/pull/99179) ([Pavel Kruglov](https://github.com/Avogar)).
* تحسين `json.path[N].nested.path` (التي تتوسع إلى `tupleElement(tupleElement(json.path[N], 'nested'), 'path')`) إلى `json.path[].nested.path[N]`، ما يؤدي إلى قراءة بيانات أقل بكثير. [#99802](https://github.com/ClickHouse/ClickHouse/pull/99802) ([Pavel Kruglov](https://github.com/Avogar)).
* تحسين فحوصات الوصول لـ `SHOW TABLES` في `system.parts` عبر إخراج فحوصات امتيازات مستوى قاعدة البيانات من الحلقة الخاصة بكل جدول. [#100860](https://github.com/ClickHouse/ClickHouse/pull/100860) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إزالة فحص وصول زائد لكل جدول لـ `SHOW TABLES` في المسار السريع `SELECT name` / `SELECT database, name` في `system.tables`. [#100881](https://github.com/ClickHouse/ClickHouse/pull/100881) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تمكين تجميع JIT على macOS. [#100947](https://github.com/ClickHouse/ClickHouse/pull/100947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تخطي تأجيل سياسة الصفوف بعد `FINAL` عندما تعتمد فقط على أعمدة مفتاح الفرز وتكون حتمية، وكذلك تخطي تأجيل `PREWHERE` المقابل الذي كانت سياسة الصفوف تفرضه في هذه الحالة. [#102884](https://github.com/ClickHouse/ClickHouse/pull/102884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إضافة دعم `hasAny` و`hasAll` كمسندات ترشيح في الفهارس النصية. [#103266](https://github.com/ClickHouse/ClickHouse/pull/103266) ([Anton Popov](https://github.com/CurtizJ)).
* توجيه حالة Heap طويلة العمر في MergeTree (البيانات الوصفية لكل part ولكل table) إلى arena مخصصة في jemalloc، مع إتاحتها عبر المقاييس غير المتزامنة `jemalloc.mergetree_arena.*`. يقلل ذلك من تجزئة الـ arena الافتراضية في حالات التشغيل المستقرة، ويمنع العناصر الباقية لكل part من تثبيت صفحات كان يمكن أن تتحلل لولا ذلك. [#104136](https://github.com/ClickHouse/ClickHouse/pull/104136) ([Raúl Marín](https://github.com/Algunenano)).
* تحسين التعامل مع timeout في client الخاص بـ ZooKeeper تحت الأحمال العالية عندما تُرسل طلبات كثيرة بأسلوب pipelining ضمن جلسة واحدة. يستخدم client الخاص بـ ZooKeeper الآن timeout قائمًا على التقدم: ما دام يتم تلقي أي بيانات من server خلال `session_timeout_ms`، يُمدَّد الانتظار. ويظل هناك حد أقصى صارم قدره `3 * session_timeout_ms` لكل طلب لتقييد زمن الاستجابة لدى المستدعي. يغلق [#100466](https://github.com/ClickHouse/ClickHouse/issues/100466). [#104351](https://github.com/ClickHouse/ClickHouse/pull/104351) ([Antonio Andelic](https://github.com/antonio2368)).
* نقل علامات trace الخاصة بكل حدث إلى مصفوفة منفصلة وتخصيصها عند الحاجة، ما يقلل التكلفة الإضافية لـ tracing في `ProfileEvents`. [#105030](https://github.com/ClickHouse/ClickHouse/pull/105030) ([Azat Khuzhin](https://github.com/azat)).
* إضافة `compareTrackAt` إلى `ColumnDecimal`، ما يحسن أداء المقارنة لأعمدة `Decimal`. [#105110](https://github.com/ClickHouse/ClickHouse/pull/105110) ([Artem Zuikov](https://github.com/4ertus2)).
* إضافة تنفيذ SIMD لـ `MD5` (`AVX2` / `AVX512`) يحسب hash لعدة مُدخلات بالتوازي، مما يحسن الإنتاجية. [#105161](https://github.com/ClickHouse/ClickHouse/pull/105161) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="268-improvement">
  #### تحسينات
</div>

* تحسين مخرجات المساعدة في جميع تطبيقات ClickHouse: أصبح `--help` يعيد الآن رمز الخروج `0` بشكل متسق، ويطبع إلى `stdout`، كما يعرض الأمر الأعلى مستوى `clickhouse --help` جميع الأوامر الفرعية. وتمت إضافة الخيار `--no-sudo` إلى `clickhouse start` / `restart` (وهو مفيد في Docker)، بالإضافة إلى الأمر الفرعي `clickhouse help`. استكمالًا لـ [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) من @qoega. [#98148](https://github.com/ClickHouse/ClickHouse/pull/98148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تغيير القيمة الافتراضية للإعداد `input_format_column_name_matching_mode` من `match_case` إلى `auto`. وأصبحت تنسيقات الإدخال التي تطابق أسماء أعمدة الإدخال مع schema الجدول (`JSONEachRow` و`CSVWithNames` و`JSONColumns` و`BSONEachRow` و`RowBinaryWithNames` وغيرها) تحاول أولًا المطابقة الحساسة لحالة الأحرف، ثم تلجأ إلى المطابقة غير الحساسة لحالة الأحرف إذا أخفقت المطابقة الحساسة. ويظل السلوك الصارم السابق محفوظًا ضمن `compatibility`. [#104320](https://github.com/ClickHouse/ClickHouse/pull/104320) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `STDDEV` كاسم مستعار غير حساس لحالة الأحرف لـ `stddevSamp` لتحقيق التوافق مع PostgreSQL/معيار SQL. [#105120](https://github.com/ClickHouse/ClickHouse/pull/105120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `array_to_string` كاسم مستعار غير حساس لحالة الأحرف لـ `arrayStringConcat` لتحقيق التوافق مع PostgreSQL. [#105121](https://github.com/ClickHouse/ClickHouse/pull/105121) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `unnest` كاسم مستعار غير حساس لحالة الأحرف لـ `arrayJoin` لتحقيق التوافق مع PostgreSQL (بصيغة استدعاء الدالة). [#105124](https://github.com/ClickHouse/ClickHouse/pull/105124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يعرض شريط التقدم في `clickhouse-client` الآن البيانات المؤقتة المتعلقة باستخدام القرص (مثل الفرز الخارجي أو aggregation أو JOIN) إلى جانب RAM، بما في ذلك تفصيلًا لكل مضيف في distributed queries. [#105190](https://github.com/ClickHouse/ClickHouse/pull/105190) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `system.predicate_statistics_log`، وهو سجل جديد قائم على أخذ العينات لانتقائية مرشحات predicate وGranule pruning لفهارس MergeTree على مستوى كل query. وهو معطّل افتراضيًا؛ ويمكن تفعيله عبر server setting `predicate_statistics_sample_rate`. وهو مطلوب للتوصيات التلقائية للفهارس والإسقاطات. [#98727](https://github.com/ClickHouse/ClickHouse/pull/98727) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* السماح بتخطي shard المحلي عند غياب الجدول إذا كان `skip_unavailable_shards` مفعّلًا. [#100141](https://github.com/ClickHouse/ClickHouse/pull/100141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة تحذيرات عند بدء التشغيل (تظهر في `system.warnings`) عندما تكون مصفوفة Linux mdraid قيد إعادة المزامنة أو في حالة تدهور، إذ قد يؤثر كلا الأمرين في أداء IO للقرص أو يشير إلى أعطال في الأقراص. [#100941](https://github.com/ClickHouse/ClickHouse/pull/100941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تظهر WASM UDFs الآن في `system.functions` مع `origin` الصحيح (`WasmUserDefined`)، مع تعبئة الأعمدة `syntax` و`arguments` و`returned_value` من metadata نوع ClickHouse الخاصة بها. في السابق، كانت إما مفقودة أو مدرجة مكررة مع `origin` غير صحيح. [#101053](https://github.com/ClickHouse/ClickHouse/pull/101053) ([Vasily Chekalkin](https://github.com/bacek)).
* تدعم table function ‏`generate_series` الآن قيم `step` السالبة لتوليد تسلسلات تنازلية، مثل `SELECT * FROM generate_series(99, 0, -1)`. [#101056](https://github.com/ClickHouse/ClickHouse/pull/101056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناءات `Context has expired` التي كانت تُطلقها بعض الدوال (`dotProduct` و`formatRow` و`structureToCapnProtoSchema`/`structureToProtobufSchema` والدوال المعرفة من قبل المستخدم) عند استخدامها في مسارات التنفيذ المؤجل مثل تعبيرات `DEFAULT`/`MATERIALIZED` وإعدادات محرك الجدول، وذلك بضمان احتفاظ هذه الدوال بمرجع سياق قوي عند الحاجة. [#101109](https://github.com/ClickHouse/ClickHouse/pull/101109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الأخطاء المنطقية الزائفة `Cache limits violated` في الأولويات المُنشأة بحدود صفرية (مثل أولوية filesystem cache لكل query المستخدمة عند تفعيل `enable_filesystem_query_cache_limit`). [#101428](https://github.com/ClickHouse/ClickHouse/pull/101428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* الاكتشاف التلقائي للمنطقة لنقاط النهاية `s3express`. [#101520](https://github.com/ClickHouse/ClickHouse/pull/101520) ([Pradeep Chhetri](https://github.com/chhetripradeep)).
* دعم معرّفات الحقول لملفات البيانات عند الكتابة إلى `Iceberg`. يُغلق [#102322](https://github.com/ClickHouse/ClickHouse/issues/102322). [#102362](https://github.com/ClickHouse/ClickHouse/pull/102362) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أصبحت اللوحة اليسرى في واجهة الويب (`play.html`) قابلة للتمرير بشكل مستقل، وتبقى ظاهرة عند تمرير الصفحة، كما أن النقر على جدول ينقلك إلى منطقة query. [#102498](https://github.com/ClickHouse/ClickHouse/pull/102498) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* السماح بفتح واجهة Play في علامة تبويب جديدة عبر Ctrl/Cmd/Shift+click أو بالنقر الأوسط على شعار ClickHouse في اللوحة اليسرى. [#102501](https://github.com/ClickHouse/ClickHouse/pull/102501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* مقاييس جديدة لتتبّع الذاكرة المستخدمة بواسطة المفاتيح الأساسية للإسقاطات ودرجة حبيبية فهرس الإسقاطات عبر جميع الجداول. [#102587](https://github.com/ClickHouse/ClickHouse/pull/102587) ([Narasimha Pakeer](https://github.com/npakeer)).
* تطبيق `max_network_bandwidth_for_user` و`max_network_bandwidth_for_all_users` على عمليات القراءة والكتابة في نظام الملفات البعيد. [#103080](https://github.com/ClickHouse/ClickHouse/pull/103080) ([Azat Khuzhin](https://github.com/azat)).
* تحسين متانة النسخ الاحتياطية عندما تُحدَّث Refreshable Materialized Views باستمرار، وذلك عبر اتخاذ القرارات بناءً على حالة الجداول في اللقطة بدلًا من حالة عامة مشتركة. [#103384](https://github.com/ClickHouse/ClickHouse/pull/103384) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبح `SELECT * FROM system.databases` يعرض دائمًا قواعد بيانات Data Lake Catalog بغض النظر عن الإعداد `show_data_lake_catalogs_in_system_tables`. في السابق كانت هذه القواعد مخفية افتراضيًا، وهو ما لم يكن متسقًا مع `SHOW DATABASES` الذي كان يعرضها دائمًا. [#103444](https://github.com/ClickHouse/ClickHouse/pull/103444) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* مواءمة القيمة الافتراضية لإعداد الخادم `concurrent_threads_soft_limit_ratio_to_cores` في الشيفرة مع القيمة المضمّنة في `config.xml` (`2`)، بحيث يحدّ مجدول الخيوط المتزامنة الافتراضي `max_min_fair` من خيوط معالجة الاستعلامات إلى ضعف عدد الأنوية افتراضيًا حتى عند عدم استخدام `config.xml` المضمّن. [#103446](https://github.com/ClickHouse/ClickHouse/pull/103446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين متانة أداة sanitizer في الحالات الطرفية الخاصة بالمحلل ودوال السلاسل النصية، عبر التعامل مع الإدخال الفارغ في `getURLScheme`، وتجنّب العمليات الحسابية على المؤشر الصفري في فحوصات `Lexer::nextToken` الخاصة بـ `max_query_size`، والإيقاف المبكر لتقييم التتابع الجزئي UTF-8 عند فراغ سلسلة الإدخال قبل فك الترميز. [#103489](https://github.com/ClickHouse/ClickHouse/pull/103489) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تحسين دقة استنتاج الرتابة للدالتين `divide(0, x)` و `intDiv(0, x)`: في السابق، كان يُبلَّغ عن هاتين الدالتين على أنهما رتيبتان دائمًا، لكن `0 / x` غير رتيبة على أي نطاق يتضمن 0 لأن `0 / 0` غير معرّف (`NaN`/`Inf` في `divide`، واستثناء القسمة على صفر في `intDiv`). وقد أدى هذا الاستنتاج الخاطئ إلى أن يُنتج `KeyCondition::applyMonotonicFunctionsChainToRange` نطاقات يكون فيها `left > right`، ما تسبب في إطلاق `LOGICAL_ERROR` بعنوان `Invalid binary search result in MergeTreeSetIndex` في بُنى debug عندما كان تعبير `IN` / `NOT IN` على المفتاح الأساسي يغلّف المفتاح داخل `divide(0, key)` أو `intDiv(0, key)`. ولم تتأثر بُنى Release، إذ إن هذا التحقق مقيَّد بـ `#ifndef NDEBUG`. [#103621](https://github.com/ClickHouse/ClickHouse/pull/103621) ([Groene AI](https://github.com/groeneai)).
* استبدال المقاييس غير المتزامنة `HTTPConnectionPool*TCP{Rcv,Snd}BufBytes_{p50,p75,p90,p95}` بهيستوغرام قائم على bucket باسم `http_pool_tcp_buf_bytes` (مع labels `group` و `direction`) في `system.histogram_metrics`. مع الإبقاء على المقاييس غير المتزامنة الإجمالية لكل مجموعة. [#103704](https://github.com/ClickHouse/ClickHouse/pull/103704) ([Sema Checherinda](https://github.com/CheSema)).
* أصبحت server settings `{disk,storage,http}_connections_{rcvbuf,sndbuf}` تُعرض الآن على أنها قابلة للتغيير دون إعادة تشغيل في `system.server_settings`. ويمكن تحديث قيمها عبر `SYSTEM RELOAD CONFIG`؛ وكان مسار تطبيقها وقت التشغيل موجودًا بالفعل منذ [#100478](https://github.com/ClickHouse/ClickHouse/issues/100478). [#103772](https://github.com/ClickHouse/ClickHouse/pull/103772) ([Sema Checherinda](https://github.com/CheSema)).
* إضافة دعم للرموز المحلولة (`Array(String)`) في `flameGraph`. [#103816](https://github.com/ClickHouse/ClickHouse/pull/103816) ([Azat Khuzhin](https://github.com/azat)).
* يمكن لعميل CLI الآن تحديد `<rainbow_parentheses>false</rainbow_parentheses>` في config الخاصة به في البيئات التي تتعارض فيها ألوان الطرفية مع الأقواس (وبالمثل، أصبح `clickhouse format` يدعم الآن الخيار `--no_rainbow_parentheses`). [#103851](https://github.com/ClickHouse/ClickHouse/pull/103851) ([Larry Snizek](https://github.com/larry-cdn77)).
* إصلاح البحث غير الحساس لحالة الأحرف في UTF-8 في `MultiVolnitsky` عبر التراجع عن عمليات insert الجزئية لـ `putNGram` عند الفشل، وتحويل needles الفاشلة إلى أدوات بحث احتياطية، ما يمنع الوصول إلى حالة غير متسقة. [#103864](https://github.com/ClickHouse/ClickHouse/pull/103864) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* تنفيذ `sched_getcpu` عبر `rseq` TLS في musl المتوافق مع glibc. [#104016](https://github.com/ClickHouse/ClickHouse/pull/104016) ([Azat Khuzhin](https://github.com/azat)).
* لن يعود العرض المادي القابل للتحديث من النوع Replicated في وضع APPEND إلى إجراء refresh مرتين إذا فُقد الاتصال بـ ZooKeeper لفترة وجيزة أثناء refresh. [#104051](https://github.com/ClickHouse/ClickHouse/pull/104051) ([Michael Kolupaev](https://github.com/al13n321)).
* السماح لـ Distributed tables التي لا تحتوي على قائمة أعمدة صريحة بالتحقق من sharding keys مقابل بنية الجدول البعيد المستنتجة. [#104111](https://github.com/ClickHouse/ClickHouse/pull/104111) ([Yue](https://github.com/niyue)).
* إصلاح REST catalog مع المسار `Azure` `abfss`. [#104120](https://github.com/ClickHouse/ClickHouse/pull/104120) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* مراعاة إعدادات المصادقة `role_arn` و `role_session_name` في عميل S3 snapshot الخاص بـ Keeper، ما يتيح لعمليات رفع snapshot استخدام مصادقة STS المستندة إلى `AssumeRole`. [#104140](https://github.com/ClickHouse/ClickHouse/pull/104140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب في الذاكرة عند تشغيل الاستعلامات التي تستخدم CTEs من نوع `MATERIALIZED`. [#104153](https://github.com/ClickHouse/ClickHouse/pull/104153) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء في `lowerUTF8` / `upperUTF8` عند معالجة مجموعات بيانات كبيرة غير ASCII (مثلًا أثناء إنشاء فهارس النصوص)، حيث كان buffer الإخراج المتراكم يتجاوز 2 GiB؛ مع رفض الصفوف الفردية الطويلة جدًا برسالة خطأ واضحة. [#104229](https://github.com/ClickHouse/ClickHouse/pull/104229) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تعزيز تحميل إحصاءات الأعمدة في MergeTree لمقاومة إخفاقات I/O العابرة، منعًا لتعطيل التحسينات المستندة إلى الإحصاءات بشكل دائم للأجزاء المتأثرة. [#104372](https://github.com/ClickHouse/ClickHouse/pull/104372) ([zoomxi](https://github.com/zoomxi)).
* لم يعد `INSERT INTO ... SELECT FROM input(...)` يتطلب امتياز `CREATE TEMPORARY TABLE`. [#104470](https://github.com/ClickHouse/ClickHouse/pull/104470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة MergeTree setting جديدة باسم `concurrent_part_removal_threshold_for_remote_disk` (القيمة الافتراضية `16`) تُستخدم بدلًا من `concurrent_part_removal_threshold` عندما يكون جزء واحد على الأقل من الأجزاء الجاري حذفها مخزنًا على disk بعيد. كانت العتبة السابقة `100` قد تؤدي إلى تعطّل `DROP TABLE` وعمليات حذف الأجزاء الأخرى على backends تخزين الكائنات لعشرات الثواني، لأن عمليات الحذف كانت تُنفَّذ تسلسليًا رغم أن كل عملية منها تمثل رحلة شبكة مستقلة ذهابًا وإيابًا. ويجعل الإعداد الجديد مسار الحذف المتوازي يبدأ في وقت أبكر بكثير على التخزين البعيد، مع إبقاء سلوك الأقراص المحلية دون تغيير. [#104676](https://github.com/ClickHouse/ClickHouse/pull/104676) ([Groene AI](https://github.com/groeneai)).
* الإعداد الجديد `defer_partition_pruning_after_final` (الافتراضي `1`) يجعل السلوك الذي قُدِّم في 26.3، والمتمثل في تخطي partition pruning تحت `FINAL`، قابلاً للتعطيل اختياريًا. اضبطه على `0` لاستعادة partition pruning كما كان قبل 26.3 — وهو أسرع بكثير في أعباء عمل سجلات الأحداث حيث لا يمكن أن تمتد الصفوف ذات PK نفسه عبر partitions. ويضبط `compatibility = '26.2'` هذه القيمة إلى `0` تلقائيًا. [#104705](https://github.com/ClickHouse/ClickHouse/pull/104705) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح `intExp2` الذي كان يعيد نتائج غير صحيحة للمدخلات الخارجة عن النطاق (عمليات shift `>= 64` ضمن JIT، والأعداد الصحيحة التي يتجاوز مقدارها `INT_MAX` في كلا مساري التنفيذ). [#105054](https://github.com/ClickHouse/ClickHouse/pull/105054) ([Raúl Marín](https://github.com/Algunenano)).
* إضافة علامات اقتباس إلى shell arguments المُنشأة من خيارات CLI والمدخلات parsed في `clickhouse install` و`clickhouse git-import`، بحيث تُعالَج paths وأسماء المستخدمين/المجموعات وhashes الخاصة بـ commit التي تحتوي على مسافات بيضاء أو محارف shell خاصة بشكل صحيح. [#105232](https://github.com/ClickHouse/ClickHouse/pull/105232) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح محرك الجداول `Alias` الآن غير تجريبي ومتاحًا دون الإعداد `allow_experimental_alias_table_engine`. [#103488](https://github.com/ClickHouse/ClickHouse/pull/103488) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة الخيار `--queries-format` إلى `clickhouse-benchmark` للاختيار بين تنسيق الإدخال الافتراضي المحمي بعلامات تبويب، والذي يضع استعلامًا واحدًا في كل سطر (`tsv`)، وبين parsing الإدخال القياسي كسكربت يضم عدة queries مفصولة بـ `;` (`script`). [#99972](https://github.com/ClickHouse/ClickHouse/pull/99972) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* أصبحت معاملات Tuple العنصرية `tuplePlus` و`tupleMinus` و`tupleMultiply` و`tupleDivide` و`tupleModulo` و`tupleIntDiv` و`tupleIntDivOrZero` تقبل الآن عددًا متغيرًا من الوسائط، بحيث تستقبل قيمتي Tuple أو أكثر من الحجم نفسه، وتُطبَّق عنصرًا بعنصر بأسلوب left-fold. وكانت في السابق تقبل argumentين فقط بالضبط. [#104659](https://github.com/ClickHouse/ClickHouse/pull/104659) ([Aruj Bansal](https://github.com/arujbansal)).
* أُضيفت واجهة ويب مدمجة جديدة عند `/processors-profile` تعرض خط أنابيب أي استعلام `SELECT` سابق على شكل خريطة حرارية، بالاعتماد على `system.query_log` و`system.processors_profile_log`. ويُلوَّن كل معالج بحسب قيمة `elapsed_us` الخاصة به، كما يعرض إحصاءات لكل معالج (الصفوف والبايتات وأوقات الانتظار) عند تمرير المؤشر فوقه. [#104614](https://github.com/ClickHouse/ClickHouse/pull/104614) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* أصبح الإعداد `query_plan_use_logical_join_step` (واسمه البديل `query_plan_use_new_logical_join_step`) الآن مهملاً ولم يعد له أي تأثير؛ إذ تُستخدم خطوة الربط المنطقي دائماً. [#104017](https://github.com/ClickHouse/ClickHouse/pull/104017) ([Vladimir Cherkasov](https://github.com/vdimir)).
* لم يعد حقل الإدخال `user` في `play.html` وغيره من صفحات الويب المدمجة (`dashboard.html` و`jemalloc.html` و`merges.html` و`binary.html` و`webterminal.html`) مُعبأً مسبقاً بالنص الحرفي `default`. وهو يعرض الآن تلميح `placeholder` للحقل `user` ويكون فارغاً افتراضياً. وعند تركه فارغاً، لا تُرسل الصفحة معلمة URL باسم `user=` (كما أن JSON الخاص بمصادقة WebTerminal يحذف الحقل `user`)، لذا يطبّق الخادم آلية fallback المعتادة إلى المستخدم `default` — كما لم تعد بيانات اعتماد HTTP المرسلة عبر قنوات أخرى (`X-ClickHouse-User` وHTTP Basic وإعداد `<handler><user>` الخاص بكل handler) تُتجاوز. [#105254](https://github.com/ClickHouse/ClickHouse/pull/105254) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قارئ `ORC`: فُصلت القراءة المعتمدة على الإزاحة (`readBigAt`) عن `use_prefetch`، بحيث يمكن قراءة البيانات المرمّزة بأسلوب EC على `HDFS` بشكل صحيح حتى عندما تكون قيمة `use_prefetch = false` (على سبيل المثال بواسطة Gluten). [#103348](https://github.com/ClickHouse/ClickHouse/pull/103348) ([zhanglistar](https://github.com/zhanglistar)).
* أصبحت الملفات التي تُنزَّل من `play.html` باستخدام التنسيق `CSVWithNames` تستخدم الآن امتداد الملف `.csv`. [#103737](https://github.com/ClickHouse/ClickHouse/pull/103737) ([JackFielding](https://github.com/JackFielding)).
* مزيد من التحقق من صحة الإدخال في كتالوج BigLake. [#105117](https://github.com/ClickHouse/ClickHouse/pull/105117) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* إصلاح التنسيق غير المتسق عبر تذكّر ما إذا كان التعبير موضوعًا بين قوسين. [#92340](https://github.com/ClickHouse/ClickHouse/pull/92340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح المقارنة الدقيقة بين النوعين Decimal وFloat. [#94293](https://github.com/ClickHouse/ClickHouse/pull/94293) ([zoomxi](https://github.com/zoomxi)).
* السماح باستخدام الوسائط الموضعية في الاستعلامات الموزعة. [#94359](https://github.com/ClickHouse/ClickHouse/pull/94359) ([simonmichal](https://github.com/simonmichal)).
* إصلاح فشل التحقق في `DatabaseCatalog::updateDependencies` عند حذف عرض مادي ثم إعادة إنشائه بالاسم نفسه؛ وكذلك إصلاح فقدان تبعيات العروض بصمت أثناء `RENAME TABLE` أو `EXCHANGE TABLES` عندما تكون التبعيات المرجعية فارغة. [#98779](https://github.com/ClickHouse/ClickHouse/pull/98779) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إنهاء الخادوم قسرًا (فشل تحقق في `DatabaseCatalog::getTableImpl`) الذي كان يحدث عند إنشاء جدول عبر `ON CLUSTER` باستخدام UUID مطابق لـ UUID قاعدة بيانات موجودة. [#98861](https://github.com/ClickHouse/ClickHouse/pull/98861) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* إصلاح استخدام skip indexes عند قراءة البيانات (مع تفعيل الإعداد `use_skip_indexes_on_data_read`) ومع patch parts الموجودة التي أنشأتها lightweight updates. [#99543](https://github.com/ClickHouse/ClickHouse/pull/99543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء "Not-ready Set" عندما ينقل مُحسِّن الاستعلامات عامل تصفية يحتوي على `IN (subquery)` إلى PREWHERE. [#100375](https://github.com/ClickHouse/ClickHouse/pull/100375) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ "Cannot find column" عند الجمع بين `ADD COLUMN` و`RENAME COLUMN` في عبارة `ALTER TABLE` واحدة. [#100387](https://github.com/ClickHouse/ClickHouse/pull/100387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح العروض التي تجمع بين معاملات `UNION` و`INTERSECT`/`EXCEPT` وكانت تُرجع نتائج غير صحيحة بعد `DETACH`/`ATTACH` أو إعادة تشغيل الخادوم. [#100390](https://github.com/ClickHouse/ClickHouse/pull/100390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء "Trying to execute PLACEHOLDER action" الذي كان قد يحدث أثناء اختبار الضغط باستخدام AST fuzzer عندما يظهر استعلام فرعي مترابط في عبارة IN. [#100398](https://github.com/ClickHouse/ClickHouse/pull/100398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء الخطأ المنطقي عند الإدراج في جدول Iceberg يحتوي على عمود `Date` ومقسّم باستخدام تحويلات `year` أو `month` أو `day`. [#100404](https://github.com/ClickHouse/ClickHouse/pull/100404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استخدام skip index مع بيانات غير متوافقة بعد أن يغيّر `ALTER TABLE MODIFY COLUMN` نوع العمود، ما قد يؤدي إلى تعطل الخادوم في بُنى sanitizer أو إلى نتائج استعلامات غير صحيحة. [#100526](https://github.com/ClickHouse/ClickHouse/pull/100526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب بيانات الاعتماد في `query_log` لدوال الجداول `paimonCluster` و`paimonS3Cluster` و`paimonAzureCluster` و`deltaLakeS3`. [#100529](https://github.com/ClickHouse/ClickHouse/pull/100529) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* إصلاح احتمال تعليق `DROP TABLE` على جداول Kafka engine إلى أجل غير مسمى بسبب حالة توقف متبادل في `rd_kafka_consumer_close`. [#100604](https://github.com/ClickHouse/ClickHouse/pull/100604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استُبدلت قائمة `source_table_engines` المضمّنة ببحث وقت التشغيل عبر `StorageFactory` و`DatabaseFactory`. وأُضيف `source_access_type` إلى `DatabaseFactory::EngineFeatures` بحيث يتطلب `CREATE DATABASE` مع محركات المصدر (PostgreSQL وMySQL وS3 وغيرها) منح المصدر نفسها التي يتطلبها `CREATE TABLE`. يُصلح هذا مشكلة فشل `GRANT TABLE ENGINE ON *` عند ضبط `table_engines_require_grant=false`. إغلاق [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#100746](https://github.com/ClickHouse/ClickHouse/pull/100746) ([pufit](https://github.com/pufit)).
* إصلاح تعطل الخادم عند القراءة من table كان عمود `ALIAS` فيها يحتوي على subquery مترابطة متداخلة داخل استدعاء دالة (مثل `ALIAS toString(intDivOrZero(x, (SELECT ...)))`). أصبح `CREATE TABLE` و`ALTER TABLE` الآن يرفضان أي subquery مهما كان عمقها في تعبيرات الأعمدة `DEFAULT` / `ALIAS` / `MATERIALIZED` مع `THERE_IS_NO_DEFAULT_VALUE`. سابقًا، كان التحقق السطحي يقبل subqueries المتداخلة، لذا كانت الحالة المترابطة تتسبب في التعطل وقت القراءة، بينما كانت الحالة غير المترابطة المتداخلة تبدو وكأنها تعمل لكنها قد تؤدي إلى سلوك غير متوقع؛ أما الآن فتُرفض كلتا الحالتين وقت DDL. [#100753](https://github.com/ClickHouse/ClickHouse/pull/100753) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم (`Logical error: Bad cast from type DB::FunctionNode to DB::ColumnNode`) كان يمكن أن يحدث عند استخدام queries تحتوي على subqueries مترابطة على tables لديها تعريفات `CONSTRAINT ... ASSUME`، عندما تكون الإعدادات `optimize_substitute_columns` و`convert_query_to_cnf` مفعّلة. [#100756](https://github.com/ClickHouse/ClickHouse/pull/100756) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء كان يمكن أن يحدث عند insert صف في JSON column، حيث كان الصف يضيف حقلًا ديناميكيًا جديدًا إلى جانب حقل ذي نوع محدد بقيمة غير متوافقة، ثم استُخدم العمود لاحقًا كمفتاح GROUP BY. [#100758](https://github.com/ClickHouse/ClickHouse/pull/100758) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح تجاوز IO scheduling الخاصة بـ workload بصمت في عمليات الكتابة إلى S3/تخزين الكائنات التي تمر عبر المسار `DiskObjectStorageTransaction` (المستخدم في disks من نوع `s3_with_keeper`، وصراحةً عند ضبط `use_fake_transaction=false`). سابقًا، كانت عمليات كتابة INSERT إلى MergeTree tables على هذه disks تتجاهل throttling الخاصة بـ `CREATE RESOURCE` / `CREATE WORKLOAD` لأن رابط resource لم يكن يُحقن مطلقًا في `WriteSettings` لمسار الكتابة المعاملاتي. [#100777](https://github.com/ClickHouse/ClickHouse/pull/100777) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* إصلاح تصادم schema-cache المشتركة بين `Protobuf` و`ProtobufList`: كانت قراءة رسالة أولًا بصيغة `FORMAT Protobuf` ثم بصيغة `FORMAT ProtobufList` قد تفشل لأن `ProtobufList` كان يفرض schema المخزنة مؤقتًا بصيغة الغلاف الخاصة به. أصبح `ProtobufList` الآن يعود إلى نوع الرسالة المخزن مؤقتًا عند عدم توفر schema للغلاف. [#100849](https://github.com/ClickHouse/ClickHouse/pull/100849) ([Callum Cooper](https://github.com/callumc34)).
* إصلاح heap-buffer-overflow في جسر Rust CXX بسبب عدم تطابق ABI لـ `std::exception`. [#100931](https://github.com/ClickHouse/ClickHouse/pull/100931) ([Azat Khuzhin](https://github.com/azat)).
* أصبحت `FunctionVariantAdaptor` الآن ترمي `ILLEGAL_TYPE_OF_ARGUMENT` عندما تكون جميع بدائل `Variant` غير متوافقة مع دالة، بدلًا من إعادة `Nullable(Nothing)` بصمت. سابقًا، كان predicate من النوع `WHERE function(variant_col)`، حيث لا يكون أي نوع بديل متوافقًا، يعيد 0 rows من دون خطأ، بينما كان سياق `SELECT` المكافئ يرمي الخطأ بشكل صحيح بالفعل. [#100939](https://github.com/ClickHouse/ClickHouse/pull/100939) ([Vasily Chekalkin](https://github.com/bacek)).
* لم يعد `TRUNCATE ALL TABLES` يفشل عندما تحتوي database على views. [#100943](https://github.com/ClickHouse/ClickHouse/pull/100943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح تحسين `optimize_rewrite_array_exists_to_has` ليتعامل بشكل صحيح مع الحالات غير المتوافقة نوعيًا (مثل Date مقابل String)، وأعِد تفعيله افتراضيًا. [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح أولوية إعدادات S3 بحيث تتجاوز إعدادات القرص في `storage_configuration` القسم العام `<s3>`، بينما تتجاوز إعدادات المستخدم/`profile`/مستوى `query` كليهما. [#100975](https://github.com/ClickHouse/ClickHouse/pull/100975) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح مشكلة فقدان التسلسل sparse لإشارة الصفر السالب (-0.0) في أعمدة BFloat16 وFloat32 وFloat64. [#100983](https://github.com/ClickHouse/ClickHouse/pull/100983) ([Takumi Hara](https://github.com/takumihara)).
* أُصلِح خطآن في محلل geometry بصيغة WKT المستخدم عند قراءة ملفات GeoParquet وArrow المرمّزة بـ WKT: كانت الأشكال الهندسية `MULTILINESTRING` تُحلَّل خطأً على أنها `Polygon` (مما يسبب استثناءً في `typed columns` وفسادًا صامتًا للبيانات في أعمدة `Geometry` المختلطة)، كما أن سلسلة WKT غير صحيحة من دون keyword للنوع كانت تؤدي إلى سلوك غير معرّف بدلًا من ظهور خطأ واضح. [#100997](https://github.com/ClickHouse/ClickHouse/pull/100997) ([Vasily Chekalkin](https://github.com/bacek)).
* أصلِح استعلامات `grouping`/`GROUPING SETS` على جداول Distributed ذات shard واحد، والتي كانت تفشل بالرسالة "Method executeImpl is not supported for 'grouping' function". [#101030](https://github.com/ClickHouse/ClickHouse/pull/101030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح `LOGICAL_ERROR` ‏"Column identifier is already registered" في `planner`، والذي كان قد يحدث عند معالجة expression الجدول نفسه عدة مرات. [#101048](https://github.com/ClickHouse/ClickHouse/pull/101048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح استثناء LOGICAL\_ERROR ‏"Column identifier is already registered" عند استخدام الإعداد `additional_result_filter` مع استعلامات UNION أو EXCEPT. [#101051](https://github.com/ClickHouse/ClickHouse/pull/101051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح تعطل server ‏(Logical error: Bad cast from ColumnVector to ColumnNullable) عند استخدام `* APPLY` مع aggregate functions و`group_by_use_nulls=1` مع GROUPING SETS أو ROLLUP أو CUBE. [#101062](https://github.com/ClickHouse/ClickHouse/pull/101062) ([Groene AI](https://github.com/groeneai)).
* أصلِح حلقة لا نهائية عندما تتجاوز `input_format_csv_skip_first_lines` أو `input_format_tsv_skip_first_lines` عدد الأسطر في الملف. [#101111](https://github.com/ClickHouse/ClickHouse/pull/101111) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح وصولًا خارج الحدود في تحسين lazy materialization، كان يمكن أن يتسبب في استثناء في builds التصحيح. [#101144](https://github.com/ClickHouse/ClickHouse/pull/101144) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصلِح type inference في CTEs العودية: أصبحت column types الآن تُوسَّع تكراريًا عبر `getLeastSupertype` بين جانبي `UNION ALL` غير العودي والعودي حتى الوصول إلى الاستقرار، مما يمنع overflow للأعداد الصحيحة في تعبيرات مثل `x + 1`. [#101155](https://github.com/ClickHouse/ClickHouse/pull/101155) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قيِّد إعدادات حجم block الضغط في MergeTree ‏(max\_compress\_block\_size, min\_compress\_block\_size, marks\_compress\_block\_size, primary\_key\_compress\_block\_size) عند 256 MiB لمنع تعطل server عند ضبط قيم متطرفة عبر CREATE TABLE SETTINGS. [#101159](https://github.com/ClickHouse/ClickHouse/pull/101159) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل LOGICAL\_ERROR في `QueryAnalyzer::resolve()` عندما تستخدم ROW POLICY استعلامًا فرعيًا scalar في عبارة `USING` الخاصة بها (مثل `USING (SELECT 1)`). إغلاق [#100695](https://github.com/ClickHouse/ClickHouse/issues/100695). [#101263](https://github.com/ClickHouse/ClickHouse/pull/101263) ([Groene AI](https://github.com/groeneai)).
* إصلاح سلوك غير معرّف في `MergeTreeDataPartWriterCompact::cancel` عند فشل تخصيص تدفق. [#101292](https://github.com/ClickHouse/ClickHouse/pull/101292) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة لم تكن فيها المنطقة الزمنية تُضمَّن أثناء الإسناد في تعليمة ALTER. إغلاق [#101328](https://github.com/ClickHouse/ClickHouse/issues/101328). ذو صلة بـ [https://github.com/ClickHouse/ClickHouse/pull/100647](https://github.com/ClickHouse/ClickHouse/pull/100647). [#101403](https://github.com/ClickHouse/ClickHouse/pull/101403) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح تعطل الخادم (LOGICAL\_ERROR) في استعلامات INSERT SELECT مع ORDER BY ALL عندما يُنتج مسار SELECT عدة تدفقات. [#101443](https://github.com/ClickHouse/ClickHouse/pull/101443) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج الاستعلام غير الصحيحة الناتجة عن إعادة ترتيب join، التي كانت تدفع عامل تصفية INNER JOIN (الذي يشير فقط إلى الجانب المُحتفَظ به من outer join) إلى عبارة ON الخاصة بـ outer join. [#101504](https://github.com/ClickHouse/ClickHouse/pull/101504) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تخطّي تطبيق lazy materialization على الخطط التي تحتوي على arrayJoin، إذ قد يؤدي ذلك إلى عدم احترام limit. إغلاق [#101608](https://github.com/ClickHouse/ClickHouse/issues/101608). [#101644](https://github.com/ClickHouse/ClickHouse/pull/101644) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح نتائج استعلامات JOIN غير الصحيحة عندما كان تحسين `mergeFilterIntoJoinCondition` يُسقط بصمت شرط مساواة في WHERE مع أنواع غير متطابقة. [#101652](https://github.com/ClickHouse/ClickHouse/pull/101652) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* إصلاح عدم عمل تلميح الاختبار `error` مع أخطاء الصياغة/التحليل — إذ كان `-- { error SYNTAX_ERROR }` سابقًا، عند استخدامه مع query غير صحيح، يفشل برسالة "Expected server error" بدلًا من مطابقة خطأ التحليل على جانب العميل. [#101675](https://github.com/ClickHouse/ClickHouse/pull/101675) ([Groene AI](https://github.com/groeneai)).
* إصلاح أن `INTO OUTFILE ... TRUNCATE` لم يكن يستخدم فعليًا إعادة التسمية atomic — إذ كانت الكتابة تتم مباشرة إلى الملف الأصلي بدلًا من ملف مؤقت، لذلك كان المحتوى الأصلي يُدمَّر عند فشل query. والآن تُكتب البيانات إلى ملف مؤقت ولا يُعاد تسميته إلا عند النجاح. [#101884](https://github.com/ClickHouse/ClickHouse/pull/101884) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح الاستثناء `Unsupported DeltaLake type: varchar(n)` عند قراءة جداول Delta Lake التي يحتوي schema الخاص بها على أنواع أعمدة varchar(n) أو char(n). وتُربط هذه الأنواع الآن بـ String، بما يتوافق مع كيفية تخزين protocol الخاص بـ Delta Lake لها كمصفوفات بايت عادية في Parquet. [#101973](https://github.com/ClickHouse/ClickHouse/pull/101973) ([Flavio Malavazi](https://github.com/flaviomalavazi)).
* إصلاح فقدان صامت للبيانات عند قراءة أرشيفات tar من S3 باستخدام `schema_inference_mode=union` وschemas Parquet غير المتجانسة — إذ كانت parquet metadata cache تعيد استخدام metadata الخاص بالملف الأول على نحو غير صحيح لجميع الملفات اللاحقة في الأرشيف. [#101990](https://github.com/ClickHouse/ClickHouse/pull/101990) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* إصلاح تعطل الخادم (LOGICAL\_ERROR) عند تنفيذ ALTER TABLE UPDATE/DELETE على جداول Iceberg إذا لم يكن قد نُفِّذ أي SELECT أو INSERT مسبقًا على الجدول خلال فترة تشغيل الخادم نفسها. [#102113](https://github.com/ClickHouse/ClickHouse/pull/102113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل محتمل عند تنفيذ استعلام ALTER على جداول من قاعدة بيانات داخل الذاكرة (مثل الجداول المؤقتة). [#102360](https://github.com/ClickHouse/ClickHouse/pull/102360) ([Den Kalantaevskii](https://github.com/Diskein)).
* تم إصلاح مشكلة قيام `formatQuery` بإنتاج grants مكررة مثل `GRANT FILE ON *.*, FILE ON *.* TO x` بدلًا من `GRANT FILE ON *.* TO x` عند تنسيق grants المتوافقة مع الإصدارات السابقة من READ/WRITE على المصدر نفسه. [#102411](https://github.com/ClickHouse/ClickHouse/pull/102411) ([Groene AI](https://github.com/groeneai)).
* إصلاح فقدان التوازي في التجميع بعد استعلامات read-in-order عندما تكون قيمة `max_streams_to_max_threads_ratio` أكبر من 1. [#102467](https://github.com/ClickHouse/ClickHouse/pull/102467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تعطل (`LOGICAL_ERROR: Unknown virtual column`) عند تحديد subcolumns (مثل `.null` لـ Nullable، و`.size0` لـ Array، وعناصر Tuple، أو مفاتيح/قيم Map) من table engine من نوع Buffer. [#102470](https://github.com/ClickHouse/ClickHouse/pull/102470) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناء "Cannot fold actions for projection" في تحسين إعادة ترتيب join عندما يتم دمج LEFT/RIGHT JOIN مع `join_use_nulls` مع joins أخرى تتضمن أكثر من جدولين. [#102516](https://github.com/ClickHouse/ClickHouse/pull/102516) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح overflow صامت في العمليات scalar pointwise على numericIndexedVector (مثل `numericIndexedVectorPointwiseAdd`) عندما تكون قيمة scalar خارج النطاق. أصبحت هذه المدخلات الآن تُطلق `INCORRECT_DATA` بدلًا من إرجاع قيم تالفة. [#102546](https://github.com/ClickHouse/ClickHouse/pull/102546) ([FriendLey](https://github.com/FriendLey)).
* إصلاح تنسيق AST غير المتسق لعبارة INSERT مع SAMPLE وOFFSET على مستوى الاستعلام. يُغلق [#102523](https://github.com/ClickHouse/ClickHouse/issues/102523). [#102547](https://github.com/ClickHouse/ClickHouse/pull/102547) ([zoomxi](https://github.com/zoomxi)).
* إصلاح استثناء `LOGICAL_ERROR` في `groupConcat` عند إلغاء تسلسل حالة aggregate function غير صالحة. [#102558](https://github.com/ClickHouse/ClickHouse/pull/102558) ([Christoph Wurm](https://github.com/cwurm)).
* لم نعد نقبل الآن بيانات غير صالحة في نهاية قيم Time64 بتنسيق CSV عند استخدام `input_format_csv_use_default_on_bad_values=0`. يُغلق [#102490](https://github.com/ClickHouse/ClickHouse/issues/102490). [#102596](https://github.com/ClickHouse/ClickHouse/pull/102596) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء UNKNOWN\_ELEMENT\_OF\_ENUM عند insert قيمة default في JSON column مع paths من النوع Enum. يُغلق [#102359](https://github.com/ClickHouse/ClickHouse/issues/102359). [#102687](https://github.com/ClickHouse/ClickHouse/pull/102687) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تلف الملف columns\_substreams.txt أثناء rename العمود في بعض الحالات. يُغلق [#102259](https://github.com/ClickHouse/ClickHouse/issues/102259). [#102689](https://github.com/ClickHouse/ClickHouse/pull/102689) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح insert في Data type ‏Time أثناء parsing لـ JSON. يُغلق [#102016](https://github.com/ClickHouse/ClickHouse/issues/102016). [#102690](https://github.com/ClickHouse/ClickHouse/pull/102690) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الترميز الست عشري لعينة المحتوى في أسماء ملفات schema المخزنة مؤقتًا. يُغلق [#101904](https://github.com/ClickHouse/ClickHouse/issues/101904). [#102703](https://github.com/ClickHouse/ClickHouse/pull/102703) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح انتهاك ترتيب الفرز (تعطل في وضع debug، وفساد صامت للبيانات في إصدار release) أثناء دمج `SummingMergeTree` عندما يكون مفتاح `ORDER BY` تعبير hash على عمود `Float32` يحتوي على قيم signaling NaN. [#102791](https://github.com/ClickHouse/ClickHouse/pull/102791) ([Groene AI](https://github.com/groeneai)).
* تم جعل `DETACH DATABASE ... SYNC` والعمليات الأخرى التي تستدعي `waitDetachedTableNotInUse` قابلة للإلغاء عبر `KILL QUERY` ومستجيبة لإيقاف تشغيل server، ما يمنع التعليق إلى أجل غير مسمى عندما يحتفظ query متزامن بمرجع إلى table. [#102804](https://github.com/ClickHouse/ClickHouse/pull/102804) ([Antonio Andelic](https://github.com/antonio2368)).
* تم إصلاح احتمال إرجاع نتيجة غير صحيحة في `ANY RIGHT JOIN`. [#102893](https://github.com/ClickHouse/ClickHouse/pull/102893) ([Nikita Taranov](https://github.com/nickitat)).
* تم إصلاح فشل طلبات S3 مع ظهور `ios_base::clear: unspecified iostream_category error` بدلًا من إعادة المحاولة، وكان السبب أن Poco `BufferedStreamBuf::flushBuffer` لا يتعامل مع عمليات الكتابة القصيرة من طبقة socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* تم إصلاح فشل table function ‏`input('auto')` عبر HTTP interface في استعلامات INSERT SELECT. [#102902](https://github.com/ClickHouse/ClickHouse/pull/102902) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم تعطيل تحسين LIMIT البسيط عند استخدام row policies/additional\_table\_filters (للسماح بإجراء index analysis بالتوازي). [#102921](https://github.com/ClickHouse/ClickHouse/pull/102921) ([Azat Khuzhin](https://github.com/azat)).
* تم إخفاء secret key في دالة SQL ‏`HMAC`. إصلاح [#102927](https://github.com/ClickHouse/ClickHouse/issues/102927). [#102997](https://github.com/ClickHouse/ClickHouse/pull/102997) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* تم إصلاح الاستثناء `MULTIPLE_EXPRESSIONS_FOR_ALIAS` الذي كان يظهر في distributed queries التي تشير إلى استدعاء `quantile` نفسه عدة مرات (مثلًا في `SELECT` و`HAVING` و`ORDER BY`) عند تفعيل `optimize_syntax_fuse_functions`. [#103014](https://github.com/ClickHouse/ClickHouse/pull/103014) ([tanner-bruce](https://github.com/tanner-bruce)).
* تم إصلاح حالة اكتشفها CI حيث جرى تمرير set غير جاهز عندما يعتمد filter على column في الجهة اليسرى. يُغلق [#102966](https://github.com/ClickHouse/ClickHouse/issues/102966). [#103029](https://github.com/ClickHouse/ClickHouse/pull/103029) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح castOrNull إلى JSON في بعض الحالات. يُغلق [#101818](https://github.com/ClickHouse/ClickHouse/issues/101818). [#103036](https://github.com/ClickHouse/ClickHouse/pull/103036) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح حالة كان فيها `SELECT DISTINCT` يُرجع بصمت نتائج غير مكتملة عندما كانت aggregate projection تطابق query وكانت بعض parts في table لا تحتوي على بيانات projection (على سبيل المثال، أُضيفت projection إلى table يحتوي بالفعل على بيانات، ولم يُشغَّل `MATERIALIZE PROJECTION`). يُغلق [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح الاستثناء `TOO_FEW_ARGUMENTS_FOR_FUNCTION` عندما ينهار predicate في `WHERE` مثل `AND(OR(A, A), A)` إلى argument واحد على المستوى الأعلى أثناء استخراج التعبيرات المشتركة في analyzer. [#103072](https://github.com/ClickHouse/ClickHouse/pull/103072) ([Peng](https://github.com/fastio)).
* إصلاح خطأ منطقي `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink` كان يظهر عند تقييم `if`/`ifNull` على tuples أو maps أو arrays التي تحتوي على عنصر `QBit`. كانت `ColumnQBit::structureEquals` تقارن بشكل غير صحيح الـ tuple الداخلية لأحد أعمدة `QBit` مع الغلاف الخارجي للآخر، لذلك كان يتم اعتبار أعمدة `QBit` المتطابقة بنيويًا مختلفة. [#103084](https://github.com/ClickHouse/ClickHouse/pull/103084) ([Groene AI](https://github.com/groeneai)).
* جعل `DETACH DATABASE` مع `database_atomic_wait_for_drop_and_detach_synchronously` يستجيب لـ `KILL QUERY` بدلًا من أن يظل معلّقًا إلى أجل غير مسمى عند الاحتفاظ بمرجع إلى table. [#103095](https://github.com/ClickHouse/ClickHouse/pull/103095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح segfault عند حذف وحدة WASM باستخدام predicate ليس معرّفًا (مثل `WHERE 1=1`). [#103101](https://github.com/ClickHouse/ClickHouse/pull/103101) ([Joe Redfern](https://github.com/JosephRedfern)).
* إصلاح مشكلة في التوافق مع الإصدارات السابقة حيث كانت العملاء القدامى يفشلون مع `UNEXPECTED_PACKET_FROM_SERVER` عند الإدراج في server أحدث عبر `remote()` أو Distributed tables، وكان السبب هو استدعاء `sendProgress` بلا شرط في نهاية `processInsertQuery`. [#103148](https://github.com/ClickHouse/ClickHouse/pull/103148) ([Sema Checherinda](https://github.com/CheSema)).
* يجب ألا يقوم IN، عند استخدام argument ثانٍ من نوع tuple غير ثابت، بإجراء CAST لعناصر tuple إلى نوع الطرف الأيسر، لأن ذلك قد يسبب overflow. يغلق [#103055](https://github.com/ClickHouse/ClickHouse/issues/103055). [#103169](https://github.com/ClickHouse/ClickHouse/pull/103169) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استخدام قيمة غير مهيأة في دالة protocol. [#103187](https://github.com/ClickHouse/ClickHouse/pull/103187) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `LOGICAL_ERROR` (`Bad cast … to ColumnLowCardinality`) أثناء index analysis في MergeTree عندما تقارن عبارة `WHERE` Key column من نوع `LowCardinality` مع ثابت محوَّل إلى نوع يحتوي على `LowCardinality` متداخل (على سبيل المثال `Variant(LowCardinality(Date), String)`). [#103211](https://github.com/ClickHouse/ClickHouse/pull/103211) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Logical error: 'index < bucket_count'` في عائلة aggregate function `timeSeries*ToGrid` (مثل `timeSeriesResampleToGridWithStaleness` و`timeSeriesChangesToGrid` و`timeSeriesResetsToGrid` و`timeSeriesRateToGrid`) عند استدعائها باستخدام parameters قصوى لـ timestamp كانت ستؤدي إلى overflow في العمليات الحسابية الموقعة ذات 64-bit أثناء حساب عدد buckets. كما وُضع حد أقصى لإجمالي عدد grid buckets عند 16 مليونًا لمنع تخصيص كميات كبيرة من الذاكرة بالخطأ نتيجة مدخلات خبيثة. [#103223](https://github.com/ClickHouse/ClickHouse/pull/103223) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناء `Logical error: 'Port is already connected'` أثناء توسيع pipeline في مسار `FINAL` الكسول لـ `ReplacingMergeTree`. أثرت هذه المشكلة في queries التي تستخدم `query_plan_optimize_lazy_final = 1` عندما كانت `ReadFromMergeTree::initializePipeline` تُدرج تحويلات داخلية (مثل `Resize`) تربط processors الخاصة بالـ sub-pipeline معًا، مما جعل `LazyUnorderedReadFromMergeTreeSource::expandPipeline` يحاول توصيل منافذ output كانت متصلة مسبقًا. [#103230](https://github.com/ClickHouse/ClickHouse/pull/103230) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتائج غير صحيحة من `LIMIT BY` و`DISTINCT` عندما يكون الإدخال عبارة عن `UNION ALL` من subqueries مرتبة. كان مُحسِّن query plan يتعامل خطأً مع هذا union على أنه مرتب عالميًا، مما أدى إلى إرجاع صفوف إضافية. [#103231](https://github.com/ClickHouse/ClickHouse/pull/103231) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح احتمال حدوث تعطل أثناء حساب الإحصاءات في Map type مع lazy replication. يغلق [#102390](https://github.com/ClickHouse/ClickHouse/issues/102390). [#103273](https://github.com/ClickHouse/ClickHouse/pull/103273) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح حالة data race في dictionary sources الخاصة بـ ClickHouse وMySQL وPostgreSQL وXDBC، حيث يقرأ `clone() const` من السلسلة `invalidate_query_response` نفسها التي يكتب إليها `isModified() const`. [#103277](https://github.com/ClickHouse/ClickHouse/pull/103277) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح الاكتشاف غير الصحيح للرتابة في `Date32`. يُغلق [#101265](https://github.com/ClickHouse/ClickHouse/issues/101265). [#103283](https://github.com/ClickHouse/ClickHouse/pull/103283) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* قصر سلاسل حزمة Hello عبر TCP قبل المصادقة على 64 كيلوبايت، وإضافة server setting باسم `handshake_timeout_milliseconds` للحد من إجمالي وقت المصافحة، بما يمنع clients غير الموثَّقين من استهلاك قدر مفرط من الذاكرة أو إبقاء threads مشغولة إلى أجل غير مسمى. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح الخلل الذي كانت فيه قيمة min\_value > max\_value في إحصاءات ColumnIndex الخاصة بـ Parquet لأعمدة String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* إصلاح التعامل غير الصحيح مع صفوف NULL لمدخلات `Nullable(Tuple(...))` في `flattenTuple` و`tupleToNameValuePairs`. يحتفظ `flattenTuple` الآن بخريطة null الخارجية بحيث تظل صفوف NULL كما هي. ويغيّر `tupleToNameValuePairs` الآن نوع value في النتيجة إلى `Nullable(T)` متى أمكن ذلك عندما يكون الإدخال `Nullable(Tuple(...))`، بحيث تُنتج صفوف NULL `[('a', NULL), ('b', NULL)]` بدلًا من `[('a', 0), ('b', 0)]`. وعندما يتعذر تغليف element type داخل `Nullable` (مثل `Array`)، تُستخدم default values بدلًا من NULL. يُغلق [#103312](https://github.com/ClickHouse/ClickHouse/issues/103312). [#103383](https://github.com/ClickHouse/ClickHouse/pull/103383) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* التحقق من بيانات Dynamic المسطّحة المشوَّهة في Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح RPC stale كان يتسبب في تعطل replication بعد مزامنة snapshot. [#103406](https://github.com/ClickHouse/ClickHouse/pull/103406) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح الخطأ `LOGICAL_ERROR` ‏"Cannot pop N rows from X" الذي كان يؤدي إلى إيقاف server (في builds الخاصة بالتصحيح / sanitizer) عند قراءة document من BSON مشوَّه يحتوي على value يكون نوع BSON الخاص بها غير متوافق مع column type المستهدَف داخل عمود `Nullable(T)` أو `Array(Nullable(T))`. وأصبح الصف المشوَّه الآن يُنتج استثناء `ILLEGAL_COLUMN` واضحًا كما هو مقصود. [#103418](https://github.com/ClickHouse/ClickHouse/pull/103418) ([Groene AI](https://github.com/groeneai)).
* إصلاح إيقاف server في `arrayFill` و`arrayReverseFill` عند تطبيقهما على عمود `Array(String)` يكون صفه الأول فارغًا مع lambda ثابتة القيمة false. إذ تسبب underflow في حلقة aggregate / المصفوفة الفرعية في تحويل فهرس `size_t` إلى `SIZE_MAX`، مما أدى لاحقًا إلى قراءة خارج الحدود داخل `ColumnString::doInsertManyFrom`. وهذه من family نفسها الخاصة بالخلل [#12263](https://github.com/ClickHouse/ClickHouse/issues/12263). [#103424](https://github.com/ClickHouse/ClickHouse/pull/103424) ([Groene AI](https://github.com/groeneai)).
* إصلاح ACCESS\_DENIED / UNKNOWN\_TABLE في RMVs اللاحقة من نوع APPEND مع SQL SECURITY DEFINER عندما يؤدي EXCHANGE في RMV upstream من نوع REPLACE إلى تبديل identity الخاصة بتخزين الهدف أثناء resolution. [#103427](https://github.com/ClickHouse/ClickHouse/pull/103427) ([Alexander Gololobov](https://github.com/davenger)).
* تعبئة عمود `_time` من table function ‏`url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح احتمال حدوث قراءة خارج الحدود في مسار فك الضغط لمرمّز `ALP` عند معالجة مُدخلات تالفة ذات عرض بتات غير صالح. [#103457](https://github.com/ClickHouse/ClickHouse/pull/103457) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح خلل كان قد يؤدي إلى فقدان اسم filesystem cache عند تنسيق الاستعلام `SYSTEM SYNC FILESYSTEM CACHE '<name>' ON CLUSTER ...`، مما يجعل العقد البعيدة تزامن جميع ذواكر التخزين المؤقت لنظام الملفات بدلًا من ذاكرة التخزين المؤقت المطلوبة فقط. [#103469](https://github.com/ClickHouse/ClickHouse/pull/103469) ([Asish Kumar](https://github.com/officialasishkumar)).
* إصلاح معالجة المسار المرمّز بصيغة URL في `deltaLakeAzure`. يغلق [#103509](https://github.com/ClickHouse/ClickHouse/issues/103509). [#103525](https://github.com/ClickHouse/ClickHouse/pull/103525) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح مشكلة heap-use-after-free عند ضرب حالة `AggregateFunction` بعدد صحيح (مثل `quantilesExactState(...) * N`). كانت حلقة الرفع إلى الأس بالتربيع تدمج الحالة مع نفسها، وهو سلوك غير معرّف عندما يعيد `merge` الخاص بالدالة التجميعية تخصيص مساحة التخزين الداخلية. يغلق STID 0988-40af. [#103536](https://github.com/ClickHouse/ClickHouse/pull/103536) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ النادر `LOGICAL_ERROR` "Part X intersects previous part Y" الذي كان يظهر أثناء بدء تشغيل جدول `ReplicatedMergeTree` عندما يكون على القرص جزءان فارغان غير متوقعين لهما نطاقات blocks متداخلة من دون أن يحتوي أحدهما الآخر. كان هذا الاستثناء يوقف خيط Attach الجدول ويمنع تشغيله. [#103537](https://github.com/ClickHouse/ClickHouse/pull/103537) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Logical error: Incorrect mark rows for part ...` (توكيد مخصص للتنقيح فقط) الذي كانت mutations تُحفّزه في جداول `MergeTree` ذات index granularity غير تكيفية (`index_granularity_bytes = 0`) عندما تكون علامة البيانات الأخيرة غير مكتملة (ويمكن إعادة إنتاجه بأعلى موثوقية عبر `DETACH`/`ATTACH` متبوعًا بـ lightweight `DELETE`). [#103538](https://github.com/ClickHouse/ClickHouse/pull/103538) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة قيام `clickhouse-local` بإرجاع 0 rows بصمت عند القراءة من الملفين الوهميين `/proc` و`/sys` عبر `file()` table function (مثل `SELECT * FROM file('/proc/cpuinfo', 'RawBLOB')`). [#103548](https://github.com/ClickHouse/ClickHouse/pull/103548) ([Ashrith Bandla](https://github.com/ashrithb)).
* إصلاح التعامل مع الوسيط `max_string_length` في `GenerateRandom` table engine. [#103550](https://github.com/ClickHouse/ClickHouse/pull/103550) ([Alex Kuleshov](https://github.com/0xAX)).
* إصلاح إخفاء بيانات الاعتماد المتداخلة في logs. [#103552](https://github.com/ClickHouse/ClickHouse/pull/103552) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح اكتشاف SVE الذي كان يستخدم تعليمات SVE حتى عند عدم توفرها. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح parsing معاملات التخزين الخاصة بـ `GenerateRandom`. [#103574](https://github.com/ClickHouse/ClickHouse/pull/103574) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح حلقة لا نهائية في `WITH FILL` للبيانات التي تبدأ بـ ±inf. [#103580](https://github.com/ClickHouse/ClickHouse/pull/103580) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح `JSONExtract` إلى نوع `Variant` الذي كان يقتطع الأرقام العشرية في JSON بصمت. سابقًا، كان `JSONExtract('{"x": 3.14}', 'x', 'Variant(Int64, Float64)')` يعيد `Int64=3` وكان `JSONExtract('{"x": 3.14}', 'x', 'Variant(String, Int64)')` يعيد `Int64=3`، ما يؤدي إلى إسقاط الجزء الكسري. الآن تُحفَظ القيمة الكسرية بالكامل دون فقدان: إذ يتولاها عضو `Float64`/`Decimal` عند وجوده، وإلا يلتقط عضو `String` قيمة JSON الأصلية. أما أنواع `Variant` التي تحتوي على أعضاء عددية صحيحة فقط (مثل `Variant(Int64, Int32)`) والاستخراج المباشر كعدد صحيح (`JSONExtract(json, 'Int64')`, `JSONExtractInt`, إلخ) فلم يطرأ عليها تغيير. [#103620](https://github.com/ClickHouse/ClickHouse/pull/103620) ([Groene AI](https://github.com/groeneai)).
* إصلاح `SYSTEM INSTRUMENT REMOVE` عند استدعائه من دون وسائط، إذ كان يُنتج `std::bad_optional_access` (رمز الخطأ 1001) بدلًا من `SYNTAX_ERROR` (رمز الخطأ 62). [#103622](https://github.com/ClickHouse/ClickHouse/pull/103622) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح خطأ منطقي / سلوك غير معرّف في `windowID` و`tumble` ضمن window view عند استدعائهما بسلسلة منطقة زمنية بوصفها الوسيطة الثالثة. [#103641](https://github.com/ClickHouse/ClickHouse/pull/103641) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح تسجيل عميل S3 يتعامل الآن مع استجابات HTTP 400 التي تتضمن ترويسة x-amz-bucket-region غير فارغة (أي منطقة توقيع SigV4 خاطئة) على أنها حالة معلوماتية تشير إلى المنطقة الخاطئة، مع سطر سجل أوضح بدلًا من المسار العام ذي طابع الخطأ. كما أُضيف موفّر بيانات الاعتماد لهوية الويب الخاص بـ STS إلى سلسلة بيانات اعتماد S3 فقط عند تهيئة هوية الويب، ما يقلل التحذيرات الزائفة في عمليات النشر التي لا تستخدمه. يغلق [#99140](https://github.com/ClickHouse/ClickHouse/issues/99140). [#103673](https://github.com/ClickHouse/ClickHouse/pull/103673) ([MeltonSmith](https://github.com/MeltonSmith)).
* إصلاح `SYSTEM SYNC REPLICA <db>.<tbl> IF EXISTS` لكي ينجح بصمت عندما لا تكون قاعدة البيانات موجودة، بما يطابق السلوك الحالي عند غياب الجدول والسابقة التي أرساها `DROP TABLE IF EXISTS`. سابقًا، كان الاستعلام يطرح `UNKNOWN_DATABASE` رغم وجود `IF EXISTS`. يغلق [#103629](https://github.com/ClickHouse/ClickHouse/issues/103629). [#103689](https://github.com/ClickHouse/ClickHouse/pull/103689) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ المنطقي `Arguments of 'plus' have incorrect data types` الذي كانت ترميه `FunctionBinaryArithmetic::executeImpl2` عندما يحتوي جدول `MergeTree` على `Array(LowCardinality(...))` في مفتاح الفرز، وتستخدم عبارة `WHERE` الدالتين `plus` / `minus` بين ذلك العمود وثابت `Array` من نوع عنصر مختلف. وأصبح `KeyCondition::getMonotonicityForRange` الآن يزيل `LowCardinality` تكراريًا قبل استدعاء التوجيه العددي الداخلي. [#103701](https://github.com/ClickHouse/ClickHouse/pull/103701) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة تسابق عند تغيير حجم dynamic cache في الإصدار 26.1+. [#103702](https://github.com/ClickHouse/ClickHouse/pull/103702) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح مشكلة كانت فيها فهارس التخطي النصية و bloom\_filter على أعمدة `ALIAS` التي احتوى تعبيرها على lambda ذات ثوابت ملتقطة (مثل `arrayMap((k, v) -> concat(k, '=', v), mapKeys(m), mapValues(m)))`) تُتجاهل بصمت. [#103708](https://github.com/ClickHouse/ClickHouse/pull/103708) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح `position` و`positionCaseInsensitive` عندما تكون `start_pos` قريبة من `UINT64_MAX`، إذ كانا يعلقان أو يتسببان في خطأ segmentation fault بسبب تجاوز في حساب مؤشرات الذاكرة. [#103766](https://github.com/ClickHouse/ClickHouse/pull/103766) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح سلوك غير معرّف أثناء تحليل قيمة DateTime تحتوي على جزء كسري مزدوج. [#103773](https://github.com/ClickHouse/ClickHouse/pull/103773) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح تراجع في صحة البيانات في 26.x، حيث كانت الدالتان `if` و`multiIf` المجمّعتان باستخدام JIT، عند استخدام نوع نتيجة `Decimal` ووجود قيمة literal غير `Decimal` (عدد صحيح أو فاصلة عائمة) في أحد الفروع، تُرجعان بصمت قيمة أصغر بمقدار `10^scale`. ولم يتأثر المسار البطيء (غير المعتمد على JIT). الحل المؤقت في الإصدارات المتأثرة: `SET compile_expressions = 0`. [#103809](https://github.com/ClickHouse/ClickHouse/pull/103809) ([Groene AI](https://github.com/groeneai)).
* إصلاح تمرير tokenizer من text index إلى الدوال المدعومة. [#103826](https://github.com/ClickHouse/ClickHouse/pull/103826) ([Elmi Ahmadov](https://github.com/ahmadov)).
* إصلاح النتائج الخاطئة من `numbers` و`generate_series` والمصادر المشابهة الملتزمة بالنطاق عندما يستخدم الشرط `WHERE` العامل `IN` أو `NOT IN` على tuple تُختزل عناصره إلى Key column واحدة (على سبيل المثال، `WHERE tuple(number, number) NOT IN (tuple(1, 2))`). يُغلق [#103660](https://github.com/ClickHouse/ClickHouse/issues/103660). [#103835](https://github.com/ClickHouse/ClickHouse/pull/103835) ([Groene AI](https://github.com/groeneai)).
* إبقاء ذروة الذاكرة الفعلية لخوارزمية hash join ذات auto-spilling تحت `max_bytes_before_external_join`. سابقًا، كان كلٌّ من التخصيص المسبق المعتمد على الإحصاءات، ومضاعفة hash table في مكانها، وbuckets داخل الذاكرة غير المقيّدة في `GraceHashJoin` قادرًا على دفع query إلى تجاوز الحد المهيأ والتسبب في `MEMORY_LIMIT_EXCEEDED`. [#103838](https://github.com/ClickHouse/ClickHouse/pull/103838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة تعليق عند إيقاف `clickhouse-local` عندما تكون logs النظام (مثل `text_log` أو `filesystem_cache_log`) مهيأة. كانت `SystemLogs::flushImpl` تستدعي `BaseDaemon::instance().flushTextLogs()`، التي تُطلق `std::bad_cast` خارج `clickhouse-server` وتُبقي threads الحفظ قيد التشغيل إلى أن يحجب `pthread_cond_destroy` تدمير طوابير log النظام. [#103874](https://github.com/ClickHouse/ClickHouse/pull/103874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض استعلامات CTE من نوع `MATERIALIZED` التي يُفضي body الخاص بها إلى column types مستنتجة مختلفة عبر مراجع مختلفة، مع إظهار خطأ `TYPE_MISMATCH` واضح بدلًا من تعطل server بخطأ `Bad cast` من نوع `LOGICAL_ERROR`. كان هذا يحدث سابقًا عندما كان body الخاص بـ CTE يشير إلى identifiers من النطاق الخارجي (مثل alias من projection الخاصة بالـ subquery المستدعية) التي كانت تُضمَّن inline كثوابت مختلفة لكل مرجع. [#103879](https://github.com/ClickHouse/ClickHouse/pull/103879) ([Groene AI](https://github.com/groeneai)).
* إصلاح use-of-uninitialized-value في مُحسّنات query plan الخاصة بتحويل JOIN (`tryConvertAnyOuterJoinToInnerJoin`, `tryConvertAnyJoinToSemiOrAntiJoin`) عندما يحتوي filter فوق `ANY` `OUTER` `JOIN` على دالة غير deterministic مثل `rand` أو `now` أو `rowNumberInAllBlocks`. لم يعد المُحسِّن يحاول constant-fold لهذه filters ويترك JOIN دون تغيير، مما يمنع أيضًا التحويلات غير الصحيحة إلى `INNER`/`SEMI`/`ANTI JOIN` التي قد تُسقط rows بصمت. [#103880](https://github.com/ClickHouse/ClickHouse/pull/103880) ([Groene AI](https://github.com/groeneai)).
* إصلاح use-after-free في `StorageKafka2` كان قد يتسبب في تعطل server عندما تُستبدل session لـ Keeper بينما يكون consumer محتفظًا بأقفال topic-partition من النوع ephemeral. [#103890](https://github.com/ClickHouse/ClickHouse/pull/103890) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح `LOGICAL_ERROR` بالنص "Primary key type mismatch" الذي كان يُطلق عند تنفيذ join على table من نوع `EmbeddedRocksDB` عبر `JOIN ... USING (key)` مقابل subquery يكون فيها Key column من type مختلف (مثل `Nullable(UInt64)` أو `Int64` أو `Decimal`) عن primary key الخاصة بالتخزين. أصبح planner الآن يرفض `DirectKeyValueJoin` عند عدم تطابق type ويعود إلى `HashJoin`، الذي يتعامل مع تحويل النوع. [#103928](https://github.com/ClickHouse/ClickHouse/pull/103928) ([Groene AI](https://github.com/groeneai)).
* لم يعد `SET max_threads = DEFAULT` (وكذلك `max_final_threads` و`max_parsing_threads`) يفقد حالة `auto`. سابقًا، بعد إعادة تعيين أحد هذه الإعدادات، كان `system.settings` يعرض عدد الأنوية المحسوب (مثلًا `32`) بدلًا من `'auto(32)'`، وكان الخادم يتصرف كما لو أن القيمة قد ثُبِّتت صراحةً. [#103991](https://github.com/ClickHouse/ClickHouse/pull/103991) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `SIZES_OF_ARRAYS_DONT_MATCH` عند قراءة أعمدة `AggregateFunction(topK(N), String)` التي زادت قيمة `alpha_size` المحفوظة فيها نتيجة دورة deserialize+serialize سبقت الإصدار 25.12. [#104002](https://github.com/ClickHouse/ClickHouse/pull/104002) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح ثغرة حقن SQL في مصادر القواميس PostgreSQL وCassandra وXDBC: كانت مفاتيح السلاسل النصية التي تحتوي على single quotes تُهرَّب باستخدام `\'` (backslash)، بينما تتعامل هذه الأنظمة الخلفية معه على أنه backslash حرفي لا كتسلسل تهريب، ما يتيح حقن SQL عشوائي في استعلامات lookup الخاصة بالقواميس. يُخرج `ExternalQueryBuilder` الآن تهريب `''` القياسي في SQL لهذه الأنظمة الخلفية؛ بينما تواصل مصادر القواميس ClickHouse وMySQL استخدام التهريب عبر backslash. [#104009](https://github.com/ClickHouse/ClickHouse/pull/104009) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح احتمال عدم تطابق النوع في aggregation عند تغيير column type من/إلى LowCardinality، من دون إعادة بناء min-max projection. [#104013](https://github.com/ClickHouse/ClickHouse/pull/104013) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح حلقة لا نهائية من query optimization نتجت عن عدم تمرير منع إزالة column غير المستخدم عند دمج expressions. [#104083](https://github.com/ClickHouse/ClickHouse/pull/104083) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح `LOGICAL_ERROR` في `StreamingStorageRegistry::renameTable` عند إعادة تسمية streaming tables على دفعات (S3Queue وKafka وRabbitMQ)، وذلك باستخدام تتبّع الهوية المستند إلى UUID بدلًا من الاسم. [#104101](https://github.com/ClickHouse/ClickHouse/pull/104101) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح نتائج غير صحيحة عندما كان CTE مُنشأً باستخدام `UNION ALL` يحتوي على فرع `SELECT DISTINCT`، بينما كان query الخارجي يُسقِط فقط subset من columns الخاصة بـ CTE. كانت `RemoveUnusedProjectionColumnsPass` في analyzer الجديد تزيل على نحو غير صحيح column غير المُشار إليه من إسقاط `DISTINCT` الداخلي، ما أدى إلى دمج rows كان ينبغي أن تظل متميزة (القيمة نفسها في column المُسقَط لكن قيمة مختلفة في column المحذوف) في row واحدة. [#104114](https://github.com/ClickHouse/ClickHouse/pull/104114) ([Groene AI](https://github.com/groeneai)).
* إصلاح عدة مشكلات صحة في حالات طرفية في الإعداد `optimize_inverse_dictionary_lookup`، حيث كان التحسين قد يحذف rows بصمت أو يمنع ظهور exceptions. يغلق [#103270](https://github.com/ClickHouse/ClickHouse/issues/103270). ويغلق [#103085](https://github.com/ClickHouse/ClickHouse/issues/103085). [#104133](https://github.com/ClickHouse/ClickHouse/pull/104133) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح كتابة خارج الحدود أثناء deserialize لحالة `quantileTiming`. [#104141](https://github.com/ClickHouse/ClickHouse/pull/104141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح سلوك غير معرّف عند تحويل قيمة `Float64` خارج النطاق إلى integer type عريض (`UInt64`, `Int64`, `Int128`, `UInt128`, `Int256`, `UInt256`). سابقًا، كانت القيم المساوية لـ `Float64(numeric_limits<T>::max())` (التي تُقرَّب للأعلى إلى قيمة تتجاوز الحد الأقصى الفعلي) تتجاوز فحص الحدود وتنتج UB في التحويل اللاحق. وقد أثّر ذلك في parsing لمعاملات aggregate function (`topK`, `histogram`, `uniqUpTo`, `groupArrayInsertAt`، وغيرها)، وكذلك في settings ذات النوع الصحيح عبر `SET <setting> = <Float64>`. يغلق [#103817](https://github.com/ClickHouse/ClickHouse/issues/103817). [#104154](https://github.com/ClickHouse/ClickHouse/pull/104154) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء `LOGICAL_ERROR` "Unexpected return type from comparison. Expected `UInt8`. Got `Const(Nullable(UInt8))`" عند مقارنة `Tuple(Tuple(Nullable(...)))` متداخلة (أو ذات تداخل أعمق) مع قيمة `String` حرفية. أصبح نوع الإرجاع للمقارنة يُستنتج الآن بشكل صحيح على أنه `Nullable(UInt8)`، بما يتوافق مع سلوك وقت التشغيل. [#104171](https://github.com/ClickHouse/ClickHouse/pull/104171) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم (`UndefinedBehaviorSanitizer: reference binding to null pointer`، وsegfault في إصدارات release) عند `SELECT ... FROM <ReplacingMergeTree(version, is_deleted)> FINAL PREWHERE is_deleted = <expr> AND <other column expr>` عندما تكون `query_plan_optimize_lazy_final = 1`. فقدت خطوة القراءة lazy-FINAL غير المتقاطعة العمود `is_deleted` من ترويسة الخرج لأن `PREWHERE` استهلكه كمدخل من دون إعادة تمريره ضمن الخرج. ثم قامت خطوة `addIsDeletedFilter` اللاحقة بإلغاء مرجعية مؤشر `ActionsDAG::Node` فارغ. [#104177](https://github.com/ClickHouse/ClickHouse/pull/104177) ([Groene AI](https://github.com/groeneai)).
* عند استدعاء جدول system.failpoints، كان يستخدم failpoint، ما قد يؤدي إلى تعطيله. [#104237](https://github.com/ClickHouse/ClickHouse/pull/104237) ([Pedro Ferreira](https://github.com/PedroTadim)).
* إصلاح `MemorySanitizer: use-of-uninitialized-value` في الدوال `detectLanguage*` عندما يحتوي الإدخال على محرف UTF-8 ينتهي تمامًا عند حدّ buffer. [#104257](https://github.com/ClickHouse/ClickHouse/pull/104257) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح خطأ منطقي (`Bad cast from type DB::CachedObjectStorage to DB::S3ObjectStorage`) كان يؤدي إلى إيقاف parsing الوسائط الخاصة بـ table functions وengines لبحيرات البيانات (`icebergS3`, `deltaLakeS3`، إلخ) عند استدعائها باستخدام `SETTINGS disk = '...'` على disk تكون object storage الأساسية له مغلفة بمُزيّن مثل filesystem cache. يُغلق [#89300](https://github.com/ClickHouse/ClickHouse/issues/89300). [#104258](https://github.com/ClickHouse/ClickHouse/pull/104258) ([Groene AI](https://github.com/groeneai)).
* إصلاح parsing تعبيرات الفهرسة الموضوعة بين قوسين على columns المسماة `values`، مثل `(values['a'])`، بحيث لم تعد تُفسَّر على أنها تعبيرات جدول `VALUES` القياسية في SQL. [#104312](https://github.com/ClickHouse/ClickHouse/pull/104312) ([Desel72](https://github.com/Desel72)).
* إصلاح تعطل الخادم/`LOGICAL_ERROR` في thread الإخلاء الخلفية الخاصة بـ filesystem cache (`SLRUFileCachePriority::collectEvictionInfo`) الذي كان يمكن أن يحدث عندما تكون `keep_free_space_size_ratio` أو `keep_free_space_elements_ratio` مرتفعة بما يكفي لتحفيز الإخلاء، بينما تكون جميع cache entries قد رُقّيت بالفعل إلى protected queue الخاصة بـ SLRU (مع فراغ الجزء probationary). [#104313](https://github.com/ClickHouse/ClickHouse/pull/104313) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناءات (`NOT_FOUND_COLUMN_IN_BLOCK`, `LOGICAL_ERROR`, `AMBIGUOUS_COLUMN_NAME`) عند استخدام projections مع عروض UNION ALL أو window functions أو حالات تعارض أسماء الأعمدة مع الأسماء المستعارة. هذا تراجع ناتج عن [#88798](https://github.com/ClickHouse/ClickHouse/issues/88798). [#104317](https://github.com/ClickHouse/ClickHouse/pull/104317) ([Amos Bird](https://github.com/amosbird)).
* إصلاح احتمال حدوث underflow أثناء parsing مصفوفات Postgres. [#104322](https://github.com/ClickHouse/ClickHouse/pull/104322) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* أصبحت الدوال التي تُرجِع نوعًا غير `Nullable` (مثل `Array` أو `Tuple` أو `Map`) تقبل الآن وسائط `Nullable`. وتشمل الدوال المتأثرة `extractAll` و`extractAllGroups` و`extractAllGroupsHorizontal` و`extractAllGroupsVertical` و`extractGroups` و`splitByChar` و`splitByString` و`splitByRegexp` و`splitByWhitespace` و`splitByNonAlpha` و`alphaTokens`. وتُنتِج صفوف الإدخال ذات القيمة `NULL` القيمةَ الافتراضية لنوع النتيجة (مثل مصفوفة فارغة) بدلًا من إثارة الخطأ "Nested type is not allowed inside Nullable type". [#104326](https://github.com/ClickHouse/ClickHouse/pull/104326) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إحصاءات Iceberg مع جدول مُقسَّم إلى partition. وهذا يُغلق [#104321](https://github.com/ClickHouse/ClickHouse/issues/104321). [#104329](https://github.com/ClickHouse/ClickHouse/pull/104329) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح خطأ منطقي فادح عند بدء تشغيل الخادم على macOS (وفي إصدارات `jemalloc` المشابهة)، حيث كانت `Jemalloc::verifySetup` تُبلّغ خطأً عن عدم تطابق في `jemalloc_enable_background_threads` لأن `mallctls` الاختيارية `background_thread` / `max_background_threads` غير موجودة؛ ويُتجاوز التحقق عندما لا تكون `mallctls` هذه متاحة، كما أن `getValue` لم تعد تترك المخرجات غير مهيّأة عند الفشل. يُغلق [#102183](https://github.com/ClickHouse/ClickHouse/issues/102183). [#104330](https://github.com/ClickHouse/ClickHouse/pull/104330) ([SAYON DEEP](https://github.com/sayondeep)).
* إصلاح تراجع في السلوك الصحيح حيث كان يمكن لاستعلامات `SELECT` مع `max_rows_to_read_leaf` و`read_overflow_mode_leaf = 'throw'` أن تُطلق `TOO_MANY_ROWS` بشكل غير صحيح حتى عندما كان skip index سيخفض حجم القراءة إلى ما دون الحد الأقصى على مستوى leaf. وكانت الإعدادات المناظرة لغير leaf (`max_rows_to_read` / `read_overflow_mode`) تُعالَج بالفعل. [#104331](https://github.com/ClickHouse/ClickHouse/pull/104331) ([Groene AI](https://github.com/groeneai)).
* أصبحت `toUUID` و`toUUIDOrNull` و`toUUIDOrZero` و`toUUIDOrDefault` و`CAST` إلى `UUID` و`Nullable(UUID)` و`accurateCastOrNull` إلى `UUID`، وكذلك input formats التي تفسّر UUID من النص (`Avro` و`MsgPack` و`JSONExtract` و...)، ترفض الآن السلاسل النصية التي لها الطول الصحيح لكنها تحتوي على محارف غير ستّ عشرية. سابقًا كانت مثل هذه المدخلات تتحول بصمت إلى UUID مُختلق بسبب تجاوز نهاية جدول lookup للأرقام الستّ عشرية؛ أما الآن فإن `toUUID` يُطلق `CANNOT_PARSE_UUID`، وتُرجع متغيرات `Or*` القيمة `NULL` / zero UUID / القيمة الافتراضية المورَّدة. [#104370](https://github.com/ClickHouse/ClickHouse/pull/104370) ([Groene AI](https://github.com/groeneai)).
* إصلاح `Bad cast` `LOGICAL_ERROR` في `caseWithExpression` (وفي SQL ‏`CASE expr WHEN ... THEN ... ELSE ...`) عندما ينتهي النوع الأعلى الخاص بـ THEN فقط والنوع الأعلى الخاص بـ (THENs + ELSE) إلى مخازن `ColumnDecimal` مختلفة -- على سبيل المثال، قيم THEN ‏`(UInt16, Int8)` مع ELSE من النوع `Decimal(9, 2)`. يُغلق [#104335](https://github.com/ClickHouse/ClickHouse/issues/104335). [#104378](https://github.com/ClickHouse/ClickHouse/pull/104378) ([Groene AI](https://github.com/groeneai)).
* أصبحت الأعطال الداخلية المُبلَّغ عنها عبر `logExceptionBeforeStart` (عمليات flush الخاصة بالإدراج غير المتزامن، وعمليات refresh للعروض materialized-view، وأخطاء التحليل التي تُثار أثناء الاستعلامات الداخلية) تزيد الآن بشكل صحيح من ProfileEvents ‏`FailedInternalQuery` و`FailedInternalSelectQuery` و`FailedInternalInsertQuery` إلى جانب العدادات الظاهرة للمستخدم `FailedQuery` و`FailedSelectQuery` و`FailedInsertQuery`. سابقًا كانت هذه العدادات الداخلية تبقى عند الصفر في حالات الفشل التي تقع قبل بدء تنفيذ الاستعلام، مما كان يؤدي إلى تقليل احتساب فئة رئيسية من الأعطال الداخلية. [#104399](https://github.com/ClickHouse/ClickHouse/pull/104399) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `Code: 36. BAD_ARGUMENTS Expected literal, got {name:Type}` الذي كان يظهر عند استخدام query parameter داخل الإعداد `base_backup` في عبارة `BACKUP` أو `RESTORE` (على سبيل المثال `BACKUP ... SETTINGS base_backup = S3({backup_name:String}, ...)`). أُدخل هذا التراجع في `26.1.5` عبر PR [#99205](https://github.com/ClickHouse/ClickHouse/issues/99205). يُغلق [#103324](https://github.com/ClickHouse/ClickHouse/issues/103324). [#104413](https://github.com/ClickHouse/ClickHouse/pull/104413) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقفٍ للخادم في عمليات الكتابة إلى `IcebergLocal`/`IcebergS3` عندما تتبع عملية `INSERT` العبارة `ALTER TABLE ... DROP COLUMN` مع قيمة `iceberg_metadata_staleness_ms` أكبر من الصفر. تُبطِل `ALTER` الآن cache المحلي لملفات Iceberg metadata بحيث ترى عمليات القراءة والكتابة اللاحقة الـ schema الجديدة. [#104419](https://github.com/ClickHouse/ClickHouse/pull/104419) ([Groene AI](https://github.com/groeneai)).
* إصلاح أوامر `DROP ROLE` و`DROP USER` و`DROP SETTINGS PROFILE` و`DROP ROW POLICY` و`DROP QUOTA` و`DROP MASKING POLICY` بحيث تزيل المراجع إلى الـ entity المحذوف من أي access entity آخر كان يشير إليه (مثل قائمة `DEFAULT ROLE` الخاصة بالمستخدم، وقائمة `TO` الخاصة بـ settings profile، والمستفيدين في row policy)، مع حفظ هذا التنظيف على disk. سابقًا، كانت in-memory state تبدو صحيحة لأن `SHOW CREATE` يرشّح UUIDs غير المعروفة، لكن ملفات `.sql` على disk كانت تحتفظ بإدخالات `ID('<dropped-uuid>')` المعلّقة، ثم كانت هذه المراجع تعود للظهور عند إعادة تشغيل server التالية، لتظهر على شكل أخطاء `ACCESS_ENTITY_NOT_FOUND` أثناء distributed query execution. [#104427](https://github.com/ClickHouse/ClickHouse/pull/104427) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقفٍ للخادم يحدث مع `azureBlobStorage` ومحرك `AzureBlobStorage` وDeltaLake-on-Azure عند استخدام connection string يكون فيه عنوان `BlobEndpoint` يحتوي على منفذ فارغ أو غير رقمي أو خارج النطاق (مثل `BlobEndpoint=http://host:abc/`). يعيد الخادم الآن خطأ `BAD_ARGUMENTS` واضحًا بدلًا من التوقف في builds الخاصة بـ debug/sanitizer. [#104460](https://github.com/ClickHouse/ClickHouse/pull/104460) ([Groene AI](https://github.com/groeneai)).
* السماح باستخدام معرّف غير مقتبس كاسم مستخدم في table functions ‏`remote` و`remoteSecure`، بما يتوافق مع كيفية قبول وسيطات database وtable لمعرّفات غير مقتبسة. سابقًا، كان مثل هذا query يفشل مع خطأ authentication مضلّل يشير إلى المستخدم `default`. [#104465](https://github.com/ClickHouse/ClickHouse/pull/104465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `Logical error: Incorrect ASTSelectWithUnionQuery (modes: M, selects: N)` الذي يحدث عندما يحتوي جسم SQL user-defined function على `UNION ALL` داخلي بين قوسين (مثل `CREATE FUNCTION f AS x -> (SELECT 1 UNION ALL (SELECT 1 UNION ALL SELECT 1))`). [#104477](https://github.com/ClickHouse/ClickHouse/pull/104477) ([Groene AI](https://github.com/groeneai)).
* إصلاح `uniqThetaIntersect` الذي كان يعيد cardinality الخاصة بالـ argument الأول بدلًا من `0` عندما تكون قيمة state الثانية من `uniqTheta` فارغة -- على سبيل المثال، ناتج `uniqThetaMergeStateIf(s, predicate)` عندما يستبعد الـ predicate كل row. [#104529](https://github.com/ClickHouse/ClickHouse/pull/104529) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح قيام `SHOW TABLES` و`system.tables` باقتطاع القائمة بصمت في قواعد بيانات `DataLakeCatalog` المعتمدة على كتالوجات Iceberg REST (`iceberg-rest`, `onelake`, `biglake`). فعندما كان خادم الكتالوج يجزّئ استجابة list-tables أو list-namespaces إلى صفحات (مثل Microsoft Fabric / OneLake عند تجاوز \~50 جدولًا لكل مساحة اسم)، كانت الجداول الموجودة في الصفحات اللاحقة تصبح غير مرئية بصمت لـ `SHOW TABLES` و`system.tables`، رغم أنه كان يمكن الاستعلام عنها عبر `SELECT` مباشر. وأصبح `RestCatalog` الآن يتبع رمز المتابعة `next-page-token` المعرّف في مواصفة Iceberg REST OpenAPI، بما يطابق السلوك الحالي لكل من `PaimonRestCatalog` و`UnityCatalog`. [#104531](https://github.com/ClickHouse/ClickHouse/pull/104531) ([Groene AI](https://github.com/groeneai)).
* تستنتج الدالة الجدولية `input` الآن بنيتها من عبارة `FORMAT` في استعلام `INSERT` المحيط بها عندما يكون لهذا format مخطط ثابت (`LineAsString`, `RawBLOB`, `JSONAsString`، إلخ)، لذلك لم يعد المستخدمون بحاجة إلى تكرار البنية على هيئة `input('line String')` لهذه formats. [#104532](https://github.com/ClickHouse/ClickHouse/issues/104532). [#104533](https://github.com/ClickHouse/ClickHouse/pull/104533) ([Groene AI](https://github.com/groeneai)).
* تم تحديث نوع بيانات الحقول في history الخاصة بـ Iceberg من `Int32` إلى `Int64`. يغلق [#94176](https://github.com/ClickHouse/ClickHouse/issues/94176). [#104579](https://github.com/ClickHouse/ClickHouse/pull/104579) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* تم إصلاح `Inconsistent AST formatting` و`LOGICAL_ERROR` عند تحليل استدعاء دالة تأتي فيه lambda بعد فاصلة، مثل ``SELECT substring(x, `x` -> `x`)``. وكان المحلّل يدمج الوسائط السابقة بصمت في الطرف الأيسر من lambda، مما ينتج عنه استدعاء بوسيط واحد لا يمكن إعادة تحليله إلى AST نفسها. وهو يحافظ الآن على عدد الوسائط الأصلي للدالة. [#104626](https://github.com/ClickHouse/ClickHouse/pull/104626) ([Groene AI](https://github.com/groeneai)).
* يفضّل `CHECK TABLE t` الآن جدول `TEMPORARY` على الجدول الدائم الذي يحمل الاسم نفسه عند عدم تقديم محدِّد database، بما يطابق أولوية الترتيب المستخدمة بالفعل في `SHOW CREATE TABLE` و`DESCRIBE TABLE` و`OPTIMIZE TABLE` و`ALTER TABLE`. سابقًا، كان `CHECK TABLE t` يتجاهل الجداول المؤقتة بالكامل، لذلك كان يفشل مع `UNKNOWN_TABLE` على جدول `Log` أو `File` مؤقت رغم أن هذين المحركين يدعمان `CHECK`. متابعة لـ [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966). [#104637](https://github.com/ClickHouse/ClickHouse/pull/104637) ([Groene AI](https://github.com/groeneai)).
* تم إصلاح مشكلة تؤدي إلى إنهاء Keeper ودخوله في حلقة إعادة تشغيل عند إرسال `get /keeper/availability_zone` مع `quorum_reads=true` إلى Keeper لم يُضبط فيه `<placement>`. [#104663](https://github.com/ClickHouse/ClickHouse/pull/104663) ([myeongjun](https://github.com/myeongjjun)).
* تم إصلاح سباق بيانات TOCTOU في `FutureSetFromTuple::buildOrderedSetInplace` كان يؤدي إلى logical error. [#104673](https://github.com/ClickHouse/ClickHouse/pull/104673) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تم إصلاح عدة دوال كانت تعيد نتائج مختلفة للمدخل نفسه بحسب ما إذا كانت الوسائط قد وصلت على هيئة أعمدة أو ثوابت: `bitRotateLeft` / `bitRotateRight` (قيم shift الحدّية)، و`length(FixedString)` / `concatWithSeparator` مع مدخلات `LowCardinality(Nullable)`، و`roundDown` على NaN، و`rightUTF8` على UTF-8 غير صالح. [#104710](https://github.com/ClickHouse/ClickHouse/pull/104710) ([Raúl Marín](https://github.com/Algunenano)).
* تم إصلاح `anyHeavy` الذي كان يعيد قيمة غير ثقيلة عندما تكون القيمة الأكثر تكرارًا هي default الخاصة بالعمود وتكون البيانات موزعة عبر عدة parts من `MergeTree` (مسار قراءة الأعمدة sparse). [#104712](https://github.com/ClickHouse/ClickHouse/pull/104712) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح عدة عيوب في التعامل مع قيود الإعدادات: كان بالإمكان تجاوز قيود `MergeTreeSettings` المعلنة على الاسم canonical للإعداد عبر الكتابة إلى alias لذلك الإعداد؛ كما كان التحقق من قيد `disallowed_values` يطرح استثناءً في مسارات clamp (الاستعلامات secondary، وعُمّال `ON CLUSTER`، وعروض `SQL SECURITY DEFINER`) بدلًا من إسقاط التغيير بصمت. [#104737](https://github.com/ClickHouse/ClickHouse/pull/104737) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح استثناء `LOGICAL_ERROR` (`Metadata is not initialized`) الذي كانت تسببه أوامر `OPTIMIZE TABLE` و`ALTER TABLE ... DELETE` و`ALTER TABLE ... ADD COLUMN` وغيرها من صيغ ALTER عند تنفيذها على جدول `Iceberg` / `IcebergLocal` / `DeltaLake` / `Hudi` مرفق كسولًا ولم تكن metadata الخاصة به قد حُمِّلت بعد (وهو أمر شائع بعد إعادة تشغيل server، أو بعد فشل سابق في كتابة metadata وترك ملف metadata تالفًا على القرص). أصبحت العملية الآن إما تتابع بشكل طبيعي إذا جرى تحميل metadata بنجاح، أو تُظهر سبب فشل التحميل الفعلي كاستثناء عادي للمستخدم بدلًا من إيقاف server في builds الخاصة بـ debug / sanitizer. [#104738](https://github.com/ClickHouse/ClickHouse/pull/104738) ([Groene AI](https://github.com/groeneai)).
* إصلاح `segfault` ناتج عن خطأ use-after-free في `AvroConfluentRowInputFormat`. [#104751](https://github.com/ClickHouse/ClickHouse/pull/104751) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أصبحت المتغيرات scalar من `numericIndexedVectorPointwiseMultiply` و`numericIndexedVectorPointwiseDivide` و`numericIndexedVectorPointwiseEqual` و`numericIndexedVectorPointwiseNotEqual` ترفع الآن `INCORRECT_DATA` عند استدعائها باستخدام scalar من نوع `UInt64` أكبر من `Int64::max`. [#104784](https://github.com/ClickHouse/ClickHouse/pull/104784) ([FriendLey](https://github.com/FriendLey)).
* إصلاح خلل كان يتسبب في التراجع عن override لإعداد تم ضبطه يدويًا عبر اسم alias الخاص به (مثل `SET enable_analyzer = 1` بدلًا من `SET allow_experimental_analyzer = 1`) بعد تطبيق إعداد `compatibility`، وذلك عند إجراء تغيير لاحق على إعداد `compatibility`. [#104829](https://github.com/ClickHouse/ClickHouse/pull/104829) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطيل AWS logger بعد [https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d](https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d). [#104837](https://github.com/ClickHouse/ClickHouse/pull/104837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح ثلاث دوال إضافية كانت تُرجع نتائج مختلفة للمدخل نفسه بحسب ما إذا كانت arguments قد وصلت على هيئة columns أو constants: الدالة `transform` (وكذلك `caseWithExpression` عبرها) مع قيمة default ثابتة من نوع `Date`/`Date32`/`Enum`/`FixedString`، وعوامل المقارنة بين `String` و`FixedString` ثابت، وكذلك `if`/`ifNull`/`nullIf` مع فرع `FixedString` تحت condition ثابت. [#104858](https://github.com/ClickHouse/ClickHouse/pull/104858) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح إيقاف server بسبب `Bad cast from type DB::ColumnConst to DB::ColumnNullable` أثناء partition pruning لجداول `MergeTree` عندما يحتوي partition expression على سلسلة دوال تختزل إلى قيمة ثابتة واحدة (مثل `floor(NULL, toRelativeYearNum(...))`). [#104861](https://github.com/ClickHouse/ClickHouse/pull/104861) ([Groene AI](https://github.com/groeneai)).
* إصلاح data race في `ThreadSanitizer` داخل مُنشئ النسخ `ContextData`: كانت `table_function_results` تُنسخ من object المصدر دون الحصول على `table_function_results_mutex`، لذا كان من الممكن أن يتسابق كاتب `Context::executeTableFunction` concurrent مع القراءة غير المتزامنة داخل مُنشئ النسخ. [#104879](https://github.com/ClickHouse/ClickHouse/pull/104879) ([Groene AI](https://github.com/groeneai)).
* إصلاح فحوصات اتساق data part للأنواع ذات structure الديناميكية، مع اكتشاف `columns&#95;substreams.txt` التالف. إعادة تقديم لـ [https://github.com/ClickHouse/ClickHouse/pull/103858](https://github.com/ClickHouse/ClickHouse/pull/103858) مع تغييرات إضافية. [#104888](https://github.com/ClickHouse/ClickHouse/pull/104888) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح حالة تسابق بين DROP وUNDROP في DatabaseCatalog. [#104915](https://github.com/ClickHouse/ClickHouse/pull/104915) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تغيير الحجم الديناميكي لذاكرة التخزين المؤقت لنظام الملفات عند وجود مقاطع جرى تنزيلها جزئيًا، بما في ذلك استعادة احتساب الاستخدام بعد فشل الإخلاء. [#104921](https://github.com/ClickHouse/ClickHouse/pull/104921) ([Antonio Andelic](https://github.com/antonio2368)).
* أصبح `DETACH TABLE` على جدول مؤقت (من دون الكلمة المفتاحية `TEMPORARY`) يُطلق الآن `SYNTAX_ERROR` بشكل صحيح، بما يطابق سلوك `DETACH TEMPORARY TABLE`. سابقًا، كان يضبط بصمت العلامة الداخلية `is_detached` ثم يعود من دون خطأ. لإزالة جدول مؤقت، استخدم `DROP TEMPORARY TABLE` أو `DROP TABLE` (إذ يحلّ الأخير الجدول المؤقت عبر `Context::ResolveExternal`). يُغلق [#103475](https://github.com/ClickHouse/ClickHouse/issues/103475). [#104943](https://github.com/ClickHouse/ClickHouse/pull/104943) ([Groene AI](https://github.com/groeneai)).
* أصبحت الدالة الجدولية `filesystem` تراعي `max_memory_usage` / `max_server_memory_usage` عند تحميل محتوى الملف. سابقًا، كان من الممكن أن تتجاوز قراءات المحتوى الكبيرة أو الكثيرة المتوازية هذا الحد من دون إطلاق `MEMORY_LIMIT_EXCEEDED`، لينتهي الأمر بدلًا من ذلك بإنهاء العملية بسبب نفاد الذاكرة. [#104956](https://github.com/ClickHouse/ClickHouse/pull/104956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` كان يُطلق عند تصفية `system.detached_tables` باستخدام `uuid` (مثل `SELECT count() FROM system.detached_tables WHERE uuid = '...'`). يُرجع الاستعلام الآن النتيجة المتوقعة بدلًا من التسبب في إيقاف الخادم. [#104979](https://github.com/ClickHouse/ClickHouse/pull/104979) ([Groene AI](https://github.com/groeneai)).
* لم تعد `flattenTuple` تُطلق `LOGICAL_ERROR` عند استدعائها على tuple لا تحتوي بنيتها المتداخلة إلا على أوراق `Tuple()` فارغة (مثل `Tuple(c0 Array(Tuple()))` أو `Tuple(c0 Tuple())`). وتُنتج هذه المدخلات الآن استثناءً ظاهرًا للمستخدم من نوع `ILLEGAL_TYPE_OF_ARGUMENT` يوضح أن نتيجة التسطيح ستكون tuple فارغة. [#104989](https://github.com/ClickHouse/ClickHouse/pull/104989) ([Groene AI](https://github.com/groeneai)).
* إصلاح توقف الخادم وخلل يُرجع نتائج خاطئة بصمت عند الاستعلام باستخدام `loop(remote(...))` (أو أي `loop()` يغلّف تخزينًا يمكنه تأجيل aggregation) مع `GROUP BY`. كان المخطِّط الخارجي يضيف `MergingAggregatedStep` استنادًا إلى مرحلة المعالجة التي يبلّغ عنها التخزين الداخلي، لكن `LoopSource` يحقق دائمًا `select` الداخلي الخاص به على هيئة `QueryProcessingStage::Complete` ويُخرج مقاطع أعمدة عادية، لذا كان `MergingAggregatedTransform` يتسبب في `LOGICAL_ERROR` (`Chunk info was not set for chunk in MergingAggregatedTransform`) عند `enable_parallel_replicas = 1`، وفي غير ذلك كان يُسقط التجميع الخارجي بصمت. [#105001](https://github.com/ClickHouse/ClickHouse/pull/105001) ([Groene AI](https://github.com/groeneai)).
* تعطّل `clickhouse-benchmark --reconnect` (بصورته المجردة، من دون قيمة) دون قصد في 25.4 بسبب تغيير حوّل `--reconnect` إلى خيار عددي يتطلب قيمة. وتعمل الصيغة المجردة الآن مجددًا، وتعادل `--reconnect=1` (إعادة الاتصال عند كل query). [#105006](https://github.com/ClickHouse/ClickHouse/pull/105006) ([Groene AI](https://github.com/groeneai)).
* إصلاح مخرجات JSON غير سليمة لأسماء الأعمدة المنتهية بتسلسلات UTF-8 غير مكتملة. [#105012](https://github.com/ClickHouse/ClickHouse/pull/105012) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح فقدان بيانات صامت بعد `EXCHANGE TABLES` أو `CREATE OR REPLACE TABLE` لجدول المصدر الخاص بعرض مادي. ويُحتفَظ الآن بحافة الاعتمادية بين المصدر والعرض الخاصة بـ `MV` على الاسم الأصلي، بحيث تستمر في العمل عند عمليات insert. هذا تراجع أُدخل في [#98779](https://github.com/ClickHouse/ClickHouse/issues/98779)؛ ويستعيد السلوك الذي كان موجودًا قبل هذا التراجع. [#105029](https://github.com/ClickHouse/ClickHouse/pull/105029) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح الخطأ `CANNOT_COMPILE_CODE Could not find symbol __fixunsdfti` عند الترجمة البرمجية باستخدام JIT للتعبيرات التي تحوّل `Float` إلى `UInt128`، مثل `toUInt128(<Float64 expression>)`. كان محلّل الرموز في JIT يفتقد دوال builtins من compiler-rt الخاصة بالتحويل من أعداد الفاصلة العائمة غير الموقّعة ذات 128 بت إلى أعداد صحيحة. يُغلق [#105031](https://github.com/ClickHouse/ClickHouse/issues/105031). [#105048](https://github.com/ClickHouse/ClickHouse/pull/105048) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح عدم طباعة `clickhouse-local` لرسائل السجل الناتجة عن query فاشلة عند تعيين `send_logs_level`. [#105067](https://github.com/ClickHouse/ClickHouse/pull/105067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج غير الصحيحة عند الإشارة إلى العرض المعلَّم نفسه أكثر من مرة في query واحدة باستخدام قيم وسيطات مختلفة. سابقًا، كان المُحلِّل يدمج هذه الاستدعاءات في استدعاء واحد، ما كان يؤدي بصمت إلى إسقاط جميع عوامل التصفية باستثناء الأول. [#105170](https://github.com/ClickHouse/ClickHouse/pull/105170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح ظهور صف `TOTALS` مرتين في أسفل جدول النتائج في واجهة الويب `play.html`. [#103803](https://github.com/ClickHouse/ClickHouse/pull/103803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* رفض المتجهات غير المنتهية (`NaN`, `±Inf`) أثناء البحث المتجهي (سواء كانت متجهات البحث أو متجهات مرجعية)؛ إذ كانت تتسبب سابقًا في سلوك غير معرّف في `usearch`. [#104079](https://github.com/ClickHouse/ClickHouse/pull/104079) ([Groene AI](https://github.com/groeneai)).
* PromQL: إصلاح عامل التجميع للمتجهات الفارغة. [#104425](https://github.com/ClickHouse/ClickHouse/pull/104425) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL: إصلاح معالجة الأخطاء في واجهة Prometheus query API. [#104741](https://github.com/ClickHouse/ClickHouse/pull/104741) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح حالة تسابق في `MergeTreeTransaction::afterCommit` حيث كان من الممكن، بعد فقدان الاتصال بين كتابة `CSN` الخاصة بـ commit إلى ZooKeeper وإنهاء transaction، أن تصل استجابة `COMMIT` إلى client قبل أن تصبح قيمتا `creation_csn` و`removal_csn` الجديدتان مرئيتين في `system.parts`. [#104708](https://github.com/ClickHouse/ClickHouse/pull/104708) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح النمو الأُسّي للذاكرة في parser الخاص بـ KQL عند تحويل فهرسة المصفوفات المتداخلة (`arr[arr[arr[...]]]`). [#105142](https://github.com/ClickHouse/ClickHouse/pull/105142) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح النتائج غير الصحيحة في `RIGHT ANY JOIN` عندما يحتوي الجدول الأيمن على عدة rows لكل key، وتُقسَّم كتلة المخرجات بسبب حدود الحجم. يُغلق [#99431](https://github.com/ClickHouse/ClickHouse/issues/99431). [#102064](https://github.com/ClickHouse/ClickHouse/pull/102064) ([Vladimir Cherkasov](https://github.com/vdimir)).
* التحقق من تجاوز سعة المكدس في قارئ `Avro` أثناء إلغاء تسلسل الأنواع المتداخلة. [#102417](https://github.com/ClickHouse/ClickHouse/pull/102417) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تكرار rows في `system.completions` لإعدادات `MergeTree` — إذ كان كل اسم إعداد يظهر مرتين لأن كلًا من `getMergeTreeSettings` و`getReplicatedMergeTreeSettings` كانا يُفرَّغان رغم تطابق أسماء الإعدادات فيهما. يُغلق [#102013](https://github.com/ClickHouse/ClickHouse/issues/102013). [#102015](https://github.com/ClickHouse/ClickHouse/pull/102015) ([Groene AI](https://github.com/groeneai)).
* إصلاح `StorageObjectStorageQueue` ‏(`S3Queue`، `AzureQueue`) الذي كان يمنع إيقاف التشغيل إلى أن تُقرأ الملفات المُعالجة جزئيًا بالكامل من تخزين الكائنات. أصبح المصدر الآن يوقف القراءة فورًا عند إيقاف التشغيل؛ ويضمن إلغاء التكرار عدم تكرار الصفوف التي جرى بثّها مسبقًا إلى جدول الوجهة قبل إيقاف التشغيل عند إعادة محاولة الملف في بدء التشغيل التالي. [#103126](https://github.com/ClickHouse/ClickHouse/pull/103126) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح عمليات insert متعددة blocks إلى table engine ‏`Alias` مع `insert_deduplication_token` بحيث يتم الاحتفاظ بجميع blocks. [#103246](https://github.com/ClickHouse/ClickHouse/pull/103246) ([Enric Calabuig](https://github.com/eclbg)).
* إصلاح `JSONHas` و`JSONExtractBool` على أعمدة `JSON` الأصلية، حيث كانا يعيدان القيمة المستخرجة (بعد تحويلها إلى `UInt8`) بدلًا من `0`/`1`. [#103313](https://github.com/ClickHouse/ClickHouse/pull/103313) ([zxuhan7](https://github.com/zxuhan)).
* حماية input format ‏`CustomSeparated` من البيانات المشوهة أو العدائية التي تُهمل `format_custom_row_after_delimiter`. كان اكتشاف header، وschema inference، والصفوف ذات الأعمدة المتغيرة، يؤدي سابقًا إلى تجميع fields بلا حدود، وكان يمكن أن يخصص عدة غيغابايت من الذاكرة قبل الفشل. أصبحت عمليات القراءة الآن تفشل مع `INCORRECT_DATA` بمجرد أن يحتوي صف واحد على أكثر من 1,000,000 field. [#103404](https://github.com/ClickHouse/ClickHouse/pull/103404) ([Groene AI](https://github.com/groeneai)).
* إصلاح `RESTORE` لجداول `MergeTree` المتماثلة replicated بحيث يستخدم إلحاق الأجزاء المستعادة `backup_restore_keeper_max_retries` بدلًا من ميزانية إعادة المحاولة العادية الخاصة بـ insert في Keeper. [#104610](https://github.com/ClickHouse/ClickHouse/pull/104610) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح النتائج الخاطئة الناتجة عن `WHERE p AND <LowCardinality(Nullable(int)) constant>` على جداول `MergeTree`. كانت مثل هذه queries تعيد سابقًا صفر rows لأن part pruning كان يستنتج قيمة `NULL` افتراضية من النوع `LowCardinality(Nullable(...))` وينشئ قيد `notEquals(x, NULL)`، مما يؤدي إلى استبعاد كل part. [#104767](https://github.com/ClickHouse/ClickHouse/pull/104767) ([Groene AI](https://github.com/groeneai)).
* إصلاح نتيجة aggregation غير الصحيحة عند التجميع بواسطة دالة غير حقنية لعمود يكون أيضًا partition key (مثلًا `PARTITION BY a` مع `GROUP BY intDiv(a, 2)` أو `a % 2`). لم تكن values القادمة من partitions مختلفة والتي تطابق المجموعة نفسها تُدمج، مما كان ينتج rows مجموعات مكررة عند `allow_aggregate_partitions_independently = 1`. [#104869](https://github.com/ClickHouse/ClickHouse/pull/104869) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح حالة تسابق في نقل snapshot في `Keeper`، حيث كان يمكن إزالة snapshot أو نقلها أثناء إرسالها إلى follower قيد الاستعادة. [#104941](https://github.com/ClickHouse/ClickHouse/pull/104941) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح خطأ صامت يؤدي إلى نتائج خاطئة في `hilbertEncode` و`mortonEncode`، حيث كانت الوسيطة الأولى `Tuple` غير الثابتة (قناع النطاق) تستخدم قيم الصف 0's لتحديد إزاحة البتات لكل صف. أصبحت الدالتان الآن تحسبان قيم القناع لكل صف، لذا لم تعد النتيجة تعتمد على كون الإدخال ثابتًا أو على حجم block. [#104992](https://github.com/ClickHouse/ClickHouse/pull/104992) ([Groene AI](https://github.com/groeneai)).
* إصلاح `clickhouse-local` الذي كان يتجاهل بصمت configuration على مستوى المستخدم (`profiles`، `users`، `quotas`، وإعدادات التحكم بالوصول) عند الاكتشاف التلقائي لـ configuration file من `./clickhouse-local.xml` أو `~/.clickhouse-local/config.xml` أو `/etc/clickhouse-local/config.xml`. كانت هذه settings تُطبَّق سابقًا فقط عند تمرير `--config-file` أو عند وجود `./config.xml` في current directory؛ أما الآن فجميع مسارات الاكتشاف تتصرف بشكل متسق. [#105008](https://github.com/ClickHouse/ClickHouse/pull/105008) ([Groene AI](https://github.com/groeneai)).
* إصلاح مشكلة أعمدة `BFloat16` التي كانت تُرجع بصمت صفر تطابقات عند مقارنتها بقيمة نصية ثابتة (مثل `WHERE bf16_col = '49.9'`). [#105042](https://github.com/ClickHouse/ClickHouse/pull/105042) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح التعامل مع `CLEAR COLUMN` وTTL أثناء عمليات الدمج في `SummingMergeTree` و`AggregatingMergeTree` و`CoalescingMergeTree` عندما تكون الأعمدة المطلوبة للدمج غير موجودة أو منتهية الصلاحية. يغلق [#101953](https://github.com/ClickHouse/ClickHouse/issues/101953). [#105203](https://github.com/ClickHouse/ClickHouse/pull/105203) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح حالة تسابق بين `DNSCacheUpdater::run` و`Context::reloadClusterConfig` عبر إضافة تحقق صريح من عدم كون `shared->clusters_config` قيمة فارغة قبل فك مرجعها. [#105220](https://github.com/ClickHouse/ClickHouse/pull/105220) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إصلاح تحليل التاريخ والوقت بصيغة `best_effort` في `toDateTime64` بدقة `ms` و`ns`. [#105233](https://github.com/ClickHouse/ClickHouse/pull/105233) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
* إصلاح قيام `OSIOWaitMicroseconds` بالإبلاغ عن انتظار I/O على مستوى عمر الخيط بدلًا من انتظار I/O على مستوى query. [#105246](https://github.com/ClickHouse/ClickHouse/pull/105246) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* أصبح table engine `Hudi` الآن يرفع `INCORRECT_DATA` (وهو استثناء عادي على مستوى query) بدلًا من `LOGICAL_ERROR` عندما لا يطابق ملف Parquet في directory الجدول اصطلاح التسمية الخاص بـ Hudi وهو `[FileId]_[FileWriteToken]_[Timestamp].[extension]`. في السابق، كانت أسماء الملفات هذه تتسبب في استثناء في builds التصحيح. [#105266](https://github.com/ClickHouse/ClickHouse/pull/105266) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة تعطل متبادل في `ParallelFormattingOutputFormat` عند فشل الجدولة: عندما throws `scheduleFormatterThreadForUnitWithNumber` (مثل `CANNOT_SCHEDULE_TASK`)، كانت الوحدة تُترك في الحالة `READY_TO_FORMAT` من دون خيط formatter يعالجها، مما يؤدي إلى تعليق. تُغلَّف الآن استدعاء الجدولة داخل `try`/`catch` ويُمرَّر أي فشل عبر `onBackgroundException` لكي يخرج collector بشكل سليم. [#105275](https://github.com/ClickHouse/ClickHouse/pull/105275) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح فقدان بيانات صامت في `Distributed` async inserts عند التعافي من إيقاف غير طبيعي: إذا كان آخر ملف `.bin` في Batch محفوظة سليمًا لكن ملفًا في الوسط كان تالفًا، كانت `DistributedAsyncInsertBatch::recoverBatch` تتحقق فقط من ترويسة الملف الأخير، ثم كانت `sendBatch` تضع علامة العطب على Batch بأكملها — بما في ذلك الملفات السليمة — مما يؤدي إلى فقدان rows الخاصة بها. أصبح الآن التحقق من ترويسة كل ملف يتم على حدة، بحيث لا يُنقل إلى `broken/` إلا الملف التالف فعليًا، بينما تصل rows السليمة إلى الـ shard البعيد. [#105281](https://github.com/ClickHouse/ClickHouse/pull/105281) ([Groene AI](https://github.com/groeneai)).
* إصلاح تراجع في `clickhouse extract-from-config --try`: عندما كانت config تستخدم attributes من نوع `from_env` ولم يكن فيها عنصر `include_from` (أو كان يشير إلى ملف مفقود)، كانت جميع substitutions الخاصة بـ `from_env` تُسقط بصمت وتُعاد كسلاسل فارغة. وقد أدى ذلك إلى تعطيل اكتشاف المنفذ في نقطة دخول Docker في الإصدار 26.2.5. يغلق [#101704](https://github.com/ClickHouse/ClickHouse/issues/101704). [#105283](https://github.com/ClickHouse/ClickHouse/pull/105283) ([Groene AI](https://github.com/groeneai)).
* إصلاح فشل `INSERT INTO` في جدول `SQLite` بسبب خطأ صياغي من SQLite عندما تكون value المُدرجة من نوع `Enum` أو `JSON` أو `AggregateFunction` وكان تمثيلها النصي يحتوي على علامة اقتباس مفردة. أصبح الإعداد `output_format_values_escape_quote_with_quote` مُراعًى الآن في عمليات serialization المقابلة (في السابق كان يراعيه فقط `String` و`FixedString`). [#105285](https://github.com/ClickHouse/ClickHouse/pull/105285) ([Groene AI](https://github.com/groeneai)).
* إصلاح الخطأ `Code: 44. ILLEGAL_COLUMN: Cannot add column ...: column with this name already exists` الذي كانت تطرحه الاستعلامات الموزعة مع `allow_push_predicate_ast_for_distributed_subqueries = 1` (القيمة الافتراضية) عند مطابقة tuple في `GLOBAL IN` مع استعلام فرعي يحتوي الإسقاط فيه على أسماء أعمدة مكررة، مثل `(x, y) GLOBAL IN (SELECT number, number FROM numbers(5))`. [#105290](https://github.com/ClickHouse/ClickHouse/pull/105290) ([Groene AI](https://github.com/groeneai)).
* إصلاح `reinterpret` إلى `Array(LowCardinality(...))`، والتي كانت تُرجع خطأ `NOT_IMPLEMENTED` مُربكًا أثناء وقت التشغيل؛ وهي تُرجع الآن `ILLEGAL_TYPE_OF_ARGUMENT` أثناء التحقق من النوع. [#105301](https://github.com/ClickHouse/ClickHouse/pull/105301) ([Raúl Marín](https://github.com/Algunenano)).
* أصبحت `minMap`/`maxMap` (بصيغة array) و`minMappedArrays`/`maxMappedArrays` تتعامل الآن مع `NaN` بشكل متسق مع `ORDER BY`: إذ يُعامل `NaN` على أنه الأخير (ولا يُعاد إلا إذا كانت جميع القيم `NaN`). سابقًا، كانت النتائج تعتمد على موضع `NaN` في البيانات بسبب دلالات المقارنة غير المرتبة في IEEE 754، وكانت تختلف عن صيغة وسيط `Map` في `minMap`/`maxMap` التي أُصلحت في [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448). [#105331](https://github.com/ClickHouse/ClickHouse/pull/105331) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تسرّب في الذاكرة في cache ‏`ColumnsDescription` لكل table ضمن جداول عائلة `MergeTree` التي تحتوي على أعمدة `Nested`. ولم يكن يتم إخلاء entries مطلقًا عبر دورات `ALTER ADD COLUMN`/`DROP COLUMN` عندما يكون `share_nested_offsets = 1` (القيمة الافتراضية). [#105376](https://github.com/ClickHouse/ClickHouse/pull/105376) ([Groene AI](https://github.com/groeneai)).
* إصلاح الاستثناء `BAD_ARGUMENTS` ‏"It's a bug! Only integer types are supported by `__bitWrapperFunc`" الذي كان يُطرح عندما يحتوي `SELECT` مع skip index من النوع `TYPE set(N)` على عنصر `WHERE` تكون نتيجة تقييمه من النوع `Float` أو `BFloat16` أو أي نوع آخر غير صحيح (على سبيل المثال `WHERE c0 + 0.1` أو `WHERE log(c0)`). ويعود skip index الآن إلى مسار filter العادي في هذه الحالة. [#105384](https://github.com/ClickHouse/ClickHouse/pull/105384) ([Groene AI](https://github.com/groeneai)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* إيقاف استخدام مكتبات `compiler-rt` وترويساته الخاصة بالنظام. يُغلق [#91475](https://github.com/ClickHouse/ClickHouse/issues/91475). [#102857](https://github.com/ClickHouse/ClickHouse/pull/102857) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث صورة Docker الأساسية من نوع distroless لإصلاح ثغرات OpenSSL الأمنية في `libssl3t64`. [#103583](https://github.com/ClickHouse/ClickHouse/pull/103583) ([Rahul Nair](https://github.com/motsc)).
* ضمان استلام مفتاح GPG بشكل موثوق أثناء عمليات الإصدار عبر ربط عدة خوادم مفاتيح Ubuntu بالتتابع، بدلًا من انتهاء المهلة على `keyserver.ubuntu.com`. [#103834](https://github.com/ClickHouse/ClickHouse/pull/103834) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إزالة عمليات التحقق في `CMake` وقت البناء ومنعها (`check_*`, `try_compile`, `try_run`). وبما أن المصرّف وسلسلة الأدوات محددان مسبقًا، فلم تعد هناك حاجة إلى اكتشاف الميزات وقت التهيئة، وقد أصبح ذلك الآن محظورًا على مستوى المشروع بأكمله؛ وأي سلوك خاص بإصدار معيّن يجب تقييده صراحةً باستخدام `CMAKE_CXX_COMPILER_VERSION`. [#103980](https://github.com/ClickHouse/ClickHouse/pull/103980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* ترقية `libarchive` من 3.8.6 إلى 3.8.7. [#104047](https://github.com/ClickHouse/ClickHouse/pull/104047) ([Robert Schulze](https://github.com/rschu1ze)).
* تحديث `mongo-c-driver` إلى 2.3.0. [#104300](https://github.com/ClickHouse/ClickHouse/pull/104300) ([Raúl Marín](https://github.com/Algunenano)).
* تحديث تبعيات LLVM للإصدار 22.x. [#104381](https://github.com/ClickHouse/ClickHouse/pull/104381) ([Joshua Carp](https://github.com/jmcarp)).
* تمكين بناء صنفي embedded-client وPTY descriptor على MacOS وFreeBSD باستخدام دوال POSIX المحمولة `posix_openpt` / `grantpt` / `unlockpt` وإزالة حواجز `#if` الخاصة بـ Linux فقط. [#104436](https://github.com/ClickHouse/ClickHouse/pull/104436) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* ترقية `librdkafka` إلى الإصدار 2.14.1. [#105222](https://github.com/ClickHouse/ClickHouse/pull/105222) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).

<div id="264">
  ### إصدار ClickHouse 26.4، 2026-04-30. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.4/)، [الفيديو](https://www.youtube.com/watch?v=9lSVy7k2EoI)
</div>

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

* يستخدم المعامل `IN` الآن دلالات مطابقة دقيقة للقيم مع النوع `Bool`: إذ لا تطابق قيم `Bool` إلا القيمتان `0` و`1` داخل المجموعة. سابقًا، كانت القيم الرقمية الأكبر من `255` في مجموعة `IN` تُحوَّل خطأً إلى true عند مقارنتها بـ `Bool`، لذلك كان `SELECT CAST(1, 'Bool') IN (256)` يعيد 1. أما الآن، فهو يعيد `0` بشكل صحيح. يُغلق [#92980](https://github.com/ClickHouse/ClickHouse/issues/92980). [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* جرى تحديث مكتبة H3 إلى الإصدار v4، مما يحسّن دقة حسابات الطول والمساحة والمقاييس الأخرى. ويُعد هذا التغيير غير متوافق مع الإصدارات السابقة لأن النتائج الجديدة تختلف عن النتائج السابقة. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد مسموحًا باستخدام `SELECT` كمُعرّف bareword داخل عنصر في قائمة تعبيرات `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* يغيّر هذا التصحيح طريقة تعامل جدول Merge مع الأعمدة الافتراضية. فإذا كان underlying table يحتوي على `_table` أو `_database`، فستُقرأ هذه الأعمدة من التخزين؛ وإلا فستُملأ بعد خطوة القراءة باستخدام خطوة expression. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).
* يرفض المعامل `IN` الآن أيضًا تحويلات `Decimal` الفاقدة للدقة داخل الأنواع المركبة (`Tuple` و`Array` و`Map`)، مما يجعل سلوكه متسقًا مع مقارنات القيم scalar على المستوى الأعلى. في السابق، كانت فحوصات الدقة تُطبَّق فقط على قيم scalar في المستوى الأعلى: فعلى سبيل المثال، كان `CAST('33.3', 'Decimal64(1)') IN (33.33)` يعيد `0` بشكل صحيح، لكن `CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33])` كان يعيد `1` خطأً لأن التحويل الفاقد للدقة حدث داخل `Array`. أما الآن، فتعيد كلتا الحالتين `0` بشكل صحيح. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* خُفِّضت القيم الافتراضية لكلٍّ من `http_max_fields` من 1,000,000 إلى 1,000 و`http_max_field_name_size` من 128 KB إلى 4 KB للحد من استخدام الذاكرة قبل authentication بواسطة HTTP connections. وأُضيفت الإعدادات `http_max_request_header_size` و`http_headers_read_timeout`. ويمكن للمستخدمين الذين يعتمدون على الحدود الأعلى السابقة استعادتها عبر الإعدادات. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* إضافة ميزة الكتابة التلقائية إلى القرص لعمليات `hash join` و`parallel hash join` عبر تحويلها إلى `grace hash join` عند بلوغ حد الذاكرة. ويتحكم الإعداد `max_bytes_before_external_join` في هذا السلوك. [#97813](https://github.com/ClickHouse/ClickHouse/pull/97813) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إضافة دعم Arrow Flight SQL. [#91170](https://github.com/ClickHouse/ClickHouse/pull/91170) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إضافة دعم Incremental read لمحركات الجداول `Paimon` مع تتبّع تقدّم اللقطة عبر Keeper، بما في ذلك قراءات delta موجّهة للّقطات باستخدام `paimon_target_snapshot_id`، مع توسيع تغطية الاختبارات لسيناريوهات type mapping وpartition pruning وIncremental read. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* أصبحت الدالة `stem` الآن غير تجريبية (وكان يتعيّن سابقًا تمكين الإعداد `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)). ويمكنك الآن بسهولة تطبيق الاشتقاق على جميع الكلمات/الرموز في الأعمدة `String` و`FixedString` و`Array([Fixed]String)` و`Nullable` و`LowCardinality` و`Const` باستخدام الدالة `stem`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تنفيذ سلوك جديد للإعدادات `max_insert_block_size_rows` و`max_insert_block_size_bytes` و`min_insert_block_size_rows` و`min_insert_block_size_bytes` في عملية squashing ضمن إعداد التوافق `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إضافة الدالة `arrayAutocorrelation(arr [, max_lag])` التي تحسب الارتباط الذاتي المُطبَّع لمصفوفة رقمية لكل قيمة lag. وتدعم أنواع المصفوفات الصحيحة والعائمة والعشرية. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* إضافة دالة SQL باسم `obfuscateQuery`. يُغلق [#98010](https://github.com/ClickHouse/ClickHouse/issues/98010). [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* إضافة دعم النوعين Map وJSON/Object كـ dictionary attributes. ويمكن الآن لـ dictionaries تخزين الأنواع المعقدة واسترجاعها، بما في ذلك Map(String, String) وMap(String, Array(String)) وJSON وNullable(JSON)، في كلٍّ من تخطيطي FLAT وHASHED. [#98627](https://github.com/ClickHouse/ClickHouse/pull/98627) ([yanglongwei](https://github.com/ylw510)).
* إضافة إعدادَي MergeTree جديدين — `replicated_fetches_min_part_level` و`replicated_fetches_min_part_level_timeout_seconds` — يتيحان لـ replicas تخطي fetching للأجزاء المُدرجة حديثًا (غير المدمجة) من النظائر، مما يقلل الحمل الإضافي الناتج عن replication أثناء ingestion الكثيف. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* إضافة دعم MergeTree skip index لأعمدة JSON باستخدام JSONAllPaths مع أنواع الفهارس bloom\_filter وtokenbf\_v1 وngrambf\_v1 وtext (inverted)، مما يتيح granule skipping استنادًا إلى مجموعة JSON paths الموجودة في كل granule. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* تدعم الدالة `printf` الآن format strings غير الثابتة، مما يتيح استخدام أنماط format مختلفة لكل row استنادًا إلى قيم column. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash ](https://github.com/Onyx2406)).
* إضافة projection index جديد، `commit_order`، يعيد تنظيم البيانات وفق ترتيب الإدراج. [#99004](https://github.com/ClickHouse/ClickHouse/pull/99004) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إضافة الدالة `highlight` التي تُغلّف مواضع ظهور مصطلحات البحث في سلسلة نصية بوسوم HTML (الوسومان الافتراضيان هما `<em>`/`</em>`). تدعم المطابقة غير الحساسة لحالة الأحرف لـ ASCII، والدمج التلقائي للتطابقات المتداخلة، ووسومي الفتح/الإغلاق المخصصين. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* تنفيذ quotas استنادًا إلى hash الخاص بالـ normalized query لحماية خدمات ClickHouse العامة من إساءة الاستخدام. 1. دعم `NORMALIZED_QUERY_HASH` باعتباره نوع quota key - مع buckets منفصلة لكل normalized query فريدة، بحيث يتتبع `CREATE QUOTA q KEYED BY normalized_query_hash` كل query مميزة على حدة. 2. دعم `QUERIES_PER_NORMALIZED_HASH` باعتباره نوع مورد quota -- ما يقيّد الحد الأقصى لعدد مرات تنفيذ أي normalized query واحدة ضمن interval، بحيث يمنع `MAX queries_per_normalized_hash = 100` تشغيل أي query pattern واحدة أكثر من 100 مرة. [#99586](https://github.com/ClickHouse/ClickHouse/pull/99586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن للمستخدمين الآن كتابة استعلامات join باستخدام الصياغة `NATURAL JOIN`، التي تطابق تلقائيًا جميع columns التي تحمل الاسم نفسه وتزيل تكرار هذه columns في النتيجة. [#99840](https://github.com/ClickHouse/ClickHouse/pull/99840) ([Peter Nguyen](https://github.com/petern48)).
* دعم `SET TIME ZONE 'tz'` كـ Alias for `SET session_timezone`. [#99883](https://github.com/ClickHouse/ClickHouse/pull/99883) ([phulv94](https://github.com/phulv94)).
* إضافة دعم للاستعلامات المعلَّمة في واجهة الويب (`play.html`): يتم اكتشاف query parameters مثل `{name:Type}`، وتُعرَض حقول إدخال لملء values الخاصة بها. [#100041](https://github.com/ClickHouse/ClickHouse/pull/100041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم clause ‏`VALUES` القياسية في SQL كتعبير table داخل `FROM`، مثل `SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, val)`. [#100143](https://github.com/ClickHouse/ClickHouse/pull/100143) ([Desel72](https://github.com/Desel72)).
* إضافة وحدات متوافقة مع PostgreSQL إلى العامل `EXTRACT`: ‏`EPOCH` و`DOW` و`DOY` و`ISODOW` و`ISOYEAR` و`WEEK` و`CENTURY` و`DECADE` و`MILLENNIUM`. كما تم إصلاح `EXTRACT(WEEK FROM date)` الذي كان يُطلق خطأً سابقًا. [#100274](https://github.com/ClickHouse/ClickHouse/pull/100274) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة دعم لقيم interval المركبة القياسية في SQL مع محددات النطاق `TO`، مثل `INTERVAL '1:30' HOUR TO MINUTE`. ويجري داخليًا تفكيكها إلى مجموع intervals. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* إضافة metrics غير متزامنة لذاكرة buffer استقبال TCP وإرساله في النواة (`sk_rmem_alloc`, `sk_wmem_alloc`) الخاصة بـ sockets في HTTP connection pool، مع الإبلاغ عنها على شكل النسب المئوية p50/p75/p90/p95 وإجماليات لكل مجموعة connection. [#100575](https://github.com/ClickHouse/ClickHouse/pull/100575) ([Sema Checherinda](https://github.com/CheSema)).
* إضافة web UI خاصة بـ jemalloc profiling لـ ClickHouse Keeper، ومتاحة على `/jemalloc` عبر منفذ HTTP control. [#100606](https://github.com/ClickHouse/ClickHouse/pull/100606) ([murphy-4o](https://github.com/murphy-4o)).
* تنفيذ الأمر `SYSTEM FLUSH OBJECT STORAGE QUEUE db.table PATH 'x'` لكلٍّ من النمطين ordered وunordered. [#100709](https://github.com/ClickHouse/ClickHouse/pull/100709) ([Bharat Nallan](https://github.com/bharatnc)).
* تمت إضافة الدالة `JSONAllValues` التي تُرجع جميع القيم من عمود `JSON` على هيئة `Array(String)`، مع تسلسل القيم بتمثيل نصي وترتيبها حسب أسماء المسارات. كما أُضيف دعم الفهرس النصي لعبارة `JSONAllValues` على أعمدة `JSON`. وعند إنشاء فهرس نصي على `JSONAllValues(json_column)`، يُستخدم تلقائيًا لتصفية الاستعلامات على الأعمدة الفرعية لـ `JSON` (مثل `json_column.key1 = 'value'`). [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730) ([Anton Popov](https://github.com/CurtizJ)).
* تمت إضافة إعداد جديد باسم `input_format_column_name_matching_mode` يتيح درجات مختلفة من حساسية حالة الأحرف في تنسيقات الإدخال. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* تمت إضافة الأمر `watch` إلى `clickhouse-keeper-client` مع دعم watch في الأوامر `get` و`exists` و`ls`. [#100834](https://github.com/ClickHouse/ClickHouse/pull/100834) ([Den Kalantaevskii](https://github.com/Diskein)).
* تمت إضافة الطلب `getChildrenRecursive` ‏(ListRecursive) إلى ClickHouse Keeper والأمر `lsr` إلى `clickhouse-keeper-client`. وهذا يغلق [#99916](https://github.com/ClickHouse/ClickHouse/issues/99916). [#100998](https://github.com/ClickHouse/ClickHouse/pull/100998) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تمت إضافة دالة جديدة `arrayTranspose` تأخذ Array ثنائي الأبعاد (مصفوفة) وتبدّل صفوفه وأعمدته: `SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]])`. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* أصبح الإعداد `auto_statistics_types mergetree` مضبوطًا افتراضيًا على `'minmax, uniq'` — إذ تُنشأ إحصاءات minmax وuniq تلقائيًا لجميع الأعمدة المناسبة في الجداول الجديدة - كما أصبح `materialize_statistics_on_insert` مضبوطًا افتراضيًا على false — إذ تُبنى الإحصاءات الآن أثناء عمليات الدمج بدلًا من وقت الإدراج، مما يقلل العبء الإضافي على عمليات الإدراج. استخدم `SET materialize_statistics_on_insert = 1` لاستعادة السلوك السابق. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* تمت إضافة إعداد التحديث `prefer_dependency_replica` لسلاسل تبعية العروض المادية لتقليل البيانات المفقودة الناتجة عن تأخر النسخ المتماثل بين النسخ. [#101591](https://github.com/ClickHouse/ClickHouse/pull/101591) ([Seva Potapov](https://github.com/seva-potapov)).
* تمت إضافة الدالة `hasPhrase` (بالاسم البديل `matchPhrase`) للبحث عن العبارات (تسلسلات متصلة من الرموز). البحث هنا brute-force، أي إنه غير مدعوم بعد بواسطة الفهرس النصي. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تمت إضافة histogram metrics ‏`s3_read_request_duration_microseconds` و`s3_read_request_bytes` لمراقبة مدة اتصال طلبات S3 GET وعدد البايتات المستهلكة، وهي تظهر في `system.histogram_metrics` وعبر Prometheus endpoint. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* يمكن الآن إضافة قيم `Date` و`Date32` إلى قيم `Time` و`Time64` باستخدام العامل `+`، لينتج عن ذلك `DateTime` أو `DateTime64`. على سبيل المثال، تُرجع `SELECT toDate('2024-01-15') + toTime('14:30:25')` القيمة `2024-01-15 14:30:25`. وتُحسب النتيجة وفق المنطقة الزمنية للجلسة، وتُعالَج النتائج الخارجة عن النطاق وفق الإعداد `date_time_overflow_behavior`. وهذا يغلق [#95914](https://github.com/ClickHouse/ClickHouse/issues/95914). [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أصبح الفهرس النصي الآن في مرحلة GA ويظل مفعّلًا بغض النظر عن الإعداد `compatibility`، مما يمنع تعطيله بشكل غير متوقع أثناء استعادة النسخ الاحتياطية أو عند التشغيل في وضع التوافق. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* إضافة `ALTER TABLE ... EXECUTE remove_orphan_files` إلى جداول Iceberg لتحديد الملفات غير المُشار إليها وإزالتها من التخزين الكائني. [#99127](https://github.com/ClickHouse/ClickHouse/pull/99127) ([murphy-4o](https://github.com/murphy-4o)).
* إضافة الإعداد `query_plan_optimize_join_order_randomize` الذي يضفي عشوائية على الإحصاءات المستخدمة في إعادة ترتيب `join`، وهو مفيد لأغراض الاختبار. [#100643](https://github.com/ClickHouse/ClickHouse/pull/100643) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إضافة دعم دالة AI إلى ClickHouse، بما يتيح للمستخدمين استدعاء نقاط نهاية OpenAI وAnthropic باستخدام SQL. وتُعد `aiGenerate` أول دالة من هذا النوع. [#100831](https://github.com/ClickHouse/ClickHouse/pull/100831) ([George Larionov](https://github.com/george-larionov)).
* إضافة دوال AI: ‏`aiClassify` و`aiExtract` و`aiTranslate` للاستفادة من واجهات برمجة تطبيقات نماذج اللغة الكبيرة في ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* تمت إضافة `system.histogram_metric_log`، وهو جدول نظام جديد يلتقط لقطات دورية لجميع مقاييس المدرج التكراري (مثل زمن الاستجابة في S3/Azure، ومدد مراحل معالجة طلبات Keeper). كذلك، يتغير العمود `value` في `system.histogram_metrics` إلى `Float64` لأنه أكثر مرونةً وتوافقًا مع نموذج بيانات Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). ومن المرجح أن تتغير بنية الجدول في الإصدارات القادمة.

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* أصبح ClickHouse الآن قادرًا على استبعاد أجزاء البيانات بالكامل في استعلامات SELECT استنادًا إلى إحصاءات الحد الأدنى/الحد الأقصى. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* تقليل التنافس على الأقفال أثناء عمليات readonly على جداول ReplicatedMergeTree التي اكتملت فيها mutations. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* مراعاة `optimize_read_in_order` عند قراءة projections. يغلق [#89453](https://github.com/ClickHouse/ClickHouse/issues/89453). [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* مجموعة صغيرة من التحسينات في Hash Join وConcurrent Hash Join. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تحسين تحويل `DISTINCT` عبر تعطيل تحسين أعمدة `LowCardinality` عندما تكون بيانات الإدخال متميزة تقريبًا. [#97113](https://github.com/ClickHouse/ClickHouse/pull/97113) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تحسين أداء استعلامات `LIKE` المذكورة في [#97723](https://github.com/ClickHouse/ClickHouse/issues/97723). ويمكن لهذه الاستعلامات الآن استخدام فهارس النص. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* أصبحت الدوال الرياضية المتجهة (`exp`, `log`, `sigmoid`, `tanh`) أسرع الآن على AArch64 (باستخدام NEON/SVE) وعلى FreeBSD/Darwin، بعدما كانت تستخدم سابقًا مسار scalar احتياطيًا أبطأ. [#98230](https://github.com/ClickHouse/ClickHouse/pull/98230) ([Raúl Marín](https://github.com/Algunenano)).
* يمكن الآن للاستعلامات التي تُجري filtering على أعمدة primary key في `MergeTree` باستخدام بدائل regexp على سلاسل حرفية، مثل `^(abc-1|abc-2)`، الاستفادة من pruning للمفتاح الأساسي عندما تشترك البدائل في prefix واحد. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash ](https://github.com/Onyx2406)).
* تعميم التصفية الديناميكية top-k في `ORDER BY ... LIMIT` لدعم الأنواع `Nullable` و`String` و`COLLATE`. [#99033](https://github.com/ClickHouse/ClickHouse/pull/99033) ([murphy-4o](https://github.com/murphy-4o)).
* تسريع hash join على المفاتيح `Int32` و`Int64` ذات النطاق الصغير باستخدام hash table بفهرسة مباشرة. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).
* تسريع الاستعلامات غير المتصلة لأعمدة `LowCardinality` ذات Dictionary واحد. [#99285](https://github.com/ClickHouse/ClickHouse/pull/99285) ([Ivan Babrou](https://github.com/bobrik)).
* تسريع الدالتين `var*Stable` و`stddev*Stable` لأعمدة `Float64` عبر إلغاء المحاكاة الافتراضية للحلقة الداخلية. ملاحظة: يفعّل هذا تحسينات المصرّف (FMA/registers) التي تغيّر نتائج الفاصلة العائمة على مستوى ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* استخدام ترميز Firedancer base58 المُحسَّن للمدخلات بحجم 32/64 بايت (تلقائيًا مع `base58Encode`). كما أصبح من الممكن استخدام فك ترميز base58 المُحسَّن إذا كانت النتيجة بعد فك الترميز بحجم 32/64 بايت (صراحةً باستخدام `base58Decode('...', 32)` أو ما شابه). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* تفعيل تحسينات تستند إلى أقسام الرابط (`-ffunction-sections`, `-fdata-sections`, `--icf=all`) لتقليل حجم binary وتحسين الاستفادة من ذاكرة cache الخاصة بالتعليمات. [#99474](https://github.com/ClickHouse/ClickHouse/pull/99474) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح التوسع السلبي للاستعلامات القصيرة التي تتضمن التجميع على الأجهزة ذات العدد الكبير من الأنوية. فعندما يقرأ الاستعلام عددًا قليلًا من العلامات، لم يعد خط المعالجة يتوسع إلى `max_threads` بعد التجميع، مما يتجنب الأعباء الإضافية الناتجة عن تدفقات شبه فارغة. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء الاستعلامات التي تستخدم النسخ المتماثلة المتوازية عبر اختيار حجم مهمة القراءة على نحو صحيح. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* السماح بالاستباق في الجلب عند قراءة ملف بعيد عبر ذاكرة تخزين الصفحات المؤقتة في فضاء المستخدم. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تجنب الحساب غير الضروري للعمود الفرعي `.size` من النوع `String` أثناء تعداد الأعمدة الفرعية. [#99941](https://github.com/ClickHouse/ClickHouse/pull/99941) ([Pavel Kruglov](https://github.com/Avogar)).
* جعل شريط التقدم في `clickhouse-client` أقل تذبذبًا عند العمل من فندق مع clusters تضم عددًا كبيرًا جدًا من replicas. [#100145](https://github.com/ClickHouse/ClickHouse/pull/100145) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تشغيل `MemoryWorker` في `clickhouse-local` عند تفعيل page cache، بحيث يمكن استخدام userspace page cache فعليًا. [#100306](https://github.com/ClickHouse/ClickHouse/pull/100306) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين الاستعلامات عبر دفع clause `LIMIT` إلى داخل `UNION ALL`. [#100364](https://github.com/ClickHouse/ClickHouse/pull/100364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة دعم ترجمة JIT لمقارنات الأعمدة `String` و`FixedString` في `ORDER BY`، مما يحسن أداء الفرز في مرحلة الدمج بنسبة 6–17% لمفاتيح الفرز التي تعتمد بكثافة على السلاسل النصية. بالمشاركة في التأليف مع @lgbo-ustc. [#100577](https://github.com/ClickHouse/ClickHouse/pull/100577) ([Raúl Marín](https://github.com/Algunenano)).
* عند تفعيل `read_in_order_use_virtual_row` مع الإعداد الجديد `read_in_order_use_virtual_row_per_block`، أصبحت معلومات حدود الصفوف الافتراضية تُرسَل الآن بعد قراءة كل block من `MergeTree`، مما يسمح لعملية الدمج بإعادة ترتيب أولويات المصادر أثناء التدفق للأجزاء التي تُصفّى بياناتها بالكامل بواسطة `WHERE`/`PREWHERE`/`JOIN`. يُغلق [#99945](https://github.com/ClickHouse/ClickHouse/issues/99945). [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تسريع تحويل `Float` إلى `String` للقيم الصحيحة الكبيرة عبر توسيع المسار السريع `itoa` مع تقريب متوافق مع dragonbox. [#100649](https://github.com/ClickHouse/ClickHouse/pull/100649) ([Raúl Marín](https://github.com/Algunenano)).
* استبدال `dragonbox` بـ `zmij` للحصول على تحويل `Float` إلى `String` أسرع بمقدار 1.5x-3x. [#100650](https://github.com/ClickHouse/ClickHouse/pull/100650) ([Raúl Marín](https://github.com/Algunenano)).
* تسريع تحويل `Int128`/`UInt128` إلى سلسلة نصية عبر استبدال القسمة البرمجية باختزال Barrett وفكّ تكرار حلقة التحويل. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* تجنب إنشاء threads زائدة في الدمج المتوازي لـ `uniqExact`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* إضافة دمج متوازٍ على دفعات لـ `uniqExact`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).
* تحسين التوازي في الاستعلامات ذات views البسيطة (مع table أساسية من `MergeTree`) التي تُنفذ باستخدام parallel replicas. [#100815](https://github.com/ClickHouse/ClickHouse/pull/100815) ([Igor Nikonov](https://github.com/devcrafter)).
* يضيف دعم `parallel replicas` عبر `views` البسيطة (بما في ذلك عروض `UNION ALL` المؤهلة فوق جداول `MergeTree`) عند تعيين `parallel_replicas_allow_view_over_mergetree=1`. ويتيح ذلك تنفيذ الاستعلام الخارجي للـ view بالتوازي بدلًا من الاستعلام الداخلي، مما يزيد من مستوى التوازي في الاستعلامات عبر العقد. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* تحسين القراءة وفق ترتيب `primary key` في `full_sorting_merge` عند وجود عوامل تصفية تتضمن `IN` في `query plan`. [#101261](https://github.com/ClickHouse/ClickHouse/pull/101261) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين `allocations/deallocations` عبر تخزين إعدادات `sampling` مؤقتًا بدلًا من اجتياز كامل التسلسل الهرمي لـ `memory tracker`. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تراجع كبير في أداء `INSERT` عندما يكون `deduplicate_insert = 'enable'` (وهو الإعداد الافتراضي منذ 26.2)، وذلك عبر تأجيل حساب `hash` البيانات من `squashing` إلى جهة المصب، واستخدام تجزئة دفعية للأعمدة عبر `updateHashWithValueRange`، مما يقلّل الحمل الإضافي من نحو \~2.5s إلى \~0.5s لـ 5M صفوف مع 22 عمودًا. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).
* تقليل الحمل الإضافي لأقفال التحليل باستخدام `try_lock` لتجنّب احتساب زمن عمليات الاستحواذ غير المتنازع عليها، مع إزالة قياس مدة الاحتفاظ بالقفل. [#101502](https://github.com/ClickHouse/ClickHouse/pull/101502) ([Antonio Andelic](https://github.com/antonio2368)).
* استبدال تعليمات AVX-512 المضمنة المكتوبة يدويًا في `arrayDotProduct` بحلقات مستقلة عن المنصة قابلة للتوجيه التلقائي، مع إضافة دعم AVX2 وARM NEON. [#101571](https://github.com/ClickHouse/ClickHouse/pull/101571) ([Peng](https://github.com/fastio)).
* تحسين الأداء في `INSERT VALUES` لأعمدة `Map` و`Array` و`Tuple` عند تمرير القيم كسلاسل نصية مُهربة (مثل `'{\'key\':1}'`)، مع تجنّب الرجوع غير الضروري إلى `parser` تعبيرات SQL. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).
* إصلاح الاستخدام المفرط للمعالج من قِبل `table engine` ‏`RabbitMQ`. [#102711](https://github.com/ClickHouse/ClickHouse/pull/102711) ([Jaap Elst](https://github.com/jaapieaapie1)).
* أصبح مُحسِّن `join order` الآن يستنتج `predicates` مساواة انتقالية من شروط `join` الحالية. فعلى سبيل المثال، عند وجود `A.x = B.x AND B.x = C.x`، يتعرّف على التكافؤ `A.x = C.x`، مما يتيح للمُحسِّن النظر في عمليات `join` مباشرة بين الجداول المرتبطة انتقاليًا. ويمكن أن يحسّن ذلك جودة `plan` في `schemas` النجمية وندفة الثلج، حيث ترتبط جداول الأبعاد عبر جدول وقائع مشترك. وتتحكم في هذه الميزة `setting` الجديدة `enable_join_transitive_predicates` (وهي معطلة افتراضيًا). [#98479](https://github.com/ClickHouse/ClickHouse/pull/98479) ([Alexander Gololobov](https://github.com/davenger)).
* تحسين `TRUNCATE DATABASE TABLES LIKE` عبر الإلغاء المسبق لعمليات `merges` بالتوازي. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إضافة دعم الرتابة لعملية الضرب، مما يتيح `pruning` باستخدام `primary key` لتعبيرات `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* لم تعد `cache dictionaries` تأخذ قفلًا `exclusive` في `hasKeys`؛ مما يقلّل التزاحم على الأقفال باستخدام قفل مشترك لقراءات `cache`. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).
* تضمين `subquery` الخاصة بـ VIEW داخل `query tree` لإتاحة تطبيق المزيد من التحسينات على VIEW. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).
* تحسين `loading` الخاصة بـ `cache` عند بدء تشغيل الخادم. [#101500](https://github.com/ClickHouse/ClickHouse/pull/101500) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تطبيق التجسيد المادي الكسول للأعمدة في ReplacingMergeTree مع FINAL عندما يكون الشرط انتقائيًا بما يكفي. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إعادة تمكين التحسين `optimize_rewrite_array_exists_to_has` (وهو معطّل افتراضيًا منذ 23.10). فهو يعيد كتابة `arrayExists(x -> x = elem, arr)` إلى `has(arr, elem)` الأسرع بكثير، ويتجاوز الآن إعادة الكتابة على نحو صحيح عندما لا يكون نوع عنصر المصفوفة و`elem` متوافقين مع `has` (مثل `Date` مقابل `String`)، بحيث تواصل الاستعلامات التي كانت تتعطل سابقًا العمل. يُغلق [#71431](https://github.com/ClickHouse/ClickHouse/issues/71431). [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-improvement">
  #### تحسينات
</div>

* تحسين مخرجات `EXPLAIN PLAN pretty=1`: طباعة أعمدة مخرجات الاستعلام ذي المستوى الأعلى، وإظهار تسميات/رموز علاقة join مع عدد الصفوف التقديري للنتيجة والمحلية، وتضمين أعمدة المخرجات لكل خطوة في خطوات join/source. تغطي هذه التغييرات جزء Information Deficit من [#98117](https://github.com/ClickHouse/ClickHouse/issues/98117). [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إضافة إعداد لجدول MergeTree باسم `share_nested_offsets` (القيمة الافتراضية `true`). عند ضبطه على `false`، تُعامل أعمدة Array ذات الأسماء المنقطة (مثل `n.a` و`n.b`) على أنها أعمدة مستقلة بدلاً من مشاركة ملفات offsets والتحقق من تساوي أحجام المصفوفات كجزء من دلالات `Nested` القديمة. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* يمكن للمستخدمين الآن تحديد عدة authentication methods في إعداد users.xml/yaml (وكان ذلك ممكناً دائماً في SQL). [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* إعادة تحميل اتصالات Raft بين العقد التي تستخدم TLS تلقائياً. [#93455](https://github.com/ClickHouse/ClickHouse/pull/93455) ([Evgeny](https://github.com/evkuzin)).
* توسيع `cast_keep_nullable` ليعمل مع النوعين Dynamic/JSON. عند تفعيله، فإن تحويل NULL من الأنواع التي يمكن أن تكون Nullable سيُرجع NULL، وإلا فسيتسبب NULL في الخطأ `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* تقليل استهلاك الذاكرة لهياكل البيانات الداخلية (`ISerialization` objects) عبر إدخال مجمّع كائنات. [#96563](https://github.com/ClickHouse/ClickHouse/pull/96563) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* إضافة دعم للحقلين `password` و`identity` في إعداد XML الخاص بـ keeper-client. [#96800](https://github.com/ClickHouse/ClickHouse/pull/96800) ([Grigorii Sokolik](https://github.com/GSokol)).
* تحسين عمليات الكتابة إلى `Iceberg` لـ Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إضافة الإعداد `finalize_projection_parts_synchronously` للسماح بإنهاء projection parts بشكل متزامن أثناء INSERT، ما يقلل peak memory usage للجداول التي تحتوي على projections كثيرة مع الحفاظ على السلوك غير المتزامن الحالي افتراضياً. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* إضافة العمود `projections_duration_ms` إلى `system.part_log` لتسجيل مدة merge/rebuild لكل projection بالمللي ثانية. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* تحسين إلغاء queries التي تستخدم ExpressionTransform وNumbersRangedSource عبر KILL QUERY وإلغاء query (Ctrl+C) في clickhouse-client. [#98908](https://github.com/ClickHouse/ClickHouse/pull/98908) ([Roman Vasin](https://github.com/rvasin)).
* استبدال قائمة `source_table_engines` المرمّزة مسبقاً ببحث وقت التشغيل عبر `StorageFactory::getAllStorages()`. يضيف هذا عمليات تحقق من الوصول لبعض table engines غير المشمولة، ويغلق [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#98984](https://github.com/ClickHouse/ClickHouse/pull/98984) ([pufit](https://github.com/pufit)).
* إضافة إعداد للتحكم في سلوك عدم تطابق النوع لـ Variant وDynamic (throw أو إرجاع null). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* تحسين التوافق بين `Iceberg` وSpark: إصلاح التعامل غير المتسق مع المسارات الناتج عن المزج بين مسارات التخزين ومسارات البيانات الوصفية؛ وفرض أن تسجّل جداول `Iceberg` موقع الجدول على هيئة عنوان URL أو مسار مطلق؛ وإضافة آلية fallback لحساب أحجام الملفات في `Azure` لأن بعض قارئات ClickHouse لا تدعم عدّ البايتات بعد الاجتياز؛ ومعالجة `version-hint.txt` بطريقة متوافقة مع Spark؛ وإدخال تجريدات على مستوى الأنواع تجعل الخلط بين أنواع المسارات أصعب مستقبلًا؛ وإضافة اختبارات لـ `Azure` و`Local` تتحقق من قابلية التشغيل البيني بين المحركات من دون تحميل/تنزيل وسيط؛ وإصلاح استخدام عمليات الحذف الموضعي، التي كانت تعتمد سابقًا على استدلالات استنتاج المسار في مواضع لا يكون فيها هذا النهج مناسبًا. [#99163](https://github.com/ClickHouse/ClickHouse/pull/99163) ([Daniil Ivanik](https://github.com/divanik)). [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح احتمال حدوث race condition في `IPartitionStrategy::cached_result`، والذي أُدخل في [https://github.com/ClickHouse/ClickHouse/pull/92844](https://github.com/ClickHouse/ClickHouse/pull/92844). [#99400](https://github.com/ClickHouse/ClickHouse/pull/99400) ([Arthur Passos](https://github.com/arthurpassos)).
* يمكن للمستخدمين الآن كتابة أنواع بيانات Interval في ClickHouse بتنسيق Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* إضافة دعم native لاستيراد أنواع بيانات `UUID` وتصديرها بتنسيقات `Arrow` و`Parquet`. يمكن للمستخدمين الآن الاستعلام مباشرةً عن بيانات UUID ونقلها بين ClickHouse وأدوات البيانات الأخرى من دون الحاجة إلى تحويلها يدويًا إلى سلاسل نصية أو استخدام حلول بديلة. كما أُضيف استدلال منطقي تلقائي لعناصر UUID ذات المستوى الأعلى، ودعم لتلميح مخطط صريح لعناصر UUID المتداخلة. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* دعم أرشيفات `7z` على object storage. يُغلق [#70968](https://github.com/ClickHouse/ClickHouse/issues/70968). [#99600](https://github.com/ClickHouse/ClickHouse/pull/99600) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة أحداث ProfileEvents ‏`ObjectStorageListedObjects` و`ObjectStorageGlobFilteredObjects` و`ObjectStoragePredicateFilteredObjects` و`ObjectStorageReadObjects` لأغراض introspection لخط أنابيب سرد الملفات وقراءتها في object storage (`S3` و`Azure` وغيرهما). [#99778](https://github.com/ClickHouse/ClickHouse/pull/99778) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح فشل table function ‏`merge` مع الخطأ `UNKNOWN_IDENTIFIER` عند الاستعلام عن أعمدة غير موجودة في جميع الجداول الموزعة/البعيدة الأساسية. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* نضمّن الآن وقت commit في metric الإجمالي لوقت تنفيذ mutation في ReplicatedMergeTree. كان هذا الوقت مفقودًا بعد [#96376](https://github.com/ClickHouse/ClickHouse/issues/96376). [#99936](https://github.com/ClickHouse/ClickHouse/pull/99936) ([alesapin](https://github.com/alesapin)).
* إضافة سجل كتابة مسبقة للكائنات الثنائية الكبيرة (blob) المعلقة للإزالة في `MetadataStorageFromDisk`، مما يحسّن المتانة والاتساق بين البيانات الوصفية وobject storage البعيد عند حذف الكائنات. [#100019](https://github.com/ClickHouse/ClickHouse/pull/100019) ([Maksim Kita](https://github.com/kitaisreal)).
* تعطيل AI SQL generation (الأمر `??`) في العميل embedded (بروتوكولا SSH وWebSocket) لمنع الوصول إلى متغيرات بيئة الخادم. [#100290](https://github.com/ClickHouse/ClickHouse/pull/100290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تغيير الواجهة الخاصة بعمليات insert في Iceberg مع catalog. وإهمال الإعدادات التالية: `storage_catalog_type` و`storage_aws_access_key_id` وغيرها. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* اعرض علامات الجدولة على شكل 4 مسافات عند اللصق في clickhouse-client. يُغلق [#100405](https://github.com/ClickHouse/ClickHouse/issues/100405). [#100416](https://github.com/ClickHouse/ClickHouse/pull/100416) ([Raúl Marín](https://github.com/Algunenano)).
* تجنّب فحص كتالوج بحيرة البيانات البعيد بالكامل بحثًا عن تلميحات الجداول “Maybe you meant …” عندما يكون `show_data_lake_catalogs_in_system_tables` معطّلًا. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* طبّق `distributed_index_analysis_min_indexes_bytes_to_activate` بعد تقليم الأقسام. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* أصلِح فشل التحقّق في push down لمرشح bloom في Parquet عند استخدام عبارات IN/NOT IN الفارغة. [#100543](https://github.com/ClickHouse/ClickHouse/pull/100543) ([zoomxi](https://github.com/zoomxi)).
* أصبحت إحصاءات الأعمدة MinMax تخزّن القيمتَين الصغرى والكبرى على هيئة Field (مُحدَّد النوع) بدلًا من Float64. ويتضمن التنسيق المُسلسل اسم نوع العمود إلى جانب القيم. كما رُفع إصدار ملف الإحصاءات إلى V2؛ وتستلزم الملفات المكتوبة بإصدارات أقدم إعادة materialization ‏(ALTER TABLE … MATERIALIZE STATISTICS ALL). إصلاح [#53140](https://github.com/ClickHouse/clickhouse-private/issues/53140). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).
* حدّث `cppkafka` ليتضمن إصلاحًا لحالة deadlock عند إغلاق Consumer. [#100612](https://github.com/ClickHouse/ClickHouse/pull/100612) ([Azat Khuzhin](https://github.com/azat)).
* تحتوي معلومات الكائن المستخدمة في parsing لملفات البيانات في Iceberg الآن على عدد صفوف الملف وحجم الملف بالبايت، بعد parsing لهما من manifest file. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* أضف معلمة التهيئة `use_separate_cache_arena` لإتاحة التحكم في فصل Arena الخاصة بذاكرة cache. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).
* يضيف دعمًا أصليًا لاستيراد نوعَي البيانات `StringView` و`BinaryView` من Apache Arrow إلى أعمدة `String` في ClickHouse، مما يحسّن التوافق مع ingestion المعتمد على Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* أصبحت بعض server settings في Keeper تُعاد تحميلها ديناميكيًا إذا تغيّر config file أثناء runtime: max\_requests\_batch\_size, max\_requests\_batch\_bytes\_size, max\_request\_size, quorum\_reads. [#100773](https://github.com/ClickHouse/ClickHouse/pull/100773) ([Michael Kolupaev](https://github.com/al13n321)).
* زِد profile events ‏`MemoryAllocatedWithoutCheck/MemoryAllocatedWithoutCheckBytes` في إصدار release. [#100899](https://github.com/ClickHouse/ClickHouse/pull/100899) ([Pavel Kruglov](https://github.com/Avogar)).
* يستبعد تتبّع الذاكرة في Cgroupv2 الآن `slab_reclaimable` من ذاكرة النواة، مما يوفّر قياسًا أدق لاستخدام الذاكرة غير القابلة للاسترداد. [#100901](https://github.com/ClickHouse/ClickHouse/pull/100901) ([Antonio Andelic](https://github.com/antonio2368)).
* يعطّل `use_partition_pruning = 0` الآن أيضًا تقليم فهرس `MinMax` وتحسين العد على أعمدة مفتاح partition، بالإضافة إلى تعطيل التقليم المستند إلى مفاتيح partition. [#100904](https://github.com/ClickHouse/ClickHouse/pull/100904) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* يطبع `pretty=1` في `EXPLAIN [PLAN]` الآن expressions بصيغة سهلة القراءة. [#100927](https://github.com/ClickHouse/ClickHouse/pull/100927) ([Kirill Kopnev](https://github.com/Fgrtue)).
* يدعم `accurateCastOrNull` و`accurateCastOrDefault` الآن أنواع الهدف `Tuple`، بما في ذلك `Tuples` المتداخلة التي تحتوي على عناصر `Nullable`. في السابق، كانت هذه الدوال ترفض أهداف `Tuple` لأن `Tuple` لم يكن مدعومًا داخل `Nullable`. إغلاق [#100820](https://github.com/ClickHouse/ClickHouse/issues/100820). [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تكرار المخططات في واجهة Play عند التبديل بين المظهرين الفاتح والداكن. [#101058](https://github.com/ClickHouse/ClickHouse/pull/101058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحديث chdig إلى [v26.3.1](https://github.com/azat/chdig/releases/tag/v26.3.1) (واجهة perfetto، ومخططات sparklines في الملخص لـ CPU/Memory/Merges/Queries، وsystem.warnings، والبحث باستخدام regexp في السجلات). [#101092](https://github.com/ClickHouse/ClickHouse/pull/101092) ([Azat Khuzhin](https://github.com/azat)). وتحديث chdig إلى [v26.4.3](https://github.com/azat/chdig/releases/tag/v26.4.3) (تحسينات perfetto، وإصلاحات للمشاركة عبر pastila.nl، وفروقات flamegraph، وتغيير الإعدادات آنيًا). [#103145](https://github.com/ClickHouse/ClickHouse/pull/103145) ([Azat Khuzhin](https://github.com/azat)).
* يمكنك الآن وضع فاصلة ختامية في clause `WITH` قبل query `SELECT`. [#101093](https://github.com/ClickHouse/ClickHouse/pull/101093) ([Aruj Bansal](https://github.com/arujbansal)).
* إضافة MergeTree setting ‏`compress_per_column_in_compact_parts` للتحكم في كيفية تنظيم blocks المضغوطة داخل compact parts. عندما تكون قيمته `true` (وهي القيمة الافتراضية، مع الحفاظ على السلوك الحالي)، يبدأ كل column block مضغوطة جديدة، مما يتيح فك الضغط انتقائيًا. وعندما تكون قيمته `false`، تُحزم جميع columns داخل granule في block مضغوطة واحدة، مما يحسن compression ratio وأداء القراءة في workloads التي تقرأ جميع columns دائمًا. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* عرض نافذة معلومات الجدول في واجهة Play فقط عند تمرير المؤشر فوق اسم الجدول، وليس فوق الصف بأكمله. [#101118](https://github.com/ClickHouse/ClickHouse/pull/101118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة أيقونات خاصة بكل engine وتحسين تجربة استخدام قائمة الجداول في الشريط الجانبي لواجهة Play. [#101134](https://github.com/ClickHouse/ClickHouse/pull/101134) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم `Nullable(Tuple)` في formats ‏`Arrow` و`ArrowStream` و`ORC` و`Parquet` القديمة. [#101272](https://github.com/ClickHouse/ClickHouse/pull/101272) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* عرض صف TOTALS كتذييل للجدول في web UI ‏(play.html). [#101286](https://github.com/ClickHouse/ClickHouse/pull/101286) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم وضع الاستعلامات المتعددة في web UI ‏(`play.html`): تشغيل عدة queries دفعة واحدة مع تنفيذ متوازٍ للاستعلامات الشبيهة بـ `SELECT`، وعرض نتائج كل query على حدة. [#101290](https://github.com/ClickHouse/ClickHouse/pull/101290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تغيير حجم columns في web UI ‏play.html بعد إعادة هيكلة result table إلى مكوّن ويب. [#101295](https://github.com/ClickHouse/ClickHouse/pull/101295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة إمكانية تقييد عدد عمليات flushes لملف profile الخاص بـ jemalloc عند MEMORY\_LIMIT\_EXCEEDED لكل interval زمني. [#101396](https://github.com/ClickHouse/ClickHouse/pull/101396) ([Azat Khuzhin](https://github.com/azat)).
* تمت إضافة إعدادات Keeper ‏`nuraft_streaming_mode` (القيمة الافتراضية `false`) و`nuraft_max_log_gap_in_stream` و`nuraft_max_bytes_in_flight_in_stream`. يُغلق [#90743](https://github.com/ClickHouse/ClickHouse/issues/90743). [#101427](https://github.com/ClickHouse/ClickHouse/pull/101427) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تمت إضافة المقياس غير المتزامن `CGroupMemoryUsedWithoutPageCache` الذي يبلّغ عن استخدام ذاكرة cgroup مع استبعاد كلٍّ من OS page cache الخاصة بالنواة وuserspace page cache الخاصة بـ ClickHouse، بما يماثل `MemoryResidentWithoutPageCache`. كما جرى توضيح وصف المقياس `CGroupMemoryUsed`. [#101513](https://github.com/ClickHouse/ClickHouse/pull/101513) ([Francesco Ciocchetti](https://github.com/primeroz)).
* أُضيف تبسيط نحوي على مستوى parser لصياغة الدالة القياسية `OVERLAY` في SQL. الدالة `overlay` موجودة بالفعل؛ وتضيف هذه الميزة دعم الصيغة المعتمدة على الكلمات المفتاحية باستخدام `PLACING` و`FROM` و`FOR` كفواصل. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* تمت إضافة اسم مستعار للعمود `INDEX_LENGTH` إلى جدول النظام `information_schema.tables`، على غرار الأسماء المستعارة الحالية المكتوبة بأحرف كبيرة في هذا الجدول. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* أصبح جدول النظام `information_schema.tables` يتجاهل الآن أجزاء الجدول غير النشطة. وهذا يجعل قيم أحجام الجداول المعروضة أكثر واقعية. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).
* أصبحت الدالة `ngrams` ترفض الآن أطوال ngram غير الصالحة. مثال: أصبح `SELECT ngrams('abc', 0)` يُرجع خطأً. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* متابعة لـ [#91820](https://github.com/ClickHouse/ClickHouse/issues/91820) و[#90837](https://github.com/ClickHouse/ClickHouse/issues/90837): تصفية الخوارزميات غير المدعومة من رسالة الخطأ؛ وتشغيل الاختبارات الخاصة بـ FIPS في بنيات FIPS. [#102067](https://github.com/ClickHouse/ClickHouse/pull/102067) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* قَصر ارتفاع الخلية على ثلاثة أسطر في web UI ‏(`play.html`)، مع إتاحة توسيع الخلايا بالنقر عليها. [#102154](https://github.com/ClickHouse/ClickHouse/pull/102154) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة خيار جديد يتيح فرض نمط (virtual/path) لنقاط نهاية S3. يحل [#82019](https://github.com/ClickHouse/ClickHouse/issues/82019) و[#76007](https://github.com/ClickHouse/ClickHouse/issues/76007)، وهو استكمال لـ [https://github.com/ClickHouse/ClickHouse/pull/83168](https://github.com/ClickHouse/ClickHouse/pull/83168). [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أصبح الإعداد `restore_replace_external_engines_to_null` يتجاوز الآن أيضًا استعادة قواعد البيانات ذات المحركات الخارجية (مثل `DataLakeCatalog` و`MySQL` و`PostgreSQL` و`S3`) بدلًا من الفشل أو بدء اتصالات خارجية. [#102400](https://github.com/ClickHouse/ClickHouse/pull/102400) ([Nikita Fomichev](https://github.com/fm4v)).
* إضافة دعم تحليل الفهرس النصي للدالة `hasPhrase` عبر وضع `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تمت معاملة STATISTICS على أنها للقراءة فقط في ColumnDependency لإصلاح LOGICAL\_ERROR أثناء MATERIALIZE STATISTICS ALL. [#102627](https://github.com/ClickHouse/ClickHouse/pull/102627) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إنشاء `system.asynchronous_metric_log` وتعبئته في وضع keeper-as-server. [#102664](https://github.com/ClickHouse/ClickHouse/pull/102664) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إضافة خيار الإعداد `default_system_log_flush_policy.skip_alias_columns` للسماح بتجاهل أعمدة ALIAS في جداول سجلات النظام، مما يعالج مشكلة سجلات النظام المعتمدة على S3 التي ترفض أعمدة ALIAS. [#102669](https://github.com/ClickHouse/ClickHouse/pull/102669) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* لا تُمكِّن الإحصاءات التلقائية لجداول النظام، إذ نادرًا ما تستفيد منها. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).
* دعم المُجزِّئ `array` لتحسين LIKE. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).
* إرسال MemoryAllocatedWithoutCheck حتى في بنيات الإصدار. [#103064](https://github.com/ClickHouse/ClickHouse/pull/103064) ([Azat Khuzhin](https://github.com/azat)).
* إتاحة untracked\_memory لكل خيط تنفيذ في system.stack\_trace. [#103065](https://github.com/ClickHouse/ClickHouse/pull/103065) ([Azat Khuzhin](https://github.com/azat)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* إصلاح الخطأ `Block structure mismatch in stream` الناتج عن إرجاع أعمدة غير ضرورية بسبب Lazy materialization. يُصلح [#95191](https://github.com/ClickHouse/ClickHouse/issues/95191). [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح خطأ منطقي في استعلام سياسة إخفاء البيانات مع `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح خلل عند استخدام Unity catalog فوق GCS. [#98456](https://github.com/ClickHouse/ClickHouse/pull/98456) ([Melvyn Peignon](https://github.com/melvynator)).
* أصبح `DataLakeCatalog` الآن يراعي إعداد `http_forbid_headers` في إعدادات الخادم عند التحقق من الإعداد `auth_header`. [#98827](https://github.com/ClickHouse/ClickHouse/pull/98827) ([Michael Anastasakis](https://github.com/michael-anastasakis)).
* إصلاح استدعاءات `HeadObject` من نوع N+1 لأنماط globs ذات توسيع الأقواس في S3. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* التحقق من تغييرات الإعدادات في استعلامات CREATE عندما يكون المحرّك نفسه يدعم الإعدادات أيضًا. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح فشل `ALTER TABLE UPDATE/DELETE` مع الخطأ `Missing columns` عندما يحتوي جدول على عمود MATERIALIZED يعتمد تعبيره على عمود EPHEMERAL. [#99281](https://github.com/ClickHouse/ClickHouse/pull/99281) ([Yash ](https://github.com/Onyx2406)).
* أصبحت بيانات الاعتماد في سلاسل اتصال JDBC وODBC وNATS تُحجب الآن في سجلات الاستعلامات ومخرجات `SHOW CREATE`، مما يمنع الكشف غير المقصود عن المعلومات الحساسة. وبالنسبة إلى سلاسل الاتصال بصيغة URI (مثل `{scheme}://{user}:{password}@{host}`)، لا يُحجب سوى جزء كلمة المرور، بينما يبقى الباقي مرئيًا لتسهيل استكشاف الأخطاء وإصلاحها. كما أصبح الإعداد `nats_token` يُحجب الآن أيضًا. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح قيام parseDateTimeBestEffort بتحليل كلمات تبدأ ببادئات أسماء الأشهر بشكل غير صحيح في التنسيق DD-month-YYYY. يُغلق [#99345](https://github.com/ClickHouse/ClickHouse/issues/99345#event-23517658314). [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تجاهل TABLE\_UUID\_MISMATCH عند عدم استخدام analyzer. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح خلل كان يؤدي إلى تجاهل الإعدادات الصريحة المرسلة إلى جانب `compatibility` في الطلب نفسه بصمت إذا كانت قيمتها تطابق القيمة default على الخادم. [#99402](https://github.com/ClickHouse/ClickHouse/pull/99402) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح الحالات التي كانت فيها الأرقام ذات الأصفار البادئة في مسار hive partitioning تتسبب في أخطاء. يُصلح [#98801](https://github.com/ClickHouse/ClickHouse/issues/98801). [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح heap-use-after-free عند حذف جدول بالتزامن مع استعلام قراءة قيد التشغيل (19 حالة في CI خلال آخر 90 يومًا). [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خلل في Keeper حيث كان من الممكن أن يعلق read request (مما يؤدي إلى انتهاء مهلة session) إذا أُغلقت session أخرى غير مرتبطة على الخادم نفسه في توقيت غير مناسب تمامًا. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
* التحقّق من بنية العمود قبل تطبيق التصحيحات. [#99531](https://github.com/ClickHouse/ClickHouse/pull/99531) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح فشل التحقّق `rows_sources` في الدمج العمودي عند التبديل السريع بين `SYSTEM STOP/START MERGES` أثناء دمج جدول يحتوي على أعمدة `Dynamic`. [#99532](https://github.com/ClickHouse/ClickHouse/pull/99532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تشذيب الأقسام غير الصحيح للدالة `toWeek()`، الذي كان يتسبب في أن تُرجع الاستعلامات التي تحتوي على `WHERE toWeek(date, mode) = N` نتائج فارغة للأسابيع 49–52 في الجداول المُقسّمة باستخدام `toYYYYMM(date)`. [#99542](https://github.com/ClickHouse/ClickHouse/pull/99542) ([Takumi Hara](https://github.com/takumihara)).
* إصلاح استثناء في الدوال التي تعمل على ColumnReplicated مع صفوف غير مُشار إليها ناتجة عن JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
* إصلاح عدم قيام `CLEAR COLUMN` بإعادة بناء projections، وعدم إعادة تقييم materialized columns التي تعتمد على العمود الذي جرت إزالته، مما قد يسبب استثناءات أو تلفًا في البيانات أثناء عمليات الدمج اللاحقة. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
* إصلاح استثناء (`Bad get: has Tuple, actual type String`) في `ConditionSelectivityEstimator` عندما يستخدم استعلام عامل IN مع query parameter قياسي واحد (مثل `WHERE col IN ({p:String})`) على جدول يحتوي على column statistics ويكون `use_statistics` مفعّلًا. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
* يجب ألّا يُوسَم الجزء الذي يحتوي على projections غير معروفة بأنه مفقود نهائيًا. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح استثناء `logical error` نادر أثناء الدمج العمودي عند تنفيذ `SYSTEM STOP MERGES` و`SYSTEM START MERGES` بالتوازي. [#99628](https://github.com/ClickHouse/ClickHouse/pull/99628) ([Desel72](https://github.com/Desel72)).
* إصلاح مرجع متدلٍّ في injectRequiredColumns كان يتسبب في تعطل أثناء الدمج. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح سلوك غير معرّف في قارئ Avro format عند قراءة numeric values تتجاوز سعة column type الهدف. وأصبحت الاستعلامات الآن تفشل عند حدوث overflow بدلًا من إنتاج قيم غير صحيحة بصمت. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
* إصلاح تحليل علامات الاقتباس بأسلوب shell في arguments الخاصة بـ `executable` table function. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
* إصلاح إيقاف خاطئ في `NativeReader` عند deserialization لتدفق Native format مع عدم تطابق عدد الصفوف: جرى تغييره من `LOGICAL_ERROR` إلى `INCORRECT_DATA` بحيث يُعالَج الخطأ على أنه خطأ بيانات بدلًا من تشغيل `abort()` في builds الخاصة بـ sanitizer/debug. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
* إصلاح إنهاء العملية أثناء deserialization لعمود `Tuple` عندما يكون نوع serialization في التدفق binary هو `DETACHED`. [#99823](https://github.com/ClickHouse/ClickHouse/pull/99823) ([Rahul Nair](https://github.com/motsc)).
* إصلاح استثناء `LOGICAL_ERROR` زائف أثناء تغيير حجم filesystem cache ديناميكيًا بسبب race condition في ترقية الطابور الفرعي SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إبلاغ استعلامات async insert عن `written_rows` و`read_rows` و`result_rows` على أنها صفر في `query_log` ومخرجات العميل. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح الاستثناء "Bad cast from type X to Y" في `KILL QUERY` عندما يُرجع الاستعلام الداخلي على جداول النظام أعمدةً مغلّفةً في `ColumnConst`. [#99881](https://github.com/ClickHouse/ClickHouse/pull/99881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي في استعلام فرعي مترابط داخل وسيطة `untuple`. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح استثناء عند استدعاء `right` أو `rightUTF8` أو دوال `substring` أخرى بطول INT64\_MIN (-9223372036854775808)، إذ كان ذلك يؤدي سابقًا إلى سلوك غير معرّف بسبب فيض عددي. تُبلّغ الدوال الآن بشكل صحيح عن الخطأ ARGUMENT\_OUT\_OF\_BOUND. [#99934](https://github.com/ClickHouse/ClickHouse/pull/99934) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* أصبح ClickHouse الآن يتعامل بشكل صحيح مع الجداول بأسلوب Spark (حيث يكون لدينا مسار مطلق كامل لكل ملف أو مسار نسبي إلى مسار الجدول المشترك). يُصلح [#92348](https://github.com/ClickHouse/ClickHouse/issues/92348). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
* إصلاح الاستثناء "Inconsistent AST formatting" في `ALTER TABLE ... MODIFY QUERY` مع استعلامات فرعية متداخلة تحتوي على `SETTINGS` عندما يحتوي `ALTER` نفسه أيضًا على `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* التراجع عن [#97114](https://github.com/ClickHouse/ClickHouse/issues/97114) "Move join step row estimation before check for 1 child" بسبب الاشتباه في تراجع الأداء. [#99957](https://github.com/ClickHouse/ClickHouse/pull/99957) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح خلل كان قد يؤدي إلى تخطي ClickHouse لبعض الملفات إذا كان ترويس `Content-Length` مفقودًا من استجابة طلب HEAD الخاص بها (على سبيل المثال، بسبب decompressive transcoding في GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح فشل assertion (استثناء في debug builds، ونتائج غير صحيحة في release builds) عند ضرب حالات التجميع `aggregate states` الخاصة بـ `NumericIndexedVector` في ثابت صحيح زوجي، وكان السبب self-XOR على bitmaps من نوع Roaring ذات alias في `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
* منع استثناء `Unexpected return type` في filter pushdown القديم عبر `JOIN USING` متسلسل عندما تتغير أنواع المفاتيح بعد تحويلات `join`. [#99999](https://github.com/ClickHouse/ClickHouse/pull/99999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` "Unexpected node type for table expression ... Actual IDENTIFIER" عندما يُستخدم استعلام فرعي scalar داخل وسيطة غير محلولة لدالة جدول، مثل `SELECT * FROM remote('localhost', view(SELECT 2 AS x), concat(x, (SELECT 1)))`. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل `INSERT` مع `VALUES` عندما كانت البيانات متبوعةً بتعليق SQL ختامي (`--` أو `/* */`) في السطر التالي. يُتجاوز التعليق الآن بدلًا من تحليله على أنه صف آخر. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
* إصلاح استثناء في `arrayRemove` عند مقارنة قيم tuple ذات مكونات NULL. [#100017](https://github.com/ClickHouse/ClickHouse/pull/100017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب البيانات بين المستخدمين في `system.asynchronous_inserts`: كان بإمكان أي مستخدم لديه صلاحية `SELECT` على الجدول رؤية إدخالات async insert المعلّقة الخاصة بمستخدمين آخرين. تُصفّى الإدخالات الآن بحسب المستخدم الحالي، ما لم يكن لدى المستخدم امتياز `SHOW_USERS`. [#100024](https://github.com/ClickHouse/ClickHouse/pull/100024) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح حالة كان فيها التحويل من Time64 إلى UInt64 يقيّد القيم عند 24 ساعة. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح تعطل الخادم المحلي عندما يحتوي `CREATE DICTIONARY` على تعريف بقيمة قائمة تتضمن دالة غير موجودة. [#100036](https://github.com/ClickHouse/ClickHouse/pull/100036) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح عدم قدرة التنسيقين `CSV` و`MsgPack` على تحليل `Nullable(Tuple)` بشكل صحيح. يغلق [#99753](https://github.com/ClickHouse/ClickHouse/issues/99753). [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح فشل `CREATE VIEW` مع `UNKNOWN_IDENTIFIER` عند استخدام اسم مستعار لتعبير دالة في WITH (مثل `tuple(...)`) كطرف أيمن لـ `IN`. [#100042](https://github.com/ClickHouse/ClickHouse/pull/100042) ([Peng](https://github.com/fastio)).
* إصلاح فشل aggregate functions الخاصة بالسلاسل الزمنية (مثل `timeSeriesResampleToGridWithStaleness`) مع `ILLEGAL_TYPE_OF_ARGUMENT` عند استخدامها مع `initializeAggregation` أو `AggregatingMergeTree` في وضع parallel replicas. [#100053](https://github.com/ClickHouse/ClickHouse/pull/100053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تصحيح معالجة القيم السالبة داخل NumericIndexedVectorDataBSI. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح عدم احتفاظ الدالتين `accurateCastOrDefault` و`to*OrDefault` بنوع العمود Const للمدخلات الثابتة. [#100132](https://github.com/ClickHouse/ClickHouse/pull/100132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت query parameters المحذوفة من النوع `LowCardinality(Nullable(T))` تأخذ القيمة الافتراضية NULL بشكل صحيح، تمامًا مثل `Nullable(T)`. [#100144](https://github.com/ClickHouse/ClickHouse/pull/100144) ([Denys Melnyk](https://github.com/germiBest)).
* إصلاح استخدام قيمة غير مهيّأة في StringSearcher.h. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* السماح بإلغاء الاستعلامات الفرعية scalar وpipelines الأخرى أثناء التحليل عبر Ctrl+C. سابقًا، لم يكن للضغط على Ctrl+C أثناء تنفيذ استعلام فرعي scalar طويل التشغيل أي تأثير حتى يكتمل الاستعلام الفرعي. كما تم إصلاح شريط التقدم وإحصاءات JSON لكي يبلّغا بشكل صحيح عن الصفوف المقروءة أثناء تنفيذ الاستعلام الفرعي scalar، سواء في `clickhouse-client` أو `clickhouse-local`. بالمشاركة في التأليف مع @YjyJeff. [#100230](https://github.com/ClickHouse/ClickHouse/pull/100230) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح استثناء `LOGICAL_ERROR` في queries التي تتضمن أعمدة `Dynamic` مع عمليات CROSS JOIN وRuntime Filters، وكان السبب أن `ColumnVariant::filter` كان يشارك مؤشرات variant column بدلًا من استنساخها في مسار تحسين `hasOnlyNulls`. يغلق [https://github.com/ClickHouse/ClickHouse/pull/100147](https://github.com/ClickHouse/ClickHouse/pull/100147). [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح خلل في Array من النوع variant قد يعيد تفسير نوع البيانات عند استدعاء الدالة `arrayFirst`/`arrayLast`. على سبيل المثال، كان `Array(Variant(Date, Bool))` يتحول سابقًا إلى `Bool` عندما يكون variant type الأساسي الفعلي هو `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
* بعض التغييرات الطفيفة على الدوال: أصبحت دوال h3 تتحقق من الحدود بشكل أفضل؛ وأصبحت `readWKB` تتحقق من حدود الحجم (إعداد جديد، `max_wkb_geometry_elements`)؛ كما أصبحت دوال التوليد العشوائي تقيّد الحد الأقصى لعدد التكرارات في حساباتها. متابعة لـ [#93543](https://github.com/ClickHouse/ClickHouse/issues/93543). [#100270](https://github.com/ClickHouse/ClickHouse/pull/100270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة كانت تؤدي فيها `cutURLParameter` إلى تخطي المعلمات بشكل غير صحيح عندما تظهر كسلاسل فرعية ضمن معلمات أخرى. [#100280](https://github.com/ClickHouse/ClickHouse/pull/100280) ([Nikita Semenov](https://github.com/leftmain)).
* إصلاح استثناء عند احتواء إعداد مسار ملف metadata في Iceberg على null byte. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الزيادة التربيعية في عدد الاستعلامات المنفذة عند استخدام `distributed_index_analysis` مع predicates تحتوي على استعلامات فرعية `IN`. [#100287](https://github.com/ClickHouse/ClickHouse/pull/100287) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح استثناء "Block structure mismatch" عند استخدام `GROUP BY ... WITH TOTALS HAVING` مع `UNION DISTINCT` وتعبيرات Nullable. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء LOGICAL\_ERROR في `estimateCompressionRatio` عندما تكون المعلمة `block_size_bytes` كبيرة جدًا. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء "Inconsistent AST formatting" في builds التصحيح عند استخدام `GROUP BY CUBE(...) WITH ROLLUP` أو تركيبات مشابهة. [#100376](https://github.com/ClickHouse/ClickHouse/pull/100376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء عند إنشاء view بأسماء alias للأعمدة مع `SELECT *` أو استعلامات `EXCEPT`/`INTERSECT`. [#100386](https://github.com/ClickHouse/ClickHouse/pull/100386) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعليق `DROP TABLE` إلى أجل غير مسمى على جداول Kafka engine عندما يعلق المستهلكون في عملية rebalance بعد خطأ heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `ReadBuffer is canceled. Can't read from it.` في عمليات النسخ الاحتياطي/الاستعادة التي تستخدم أرشيفات zip. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `TOO_MANY_ROWS` في استعلامات `SELECT count()` مع `max_rows_to_read` / `force_primary_key` عندما تكون البيانات موزعة على عدة parts ذات حدود granule غير متطابقة. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `system.completions` ليُرشِّح databases وtables وcolumns بشكل صحيح حسب access rights في جميع تركيبات grant: grant لكل table، ولكل DB، وrevoke لكل column. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح SEGFAULT في NuRaft بسبب race condition. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
* أصبحت `min`/`max`/`argMin`/`argMax` الآن تتعامل مع NaN بشكل متسق مع `ORDER BY`: يُتخطى NaN دائمًا (ولا يُعاد إلا إذا كانت جميع القيم NaN). سابقًا، كانت النتائج تعتمد على موضع NaN في البيانات بسبب دلالات المقارنة غير المرتبة في IEEE 754. [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448) ([Raúl Marín](https://github.com/Algunenano)).
* أُصلح خلل ناتج عن النسخ واللصق، إذ كان يتم تجاهل `delta_lake_snapshot_end_version` بصمت عند ضبطه بدون `delta_lake_snapshot_start_version` بدلًا من إصدار الخطأ `BAD_ARGUMENTS`. [#100454](https://github.com/ClickHouse/ClickHouse/pull/100454) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* إن `StorageRabbitMQ::shutdown` ليس idempotent (إذ يصل دائمًا إلى المؤشرات الضعيفة ثم يدمّر المؤشرات المشتركة المقابلة)، لكنه بات يُستدعى الآن مرتين: مرة في `StreamingStorageRegistry` ثم في `DatabaseCatalog`. يجعل هذا الإصلاح الأسلوب idempotent ويضيف تحققات دفاعية من القيم الفارغة. [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أُصلح استثناء `LOGICAL_ERROR` عند استخدام `accurateCastOrNull` مع النوع الهدف `QBit`. [#100470](https://github.com/ClickHouse/ClickHouse/pull/100470) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أُصلح استثناء LOGICAL\_ERROR "Stream ... not found" عند الإدراج في جدول يحتوي على أعمدة `Array(JSON)` متداخلة ضمن wide parts مع `optimize_on_insert=0`. [#100475](https://github.com/ClickHouse/ClickHouse/pull/100475) ([Pavel Kruglov](https://github.com/Avogar)).
* أُضيف التحقق من مسارات مُدخلات الملفات في البيانات الوصفية للنسخ الاحتياطي لرفض اجتياز المسار، والمسارات المطلقة، والأسماء الفارغة أثناء `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
* أُصلح عدم عمل صياغة `LIMIT m OFFSET n WITH TIES`. وهذه الصياغة مكافئة لـ `LIMIT n, m WITH TIES` التي كانت تعمل بالفعل. [#100491](https://github.com/ClickHouse/ClickHouse/pull/100491) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أُصلح الاستثناء "No set is registered for key" عند استخدام `IN` مع أعمدة `Nullable(Tuple)` التي تحتوي على حقول مسماة وعناصر `LowCardinality`. [#100523](https://github.com/ClickHouse/ClickHouse/pull/100523) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح خلل heap-buffer-overflow في usearch `sorted_buffer_gt::insert()` كان يمكن أن يسبب تعطلًا أو إفسادًا صامتًا للذاكرة أثناء vector similarity search. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
* أُصلح تجاهل `EXECUTE AS` لعبارتي `FORMAT` و `INTO OUTFILE` المحددتين في الاستعلام. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
* أُصلح عدم اتساق تنسيق AST لـ SAMPLE مع OFFSET على مستوى الاستعلام. يُغلق [#100576](https://github.com/ClickHouse/ClickHouse/issues/100576). [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
* أُصلح Polaris catalog مع azure. فمنذ الإصدار 25.12، بدأ هذا الكتالوج مع azure بإضافة bucket في بداية المسار. على سبيل المثال: `abfss://polaris-polaris@<some_url>.windows.net/polaris-polaris/<other-path>` بدلًا من `abfss://polaris-polaris@<some_url>.windows.net/<other-path>`. يزيل طلب السحب هذا الـ bucket من المسار. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُصلح استثناء عدم تطابق النوع في التحويل عندما يكون العمود `default` ثابتًا في بعض blocks. يُغلق [#100574](https://github.com/ClickHouse/ClickHouse/issues/100574). [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
* يُصلح حالات NOT\_FOUND\_COLUMN\_IN\_BLOCK التي يحتوي فيها جزء projection SELECT على أعمدة غير موجودة في جزء SELECT الأصلي من الاستعلام. يُغلق [#100194](https://github.com/ClickHouse/ClickHouse/issues/100194). [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* يتحقق من أبعاد shape لتنسيق Npy مقارنةً بحجم الملف وحدود overflow لمنع حجب الخدمة الناتج عن ملفات `.npy` مُصمَّمة بأبعاد كبيرة على نحو غير معقول. ويرفض أيضًا الأشكال الفارغة، ويضع حدًا أقصى للذاكرة لكل صف يبلغ 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
* يُصلح تجاهل `session_timezone` عند parsing قيم `DateTime` أثناء async inserts ‏(TCP) وجميع عمليات insert عبر HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
* يتيح تمرير sharding key إلى table functions ‏`cluster()` و`clusterAllReplicas()` عند استخدام table function كمصدر (مثل `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
* يُصلح crash في server ‏(فشل assertion) عند استخدام Parametric aggregate functions مع combinator ‏Array وargument من نوع NULL، مثل `quantileIfArrayArray(0.5)([[NULL]], [[1]])`. [#100679](https://github.com/ClickHouse/ClickHouse/pull/100679) ([nerve-bot](https://github.com/nerve-bot)).
* يُصلح Exception عند حساب common supertype لـ tuples الفارغة وغير الفارغة عند تفعيل `use_variant_as_common_type`. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
* لم يعد server يفشل في بدء التشغيل عندما يكون قرص Azure blob storage مُعدًّا لكن endpoint غير متاح مؤقتًا (مثل فشل DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
* يُصلح سلوكًا غير معرّف في `positiveModulo` عندما لا يتسع divisor غير الموقّع داخل نوع النتيجة الموقّع. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
* يُصلح crash في server ‏(logical error "Unexpected return type from \_\_topKFilter") عند تفعيل `use_top_k_dynamic_filtering` وكان عمود `ORDER BY` من النوع `Dynamic` أو `Variant`. [#100742](https://github.com/ClickHouse/ClickHouse/pull/100742) ([Groene AI](https://github.com/groeneai)).
* يُصلح crash في server عند استخدام الدالة `has()` مع PREWHERE/WHERE على مفتاح Tuple يحتوي على عناصر LowCardinality. [#100760](https://github.com/ClickHouse/ClickHouse/pull/100760) ([Groene AI](https://github.com/groeneai)).
* يُصلح فشل assertion ‏`file_offset_of_buffer_end <= getFileSize()` ‏(Exception في إصدارات debug) عند القراءة من جداول `Log` أو `StripeLog` على S3 object storage مع عمليات كتابة concurrent. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُصلح Exception في مُقدِّر selectivity للإحصاءات عندما تحتوي WHERE clause على function expression (مثل `toDecimal64(col, 3)`) في table مع تفعيل statistics. ويتجاوز المُقدِّر الآن مثل هذه predicates بدلًا من محاولة إجراء type cast غير صالح. [#100764](https://github.com/ClickHouse/ClickHouse/pull/100764) ([Han Fei](https://github.com/hanfei1991)).
* يُصلح حالة نادرة قد ينتج فيها join مع إعادة الترتيب نتيجة غير صحيحة. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح أنواع الوسائط غير الصحيحة في `AggregateFunction` ضمن العدّ البسيط المُحسَّن، والتي كانت تتسبب في ظهور الاستثناء `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` عند الاستعلام عن تعبيرات مثل `count(v0 + v1)` على الجداول الموزعة. [#100794](https://github.com/ClickHouse/ClickHouse/pull/100794) ([YjyJeff](https://github.com/YjyJeff)).
* قد تعرض بعض الكتالوجات بعض البيانات السرية في قسم `SETTINGS` ضمن نتيجة الاستعلام `select * from system.databases`. يمنع هذا التغيير حدوث هذا السلوك. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح سلوك غير معرّف (تجاوز السعة في الأعداد الصحيحة الموقَّعة) في `toStartOfInterval` عند استخدام الفواصل Week أو Quarter أو Year مع وسيطة origin وقيم فاصلة متطرفة. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح مشكلة عدم قدرة مُركِّبات الدوال التجميعية `If` و`Distinct` و`DistinctIf` و`IfState ` ذات نوع الإرجاع `Tuple` ووسيطة `Nullable` واحدة أو أكثر على قراءة الحالات المُسلسلة الأقدم بعد إدخال `Nullable(Tuple)`. يغلق [#98917](https://github.com/ClickHouse/ClickHouse/issues/98917). [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح `segfault` في s3Cluster والاستعلامات الموزعة بسبب استخدام تجمع الاتصالات بعد تحريره. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح `segfault` الناتج عن فكّ إشارة مؤشّر فارغ عند تحميل القواميس أثناء إيقاف تشغيل الخادم. يُستدعى `Context::getUserDefinedSQLObjectsStorage` (الذي يفكّ إشارة `user_defined_sql_objects_storage`) بواسطة خيوط القواميس بالتزامن مع استدعاء الخيط الرئيسي لـ `Context::shutdown` (الذي يضبط `user_defined_sql_objects_storage` على null). نحتاج إلى التأكد من تعطيل التحديثات المستقبلية في مُحمّل القواميس، وإنهاء استعلامات القواميس الجارية حاليًا، والانتظار حتى تنتهي خيوط تحميل القواميس — وكل ذلك قبل تشغيل `Context::shutdown`. وهذا مماثل لما نفعله مع الاستعلامات العادية. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح تجاوز سعة المخزن المؤقت في `ULIDStringToDateTime` عندما يحتوي الإدخال على بايتات غير ASCII. [#100843](https://github.com/ClickHouse/ClickHouse/pull/100843) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح التعطل (`LOGICAL_ERROR`) عند الاستعلام عن جدول `Merge` (أو دالة الجدول `merge()`) الذي يغلّف عدة جداول، من بينها جدول `Distributed`، مع تفعيل `distributed_group_by_no_merge=1`. [#100859](https://github.com/ClickHouse/ClickHouse/pull/100859) ([Groene AI](https://github.com/groeneai)).
* عند تفعيل Cast\_keep\_nullable، لن يُطلق استثناءً عند التحويل من null ديناميكي إلى Variant. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح قيام أوامر `get` و`exists` و`ls` في `clickhouse-keeper-client` بطباعة رسائل خطأ `watch_id` المكررة إلى stdout بدلًا من stderr. [#100893](https://github.com/ClickHouse/ClickHouse/pull/100893) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* إصلاح الاستثناء في `intDiv`/`intDivOrZero` عند التعامل مع المصفوفات من tuples قابلة للإسناد إلى null، مثل `SELECT intDiv([divide((1, 2), ... AND NULL)], 2)`. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
* تقييم وسائط المحرك لـ `StorageAlias` قبل تخزين التعريف، بحيث تُحوَّل تعبيرات مثل `currentDatabase()` إلى قيم حرفية قبل حفظها في قاعدة البيانات. [#100902](https://github.com/ClickHouse/ClickHouse/pull/100902) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح `processAndOptimizeTextIndexFunctions` عندما يكون `query_plan_merge_expressions = 0`، حيث تكون `ExpressionStep` فوق `ReadFromMergeTree` مباشرةً. يُصلح هذا [#100879](https://github.com/ClickHouse/ClickHouse/issues/100879). [#100909](https://github.com/ClickHouse/ClickHouse/pull/100909) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تحديث replxx ليتضمن إصلاحًا لمشكلة الوصول خارج الحدود في do\_complete\_line. [#100925](https://github.com/ClickHouse/ClickHouse/pull/100925) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح النتائج غير الصحيحة عندما يستخدم JOIN مع تحسين shard-by-PK ذاكرة التخزين المؤقت لشروط الاستعلام، وتُستبعَد بعض الأجزاء بسبب الشروط المخزنة مؤقتًا. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
* إصلاح `divide` و`intDiv` اللتين كانتا تُرجعان `ILLEGAL_DIVISION` عند استخدامهما في تعبيرات التصفية أثناء تحليل الفهرس في بعض الحالات. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح أخطاء "جدول الهدف غير موجود" في materialized views ذات الجداول الداخلية أثناء بدء التشغيل غير المتزامن، وكانت ناتجة عن ترتيب غير صحيح لاعتماديات بدء التشغيل. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح سلوك غير معرّف (تجاوز سعة الأعداد الصحيحة الموقعة) في parseDateTimeBestEffort عند تحليل سلاسل datetime التي تحتوي على أكثر من 18 رقمًا كسريًا للثانية. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
* إصلاح تعطل عند استخدام فهرس بحث نصي مع clause `IN` تحتوي على subquery من نوع Tuple، مثل `WHERE (id, str) IN (SELECT (id, str) FROM ...)`، أو عندما لا يتطابق عدد columns في الـ subquery مع الـ Tuple على الجانب الأيسر من `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تعطل عند بناء Dictionary من نوع Polygon من جدول `MergeTree` يستخدم serialization للأعمدة sparse. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح الخطأ المنطقي "Invalid action query tree node" عند استخدام `INTERSECT ALL` / `UNION ALL` مع expressions مطوية إلى ثوابت. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح aggregate function `sumCountOrDefault` عندما يحتوي argument واحد أو أكثر على `Nullable`، إذ لم تكن قادرة على قراءة الحالات الأقدم التي جرت لها serialize بعد إدخال `Nullable(Tuple)`. يُغلق هذا [#100882](https://github.com/ClickHouse/ClickHouse/issues/100882). [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تعطل (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) في خوارزميات merge عندما يُنتج النسخ الكسول للأعمدة (`enable_lazy_columns_replication`) أعمدة `ColumnReplicated` تتدفق إلى pipelines الفرز بالدمج مع مدخلات تصل متأخرة. [#101036](https://github.com/ClickHouse/ClickHouse/pull/101036) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ `UNKNOWN_IDENTIFIER` غير الصحيح عندما يُستخدم alias نفسه لعدة expressions في `SELECT`؛ ويُبلَّغ الآن عن الخطأ الصحيح `MULTIPLE_EXPRESSIONS_FOR_ALIAS`. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح أعمدة ALIAS من النوعين `DateTime`/`DateTime64` التي لم تكن تطبّق تحويل timezone عندما تختلف timezone المُعلنة عن timezone الخاصة بالتعبير. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم تسجيل سياسات الصفوف في `query_log` للعروض والاستعلامات الفرعية و`INSERT ... SELECT`. رغم تطبيق سياسات الصفوف أثناء تخطيط الاستعلام، لم تكن تُمرَّر من المخططات الفرعية إلى المخطط الأب لأغراض التسجيل. والآن تُحفَظ سياسات الصفوف (للتسجيل فقط) في `QueryAccessInfo` بحيث يمكن لكلٍّ من المخططات والمخططات الفرعية تعبئتها. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).
* إصلاح استثناء في `DirectJoinMergeTreeEntity` عندما تحتوي كتل خط المعالجة على أعمدة `ColumnConst` مدمجة مع أعمدة عادية. [#101046](https://github.com/ClickHouse/ClickHouse/pull/101046) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح المسافة الزائدة في تنسيق الاسم المستعار لأعمدة CTE (`WITH t (a, b)` → `WITH t(a, b)`). [#101049](https://github.com/ClickHouse/ClickHouse/pull/101049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل table functions ‏`remote`/`cluster` مع table functions المتداخلة مثل `merge` عند تفعيل analyzer. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تطبيق `OFFSET` مرتين في distributed queries عند `prefer_localhost_replica=1`، ما كان يؤدي إلى إرجاع عدد صفوف أقل من المتوقع. [#101071](https://github.com/ClickHouse/ClickHouse/pull/101071) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح التعطل عند استخدام تنسيق `Regexp` مع regular expression غير صالح في الإعداد `format_regexp`. [#101074](https://github.com/ClickHouse/ClickHouse/pull/101074) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح الخطأ "Illegal type Decimal64 of start parameter" في aggregate functions الخاصة بالسلاسل الزمنية عند استخدام `serialize_query_plan=1` مع parallel replicas. [#101083](https://github.com/ClickHouse/ClickHouse/pull/101083) ([Groene AI](https://github.com/groeneai)).
* إصلاح استثناء في `optimizeLazyMaterialization` عند استخدام projection مع PREWHERE و`ORDER BY ... LIMIT`. [#101115](https://github.com/ClickHouse/ClickHouse/pull/101115) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تعطل الخادم (SIGABRT) عند استخدام aggregate functions مع combinator الداخلي فقط `Null` (مثل `sumNull` و`avgNull`) مع تفعيل الإعداد `aggregate_functions_null_for_empty = 1`. [#101147](https://github.com/ClickHouse/ClickHouse/pull/101147) ([Groene AI](https://github.com/groeneai)).
* إصلاح حالة use-after-free في مسار الكتابة في filesystem cache، كانت قد تتسبب في القراءة من ذاكرة جرى تحريرها عند تسجيل file segments المكتملة (رصدها MemorySanitizer في BuzzHouse). [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم مع الخطأ "Trying to attach external table to a ready set without explicit elements" عندما يواجه distributed index analysis مسند GLOBAL IN جرى إنشاء مجموعته دون عناصر صريحة. [#101178](https://github.com/ClickHouse/ClickHouse/pull/101178) ([Groene AI](https://github.com/groeneai)).
* إصلاح إرجاع الدالتين التجميعيتين `MAX`/`MIN` على أعمدة `Decimal` نتائج غير صحيحة عند تفعيل ترجمة JIT البرمجية (بعد بلوغ threshold الترجمة). [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطيل تحسينات `minmax_count_projection` وتحسينات `COUNT(*)` البسيطة بشكل دائم بعد lightweight delete، حتى بعد دمج جميع الأجزاء التي تحمل قناع lightweight delete. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح حالة قد تؤدي إلى ظهور الخطأ المنطقي `Having zero bytes, ...` من `cache` بسبب الكتابة فوق كائن بعيد بين `list` و`read`، ما كان يؤدي سابقًا إلى بيانات وصفية قديمة للكائن. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح تعطل الخادم (LOGICAL\_ERROR: Bad cast from ColumnVector to ColumnLowCardinality) عند الاستعلام عن جدول MergeTree باستخدام `ORDER BY CAST(lc_column, 'Type')`، حيث يكون `lc_column` من النوع LowCardinality. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
* إصلاح تنظيف processing nodes القديمة في `S3Queue`. [#101230](https://github.com/ClickHouse/ClickHouse/pull/101230) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح سلوك غير معرّف في mergeTreeAnalyzeIndexes() في حال كانت وسيطة optimizations غير صالحة. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الاستثناء `Logical error: 'partitions_count > 0'` عند تنفيذ عمليات `ALTER TABLE UPDATE` متتالية على جدول Iceberg مقسّم إلى partition. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
* إصلاح نتائج query غير الصحيحة عند استخدام ثابت صحيح كبير (مثل 256 أو 2147483648) كـ predicate منطقية في WHERE clause مع AND على جداول MergeTree. على سبيل المثال، كان `SELECT count() FROM t WHERE (2147483648 > b) AND 2147483648` يُرجع 0 بشكل غير صحيح بدلًا من مطابقة جميع الصفوف. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
* إصلاح insert-select من delta lake cluster مع replicated merge tree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح التعطل المصحوب بالرسالة "Logical error: Reading from materialized CTE before materialization" عندما يشير scalar subquery إلى سلسلة من materialized CTEs المعتمدة على بعضها بعضًا. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
* إصلاح data race على `storage_id` في `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح تنسيق واستنساخ AST لعبارة BACKUP FROM SNAPSHOT. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح تعطل LOGICAL\_ERROR مع الرسالة "Current component is empty" عند الاستعلام عن `system.part_moves_between_shards` مع تمكين الإعداد `enforce_keeper_component_tracking`. [#101462](https://github.com/ClickHouse/ClickHouse/pull/101462) ([Groene AI](https://github.com/groeneai)).
* إصلاح خطأ segmentation fault في DataTypeDynamic::create() عندما يولّد `fuzzer` شجرة AST مشوّهة لنوع Dynamic. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
* طرح خطأ عند استخدام إعداد `delta_lake_snapshot_version` أو إصدار CDF بدون تمكين DeltaKernel، بدلًا من إرجاع بيانات خاطئة بصمت. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
* إصلاح الاستثناء `NOT_FOUND_COLUMN_IN_BLOCK` عند استخدام ARRAY JOIN مع JOIN USING وتمكين الإعداد `analyzer_compatibility_join_using_top_level_identifier`. إغلاق [#101240](https://github.com/ClickHouse/ClickHouse/issues/101240). [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح فشل حلقة إعادة محاولة INSERT في Iceberg عندما يكون الجدول قد أُنشئ باستخدام `iceberg_metadata_file_path` وتكون نسخة البيانات الوصفية المستهدفة موجودة بالفعل. [#101548](https://github.com/ClickHouse/ClickHouse/pull/101548) ([Groene AI](https://github.com/groeneai)).
* إزالة Nullable من عمود النتيجة في arrayIntersect والدوال ذات الصلة لتجنّب عدم التطابق بين التسلسل وإلغاء التسلسل. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
* إصلاح تعطل الخادم (LOGICAL\_ERROR) عند تنفيذ SELECT من عرض مادي يستند إلى table engine من نوع IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
* إصلاح رسالة الخطأ غير الصحيحة عند استدعاء `intExp10` بوسيطة NaN — إذ كانت تعرض `intExp2` بدلًا من `intExp10`. [#101582](https://github.com/ClickHouse/ClickHouse/pull/101582) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* إصلاح عدم قيام `allow_statistics=0` بحظر `ALTER TABLE ADD STATISTICS` و`ALTER TABLE DROP STATISTICS` بعد إعادة الهيكلة في [#100288](https://github.com/ClickHouse/ClickHouse/issues/100288). [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* إصلاح فشل `KeeperMap` `CREATE TABLE` مع الرسالة "Cannot create metadata for table" عندما تكون عقد ZooKeeper المتبقية من عملية حذف جزئية قبل الإصدار 25.1 تفتقد العقدة `drop_lock_version`. [#101623](https://github.com/ClickHouse/ClickHouse/pull/101623) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح خطأ منطقي محتمل أثناء قراءة subcolumns في Map. يُغلق [#100769](https://github.com/ClickHouse/ClickHouse/issues/100769). يُغلق [#101336](https://github.com/ClickHouse/ClickHouse/issues/101336). [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح أولوية المطابقة التامة للعمود الفرعي مقارنةً بمطابقة البادئة في `getSubcolumnData` لتجنّب تعطل محتمل. يُغلق [#101271](https://github.com/ClickHouse/ClickHouse/issues/101271). [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعطل (LOGICAL\_ERROR: "ColumnUnique can't contain null values") عند مقارنة عمود `LowCardinality` مع ثابت NULL من نوع `Variant` بينما يكون `use_variant_default_implementation_for_comparisons` معطلًا. [#101690](https://github.com/ClickHouse/ClickHouse/pull/101690) ([Groene AI](https://github.com/groeneai)).
* ما الجديد: أُضيفت حماية للتدفق الفارغ إلى Bzip2ReadBuffer بحيث يعيد EOF بدلًا من إطلاق UNEXPECTED\_END\_OF\_FILE عندما يكون التدفق الداخلي فارغًا. [#101691](https://github.com/ClickHouse/ClickHouse/pull/101691) ([ClickGap AI Bot](https://github.com/clickgapai)).
* ما الجديد: تم إصلاح نص الوصف المعكوس للعمود `alterable` في `system.s3_queue_settings` و`system.azure_queue_settings` — إذ جرى تبديل دلالتي `0` و`1` لتتوافقا مع السلوك الفعلي في الشيفرة. [#101703](https://github.com/ClickHouse/ClickHouse/pull/101703) ([ClickGap AI Bot](https://github.com/clickgapai)).
* إصلاح توجيه positiveModulo(tuple, number) بشكل غير صحيح إلى القسمة بدلًا من باقي القسمة. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
* إصلاح تعطل يحدث عند تهيئة `thread_pool_size` على disk مغلّف بـ cache. سابقًا، كانت `FileCacheSettings::loadFromConfig()` ترفض `thread_pool_size` باعتباره setting غير معروف، مما كان يمنع الخادم من البدء. هذا setting هو parameter صالح في `IDisk` يتحكم في عدد threads المستخدمة في عمليات النسخ من disk إلى disk أثناء عمليات نقل الأجزاء في الخلفية. [#101712](https://github.com/ClickHouse/ClickHouse/pull/101712) ([Francisco](https://github.com/Milias)).
* إصلاح إنشاء Dictionary ‏`RANGE_HASHED` الذي كان يقبل بصمت سمة النطاق `MAX` غير الموجودة، ويستخدم تهيئة نوع خاطئة عندما كانت سمتا الحد الأدنى والحد الأقصى للنطاق من نوعين مختلفين. كان الخلل ناتجًا عن خطأ نسخ ولصق في `buildRangeConfiguration`، إذ كان يبحث عن `min_attr_name` بدلًا من `max_attr_name` للسمة القصوى. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح تعطل use-after-free في scheduler الخاص بتأجير CPU عندما يستمر مؤقت الانتظار بعد انتهاء عمر worker thread الذي تشير إليه `ProfileEvents::Counters`. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح خلل في الدالتين arrayLevenshteinDistanceWeighted و arraySimilarity. يغلق [#101725](https://github.com/ClickHouse/ClickHouse/issues/101725). [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* إصلاح تجاهل Prometheus Query API لهيئات نماذج POST. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
* إصلاح تسرّب Exception من destructor ‏S3 `Client::~Client` بما يؤدي إلى إنهاء server. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* إصلاح use-after-scope في deserialization المتوازي للمسارات الديناميكية من النوع `Object`، وهو ما كان قد يؤدي إلى أعطال عند قراءة جداول تحتوي على عدد كبير من المسارات الديناميكية. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح مخرجات غير صحيحة في الدالة `formatDateTime` مع Formatter ‏`%W` في بعض إعدادات formatting المعينة (غير `default`). [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح النتيجة السلبية الكاذبة في `shouldPatchFunction` ضمن `SYSTEM INSTRUMENT ADD` عندما يظهر نص البحث لأول مرة داخل argument قالب في اسم الرمز بعد فكّ تشويشه. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح فقدان UDF registry عند انتهاء session الخاصة بـ ZooKeeper أثناء refresh الدوري — إذ كان من الممكن أن تصبح جميع user-defined functions غير متاحة إلى أن ينجح full refresh. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح وصف `system.codecs` لـ `AES_256_GCM_SIV` لكي يعرض `AES-256` بدلًا من `AES-128`. [#101917](https://github.com/ClickHouse/ClickHouse/pull/101917) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح استخدام extremes خاطئة في min-max index أُنشئ على JSON column، مما أدى إلى نتيجة query خاطئة. يغلق [#101700](https://github.com/ClickHouse/ClickHouse/issues/101700). [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
* أصبحت `splitByString` tokenizer ترفض الآن سلاسل الفاصل الفارغة. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح مشكلة أن `materialize_skip_indexes_on_merge=false` لا يمنع text indexes (full-text) أثناء merge. سابقًا، لم يكن يتم تعطيل سوى skip indexes غير النصية (minmax و set و bloom\_filter)؛ أما text indexes فكانت تستمر في البناء، مما يهدر CPU وعمليات I/O. [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
* كانت `sparseGrams` tokenizer تُولّد tokens أطول من الحد الأقصى المحدد للطول (وكان سبب ذلك وجود `+2` مضمّنة في التنفيذ). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
* إصلاح SIGSEGV في `MergeTreeDataPartWriterWide::cancel` عند قيام مُنشئ stream برمي استثناء أثناء `addStreams`، مما يترك إدخالًا فارغًا في `column_streams`. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح استثناء يحدث عند الاستعلام عن جداول Merge أو Distributed مع full-text index وشروط ترشيح مركبة تجمع بين `has*Tokens` وLIKE، عندما يكون `query_plan_direct_read_from_text_index` مُمكّنًا. [#101939](https://github.com/ClickHouse/ClickHouse/pull/101939) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح سلوك غير معرّف عند تحليل حزم query في native protocol التي تحتوي على قيم `QueryProcessingStage` غير صالحة. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
* إغلاق TCP connection عند حدوث استثناء أثناء تحليل initial query، لمنع قراءة بيانات غير صالحة من stream فقد التزامن. [#101989](https://github.com/ClickHouse/ClickHouse/pull/101989) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح خلل سباق SLRU في filesystem cache في الإصدار 26.1+، والذي قد يؤدي إلى logical error عند حجز المساحة. وفي build التصحيح قد يؤدي أيضًا إلى فشل assert: `'Previous state is Evicting, but expected state to be Active while setting Evicting flag for 2c1e3484ecdc6b78a8978fa5b17c5097:0:339 (state: Evicting)'.`. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح استثناء عند تحويل سلسلة نصية تحتوي على بيانات لاحقة إلى النوع الفارغ `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الترتيب غير الصحيح للصفوف في queries التي تستخدم ORDER BY مع خوارزمية join ‏grace\_hash. إذ كان يمكن أن تُرجع queries المتأثرة النتائج بترتيب خاطئ، ما يؤدي بصمت إلى مخرجات غير صحيحة. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح LOGICAL ERROR ‏(Unexpected size of index type) كان يمكن أن يحدث في queries من نوع RIGHT JOIN وFULL JOIN عند ضبط الإعداد `max_bytes_in_join`. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح حالات كان فيها Time ذي القيم السالبة يُرجع نتيجة غير صحيحة عند المقارنة مع DateTime. يُغلق [#101670](https://github.com/ClickHouse/ClickHouse/issues/101670). [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح تعطل في refresh الخاص بـ UDF سببه أن `ZooKeeperRetriesControl` كان يعيد المحاولة على session قديمة (منتهية الصلاحية) لـ ZooKeeper من دون تجديدها. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح المسافات المفقودة عند formatting لعبارة unlock snapshot. close [https://github.com/clickhouse/clickhouse/issues/101723](https://github.com/clickhouse/clickhouse/issues/101723). [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
* إصلاح تعطل (SIGSEGV) عند الاستعلام عن view فيها WHERE clause، عندما يُنتج الاستعلام الداخلي columns بأنواع تختلف عن metadata الخاصة بالـ view (مثل Nullable الناتج من LEFT JOIN مع `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح مشكلة عدم طرد entries الخاصة بـ `VectorSimilarityIndexCache` نهائيًا بعد إزالة part بسبب عدم تطابق مفاتيح cache. [#102152](https://github.com/ClickHouse/ClickHouse/pull/102152) ([Seva Potapov](https://github.com/seva-potapov)).
* إرسال NACK للرسائل المعطوبة عند استخدام rabbitmq storage. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح خطأ منطقي عند تحليل سلسلة tuple فارغة وغير صحيحة. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح نتائج التجميع غير الصحيحة (صفوف مكررة) عند استخدام `optimize_aggregation_in_order=1` مع أعمدة GROUP BY المرتبة بشكل مختلف عن مفتاح الفرز الخاص بالجدول. [#102299](https://github.com/ClickHouse/ClickHouse/pull/102299) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل في `IcebergLocal` `ALTER TABLE ... UPDATE` عند استخدام تنسيق Avro، وكان السبب عدم فك تغليف الأنواع `LowCardinality`/`Nullable` قبل التسلسل. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
* تم إصلاح خطأ segmentation fault في mutations على الأعمدة materialized من دون expression. يغلق [#102185](https://github.com/ClickHouse/ClickHouse/issues/102185). [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
* إصلاح في Coalescing merge tree لنوع array. هذا يغلق [#89509](https://github.com/ClickHouse/ClickHouse/issues/89509). [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح segfault (أو LOGICAL\_ERROR في debug builds) عند قراءة Parquet files مع تفعيل bloom filter push down وشروط المساواة/عدم المساواة في WHERE clause. كان التعطل يحدث بسبب وصول إلى الذاكرة خارج الحدود أثناء استرجاع بيانات bloom filter في Parquet prefetcher، وكان يمكن أن يتسبب أيضًا في نتائج استعلام خاطئة وغير deterministic. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
* إصلاح abort لـ `LOGICAL_ERROR` أثناء تغيير الحجم الديناميكي لذاكرة filesystem cache من نوع SLRU، وكان السبب مشاركة إحصاءات eviction عبر الطوابير الفرعية ومسار recovery غير الصحيح للمرشحين الذين فشلوا. [#102396](https://github.com/ClickHouse/ClickHouse/pull/102396) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح الفشل في التهيئة على replica جديدة لجداول alias من دون target table في Database Replicated. يغلق [#101320](https://github.com/ClickHouse/ClickHouse/issues/101320). [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح قراءة خارج الحدود في string search functions (`countSubstrings`, `position`, etc.) عند البحث عن needle مكوّنة بالكامل من null bytes. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
* لم تعد إعدادات text index الكامل (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) معطلة عندما يشير إعداد `compatibility` إلى إصدار أقدم من 26.1. وكان هذا سابقًا قد يمنع `SharedDatabaseCatalog` من إنشاء جداول تحتوي على text indexes. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح قراءة خارج الحدود في `printf` عند وجود `%` في النهاية. [#102472](https://github.com/ClickHouse/ClickHouse/pull/102472) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح استثناء chassert وهو `ReadBuffer is canceled` في debug builds داخل AsynchronousMetrics، وكان السبب أن rewind لا يعيد ضبط علامة إلغاء buffer. [#102524](https://github.com/ClickHouse/ClickHouse/pull/102524) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* تم إصلاح `hasToken` / `hasTokenOrNull` مع needles التي تتكون فقط من فواصل (مثل `'()'` و`'!!!'`) على columns التي تحتوي على text index: كان index سابقًا يتخطى جميع granules بصمت بدلًا من إطلاق `BAD_ARGUMENTS` (في `hasToken`) أو إعادة `NULL` (في `hasTokenOrNull`). [#102544](https://github.com/ClickHouse/ClickHouse/pull/102544) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إصلاح حالات نفاد الذاكرة (OOM) في الطلبات المتعددة الضخمة داخل Keeper. بالنسبة إلى تتبّع OpenTelemetry، كنّا نخصّص دائمًا أكثر من 1 KiB لوحدات OpenTelemetry spans في كائنات `ZooKeeperRequest`، ما يعني أنّنا في الطلبات المتعددة الكبيرة جدًا كنّا نحاول تخصيص أكثر من 10 GiB إضافية من الذاكرة. ولإصلاح ذلك، نحتفظ الآن بالبيانات المشتركة في ذاكرة ثابتة ونستخدم `std::unique_ptr` بدلًا من `std::optional` في `ZooKeeperOpentelemetrySpans`. [#102586](https://github.com/ClickHouse/ClickHouse/pull/102586) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح تضخّم CurrentMetric الخاص بـ `NamedCollection` بسبب `CREATE NAMED COLLECTION IF NOT EXISTS` عند وجود مجموعات موجودة مسبقًا، وكذلك عدم تهيئته للمجموعات المُحمّلة من config أو من تخزين SQL عند بدء التشغيل. يُغلق [#102507](https://github.com/ClickHouse/ClickHouse/issues/102507). [#102598](https://github.com/ClickHouse/ClickHouse/pull/102598) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح استثناء في `getStructureOfRemoteTable` عندما يعيد الجزء المحلي أعمدة فارغة بسبب تنفيذ DDL متزامن. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` عند استهداف عدة استعلامات `CREATE TABLE IF NOT EXISTS` متزامنة للجدول نفسه من نوع `S3Queue` في Shared database. [#102610](https://github.com/ClickHouse/ClickHouse/pull/102610) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح تعطّل `LOGICAL_ERROR` برسالة "Unexpected number of rows in column subchunk" في قارئ Parquet V3 الأصلي عند قراءة nullable columns مع عامل التصفية WHERE. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
* إصلاح وصف حدث profile `AzureWriteMicroseconds` الذي كان يذكر "read" بدلًا من "write". [#102639](https://github.com/ClickHouse/ClickHouse/pull/102639) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* خطأ في row policy يؤدي إلى ظهور استثناء 'Not found column in block' في بعض الحالات الخاصة. [#102648](https://github.com/ClickHouse/ClickHouse/pull/102648) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء في server ضمن ClusterDiscovery عندما لا تكون هناك مؤقتًا أي عقدة حيّة في cluster ثابت (مُعرّف في config). [#102661](https://github.com/ClickHouse/ClickHouse/pull/102661) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح الاستدلال الخاطئ على Data type للتاريخ في حالة حدوث overflow بعد ضبط timezone. يُغلق [#102601](https://github.com/ClickHouse/ClickHouse/issues/102601). [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح مشكلة بقاء `SYSTEM WAIT VIEW` معلّقًا إلى الأبد عند حذف refreshable materialized view أثناء الانتظار. [#102681](https://github.com/ClickHouse/ClickHouse/pull/102681) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح حالة `CASE` مع expression من نوع Dynamic كانت تُرجع ELSE لجميع الصفوف. يُغلق [#102511](https://github.com/ClickHouse/ClickHouse/issues/102511). [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح serialization للنوع Dynamic المسطّح مع data types مُرمّزة بصيغة binary. يُغلق [#101911](https://github.com/ClickHouse/ClickHouse/issues/101911). [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `format&#95;schema&#95;source=&#39;query&#39;` الذي كان يتجاهل بصمت النتائج متعددة الصفوف. يُغلق [#101905](https://github.com/ClickHouse/ClickHouse/issues/101905). [#102698](https://github.com/ClickHouse/ClickHouse/pull/102698) ([Pavel Kruglov](https://github.com/Avogar)).
* الإبلاغ عن رمز الخروج الفعلي عبر عميل SSH بدلًا من تعيين جميع الأخطاء إلى `1`. يغلق [#101741](https://github.com/ClickHouse/ClickHouse/issues/101741). [#102700](https://github.com/ClickHouse/ClickHouse/pull/102700) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح فقدان ترويسات HTTP في معالجات الاستعلامات الديناميكية/المعرّفة مسبقًا. يغلق [#101846](https://github.com/ClickHouse/ClickHouse/issues/101846). [#102706](https://github.com/ClickHouse/ClickHouse/pull/102706) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تطبيق تصحيح معاينة Poisson على ملفات تعريف الكومة المطوية الخاصة بـ jemalloc لمطابقة خرج jeprof. سابقًا، كان التنسيق المطوي يقلّل من تقدير أحجام التخصيص الفعلية لأنه لا يأخذ احتمال المعاينة في الحسبان. [#102759](https://github.com/ClickHouse/ClickHouse/pull/102759) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح التعطل في الدالة `hasPhrase` عند استخدام وسيطة `NULL`. [#102802](https://github.com/ClickHouse/ClickHouse/pull/102802) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح تعطل الخادم (SIGSEGV) عند قراءة ملفات Avro ذات المخططات التكرارية التي تحتوي على مراجع دورية للأنواع الرمزية. وأصبح الآن يتم اكتشاف هذه المخططات ورفضها برسالة خطأ واضحة بدلًا من التعطل. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم (تأكيد LOGICAL\_ERROR) عندما تواجه دالة على عمود `Variant` حدّ الذاكرة أو استثناءً آخر غير متعلق بتحويل النوع أثناء تحويل النتيجة في `FunctionVariantAdaptor`. ويُمرَّر الاستثناء الآن بشكل صحيح بدلًا من تصنيفه خطأً على أنه خطأ داخلي. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
* إصلاح تعطل الخادم في بُنى debug/sanitizer عند رمي `std::length_error` أثناء استنتاج المخطط (مثلًا بسبب القيم المتطرفة لـ `input_format_msgpack_number_of_columns` أو بيانات إدخال غير سليمة). [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
* جعل تمثيل null في تسلسل الأعمدة المكررة والمتناثرة يراعي الإعدادات (مثل `format&#95;tsv&#95;null&#95;representation`). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).
* نُقل إلى الإصدارات الأقدم في [#103499](https://github.com/ClickHouse/ClickHouse/issues/103499): إصلاح فشل طلبات S3 مع `ios_base::clear: unspecified iostream_category error` بدلًا من إعادة المحاولة، وكان السبب أن Poco `BufferedStreamBuf::flushBuffer` لا يتعامل مع عمليات الكتابة القصيرة من طبقة socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح بقاء تحسينات `minmax_count_projection` و`COUNT(*)` البسيطة معطّلة بشكل دائم بعد lightweight delete، حتى بعد دمج جميع الأجزاء التي تحمل قناع lightweight delete واختفائها. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح الأعطال العشوائية في jemalloc بسبب LTO. [#102913](https://github.com/ClickHouse/ClickHouse/pull/102913) ([Azat Khuzhin](https://github.com/azat)).
* تحسين سلاسل OR في سياسة الصفوف إلى IN في المحلّل الجديد. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تلف البيانات الوصفية في jemalloc الناتج عن تحرير ذاكرة تخزين الصفحات المؤقتة بمحاذاة خاطئة، ما قد يؤدي إلى أعطال. [#102918](https://github.com/ClickHouse/ClickHouse/pull/102918) ([Azat Khuzhin](https://github.com/azat)).
* لم تعد عمليات INSERT العادية من دون العروض المادية تطلب عددًا مفرطًا من فتحات التزامن والخيوط في ConcurrencyControl (`max_threads` بدلًا من `max_insert_threads`)، مما يمنع استنزاف فتحات CC وتضخّم عدد الخيوط في المجموعات ذات معدل INSERT مرتفع. [#102961](https://github.com/ClickHouse/ClickHouse/pull/102961) ([Sema Checherinda](https://github.com/CheSema)).
* إعادة إدخال ArrowMemoryPool للسماح بإطلاق MEMORY\_LIMIT\_EXCEEDED لتفادي OOM على مستوى النواة. [#102999](https://github.com/ClickHouse/ClickHouse/pull/102999) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تجاهل `cast_string_to_date_time_mode` عند استخدام `CAST` إلى `Nullable(DateTime)`. يغلق [#101840](https://github.com/ClickHouse/ClickHouse/issues/101840). [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
* إضافة دعم لأعمدة `ALIAS` في تحسين direct read لفهرس النص. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).
* نُقل إلى الإصدارات الأقدم في [#103454](https://github.com/ClickHouse/ClickHouse/issues/103454): إصلاح مشكلة كان فيها `SELECT DISTINCT` يعيد بصمت نتائج غير مكتملة عندما يطابق aggregate projection الاستعلام، بينما لا تحتوي بعض parts في الجدول على بيانات projection (على سبيل المثال، إذا أُضيف الـ projection إلى جدول يحتوي مسبقاً على بيانات ولم يُشغَّل `MATERIALIZE PROJECTION`). يغلق [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح النتائج الخاطئة التي كانت تُرجَع بواسطة `WHERE x AND toNullable(N)` على جداول `MergeTree` عندما تكون `N` عدداً صحيحاً أعرض من `UInt8` (مثل `256` أو `65535` أو `2147483648` أو أي عدد صحيح سالب). كان المرشح يستبعد جميع الصفوف بشكل غير صحيح لأن `splitFilterNodeForAllowedInputs` استخدم صفراً من `NULL` عند تحويل remainder من `Nullable` بعد اختزال `AND` إلى قيمة منطقية، مما حوّل المقارنة إلى `NULL` ضمن المنطق ثلاثي القيم. [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).
* إصلاح نوع argument غير الصحيح الذي كان يُبلَّغ عنه في رسائل error الخاصة بـ string search functions (مثل `locate` و`position`) عند تمرير arguments بترتيب معكوس (`locate(needle, haystack)` مع `function_locate_has_mysql_compatible_argument_order = 1`). [#103102](https://github.com/ClickHouse/ClickHouse/pull/103102) ([Alex Kuleshov](https://github.com/0xAX)).
* إصلاح بقاء waitForPause معلّقاً إلى أجل غير مسمى عند استدعاء disableFailPoint بدون وجود أي thread متوقفة عند failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
* قصر سلاسل حزمة TCP Hello قبل المصادقة على 64 كيلوبايت، وإضافة server setting باسم `handshake_timeout_milliseconds` للحد من إجمالي وقت المصافحة، مما يمنع العملاء غير الموثَّقين من استهلاك ذاكرة مفرطة أو إبقاء threads مشغولة إلى أجل غير مسمى. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح حالة كانت فيها إحصاءات min\_value > max\_value في Parquet ColumnIndex لأعمدة String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* التحقق من وجود بيانات Dynamic flattened غير سليمة في Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* تعبئة العمود `_time` من table function ‏`url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* إصلاح اكتشاف SVE الذي كان يستخدم تعليمات SVE حتى عند عدم توفرها. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* تستخدم تبعية Libstemmer (Snowball) الآن الإصدار الأحدث v3.0.1. [#99256](https://github.com/ClickHouse/ClickHouse/pull/99256) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* إضفاء طابع عشوائي على الإعدادات في clickhouse-test: `use_skip_indexes_for_top_k`, `use_top_k_dynamic_filtering`, `query_plan_max_limit_for_top_k_optimization`. [#91782](https://github.com/ClickHouse/ClickHouse/pull/91782) ([Nikita Fomichev](https://github.com/fm4v)).
* تنفيذ اختبار stress للدوال للتحقق من سلامة خصائصها المختلفة. [#93543](https://github.com/ClickHouse/ClickHouse/pull/93543) ([Michael Kolupaev](https://github.com/al13n321)).
* توفير إعداد CMake خاص لـ `llvm-project` بدلًا من استيراد الإعداد من upstream. [#97453](https://github.com/ClickHouse/ClickHouse/pull/97453) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إضفاء طابع عشوائي على المزيد من إعدادات `optimize_*` في البنية التحتية للاختبارات لتحسين تغطية passes تحسين الاستعلامات. [#97547](https://github.com/ClickHouse/ClickHouse/pull/97547) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدام سلسلة أدوات Rust nightly-2026-03-22. [#98602](https://github.com/ClickHouse/ClickHouse/pull/98602) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `wasmtime` v42.0.1. [#98603](https://github.com/ClickHouse/ClickHouse/pull/98603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `llvm-project` 22.1.1. [#98882](https://github.com/ClickHouse/ClickHouse/pull/98882) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استبدال `SANITIZE_COVERAGE` (callbacks مخصصة لـ sanitizer، ودقة على مستوى الرموز) بتغطية LLVM المعتمدة على المصدر (`WITH_COVERAGE`, `-fprofile-instr-generate -fcoverage-mapping`) ضمن pipeline التغطية الليلية لكل اختبار. يقرأ الخادم الآن تعيين التغطية الخاص به من أقسام ELF عند بدء التشغيل، ويجمع tuples بالشكل `(file, line_start, line_end)` لكل اختبار عبر أمر جديد `SYSTEM SET COVERAGE TEST 'name'`. ويستخدم اختيار الاختبارات في فحوصات CI المستهدفة استعلامات نطاق الأسطر على table جديدة باسم `checks_coverage_lines` في CIDB، مع ترتيب الاختبارات المرشحة بحسب عدد أسطر diff المعدلة التي تغطيها. [#99513](https://github.com/ClickHouse/ClickHouse/pull/99513) ([Nikita Fomichev](https://github.com/fm4v)).
* إصلاح خطأ link في llvm-libc عند build باستخدام -O0. [#100023](https://github.com/ClickHouse/ClickHouse/pull/100023) ([Zheguang Zhao](https://github.com/zheguang)).
* إصلاح رسالتي error عند بدء تشغيل الحاوية إذا لم يتضمن configuration الإعدادين `logger.log` و`logger.errorlog` (على سبيل المثال، عندما يُفترض أن تذهب جميع log messages إلى STDOUT/STDERR). [#100239](https://github.com/ClickHouse/ClickHouse/pull/100239) ([Simon](https://github.com/simonhammes)).
* تفضيل `ld64.lld` على `ld` الخاص بـ Apple (cctools-port ld64) في builds الخاصة بـ MacOS. من شأن ذلك أن يقلل بشكل كبير أزمنة الربط على Darwin، لأن ld64 الخاص بـ cctools-port بطيء جدًا مع `-ffunction-sections` و`-dead_strip`. ويجري الرجوع إلى `ld` إذا لم يكن `ld64.lld` متاحًا. [#100275](https://github.com/ClickHouse/ClickHouse/pull/100275) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* اختبارات لضمان عدم تسجيل الأدلة لأي secrets ‏(REST + Glue). [#100307](https://github.com/ClickHouse/ClickHouse/pull/100307) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تكرار الاختبارات التي عُدّلت مؤخرًا باستخدام إعدادات عشوائية مختلفة. [#100385](https://github.com/ClickHouse/ClickHouse/pull/100385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تتبّع تبعيات ملفات `#embed` في CMake وتمكين وضع التبعيات في ccache لضمان إعادة بناء صحيحة. [#100411](https://github.com/ClickHouse/ClickHouse/pull/100411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة اختبارات للتحقق من صحة استعلامات TPC-H. [#100580](https://github.com/ClickHouse/ClickHouse/pull/100580) ([Raufs Dunamalijevs](https://github.com/rienath)).
* استخدام `aws-sdk-cpp` 1.11.771. [#100582](https://github.com/ClickHouse/ClickHouse/pull/100582) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* السماح لملفات XML الخاصة باختبارات الأداء بالإشارة إلى ملفات SQL query خارجية وإعدادات عبر السمة file. [#100747](https://github.com/ClickHouse/ClickHouse/pull/100747) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح التجميع مع `-march=x86-64-v4` بإضافة التضمين المفقود `TargetSpecific.h` في `LowerUpperImpl.h`. [#100932](https://github.com/ClickHouse/ClickHouse/pull/100932) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح البناء على gentoo بإضافة --no-default-config إلى cxxflags. [#100973](https://github.com/ClickHouse/ClickHouse/pull/100973) ([Isak Ellmer](https://github.com/spinojara)).
* تمت إضافة `utils/auto-bisect/` — وهو إطار عمل للتنصيف يعتمد على shell، ينزّل binaries جاهزة البناء من CI ويشغّل سكربت اختبار يوفّره المستخدم للعثور على أول commit تسبب في تراجع، من دون الحاجة إلى بناء محلي. [#100989](https://github.com/ClickHouse/ClickHouse/pull/100989) ([Nikita Fomichev](https://github.com/fm4v)).
* تعطيل ThinLTO افتراضيًا في CMake، بحيث لم تعد builds المطورين المحلية تفعّله ضمنيًا. ولا تتأثر builds الإصدار الخاصة بـ CI لأنها تمرّر `-DENABLE_THINLTO=1` صراحةً. [#101041](https://github.com/ClickHouse/ClickHouse/pull/101041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة benchmark ‏TPC-DS SF1 إلى اختبارات الأداء. [#101209](https://github.com/ClickHouse/ClickHouse/pull/101209) ([Raufs Dunamalijevs](https://github.com/rienath)).
* تمت إضافة اختبارات stateless لعمليات DELETE الخفيفة في MergeTree، وتغطي: دورة حياة العلامة `has_lightweight_delete`، وصحة `COUNT(*)` مع `optimize_trivial_count_query`، وسلامة الأعمدة `MATERIALIZED`/`DEFAULT`، واستعادة العلامة في `ReplicatedMergeTree`، و`read_in_order` مع الصفوف المحذوفة، ودورات حذف/دمج متعددة، وإخفاء العمود `_row_exists`، وتنوع الشروط، وفرض RBAC على `ALTER DELETE`. [#101792](https://github.com/ClickHouse/ClickHouse/pull/101792) ([Nikita Fomichev](https://github.com/fm4v)).
* يتم الآن نشر Docker image ‏Distroless بمتغيرَي ubuntu وalpine للإصدارات الموسومة. [#101941](https://github.com/ClickHouse/ClickHouse/pull/101941) ([Rahul Nair](https://github.com/motsc)).
* تعرض stack traces الآن مسارات نسبية واضحة ومباشرة (مثل `src/Common/Exception.cpp`) بدلًا من مسارات مشوَّشة بدليل البناء (مثل `./ci/tmp/fast_build/./src/Common/Exception.cpp`). [#102000](https://github.com/ClickHouse/ClickHouse/pull/102000) ([Raúl Marín](https://github.com/Algunenano)).
* إضافة Style check في CI يرفض الملفات الأكبر من 5 ميغابايت التي يتم commit لها إلى repository، مع whitelist لبيانات الاختبار الحالية المشروعة. وإزالة الملف غير المستخدم `zookeeper_log.parquet` بحجم 14 ميغابايت. [#102080](https://github.com/ClickHouse/ClickHouse/pull/102080) ([Raúl Marín](https://github.com/Algunenano)).
* إزالة نحو 400 توجيه `#include` غير مستخدم من headers لتقليل أوقات التجميع. [#102585](https://github.com/ClickHouse/ClickHouse/pull/102585) ([Raúl Marín](https://github.com/Algunenano)).
* استخدام `wasmtime` ‏v43.0.1. [#102603](https://github.com/ClickHouse/ClickHouse/pull/102603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `openssl` 3.5.6. [#102606](https://github.com/ClickHouse/ClickHouse/pull/102606) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `xz` 5.8.3. [#102607](https://github.com/ClickHouse/ClickHouse/pull/102607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* ترقية الصورة الأساسية distroless في Docker من Debian 12 ‏(glibc 2.36، OpenSSL 3.0) إلى Debian 13 ‏(glibc 2.41، OpenSSL 3.5)، مما يقلّص نطاق التعرّض لثغرات CVE إلى عدم وجود أي ثغرات قابلة للوصول. [#101678](https://github.com/ClickHouse/ClickHouse/pull/101678) ([Rahul Nair](https://github.com/motsc)).

<div id="263">
  ### إصدار ClickHouse ‏26.3 LTS بتاريخ 2026-03-26. [العرض التقديمي](https://presentations.clickhouse.com/)، [الفيديو](https://www.youtube.com/watch?v=_bY0ucNB1lQ)
</div>

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

* قد يؤدي الرجوع إلى إصدار أقدم بعد الترقية إلى فقدان البيانات. انشر إصدارات التسلسل الخاصة بأنواع البيانات إلى أنواع البيانات المتداخلة. على سبيل المثال، كان إصدار التسلسل String ‏`with_size_stream` يُطبَّق سابقًا فقط على أعمدة String من المستوى الأعلى وعناصر Tuple. أما الآن فأصبح يُطبَّق على أي نوع String داخل أي نوع متداخل مثل `Array`/`Map`/`Variant`/`JSON`/إلخ. يتحكم في هذا السلوك إعداد MergeTree ‏`propagate_types_serialization_versions_to_nested_types`، وهو مفعّل افتراضيًا الآن. بعد هذا التغيير، لن تتمكن الإصدارات الأقدم من قراءة أجزاء البيانات المُنشأة حديثًا، لكن يمكن للإصدار الجديد قراءة الأجزاء القديمة دون أي مشاكل. **الترقية آمنة، لكن الرجوع إلى إصدار أقدم ليس كذلك — إذا احتجت إلى التراجع بعد الترقية إلى 26.3، فستصبح البيانات التي كتبها 26.3 في الأعمدة ذات الأنواع المتداخلة غير قابلة للقراءة!** راجع [#101429](https://github.com/ClickHouse/ClickHouse/issues/101429) للتفاصيل. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* إزالة نوع skip index ‏`hypothesis`. كانت هذه ميزة غامضة وتجريبية ذات فائدة عملية محدودة. سيؤدي إنشاء الجداول باستخدام `INDEX ... TYPE hypothesis` الآن إلى ظهور خطأ. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إزالة الدالة التجريبية `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح أسبقية العامل `NOT` لتتوافق مع معيار SQL: أصبح `NOT` الآن أقل ارتباطًا من `IS NULL` و`BETWEEN` و`LIKE` والعوامل الحسابية. على سبيل المثال، أصبح `NOT (x) IS NULL` الآن يُفسَّر على أنه `NOT (x IS NULL)` بدلًا من `(NOT x) IS NULL`. قد يغيّر هذا نتائج queries التي كانت تعتمد على السلوك السابق (غير القياسي). [#97680](https://github.com/ClickHouse/ClickHouse/pull/97680) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تصحيح البيانات الوصفية للإسقاطات العادية بحيث يجري التعرّف على الإسقاطات ذات مفاتيح الفرز متعددة الأعمدة بشكل صحيح. يستند هذا إلى [#90429](https://github.com/ClickHouse/ClickHouse/issues/90429). [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* إصلاح مشكلة عدم احترام ملفات skip index للإعداد replace\_long\_file\_name\_to\_hash، مما كان يسبب أخطاء "اسم الملف طويل جدًا" وتعطّل قراءة الفهارس ذات الأسماء الطويلة. أصبحت أسماء ملفات skip index الآن تُحوَّل إلى hash عند تجاوزها max\_file\_name\_length، على غرار ملفات الأعمدة. وهذا متوافق مع الإصدارات السابقة (يمكن للخوادم الجديدة قراءة الأجزاء القديمة)، لكن الرجوع إلى إصدار أقدم (أو استخدام خوادم قديمة أثناء rolling upgrade) قد يؤدي إلى تجاهل الفهارس ذات الأسماء الطويلة. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).
* تفعيل async insert افتراضيًا. سيقوم ClickHouse الآن بتجميع جميع عمليات insert الصغيرة افتراضيًا. يُضبط هذا الإعداد ضمن compatibility. إذا قمت بتعيين `compatibility=<version less than 26.2>` فستكون القيمة الافتراضية هي السابقة، أي `false`. يمكنك إيقاف/تفعيل async inserts على عدة مستويات: في config ضمن profiles المستخدمين، أو على مستوى session، أو query، أو MergeTree table. [#97590](https://github.com/ClickHouse/ClickHouse/pull/97590) ([Sema Checherinda](https://github.com/CheSema)).
* تغيير القيمة الافتراضية لـ `mysql_datatypes_support_level` من فارغة إلى `decimal,datetime64,date2Date32`، مما يفعّل المواءمة الصحيحة افتراضيًا من MySQL `DATE` إلى `Date32`، ومن `DECIMAL`/`NUMERIC` إلى `Decimal`، ومن `DATETIME`/`TIMESTAMP` مع precision إلى `DateTime64`. سابقًا، كانت أعمدة MySQL `DATE` تُواءَم إلى `Date`، وهو ما لا يمكنه تمثيل التواريخ السابقة لـ 1970-01-01، مما كان يسبب تلف البيانات. [#97716](https://github.com/ClickHouse/ClickHouse/pull/97716) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قبول مصفوفة من أسماء الأجزاء بدلًا من regexp في `mergeTreeAnalyzeIndexes{,UUID}` لأن regexp بطيء (*ميزة تجريبية*). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* تغيير القيمة الافتراضية لـ `stderr_reaction` من `throw` إلى `log_last` في UDFs القابلة للتنفيذ. لم تعد UDFs التي تكتب تحذيرات إلى stderr تفشل عندما يكون رمز الخروج 0. وتتضمن الاستثناءات المرتبطة برمز الخروج الآن محتوى stderr. [#99232](https://github.com/ClickHouse/ClickHouse/pull/99232) ([Xu Jia](https://github.com/XuJia0210)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* تمت إضافة Bucketed Serialization لأعمدة Map في MergeTree (`map_serialization_version = 'with_buckets'`). تُقسَّم المفاتيح إلى buckets قائمة على hash، بحيث إن قراءة مفتاح واحد (`m['key']`) لا تتطلب سوى قراءة bucket واحدة بدلًا من العمود بالكامل، ما يوفّر تسريعًا يتراوح بين 2x و49x لعمليات lookup على مفتاح واحد، وذلك بحسب حجم map. ويمكن التحكم في عدد الـ buckets واستراتيجية توزيعها عبر MergeTree settings الجديدة التالية: `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient`، و`map_buckets_min_avg_size`. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).
* دعم materialized CTE. يتيح ذلك تقييم CTE مرة واحدة فقط أثناء تنفيذ query وتخزين نتائجه في temporary tables. يغلق [#53449](https://github.com/ClickHouse/ClickHouse/issues/53449). [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* السماح باستخدام بعض الدوال القياسية في SQL من دون أقواس لأغراض التوافق، مثل `NOW`. يغلق [#52102](https://github.com/ClickHouse/ClickHouse/issues/52102). [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* يمكنك الآن استخدام دالة natural sort key بالشكل `naturalSortKey(s)`. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* يمكنك الآن استخدام إدخال JSON/Object الأصلي مع دوال JSONExtract. يغلق [#88370](https://github.com/ClickHouse/ClickHouse/issues/88370). [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* إذا كان query parameter من النوع `Nullable` ولم يتم تحديده، فسنفترض أن قيمته هي `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* دعم auxiliary ZooKeeper لقاعدة البيانات `Replicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* دعم الدالة `has` مع JSON type للتحقق من وجود path، على غرار Map. [#96927](https://github.com/ClickHouse/ClickHouse/pull/96927) ([DQ](https://github.com/il9ue)).
* تمت إضافة table function ‏`mergeTreeTextIndex(database, table, index)`، التي تتيح قراءة البيانات مباشرةً من text index. ويمكن استخدام هذه الدالة لأغراض introspection أو لإجراء aggregations فوق بيانات text index. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* إضافة MergeTree setting ‏`table_readonly` لتمييز الجداول بأنها read-only، مما يمنع inserts والتعديلات. [#97652](https://github.com/ClickHouse/ClickHouse/pull/97652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة setting جديدة `use_partition_pruning` والاسم البديل alias ‏`use_partition_key`. اضبطها على `false` لتعطيل partition pruning استنادًا إلى partition key. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تنفيذ `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` لجداول Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)). [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130)
* السماح لكل entry من النوع `type=http` داخل `<protocols>` بتحديد مفتاح `<handlers>` مخصص يشير إلى قسم config منفصل `<http_handlers_*>`، ما يتيح قواعد توجيه HTTP مختلفة لكل منفذ. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* إضافة الخيار `pretty=1` إلى `EXPLAIN` للحصول على مخرجات شجرية ذات مسافات بادئة، وإضافة `compact=1` لطيّ خطوات `Expression`، مما يجعل خطط الاستعلام أكثر قابلية للقراءة. [#98500](https://github.com/ClickHouse/ClickHouse/pull/98500) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إضافة إعداد الخادم `restore_access_entities_with_current_grants`. عند تمكينه، تقتصر امتيازات المستخدمين/الأدوار المستعادة من النسخ الاحتياطية على ما يُسمح للمستخدم الذي يجري الاستعادة بمنحه (بنفس دلالات `GRANT CURRENT GRANTS`)، بدلًا من الفشل مع `ACCESS_DENIED`. [#98795](https://github.com/ClickHouse/ClickHouse/pull/98795) ([pufit](https://github.com/pufit)).
* إضافة الدالتين `caseFoldUTF8` و`removeDiacriticsUTF8` لطيّ حالة Unicode وإزالة العلامات التشكيلية. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* إضافة دالة السلاسل النصية `normalizeUTF8NFKCCasefold` لتطبيع Unicode من نوع NFKC\_Casefold، والذي يجمع بين تطبيع NFKC وطيّ الحالة. [#99276](https://github.com/ClickHouse/ClickHouse/pull/99276) ([George Larionov](https://github.com/george-larionov)).
* إضافة المُجزِّئ `unicode_word` إلى فهارس النص الكامل وإلى الدالة `tokens`. وهو يقسم النص باستخدام قواعد حدود الكلمات في Unicode: تتكوّن كلمات ASCII باستخدام محارف الربط (الشرطة السفلية، النقطتان، النقطة، وعلامة الاقتباس المفردة)، بينما تتحول محارف Unicode غير التابعة لـ ASCII إلى tokens أحادية المحرف. ملاحظة: يقبل الإصدار 26.3 هذا المُجزِّئ بالاسم `unicode_word` فقط؛ وقد أُعيدت تسميته إلى `asciiCJK` في الإصدار 26.4. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* تمت إضافة الإعدادين `max_skip_unavailable_shards_num` و`max_skip_unavailable_shards_ratio` لتقييد عدد shards التي يمكن تخطيها بصمت عند تمكين `skip_unavailable_shards`. إذا تجاوز عدد shards غير المتاحة أو نسبتها العتبة المُعدّة، يُطرَح استثناء بدلًا من إرجاع نتائج غير مكتملة بصمت. [#99369](https://github.com/ClickHouse/ClickHouse/pull/99369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمكن للمستخدمين الآن استخدام الكلمة المفتاحية `SOME` في تعبيرات الاستعلامات الفرعية. وهي تتصرف بصورة مطابقة تمامًا لـ `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* إضافة الإعداد `output_format_trim_fixed_string` لإزالة null bytes اللاحقة من قيم `FixedString` في تنسيقات الإخراج النصية. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* دعم تعبيرات ربط الجداول الموضوعة بين قوسين في عبارة `FROM`، مثل `SELECT * FROM (t1 CROSS JOIN t2)`. [#97650](https://github.com/ClickHouse/ClickHouse/pull/97650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تنفيذ الدالة `toDaysInMonth`: تُرجع عدد الأيام في شهر التاريخ المحدد. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* إضافة دعم تجريبي لـ UDFs المستندة إلى WebAssembly، ما يتيح تنفيذ منطق دوال مخصصة باستخدام WebAssembly وتشغيلها داخل ClickHouse. شكر خاص لـ [Alexey Smirnov](https://github.com/lioshik) لمساهمته في دعم backend الخاص بـ Wasmtime. [#88747](https://github.com/ClickHouse/ClickHouse/pull/88747) ([Vladimir Cherkasov](https://github.com/vdimir)). تحسينات إضافية تدريجية على دعم WASM UDF. [#99373](https://github.com/ClickHouse/ClickHouse/pull/99373) ([Vasily Chekalkin](https://github.com/bacek)).
* إضافة دعم لهجات SQL خارجية باستخدام مكتبة `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة compression codec للأعداد ذات الفاصلة العائمة `ALP` (من دون fallback إلى ALP\_rd للقيم المزدوجة غير القابلة للضغط). [#91362](https://github.com/ClickHouse/ClickHouse/pull/91362) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* إضافة Lazy Type Hints تجريبية لأعمدة `JSON`. عند تفعيلها عبر `allow_experimental_json_lazy_type_hints`، فإن `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)` الذي يضيف type hints أو يعدّلها فقط يكتمل فورًا كعملية تقتصر على metadata، من دون إعادة كتابة البيانات التاريخية. تُطبَّق type hints عند query time على parts القديمة، ويجري materialize لها أثناء عمليات INSERT وbackground merges. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* تمكين reads المتوازية من YTsaurus table engine. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* تحسين أداء بحيرات البيانات. في الإصدارات السابقة، لم تكن القراءة من تخزين الكائنات تعيد تكييف pipeline مع عدد خيوط المعالجة. يوفّر هذا تحسينات هائلة في الأداء (\~40x) على الأجهزة متعددة الأنوية. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت العلاقة بين `enable_parallel_replicas` و `automatic_parallel_replicas_mode` كما يلي: لا يمكن لأي استعلام استخدام النسخ المتماثلة المتوازية إلا إذا كانت قيمة `enable_parallel_replicas > 0`. بالإضافة إلى ذلك، إذا كانت `automatic_parallel_replicas_mode=1`، فيُتخذ قرار استخدام النسخ المتماثلة المتوازية أثناء التخطيط استنادًا إلى الإحصاءات المجمّعة مسبقًا. أما إذا كانت `automatic_parallel_replicas_mode=0`، فستُستخدم النسخ المتماثلة المتوازية في جميع الاستعلامات المدعومة بغضّ النظر عن أي إحصاءات. وهناك استثناء مهم، وهو distributed insert-select مع النسخ المتماثلة المتوازية: في هذه الحالة، ستُنفّذ الاستعلامات دائمًا كما لو كانت `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* إتاحة partition pruning عندما يحتوي predicate على أي عامل مقارنة (`=`, `<`, `>`, `!=`) ويكون partition key ملفوفًا ضمن سلسلة دوال حتمية؛ فعلى سبيل المثال، في `PARTITION BY x`، ستستخدم predicates مثل `cityHash64(x) % 5 > 2` و `toYYYYMM(x) < 2026` و `toYYYYMM(x) = 2026` أو `toYYYYMM(x) != 2026` جميعها partition key لأغراض pruning. يُغلق [#28800](https://github.com/ClickHouse/ClickHouse/issues/28800). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إتاحة تحسين read-in-order وprimary-key pruning عندما يكون النوع الهدف في `CAST` هو `Nullable` ويكون التحويل رتيبًا؛ فعلى سبيل المثال، مع `PRIMARY KEY x`، يمكن لـ ClickHouse استخدام تحسين read-in-order مع `ORDER BY x::Nullable(UInt64)`، كما يمكنه تطبيق primary-key pruning على predicates مثل `WHERE x::Nullable(UInt64) > 500000`. [#98482](https://github.com/ClickHouse/ClickHouse/pull/98482) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إتاحة index pruning وfilter pushdown عندما تجري مقارنة column صحيحة بقيمة Float حرفية؛ فعلى سبيل المثال، يمكن الآن لـ predicates مثل `WHERE x < 10.5` استخدام primary key لأغراض pruning، كما أصبحت filters مثل `prime < 1e9` أو `number < 1e5` تُدفع إلى `primes()` و `numbers()` table functions بدلًا من التسبّب في تنفيذ غير محدود. يُغلق [#85167](https://github.com/ClickHouse/ClickHouse/issues/85167). [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة cache جديدة من نوع SLRU لبيانات Parquet الوصفية لتحسين أداء القراءة، عبر إزالة الحاجة إلى إعادة تنزيل الملفات لمجرد قراءة metadata. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* دعم تبديل طرفَي ANTI وSEMI وFULL joins استنادًا إلى إحصاءات المُحسِّن. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* تحسين تخطي granules في `pointInPolygon` عند التعامل مع polygons كبيرة، وإصلاح مشكلة تسبّب `pointInPolygon` في طرح خطأ أثناء index analysis خلال primary key pruning. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تحسين أداء الدالة `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* تحسين تحويلات نوع Decimal على مستوى Batch عبر تجنّب استدعاء الدوال لكل عنصر. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تدعم جداول Iceberg الآن الجلب المسبق غير المتزامن للبيانات الوصفية عبر إعداد الجدول `iceberg_metadata_async_prefetch_period_ms`، الذي يعبّئ ذاكرة التخزين المؤقت للبيانات الوصفية مسبقًا بشكل دوري. بالإضافة إلى ذلك، يتيح إعداد الاستعلام `iceberg_metadata_staleness_ms` لاستعلامات SELECT استخدام البيانات الوصفية المخزنة مؤقتًا إذا كانت أحدث من مدة التقادم المحددة، مما يلغي استدعاءات Iceberg catalog أثناء معالجة الطلبات. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* يستخدم وضع `S3Queue` المرتب الخاصية S3 ListObjectsV2 StartAfter لتجنب إعادة إدراج السجل الكامل للبادئة، مما يقلل استدعاءات ListObjects. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata  Vineel ](https://github.com/vyalamar)).
* خفض استخدام الذاكرة لعمليات insert مع إزالة التكرار. عمومًا، تكون الكتلة الأصلية مطلوبة لإزالة التكرار، لكن في insert المتزامن يمكن الاستغناء عنها وتوفير الذاكرة. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* استخدام قيمة خاصة بالمعمارية لحجم سطر cache بدلًا من قيمة ثابتة مقدارها 64. [#97357](https://github.com/ClickHouse/ClickHouse/pull/97357) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين طفيف في القراءة من قاموس text index، مما يحسّن الأداء العام لتحليل text index. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* تسريع فك ضغط `LZ4` للكتل بحجم 16 بايت على ARM. [#97774](https://github.com/ClickHouse/ClickHouse/pull/97774) ([Raúl Marín](https://github.com/Algunenano)).
* إعادة هيكلة tokenization إلى interface جديدة عالية الأداء، مع استبدال واجهة API القديمة ذات نمط iterator لدعم SIMD وtokenizers ذات الحالة. جزء من [#90268](https://github.com/ClickHouse/ClickHouse/issues/90268). [#97871](https://github.com/ClickHouse/ClickHouse/pull/97871) ([Amos Bird](https://github.com/amosbird)).
* تحسين أداء تحليل text index للاستعلامات التي تحتوي على conditions مركبة تشمل أعمدة مفهرسة وأخرى غير مفهرسة. في السابق، كان تحسين الإنهاء المبكر أثناء index analysis يُعطَّل بشكل غير صحيح في مثل هذه الحالات. [#98096](https://github.com/ClickHouse/ClickHouse/pull/98096) ([Anton Popov](https://github.com/CurtizJ)).
* تحسين أداء الاستعلامات التي تحتوي على expressions ثابتة تُنشئ Arrays أو خرائط طويلة جدًا. [#98287](https://github.com/ClickHouse/ClickHouse/pull/98287) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تحليل شرط المفتاح لمفاتيح primary من النوع `DateTime64` عند مقارنتها بثوابت صحيحة، وهو ما كان يؤدي سابقًا إلى عدم تطبيق Granule pruning. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* أصبح الإعداد `optimize_syntax_fuse_functions` مفعّلًا افتراضيًا. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين الدالة التجميعية `avgWeighted` باستخدام مجمّعات محلية بدلًا من التمرير والتخزين لكل صف عبر aggregate state، مما يحسّن الأداء بنسبة تصل إلى 27% لمدخلات Nullable. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* يحسّن الأداء ويقلل استخدام الذاكرة لدوال window المتوازية في بعض السيناريوهات، وكذلك لأحمال عمل `arrayFold` التي تتضمن Arrays كبيرة. ويمكن أن يقلل هذا أيضًا من ضغط أخطاء الصفحات ويحسّن الاستقرار عند حدود الذاكرة الضيقة بالنسبة إلى الاستعلامات المتأثرة. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).
* تحسين أداء sorted merges. [#99013](https://github.com/ClickHouse/ClickHouse/pull/99013) ([Artem Zuikov](https://github.com/4ertus2)).
* تحسين `INTERSECT ALL` و`EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* دعم تحسين `read_in_order_use_virtual_row` لعمليات القراءة بالترتيب العكسي. [#99198](https://github.com/ClickHouse/ClickHouse/pull/99198) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تقليل التنافس على الذاكرة المخبئية في عمليتَي `RIGHT` و`FULL` `JOIN` من خلال التحقق من تعيين JoinUsedFlags قبل الكتابة. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* تحسين `PrefetchingHelper::calcPrefetchLookAhead` باستبدال حسابات الفاصلة العائمة بحسابات صحيحة بالكامل، ما يحسّن تنظيم ذاكرة التعليمات المخبئية ويقلّل كلفة الدورات أثناء حلقات التجميع. [#99327](https://github.com/ClickHouse/ClickHouse/pull/99327) ([Riyane El Qoqui](https://github.com/riyaneel)).
* تقليل استهلاك Keeper للذاكرة باستبدال `absl::flat_hash_set` بـ `CompactChildrenSet` لتخزين العقد التابعة. وتخزّن الحاوية الجديدة من 0 إلى 1 من العقد التابعة ضمنيًا من دون تخصيص على heap، وهو ما يغطي غالبية عقد Keeper. ويؤدي ذلك إلى تقليل حجم `KeeperMemNode` من 144 إلى 128 بايت. [#99860](https://github.com/ClickHouse/ClickHouse/pull/99860) ([Antonio Andelic](https://github.com/antonio2368)).
* أصبحت الإسقاطات التجميعية مدعومة الآن بشكل صحيح في العروض. يُصلح هذا [#32753](https://github.com/ClickHouse/ClickHouse/issues/32753). [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* دعم تحسين تحويل الربط من OUTER إلى INNER مع `join_use_nulls`. يُغلق هذا [#90978](https://github.com/ClickHouse/ClickHouse/issues/90978). [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تحسين قراءة الأعمدة الفرعية عبر احتساب الأحجام بشكل صحيح قبل القراءة. وهذا يقلّل استخدام الذاكرة ويُسرّع قراءة الأعمدة الفرعية. [#96251](https://github.com/ClickHouse/ClickHouse/pull/96251) ([Pavel Kruglov](https://github.com/Avogar)).
* جعل الذاكرات المخبئية mark وuncompressed وpage تستخدم ساحة jemalloc منفصلة لتجنّب تجزؤ الذاكرة عند خلط التخصيصات قصيرة العمر، مثل الاستعلامات والطلبات، مع التخصيصات الأطول عمرًا الخاصة بالذواكر المخبئية. [#96812](https://github.com/ClickHouse/ClickHouse/pull/96812) ([Seva Potapov](https://github.com/seva-potapov)). [#98812](https://github.com/ClickHouse/ClickHouse/pull/98812). [#99021](https://github.com/ClickHouse/ClickHouse/pull/99021)
* يمكن للجداول التي تحتوي على قواعد `DELETE TTL` الآن استخدام خوارزمية الدمج العمودي. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* تطبيق فهارس تخطي البيانات أثناء تحليل الفهرس الموزع. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* تُحمَّى علامات الفهارس الثانوية مسبقًا الآن عند تمكين الإعداد `prewarm_mark_cache` (إذ تُحمَّل إلى الذاكرة المخبئية لعلامات الفهرس أثناء جلب أجزاء البيانات وعند بدء تشغيل الجدول). [#97772](https://github.com/ClickHouse/ClickHouse/pull/97772) ([Anton Popov](https://github.com/CurtizJ)).
* تقليل عمليات القفل أثناء التحكم في الوصول. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* عند تمكين apply\_row\_policy\_after\_final أو apply\_prewhere\_after\_final، أصبحت شروط AND المركبة في سياسات الصفوف وPREWHERE تُفكَّك الآن لاستخراج عناصر مفتاح الفرز لتحليل فهرس المفتاح الأساسي. سابقًا، إذا كان عامل التصفية المؤجل يحتوي على مزيج من predicates خاصة بمفتاح الفرز وأخرى لا تخص مفتاح الفرز (مثل x > 1 AND y != 'foo')، كان التعبير بالكامل يُستبعَد من تحليل الفهرس. أما الآن، فتُستخرَج عناصر مفتاح الفرز (مثل x > 1) وتُستخدم في تقليم الحبيبات، حتى من تعبيرات AND المتداخلة. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تقليل التنازع على الأقفال في MergeTreeBackgroundExecutor من خلال جعل تحرير موارد المهمة يتم من دون أخذ القفل. يغلق [#93620](https://github.com/ClickHouse/ClickHouse/issues/93620). [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح الاستهلاك المفرط للذاكرة (\~514 MiB) أثناء الاكتشاف التلقائي لـ format عند قراءة بيانات غير Arrow (مثل JSON من `url` أو `file` من دون تحديد format صراحةً)، وكان السبب أن قارئ ArrowStream يفسّر البايتات الأولى خطأً على أنها طول هائل لـ metadata. [#98893](https://github.com/ClickHouse/ClickHouse/pull/98893) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="268-improvement">
  #### تحسينات
</div>

* يتيح تحليل ملفات GeoParquet التي تحتوي على أنواع Geo مختلفة ضمن العمود نفسه. [#97851](https://github.com/ClickHouse/ClickHouse/pull/97851) ([Mark Needham](https://github.com/mneedham)).
* تقديم دالة SQL ‏`tokensForLikePattern` التي تُقسِّم أنماط LIKE إلى tokens مع مراعاة دلالات أحرف البدل: يُعامَل `%` و `_` كأحرف بدل، وتُعامَل أحرف البدل المُهربة (`\%`, `\_`) كقيم حرفية، وتُستبعَد الـ tokens المجاورة لأحرف البدل غير المُهربة. [#97872](https://github.com/ClickHouse/ClickHouse/pull/97872) ([Amos Bird](https://github.com/amosbird)).
* إضافة العنصر النائب `{_schema_hash}` إلى S3 table engine لإدراج hash لتعريفات أعمدة الجدول في مسار S3. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* أصبحت `SymbolIndex` و `addressToSymbol` و `system.symbols` و `buildId` تعمل الآن على macOS عبر تحليل جداول رموز Mach-O. [#99014](https://github.com/ClickHouse/ClickHouse/pull/99014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح جدول `system.stack_trace` يعمل الآن على macOS، مما يتيح استبطان stack traces لجميع threads الخاصة بالـ server. [#98982](https://github.com/ClickHouse/ClickHouse/pull/98982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة خيار config خاص بكل server في LDAP باسم `<follow_referrals>` (القيمة الافتراضية `false`) للتحكم في ما إذا كان LDAP client يتبع الإحالات. يؤدّي تعطيل تتبّع الإحالات إلى تجنّب حالات timeout والتعليق عند البحث انطلاقًا من base DN لجذر نطاق Active Directory. كما نُقلت log messages المرتبطة بالإحالات من `warn` إلى `trace`. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).
* أصبحنا الآن نتتبّع أي data skipping indices استُخدمت أثناء تنفيذ query في جدول query\_log ضمن عمود جديد باسم `skip_indices`. يُصلح هذا [#78676](https://github.com/ClickHouse/ClickHouse/issues/78676). المؤلف الأصلي @pheepa. [#87862](https://github.com/ClickHouse/ClickHouse/pull/87862) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* لم تعد تلميحات ACCESS\_DENIED تكشف أسماء الأعمدة ما لم يكن المستخدم قادرًا على إظهار جميع الأعمدة المطلوبة؛ بينما تظل أسماء database/table مرئية في التلميح. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* إضافة thread تنظيف مخصص لـ MergeTree لمنع تأخّر التنظيف تحت أحمال merge الكثيفة. يحل هذا [#86181](https://github.com/ClickHouse/ClickHouse/issues/86181). [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* إعادة تحميل config الخاصة بالـ cluster إذا تغيّرت عناوين IP الخاصة باسم مضيف الـ server المحلي، بدلًا من عناوين IP لأي host. يُصلح هذا [#81215](https://github.com/ClickHouse/ClickHouse/issues/81215) و[#70156](https://github.com/ClickHouse/ClickHouse/issues/70156) و[#65268](https://github.com/ClickHouse/ClickHouse/issues/65268). [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* السماح للإعداد optimize\_aggregators\_of\_group\_by\_keys بتحسين aggregate functions بشكل صحيح في استعلامات GROUPING SETS. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Keeper-bench: الإبلاغ عن الأخطاء في metrics وإنشاء ملف metrics بصيغة json لوضع --input-request-log. [#95748](https://github.com/ClickHouse/ClickHouse/pull/95748) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* إضافة clause جديدة ROLE إلى CREATE USER. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* يمكنك الآن تعيين إعدادات `internal_replication` لعنقود تم إنشاؤه بواسطة قاعدة البيانات Replicated. [#97228](https://github.com/ClickHouse/ClickHouse/pull/97228) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* الإعداد الجديد `allow_nullable_tuple_in_extracted_subcolumns` يتحكم في ما إذا كانت الأعمدة الفرعية المستخرجة `Tuple(...)` من `Tuple` و`Variant` و`Dynamic` و`JSON` ستُعاد بصيغة `Nullable(Tuple(...))` (مع `NULL` للصفوف المفقودة) أو بصيغة `Tuple(...)` (مع قيم tuple الافتراضية للصفوف المفقودة). هذا الإعداد معطّل افتراضيًا، ولا يمكن تغييره إلا بإعادة تشغيل الخادم. [#97299](https://github.com/ClickHouse/ClickHouse/pull/97299) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة معلومات عن المرشحات المؤجلة كعنصر منفصل في مخرجات استعلام EXPLAIN (عند استخدام Row Policies/PREWHERE مع FINAL). ذو صلة: [#91065](https://github.com/ClickHouse/ClickHouse/pull/91065). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تفعيل `type_json_allow_duplicated_key_with_literal_and_nested_object` افتراضيًا. يتيح ذلك تجنب الأخطاء المتعلقة بالمفاتيح المكررة أثناء تحليل JSONات مثل `{"a" : 42, "a" : {"b" : 42}}`، والتي يمكن أن يصوغها ClickHouse انطلاقًا من بيانات JSON الأصلية `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* تحسين في Keeper: الأمر `find_super_nodes` مفيد جدًا لأغراض تصحيح الأخطاء عند حدوث زيادة غير متوقعة في عدد العقد في Keeper. لكن إذا وُجدت عدة super nodes، يصبح من شبه المستحيل العثور على أكثر من واحدة، لأن الأمر يعلق إلى الأبد أثناء اجتياز الأبناء لأول super node يعثر عليها. يمنع هذا PR اجتياز أبناء super nodes. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* دعم أولي للإكمال التلقائي في `clickhouse-keeper-client`. [#97828](https://github.com/ClickHouse/ClickHouse/pull/97828) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تفريغ مخازن التسجيل المؤقتة غير المتزامنة في حال حدوث تعطل. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* تفعيل ميزة impersonate افتراضيًا (راجع [EXECUTE AS target\_user](https://clickhouse.com/docs/sql-reference/statements/execute_as)). [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* تحسين إلغاء الاستعلامات مع table engine الخاص بـ SQLite باستخدام KILL QUERY وإلغاء الاستعلام (Ctrl+C) في clickhouse-client. [#97944](https://github.com/ClickHouse/ClickHouse/pull/97944) ([Roman Vasin](https://github.com/rvasin)).
* إضافة server setting باسم `jemalloc_profiler_sampling_rate` للتحكم في `lg_prof_sample` الخاص بـ jemalloc، وإظهاره بوصفه مقياسًا غير متزامن باسم `jemalloc.prof.lg_sample`. [#97945](https://github.com/ClickHouse/ClickHouse/pull/97945) ([Antonio Andelic](https://github.com/antonio2368)).
* دعم weights في تنفيذ الطابور المحدود المتزامن. [#97962](https://github.com/ClickHouse/ClickHouse/pull/97962) ([Daniil Ivanik](https://github.com/divanik)).
* إضافة sslmode إلى المفاتيح المسموح بها لمصادر dictionary في PostgreSQL. سابقًا، لم يكن sslmode موجودًا في قائمة السماح `dictionary_allowed_keys` في PostgreSQLDictionarySource.cpp، مما جعل من المستحيل تهيئة وضع SSL لاتصالات dictionary في PostgreSQL. وقد منع ذلك Dictionaries من الاتصال بخوادم PostgreSQL التي تتطلب SSL (مثل AWS RDS، الذي يفرض SSL افتراضيًا)، إذ كان الاتصال يفشل في تفاوض TLS ويرفض الخادم الرجوع الاحتياطي غير المشفر. [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* اعرض خطأً واضحًا من نوع "no such file" عند تمرير مسار ملف غير موجود إلى `clickhouse` أو `clickhouse-local`، بدلًا من رسالة عامة مربكة. [#98048](https://github.com/ClickHouse/ClickHouse/pull/98048) ([Raúl Marín](https://github.com/Algunenano)).
* يمكن الآن إنشاء Text indexes على الأعمدة `Nullable([Fixed]String)` و`Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تجنّب حذف named collections التي تُعد تبعيات لـ dictionary sources. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* تمكين join algorithm `grace_hash` للاستعلامات التي تحتوي على totals. [#98144](https://github.com/ClickHouse/ClickHouse/pull/98144) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* ألغِ background merges مبكرًا في DROP DATABASE لـ ordinary shared merge tree. [#98161](https://github.com/ClickHouse/ClickHouse/pull/98161) ([Shaohua Wang](https://github.com/tiandiwonder)).
* حسِّن إلغاء queries مع MongoDB وMySQL باستخدام KILL QUERY وcancel query ‏(Ctrl+C) في clickhouse-client. [#98187](https://github.com/ClickHouse/ClickHouse/pull/98187) ([Roman Vasin](https://github.com/rvasin)).
* أزل NetlinkMetricsProvider واستخدم procfs حصريًا لجمع metric الخاصة بـ taskstats لكل thread. فالجمع المستند إلى Netlink يسبب مشكلات في البيئات المعتمدة على الحاويات، كما أن tail latency فيه أسوأ عند وجود contention. [#98229](https://github.com/ClickHouse/ClickHouse/pull/98229) ([Amos Bird](https://github.com/amosbird)).
* أعد هيكلة معالجة Iceberg manifest file لإصلاح المشكلات المتعلقة بـ manifest file caching. [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* نأخذ الآن في الحسبان الحالات التي يكون فيها sorting key للـ table عبارة عن expression مثل `toDate(time)`، ويمكننا اتخاذ قرارات بشأن عدم تأجيل expressions من هذا النوع إذا كانت جزءًا من filters. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أضف metric جديدة باسم `MaxAllocatedEphemeralLockSequentialNumber` للحد الأقصى للرقم sequential المخصّص لعُقد القفل ephemeral من نوع znode في ZooKeeper. [#98243](https://github.com/ClickHouse/ClickHouse/pull/98243) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* حدّث ClickStack إلى version 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* أُضيف حدث profile جديد `KeeperRequestTotalWithSubrequests` يحتسب كل subrequest داخل multi-request على حدة، مما يوفّر رؤية أفضل لعبء العمل الفعلي في Keeper. ويستمر الحدث الحالي `KeeperRequestTotal` في احتساب كل multi-request باعتباره request واحدة. [#98348](https://github.com/ClickHouse/ClickHouse/pull/98348) ([Antonio Andelic](https://github.com/antonio2368)).
* يقوم `SYSTEM RELOAD DICTIONARIES` الآن بإعادة تحميل Dictionaries بترتيب طوبولوجي، بحيث ترى Dictionaries التي تستخدم Dictionaries أخرى كمصدر بياناتٍ مُحدَّثة بعد إعادة التحميل. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أعد تشغيل ذاكرة التخزين المؤقت للإحصاءات بعد تغيير MergeTree setting. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* لا تشارك في distributed index analysis إلا replicas "الحية" (القابلة للاتصال). [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* أضِف الإعداد `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (معطّل/مسموح به افتراضيًا) لمنع استخدام ملفات تعريف الإعدادات المعرّفة في config (باستثناء ملف التعريف `default`) مع المستخدمين المعرّفين عبر SQL. [#98662](https://github.com/ClickHouse/ClickHouse/pull/98662) ([Alexander Tokmakov](https://github.com/tavplubix)).
* ضع حدًا لعدد العقد المستخدمة في الاستدلال التلقائي للنسخ المتماثلة المتوازية بحيث يطابق العدد الفعلي للعقد في المجموعة، بدلًا من الاعتماد فقط على الإعداد `max_parallel_replicas`. [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* نفّذ الطلبات التحوطية والقراءة غير المتزامنة لتحليل الفهرس الموزّع. [#98724](https://github.com/ClickHouse/ClickHouse/pull/98724) ([Azat Khuzhin](https://github.com/azat)).
* أصبحت إزالة التسلسل لحالات `AggregateFunction` الثنائية تتطلب الآن استهلاك الإدخال بالكامل. وإذا وُجدت بايتات زائدة غير ضرورية في النهاية، فإن ClickHouse يطرح استثناءً بدلًا من قبول بيانات حالة غير سليمة البنية. [#98786](https://github.com/ClickHouse/ClickHouse/pull/98786) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* اجعل `TRUNCATE DATABASE` يستجيب لإلغاء الاستعلام. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* حسِّن `keeper-bench` عبر استخدام pipelining للطلبات، وفترة إحماء، وإحصاءات لكل عملية، وبذور قابلة لإعادة الإنتاج، ومعالجة أفضل للأخطاء. [#98906](https://github.com/ClickHouse/ClickHouse/pull/98906) ([Antonio Andelic](https://github.com/antonio2368)).
* ادعم `SAMPLE clause` في تحليل الفهرس الموزّع. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* اعرض عنوان المخطط في لوحة المعلومات حتى عندما يُرجع الاستعلام نتيجة فارغة أو يواجه خطأً. [#98975](https://github.com/ClickHouse/ClickHouse/pull/98975) ([Yash ](https://github.com/Onyx2406)).
* لم تعد رسائل أخطاء المحلّل تسرد جميع أعمدة الجدول (ما كان قد ينتج عنه استثناءات بحجم يتجاوز 150KB). وأصبحت قوائم الأعمدة الآن مقيّدة بحد أقصى قدره 10 عناصر. [#99002](https://github.com/ClickHouse/ClickHouse/pull/99002) ([Yash ](https://github.com/Onyx2406)).
* أرجِع إحصاءات الأعمدة بشكل صحيح من الاستعلامات الفرعية التي تتضمن joins لكي يتمكن الاستعلام الأب من استخدامها في إعادة ترتيب join. [#99096](https://github.com/ClickHouse/ClickHouse/pull/99096) ([Alexander Gololobov](https://github.com/davenger)).
* علِّم جلسة ZooKeeper على أنها منتهية الصلاحية فور بدء الإنهاء، بدلًا من انتظار انتهاء خيط الإرسال. يتيح ذلك للخيوط الأخرى إنشاء جلسة جديدة دون تأخير. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* استخدم المزيد من الدوال الرياضية من LLVM-libc: `exp`, `exp2`, `expm1`, `fabs`, `fabsl`, `floor`, `fmodl`, `log`, `log2`, `logf`, `pow`, `scalbn`, `scalbnl`, `copysignl`, `nan`, `nanf`, `nanl`، وثوابت `explogxf` المشتركة. [#99118](https://github.com/ClickHouse/ClickHouse/pull/99118) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* قلّل استهلاك الذاكرة وأصلِح احتمال تكرار المخرجات في التنسيق المطوي لـ `system.jemalloc_profile_text`. [#99121](https://github.com/ClickHouse/ClickHouse/pull/99121) ([Antonio Andelic](https://github.com/antonio2368)).
* أضِف العمود `is_subrequest` إلى `system.aggregated_zookeeper_log` للفصل بين الطلبات المستقلة والطلبات الفرعية داخل طلبات Multi/MultiRead. سابقًا، كانت الطلبات الفرعية تُجمَّع في نفس الحاويات الخاصة بالطلبات المستقلة، وبما أن كل عملية فرعية كانت تُسجَّل مع المدة الإجمالية للطلب المتعدد، فقد أصبح متوسط زمن الاستجابة مضللًا. أما الآن فأصبح زمن استجابة الطلبات الفرعية صفرًا. [#99169](https://github.com/ClickHouse/ClickHouse/pull/99169) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* السماح باستخدام الأمر `ALTER TABLE MODIFY COLUMN x TTL ...` دون تحديد نوع العمود. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* تخطي طلبات Keeper المتقادمة للجلسات التي انقطعت بالفعل، لتجنب جولات Raft غير الضرورية. ويُحدَّد الحد الأقصى لعدد الجلسات المنتهية التي يجري تتبعها بواسطة إعداد coordination `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* دعم الفهرس النصي المبني على `mapValues(map)` مع المعامل `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* دعم الإكمال الشبيه بالـ shell في clickhouse keeper-client (معالجة إكمال الوسائط داخل علامات الاقتباس، مثل `'foo ba'`، ومعالجة الوسائط المُفلَّتة، مثل `foo\ ba`، وجعل `ls` يطبع العقد بين علامتَي اقتباس إذا كانت تحتوي على مسافات بيضاء). [#99312](https://github.com/ClickHouse/ClickHouse/pull/99312) ([Azat Khuzhin](https://github.com/azat)).
* منع توقّف أمر Keeper `mntr` بسبب التنافس على الأقفال. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* تقليل التنافس على الأقفال في dispatcher الخاص بـ Keeper عبر استدعاء دوال `callbacks` وتمرير طلبات القراءة خارج نطاق `mutex`، وإضافة حراس أقفال مُوصَّفة لأغراض الرصد. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).
* التساهل مع غياب الحشو في نهاية آخر كتلة من ملفات Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* يُصلح كيفية حفظ هدف جدول Alias كتبعية DDL عندما لا يكون مؤهلًا بالكامل: إذ يُحفَظ الآن مع قاعدة بيانات جدول Alias بدلًا من قاعدة بيانات الجلسة. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
* إصلاح النتيجة الخاطئة أو حدوث استثناء أثناء قراءة الأعمدة الفرعية لأعمدة ALIAS. [#95408](https://github.com/ClickHouse/ClickHouse/pull/95408) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح مشكلة العمود المفقود عند استخدام alias لمعرّف غير قياسي في JOIN مع analyzer القديم. يُصلح [#25594](https://github.com/ClickHouse/ClickHouse/issues/25594) و[#47288](https://github.com/ClickHouse/ClickHouse/issues/47288) و[#53263](https://github.com/ClickHouse/ClickHouse/issues/53263). [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
* يُصلح تعطلًا في دوال لهجة Kusto `bin()` و`bin_at()` و`extract()` و`indexof()` عند تمرير وسيطات فارغة. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
* يمنع تركيب local\_object\_storage (المستخدم في بحيرات البيانات فوق نظام الملفات المحلي وربما بواسطة LocalDisk) في أي مكان خارج user\_files\_path في clickhouse-client. [#96201](https://github.com/ClickHouse/ClickHouse/pull/96201) ([Daniil Ivanik](https://github.com/divanik)).
* في table engine ‏`DeltaLake`، أُصلح سباق منطقي عند تغيير إصدار اللقطة، وأزيلت عمليات إعادة تحميل اللقطة الثقيلة الزائدة عن الحاجة. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح خطأ منطقي عند إرفاق part في MergeTree إذا وُجدت عدة عمليات إعادة تسمية متسلسلة بين الفصل والإرفاق. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خلل كان يؤدي إلى تجاهل الإعدادات الصريحة المرسلة إلى جانب `compatibility` في الطلب نفسه بصمت إذا كانت قيمتها تطابق القيمة الافتراضية في الخادم. [#97078](https://github.com/ClickHouse/ClickHouse/pull/97078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح قيام العميل بالإبلاغ عن `NETWORK_ERROR` بدلًا من خطأ التحليل الفعلي (مع رقم الصف الصحيح) عندما تواجه عملية INSERT مع التحليل المتوازي بيانات غير صالحة. [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم قدرة الدالة التجميعية `sumCount` على قراءة الحالات المُسلسلة الأقدم بعد إدخال `Nullable(Tuple)`. يُغلق [#97370](https://github.com/ClickHouse/ClickHouse/issues/97370). [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح استثناء في مقارنة tuple تتضمن عناصر من النوع `Nothing` (مثل المقارنة مع عناصر tuple من `NULL`) عند استخدامها مع `GROUPING SETS` و`ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتساب `uncompressed_hash` غير الحتمي لأجزاء Compact في MergeTree عند استخدام عدة codecs للضغط، مما قد يتسبب في سلوك غير صحيح لإزالة التكرار. [#97522](https://github.com/ClickHouse/ClickHouse/pull/97522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي يتعلق بتيار مفقود أثناء INSERT SELECT مع JSON وbuckets في البيانات المشتركة. يُغلق [#97331](https://github.com/ClickHouse/ClickHouse/issues/97331). [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الإبلاغ الخاطئ عن استثناءات `MEMORY_LIMIT_EXCEEDED` على أنها `CORRUPTED_DATA` أثناء عمليات الدمج في SummingMergeTree وCoalescingMergeTree. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح استثناء "Context has expired" في الاستعلامات الفرعية المترابطة التي تحتوي على دوال جداول مثل `url()`. [#97544](https://github.com/ClickHouse/ClickHouse/pull/97544) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناءات والسلوك غير الصحيح في `optimize_syntax_fuse_functions` مع الإسقاطات التجميعية، وأنواع Date، والحفاظ على أسماء الأعمدة. [#97545](https://github.com/ClickHouse/ClickHouse/pull/97545) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إزالة query rewrite غير الصحيح من `replaceRegexpOne` إلى `extract`، والذي كان يؤدي إلى نتائج خاطئة عندما لا يتطابق regexp؛ وكذلك إصلاح الاستثناء عند استخدام `replaceRegexpOne` مع `GROUP BY ... WITH CUBE` و`group_by_use_nulls=1`. [#97546](https://github.com/ClickHouse/ClickHouse/pull/97546) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعليق `DROP DATABASE` إلى أجل غير مسمى مع `database_atomic_wait_for_drop_and_detach_synchronously` عند إنهاء الاستعلام. [#97586](https://github.com/ClickHouse/ClickHouse/pull/97586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم قدرة `KILL QUERY` على إنهاء الاستعلامات العالقة أثناء توليد `WITH FILL`، أو تحميل Dictionary عبر `dictGet`، أو `ALTER DELETE` مع `mutations_sync=1` على `ReplicatedMergeTree`. [#97589](https://github.com/ClickHouse/ClickHouse/pull/97589) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* كانت دالة الجدول `loop` تستدعي `inner_storage->read()` مباشرةً، متجاوزةً طبقة المفسّر التي تُطبَّق فيها row policies وامتيازات column-level وغيرها من فحوصات الأمان. وقد أتاح ذلك لمستخدم مقيَّد بواسطة row policies قراءة جميع الصفوف عبر `loop(table)` حتى عندما كان تنفيذ SELECT مباشر يُرجع صفوفًا معدومة. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
* إصلاح partition pruning غير الصحيح في حالات استخدام DateTime64 الأسبق من حقبة يونكس مع الدالة `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* بعد هذا التصحيح، ستُرجع `hasPartitionId` القيمة false إذا وُجد partition آخر ذو معرّف partition أعلى ضمن مجموعة data part. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح الأعطال المحتملة أثناء قراءة granules الفارغة في shared data المتقدمة ضمن JSON. يُغلق [#97563](https://github.com/ClickHouse/ClickHouse/issues/97563). [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الخطأ `Cannot schedule a file` `LOGICAL_ERROR` عند تنفيذ `INSERT` على `Distributed` بسبب حالة تسابق بين `DROP` و`INSERT`. [#97822](https://github.com/ClickHouse/ClickHouse/pull/97822) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح crash/assert في ClickHouse server عند استدعاء `mapContainsKey/mapContainsKeyLike` مع skip index من النوع `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إصلاح استثناءات LOGICAL\_ERROR الناتجة عن `LowCardinality` داخل الأنواع المركبة (`Variant` و`Dynamic` و`Tuple`) في `concatWithSeparator` و`format` والاستعلامات الفرعية في `IN` و`GLOBAL IN` وعمليات الربط مع runtime filters. [#97831](https://github.com/ClickHouse/ClickHouse/pull/97831) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح استثناء `LOGICAL_ERROR`، ‏`Chunk info was not set for chunk in MergingAggregatedTransform`، عند استخدام `ARRAY JOIN` مع دالة الجدول `merge()` عبر عدة جداول Distributed مع `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطل الخادم (`std::terminate`) الناتج عن استثناء غير مُلتقط في destructor الخاص بـ HTTP connection pool عند بلوغ الحد الصارم لمجموعة الاتصالات في ظل Concurrency مرتفع. إذ كان الاستثناء `HTTP_CONNECTION_LIMIT_REACHED` قد يتسرب من `~PooledConnection` عند إعادة connection إلى الـ pool، مما يؤدي إلى `SIGABRT`. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح نتيجة غير صحيحة عند استخدام الخوارزمية `grace_hash` مع عمليات join غير المتساوية، عندما يتعذر معالجة الكتلة اليسرى بالكامل بسبب قيود الحجم على ناتج join. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح تراجع في كفاءة الأداء عند فحص metadata الخاصة بـ DeltaLake، أُدخل في [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686). [#97880](https://github.com/ClickHouse/ClickHouse/pull/97880) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح data race في عميل ZooKeeper بين sendThread وreceiveThread. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح خلل كان يمنع استخدام CTE مع distributed insert selects. استكمال لـ [https://github.com/ClickHouse/ClickHouse/pull/87789](https://github.com/ClickHouse/ClickHouse/pull/87789). إغلاق [#95837](https://github.com/ClickHouse/ClickHouse/issues/95837). [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء صادر من `CachedOnDiskReadBufferFromFile::readBigAt`. إغلاق [#97325](https://github.com/ClickHouse/ClickHouse/issues/97325). [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح استثناء `LOGICAL_ERROR` في المحرك `Alias` مع materialized columns بسبب عدم تطابق الأعمدة. إغلاق [#97907](https://github.com/ClickHouse/ClickHouse/issues/97907). [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
* إصلاح فقدان بيانات Keeper بعد إعادة التشغيل عند استخدام Azure Blob Storage مع metadata من نوع `s3_plain` لتخزين السجل. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح الترجمة البرمجية الخاطئة من JIT للدالة `sign` لأنواع الأعداد الصحيحة الأوسع من `Int8` — إذ كانت القيم خارج النطاق -128..127 قد تنتج إشارة غير صحيحة. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `DUPLICATE_COLUMN` وظهور قيم NULL صامتة عند قراءة جداول Delta Lake التي تستخدم وضع تعيين الأعمدة "name" مع حقول struct التي تحتوي أسماؤها على نقاط (مثل ``STRUCT<`a.foo`: STRING, `b.foo`: STRING>``). [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
* إصلاح mutation بعد lightweight update وsecondary indices. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح نتيجة غير صحيحة لاستعلامات FINAL عند الجمع بين skip indexes الخاصة بالمفتاح الأساسي وتلك غير المرتبطة به. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
* فرض التحقق من READ ON FILE على file() scalar وDESCRIBE TABLE file(). [#98115](https://github.com/ClickHouse/ClickHouse/pull/98115) ([Nikolay Degterinsky](https://github.com/evillique)).
* إصلاح تعطل كان يحدث عند الاستعلام عن الملفات باستخدام نمط glob (مثل `file('dir/**', 'LineAsString')`)، إذ كان يُطلق استثناءً غير معالَج من نظام الملفات (`STD_EXCEPTION`) إذا كان الدليل يحتوي على رابط رمزي غير صالح. وأصبحت هذه الروابط الرمزية غير الصالحة الآن تُتخطى بصمت، ويُرجع الاستعلام نتائج جميع الملفات الصالحة. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
* إصلاح خطأ segfault في تحسين خطة الاستعلام عند تحويل outer join إلى inner join باستخدام `arrayJoin` في تعبير التصفية. [#98147](https://github.com/ClickHouse/ClickHouse/pull/98147) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم عمل تنسيق `ProtobufList` مع Kafka engine بسبب عدم إعادة ضبط حالة القراءة بين الرسائل. [#98151](https://github.com/ClickHouse/ClickHouse/pull/98151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي في analyzer\_compatibility\_join\_using\_top\_level\_identifier و ARRAY JOIN، مع إغلاق [#98164](https://github.com/ClickHouse/ClickHouse/issues/98164). [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تعيين المكوّن `Watch` لاستجابات watch في `aggregated_zookeeper_log` بدلًا من تركه فارغًا. [#98202](https://github.com/ClickHouse/ClickHouse/pull/98202) ([Antonio Andelic](https://github.com/antonio2368)).
* إذا لم تكن أعمدة مفتاح التقسيم مشمولة ضمن مفتاح الفرز، فقد يؤدي partition pruning، بشكل غير صحيح، إلى تخطي partitions تحتوي على rows كان ينبغي أن "تفوز" أثناء إزالة التكرار في FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح الخطأ المنطقي "Bad cast from type DB::ColumnConst to DB::ColumnArray" في `kql_array_sort_asc`/`kql_array_sort_desc` عند استدعائهما باستخدام معاملات Array ثابتة. [#98251](https://github.com/ClickHouse/ClickHouse/pull/98251) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح وصول خارج الحدود في `ColumnConst::getExtremes` كان قد يتسبب في تعطل عند تفعيل `extremes = 1`. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتمال حدوث حالة توقف تام عندما تعمل عمليتا `MOVE PARTITION` متزامنتان على الزوج نفسه من الجداول ولكن في اتجاهين متعاكسين. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُرجع خادم HTTP الآن رسالة خطأ في body الاستجابة لردود 400 Bad Request الناتجة عن headers غير سليمة، بدلًا من body فارغ. [#98268](https://github.com/ClickHouse/ClickHouse/pull/98268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح نتائج غير صحيحة مع distributed index analysis (ميزة تجريبية) وquery condition cache. [#98269](https://github.com/ClickHouse/ClickHouse/pull/98269) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح استثناء LOGICAL\_ERROR "Invalid binary search result in `MergeTreeSetIndex`" الناتج عن تحويل `toDate` على أعمدة المفتاح عندما تتجاوز البيانات الحد 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` عندما يُستبدل RIGHT JOIN مغلف داخل CROSS JOIN بواسطة تحسين `query_plan_join_swap_table` في مسار الشيفرة القديم لخطوة join. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* التحقق من صحة البيانات التالفة أثناء إلغاء التسلسل لـ `DDSketch` لمنع حالات `segfault` والاستثناءات والحلقات اللانهائية ونفاد الذاكرة عند قراءة حالات دوال التجميع `quantilesDD` التالفة. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح LOGICAL\_ERROR "Trying to execute PLACEHOLDER action" عند الرجوع إلى الأعمدة المترابطة من الاستعلامات الخارجية داخل دوال lambda مثل `arrayMap`. [#98285](https://github.com/ClickHouse/ClickHouse/pull/98285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء الخطأ المنطقي في `caseWithExpression` عندما يتضمن تعبير `CASE` ‎`materialize(NULL)` أو argumentات أخرى من النوع `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء التحويل غير الصحيح عند التصفية على العمود الافتراضي `_table` في table function ‏`merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل متقطع في إزالة التكرار، إذ كانت عمليات الإدراج المعاد تُزال تكراراتها بشكل غير صحيح بسبب عدم اتساق ترتيب التنظيف بين دليلي ZooKeeper ‏`blocks/` و`deduplication_hashes/`. [#98293](https://github.com/ClickHouse/ClickHouse/pull/98293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء عند استخدام `ORDER BY ... WITH FILL` مع `LIMIT BY` في الوقت نفسه. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تلف صامت للبيانات عند إدراج عمود `Date` من Parquet/Arrow في عمود `Enum` — إذ يرفض الآن تحويل النوع غير المتوافق على نحو صحيح بدلًا من تخزين قيم enum غير صالحة. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء عند قراءة ملف Arrow يحتوي على عمود `Array` إلى جدول يحتوي على عمود `Nested`. [#98365](https://github.com/ClickHouse/ClickHouse/pull/98365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعلّق mutations الخاصة بـ `MATERIALIZE INDEX` و`MATERIALIZE PROJECTION` عندما يُحذف الفهرس أو الإسقاط قبل اكتمال mutation. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء عند القراءة من `Nullable(Tuple(...))` عندما يتعارض اسم أحد عناصر `Tuple` مع العمود الفرعي `null` الخاص بـ `Nullable`. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء "Column ... query tree node does not have valid source node" عند تنفيذ joining لجدول `Merge` (يلف جدول `Distributed`) مع جدول آخر. [#98376](https://github.com/ClickHouse/ClickHouse/pull/98376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح التحويل غير الصحيح من Parquet ‏`Bool` إلى `FixedString` في القارئ native ‏V3، والذي كان ينتج raw bytes بدلًا من التمثيل النصي. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `tryGetColumnDescription` لتصفية الأعمدة الفرعية بحسب نوع العمود الأصل، بما يتسق مع أساليب lookup الأخرى للأعمدة. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قبول credentials المشفرة بـ base64 من دون padding في HTTP Basic Auth. بعض عملاء HTTP يحذفون padding اللاحق `=` في ترويسة `Authorization: Basic`، وكان هذا يتسبب سابقًا في فشل authentication. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
* إصلاح نتائج **partition pruning** غير الصحيحة بعد **دمج** الأجزاء التي تحتوي على أعمدة **partition key** من النوع `Nullable`، وكان السبب حدود **min-max index** الخاطئة. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
* إصلاح **exception** نادر في **executor** الخاص بـ **pipeline**، قد يظهر على شكل `Received signal 6` (في **builds** الخاصة بـ **debug** فقط)، عندما يتزامن توسيع **pipeline** مع إلغاء **query**. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** ‏"Column identifier is already registered" عند استخدام `count_distinct_optimization` مع **clause** ‏`QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** ‏"cannot be inside Nullable type" عند استخدام `IN`/`NOT IN` مع **arguments** لأعمدة من النوع `LowCardinality` (مثل `a NOT IN (b)` حيث تكون `a` من النوع `LowCardinality(String)`). [#98443](https://github.com/ClickHouse/ClickHouse/pull/98443) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** ‏"Pipeline stuck" في **joins** ‏`full_sorting_merge` الناتج عن حالة **deadlock** في `PingPongProcessor` عندما أنشأ تحسين `FilterBySetOnTheFly` تبعية دائرية مع `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** ‏`LOGICAL_ERROR` ‏"Projection cannot increase the number of rows in a block" عند **دمج** الأجزاء التي تحتوي على TTL يحذف جميع **rows** و**projection** تجميعي مع مفتاح `GROUP BY` ثابت. [#98458](https://github.com/ClickHouse/ClickHouse/pull/98458) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** من نوع **logical error** عند استخدام `CROSS JOIN` مع `INNER JOIN USING` معًا. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إلغاء مرجعية مؤشر **null** في `dictGetOrDefault` عندما تكون **argument** الخاصة بالمفتاح من النوع `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** في **queries** ‏`DISTINCT` عند استخدام **projections** تجميعية، وعندما يتسبب `materialize` في اختلافات في النوع `LowCardinality` بين **query** و**projection**. [#98462](https://github.com/ClickHouse/ClickHouse/pull/98462) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** ‏LOGICAL\_ERROR عند استخدام `arrayJoin` داخل **filter expression** مع `OUTER JOIN` مع تفعيل `join_use_nulls`. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح **exception** من نوع **logical error** ‏"Replica decided to read in WithOrder mode, not in ReverseOrder" عند استخدام **parallel replicas** مع `optimize_aggregation_in_order`. [#98467](https://github.com/ClickHouse/ClickHouse/pull/98467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح مشكلة قيام ClickHouse Keeper بقطع اتصال عملاء Java ZooKeeper بعد طلب `addWatch`. يتوقع **Java client** وجود **body** من `ErrorResponse` بحجم 4 بايت في استجابة `addWatch`، لكن Keeper كان يرسل **body** فارغًا، مما تسبب في `EOFException` وقطع **session**. وقد أدى ذلك إلى تعطيل `CuratorCache` في Apache Curator وأي تطبيق Java يستخدم **watches** دائمة. يُصلح هذا [#98079](https://github.com/ClickHouse/ClickHouse/issues/98079). [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح عدم انخفاض مقاييس Keeper `zk_followers` و`zk_synced_followers` عند تعطل follower. وإضافة المقاييس الجديدة `zk_learners` و`zk_synced_non_voting_followers` إلى الأمر `mntr` ذي الأحرف الأربعة. يصلح [#54173](https://github.com/ClickHouse/ClickHouse/issues/54173). [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح استثناء LOGICAL\_ERROR في `renameAndCommitEmptyParts`، والذي كان يمكن أن يحدث عند تشغيل `TRUNCATE TABLE` بالتزامن مع `OPTIMIZE TABLE` باستخدام معاملات MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تجاهل منفذ raft الآمن في Keeper للقيمتَين `cipherList` و`dhParamsFile` من إعدادات `openSSL`، إذ كان يستخدم القيم الافتراضية دائمًا بدلًا من القيم التي يحددها المستخدم. يغلق [#51188](https://github.com/ClickHouse/ClickHouse/issues/51188). [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح رسائل السجل المضللة في Keeper مثل "Receiving request for session X took 9963 ms"، حيث كان الوقت المُبلّغ عنه يُقضى فعليًا في انتظار خامل داخل `poll()` بين نبضات القلب، لا في تنفيذ العملية نفسها. يصلح [#79026](https://github.com/ClickHouse/ClickHouse/issues/79026). [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح نتيجة غير متوقعة مع read\_in\_order\_use\_virtual\_row والدوال الرتيبة. يغلق [#97837](https://github.com/ClickHouse/ClickHouse/issues/97837). [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح `LOGICAL_ERROR: Not-ready Set is passed as the second argument for function 'in'` عند استخدام `PREWHERE` مع subquery لـ `IN` على جداول MergeTree. [#98522](https://github.com/ClickHouse/ClickHouse/pull/98522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح اتصالات Keeper عبر TCP التي كانت تمنع إيقاف server بسلاسة بسبب عدم الاستجابة لإشارة الإيقاف. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء "Sorting column wasn't found in the ActionsDAG's outputs" عند تمكين `query_plan_convert_join_to_in` مع `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل MongoDB dictionary source عند استخدام named collections. يغلق [#97840](https://github.com/ClickHouse/ClickHouse/issues/97840). [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح LOGICAL\_ERROR عندما يكون Identifier فارغًا بعد substitution للمعلمات. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* إصلاح حالة deadlock في pipeline عند استخدام `sort_overflow_mode = 'break'` مع window functions. [#98543](https://github.com/ClickHouse/ClickHouse/pull/98543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح rollback للعمود في محرك Buffer أثناء التعامل مع استثناء عند append لكتلة جديدة. كان المنطق السابق قد يؤدي إلى تلف in-memory state للأعمدة. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
* تم إصلاح الاستثناء `Bad cast from type ColumnConst to ColumnDynamic` في المقارنة المتوافقة مع NULL (`<=>` / `IS NOT DISTINCT FROM`) عند استخدام أعمدة `Dynamic` أو `Variant` الثابتة مع `NULL`. كما تم إصلاح `IS DISTINCT FROM` عند مقارنة `Dynamic`/`Variant` مع `NULL`، إذ كانت تُرجع 0 دائمًا بشكل غير صحيح. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح استخدام text index مع skip indexes الأخرى. سابقًا، كان يمكن أن تظهر أخطاء منطقية مثل "Trying to get non-existing mark" عندما يستخدم filter الاستعلام text index مع skip indexes عادية أخرى في الوقت نفسه. [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
* تم إصلاح الخطأ المنطقي "TABLE\_FUNCTION is not allowed in expression context" عندما تظهر table function ذات alias عدة مرات ضمن نطاق query نفسه (على سبيل المثال، في كلٍّ من clauses `PREWHERE` و`QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح distributed index analysis مع expressions (وليس الأعمدة فقط) في PK، وهو ما كان يؤدي إلى انعدام Filtering للحبيبات الزائدة على replicas البعيدة. [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
* تم منع dropping العمود عندما تكون subcolumns التابعة له مستخدمة في expressions من نوع default/alias لأعمدة أخرى، مع استخدام analyzer لتعبيرات default عند alter drop column. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تم إصلاح إعادة محاولة طلبات S3 بشكل غير صحيح عند حدوث أخطاء غير قابلة لإعادة المحاولة (بما في ذلك `HTTP_CONNECTION_LIMIT_REACHED`) في HTTP client. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
* تم إصلاح overflow عشري عند partition pruning مع DateTime64. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تم إصلاح خطأين في ترجمة expression باستخدام JIT: خطأ نسخ ولصق في type checking لـ `nativeCast` جعل فروع cast من عدد صحيح إلى عدد صحيح ومن float إلى float غير قابلة للوصول، وتمرير `nullptr` TargetMachine غير صحيح إلى LLVM `PassBuilder`، مما منع تسجيل passes التحسين الخاصة بالهدف. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح تجاوز RBAC كان يسمح للمستخدمين بتنفيذ DESCRIBE لأي table عبر `remote()` أو `remoteSecure()` أو `cluster()` أو `clusterAllReplicas()` عند توجيهها إلى localhost، من دون الحاجة إلى privilege ‏`SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
* تم إصلاح الاستثناء `BAD_GET` ونتائج query غير الصحيحة عندما يُستخدم expression غير Boolean (على سبيل المثال `sin(col)`) في كلٍّ من WHERE وSELECT مع JOIN، بسبب إفساد تحسين دفع filter إلى الأسفل لعُقد DAG المشتركة. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح LOGICAL\_ERROR ‏"Replica decided to read in Default mode, not in WithOrder" عند استخدام `read_in_order_through_join` مع parallel replicas. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح الاستثناء "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" عند استخدام table function ‏`input` كـ argument لـ `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح إعادة إحياء Outdated data parts الناتجة عن تنظيف empty covering parts بشكل غير صحيح. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح استثناء في `LogicalExpressionOptimizerPass` عندما تُرجع دالة منطقية ضمن مقارنة `equals` نوع `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح قيام `parseDateTimeBestEffort` بتحليل الكلمات التي تبدأ ببادئات الأشهر أو أيام الأسبوع بشكل غير صحيح. يُغلق [#97965](https://github.com/ClickHouse/ClickHouse/issues/97965). [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح استثناء `UNKNOWN_IDENTIFIER` عند الاستعلام عن table function ‏`merge()` أو محرك `Merge` على جداول تحتوي على JSON columns ذات parameters مختلفة (مثل حقول `SKIP` مختلفة) وأعمدة ALIAS تشير إلى مسارات JSON فرعية، مع تمكين analyzer الجديد. يُغلق [#97812](https://github.com/ClickHouse/ClickHouse/issues/97812). [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تحسين `optimize_skip_unused_shards` مع analyzer في حال استخدام تخزين `Distributed` داخل `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح الوصول إلى subcolumn في Tuple بالاسم (مثل `SELECT x.a` لـ `Tuple(a UUID, b Int32)`) في external tables المُمرَّرة عبر `--external` في `clickhouse-client`. يُغلق [#96925](https://github.com/ClickHouse/ClickHouse/issues/96925). [#98755](https://github.com/ClickHouse/ClickHouse/pull/98755) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح استثناء `reverseUTF8` عند إدخال UTF-8 غير صالح (مبتور). [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح اكتشاف مدى فائدة skip index من نوع Set مع OR مع false (أي or(x, 0)) بوصفه predicate. [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح استثناء `LOGICAL_ERROR` (عدم تطابق بنية block في `removeUnusedColumns`) الذي قد يحدث مع `FINAL` + `PREWHERE` + expression ثابتة في `WHERE` + aggregateات لا تعتمد على الأعمدة مثل `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* جعل entries ‏`system.trace_log` الخاصة بإعادة التحميل التلقائي لـ Dictionaries في ClickHouse تحتوي على Query id غير فارغ. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح عطل كان قد يؤدي إلى إلغاء مرجع مؤشر null في system tables التي أُنشئت بين لحظة أخذ snapshot للجداول في استدعاء `IDatabaseTablesIterator::table()` وبين تغيّر الجداول في thread أخرى أثناء التكرار اللاحق. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* إصلاح عدم قيام `SYSTEM START REPLICATED VIEW` بإيقاظ مهمة refresh. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح الاستثناء "Inconsistent table names" عند استخدام table function ‏`view()` التي تحتوي على JOINs داخل JOIN آخر (فقط مع analyzer القديم). [#98809](https://github.com/ClickHouse/ClickHouse/pull/98809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح ضبط RLIMIT\_SIGPENDING (عبر pending\_signals). [#98829](https://github.com/ClickHouse/ClickHouse/pull/98829) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الاستثناء عند تركيب `loop` مع cluster table functions. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* كانت `LEFT ANTI JOIN` التي تتضمن عدة أعمدة لمفاتيح الربط تُرجع نتائج غير صحيحة عندما يكون `enable_join_runtime_filters=1` (وهو الإعداد الافتراضي). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح `WITH FILL STALENESS` الذي كان يُنتج صفوفًا إضافية مُعبأة عند قراءة البيانات على عدة chunks (على سبيل المثال، مع قيمة صغيرة لـ `index_granularity`). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `LOGICAL_ERROR` التالي: "RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B". [#98900](https://github.com/ClickHouse/ClickHouse/pull/98900) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح انحراف تتبّع الذاكرة الناتج عن عدم التراجع عن allocations الفاشلة، والسلوك غير المعرّف لـ `nallocx(0)`، وخطأ زيادة بمقدار واحد في تتبّع الذروة العامة. كما جرى توسيع التتبّع ليشمل ring buffers الخاصة بـ `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
* منع Attach إلى جداول data lake المحلية خارج مسارات المستخدم، وليس فقط منع إنشائها. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح race condition كان يمكن أن يتسبب في ظهور الاستثناء "ReadBuffer is canceled" في queries التي تستخدم `urlCluster` أو cluster table functions مشابهة. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` في Financial functions (`financialNetPresentValue`, `financialInternalRateOfReturn`، وغيرها) عند تمرير arguments من النوع `BFloat16`. [#98958](https://github.com/ClickHouse/ClickHouse/pull/98958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم تطبيق skip indexes (وشروط primary key) على أعمدة ALIAS عند تعطيل دمج expression في query plan (`query_plan_merge_expressions = 0` أو `query_plan_enable_optimizations = 0`). [#98960](https://github.com/ClickHouse/ClickHouse/pull/98960) ([Peng](https://github.com/fastio)).
* زيادة `InsertQuery` ProfileEvent من أجل async inserts. يغلق [#98626](https://github.com/ClickHouse/ClickHouse/issues/98626). [#98962](https://github.com/ClickHouse/ClickHouse/pull/98962) ([Narasimha Pakeer](https://github.com/npakeer)).
* إصلاح الاستثناء "Inconsistent KeyCondition behavior" في builds التصحيح عندما يحتوي primary key على قيم float من نوع NaN، وذلك بجعل `accurateLess` و`accurateEquals` يتعاملان مع NaN بصورة متسقة مع ترتيب الفرز في ClickHouse. يغلق [#98075](https://github.com/ClickHouse/ClickHouse/issues/98075). [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لم يعد `SummingMergeTree` يجمع أعمدة Bool (وأنواع domain الأخرى). وتُحفظ قيم Bool كما هي بدلًا من جمعها حسابيًا. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash ](https://github.com/Onyx2406)).
* إصلاح الاستثناء Scalar doesn't exist الذي كان يحدث عند الاستعلام عن shard بعيد مع ضبط `optimize_const_name_size` وتعيين `enable_scalar_subquery_optimization` = 0. إذ لم تكن الثوابت الكبيرة المستبدلة بمراجع `__getScalar` في query البعيد تُرسَل إلى الـ shard، مما كان يؤدي إلى فشل query. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
* إصلاح `NOT_FOUND_COLUMN_IN_BLOCK` في بعض الاستعلامات التي تستخدم `GROUP BY` وتعبيرات تتضمن بحثًا عكسيًا في Dictionary، ومقارنات لتحويل `Date/DateTime`، ومقارنات tuple. يغلق [#98888](https://github.com/ClickHouse/ClickHouse/issues/98888). [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح سلوك غير معرّف (إلغاء إشارة مرجع لمؤشر فارغ) عند تعديل عمود version/sign/is\_deleted إلى `EPHEMERAL` أو `ALIAS` في محركات MergeTree. وأصبحت هذه التعديلات تُرفَض الآن على نحو صحيح. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم إصلاح مشكلة كانت تتسبب في أن `system.grants` لا تُدرج معلمات regular expression الخاصة بامتيازات `URL` و`S3` في العمود `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
* تم إصلاح قراءات Iceberg BigLake: أصبحت بيانات اعتماد ADC تُمرَّر الآن إلى عميل GCS S3 (ما يعالج أخطاء 403)، وتُشفَّر بيانات اعتماد OAuth2 بترميز URL قبل إرسالها (ما يعالج حالات فشل المصادقة للرموز المميزة التي تحتوي على محارف خاصة)، ولم يعد اجتياز مساحة الأسماء يتوقف عند استجابات BigLake HTTP 400. [#98998](https://github.com/ClickHouse/ClickHouse/pull/98998) ([Nikita Fomichev](https://github.com/fm4v)).
* تم إصلاح فشل `clickhouse-client` في تبديل timezone عندما يستخدم متغير البيئة `TZ` صيغة file path الخاصة بـ POSIX (مثل `TZ=:/etc/localtime`). [#99000](https://github.com/ClickHouse/ClickHouse/pull/99000) ([Yash ](https://github.com/Onyx2406)).
* إصلاح تقليم غير صحيح أو أقل فاعلية عند استخدام `startsWith` أو `LIKE` أو `NOT LIKE` مع عمود `FixedString`. بالإضافة إلى ذلك، يمكن الآن لدالة التحويل من `FixedString` إلى `String` تقليم granules عند تطبيقها على Key column. يغلق [#98940](https://github.com/ClickHouse/ClickHouse/issues/98940). [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تم إصلاح `windowFunnel` مع `strict_deduplication`، إذ كان يعيد مستوى غير صحيح عند مصادفة حدث مكرر. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash ](https://github.com/Onyx2406)).
* إصلاح خطأ كان يتسبب في تجاهل EXISTS لعبارتي `LIMIT` و`OFFSET` في الاستعلامات الفرعية، ما يؤدي إلى نتائج غير صحيحة عندما لا يُرجع الاستعلام الفرعي أي صفوف بسبب offset أو limit صفري. يغلق [#88722](https://github.com/ClickHouse/ClickHouse/issues/88722). [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
* إصلاح استثناء "Block structure mismatch" عندما تواجه عملية تحسين دفع التصفية إلى الأسفل تعبير AND يُختصر إلى قيمة ثابتة مع `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء عند قراءة patch parts (التحديثات الخفيفة) من دون العمود `_part_offset` في query plan. [#99023](https://github.com/ClickHouse/ClickHouse/pull/99023) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استعلام مثل `SELECT * FROM table WHERE pk_id = ''` حيث يكون `pk_id` هو primary key ومن النوع `String` سيستخدم الآن فهرس primary key على نحو صحيح لتصفية granules. [#99027](https://github.com/ClickHouse/ClickHouse/pull/99027) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إصلاح استثناء `DEPENDENCIES_NOT_FOUND` في Kafka engine عندما تكون materialized view في حالة detached بينما يقوم background thread ببث streaming data. [#99028](https://github.com/ClickHouse/ClickHouse/pull/99028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء الذي يحدث عند إنشاء جدول يحتوي على عمود `EPHEMERAL` يحمل الاسم نفسه لعمود افتراضي (مثل `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الرسالة المضللة "inflate failed: buffer error" عند قراءة ملفات مضغوطة غير موجودة عبر دالة الجدول `url()` باستخدام أنماط glob. تُرجع الآن نتيجة فارغة كما هو متوقع عند تمكين `http_skip_not_found_url_for_globs`. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل الخادم (std::terminate) عند تنفيذ `ALTER TABLE ... DROP PART` على `patch part` بعد تغيير في المخطط (مثل ADD COLUMN). كان التعطل ناتجًا عن غياب أعمدة النظام (`_part`) من البيانات الوصفية لـ `coverage part` الفارغ، مما أدى إلى استثناء غير ملتقط داخل `NOEXCEPT_SCOPE`. [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
* كان من الممكن أن تتعطل عملية خادم ClickHouse إذا طُرح استثناء لتجاوز حد الذاكرة أثناء *قراءة من قرص مخزنة مؤقتًا*. وقد أُصلح ذلك الآن. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إصلاح `LOGICAL_ERROR` عند الاستعلام عن جدول يحتوي على كلٍّ من ROW POLICY وعمود ALIAS باستخدام `dictGet`. كانت المشكلة ناتجة عن الوصول المبكر إلى تعبير الجدول أثناء تحليل عمود ALIAS في المحلل الجديد. [#99065](https://github.com/ClickHouse/ClickHouse/pull/99065) ([Peng](https://github.com/fastio)).
* إصلاح خطأ تجاوز الحدود عند محاولة المستخدم الاستعلام عن الأعمدة الافتراضية فقط من جدول Iceberg مع Avro format للبيانات. هذه حالة نادرة جدًا، لذا لا نعدّها حرجة. يُصلح [#88238](https://github.com/ClickHouse/ClickHouse/issues/88238). [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
* إصلاح segfault في CTE递归 مع `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تخطي تحليل الفهرس الإضافي غير الضروري عند تطبيق تحسين read-in-order. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح تعطل ناتج عن استثناء تجاوز حد الذاكرة طُرح أثناء تطبيق `patch part`. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تأكيد debug في `DDLWorker` كان سببه تقادم `first_failed_task_name` بعد حذف إدخال ZooKeeper أثناء استعادة إعادة التهيئة. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح إعادة بناء الفهارس النصية أثناء عمليات الدمج مع TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تعطل في استعلام `ALTER TABLE ... REMOVE SETTINGS` لمحرك جدول Iceberg. يُصلح [#86330](https://github.com/ClickHouse/ClickHouse/issues/86330). [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
* إصلاح خلل في تحسين `query_plan_convert_any_join_to_semi_or_anti_join` كان يُرجع نتيجة غير صحيحة للصفوف غير المتطابقة. ذو صلة: [https://github.com/ClickHouse/ClickHouse/pull/95995](https://github.com/ClickHouse/ClickHouse/pull/95995). [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح استثناء `LOGICAL_ERROR` في `ASTColumnsExceptTransformer::transform`. [#99119](https://github.com/ClickHouse/ClickHouse/pull/99119) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح تجاوز RBAC الذي كان يتيح للمستخدمين الحصول على بنية الجدول عبر `DESCRIBE TABLE` أو `CREATE TABLE AS` على دوال الجداول (`mysql()`, `postgresql()`, `sqlite()`, `arrowFlight()`, `jdbc()`, `odbc()` وغيرها) من دون امتيازات الوصول المطلوبة إلى المصدر. وبالنسبة إلى الدوال التي تستنتج المخطط من خوادم بعيدة، كان ذلك يتيح أيضًا تشغيل اتصالات صادرة (SSRF) من دون تخويل. [#99122](https://github.com/ClickHouse/ClickHouse/pull/99122) ([pufit](https://github.com/pufit)).
* إصلاح تعطل Keeper (segfault في NuRaft) أثناء إعادة التهيئة الديناميكية ونقل القيادة. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* إصلاح التعطل عند استخدام جدول Buffer مع SAMPLE عندما لا تدعمه الوجهة. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح LOGICAL\_ERROR الناتج عن عدم تطابق ترتيب الأعمدة في patch parts. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح تعطل نادر جدًا عند احتواء جدول Iceberg على ملفات بتنسيقات مختلطة (ORC وParquet). يُصلح [#88126](https://github.com/ClickHouse/ClickHouse/issues/88126). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
* إصلاح عدم تطبيق max\_execution\_time على backup/restore. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح تجاهل `insert_deduplication_token` بصمت في استعلامات `INSERT SELECT` من دون `ORDER BY ALL`. سابقًا، كان يتم تعطيل deduplication بالكامل لعمليات `INSERT SELECT` غير المرتبة، حتى عند تقديم token صريح من المستخدم. الآن، يكفي تقديم `insert_deduplication_token` لتمكين deduplication بغض النظر عن `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
* إصلاح الإفراط في التحقق من الوصول أثناء تحسين `InverseDictionaryLookupPass`، وذلك عبر التحقق من grant `CREATE_TEMPORARY_TABLE` مرة واحدة قبل المرور بدلًا من التحقق منه لكل عقدة تمت زيارتها. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح قيام `clickhouse format --obfuscate` بإنتاج SQL غير صالح بسبب إخفاء أنواع skip index، وأسماء compression codec، وأسماء database engine، وتعريفات dictionary layout/source. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح خلل كان يجعل المقارنة بين النوعين Time\[64] وDateTime\[64] مربكة في بعض الحالات؛ والآن، في مثل هذه الحالات، تتم ترقية قيم Time\[64] إلى DateTime\[64] بإضافة `1970-01-01` كجزء التاريخ. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تقييد constraints الخاصة بالإعدادات في عامل DDL لاستعلامات DDL الموزعة. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح مشكلات طفيفة في authentication باستخدام TOTP: خيار CLI `--one-time-password` مع كلمة مرور فارغة، والتحقق من قيم الإعداد `<digits>` و`<period>`. [#99322](https://github.com/ClickHouse/ClickHouse/pull/99322) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح الخطأ المنطقي `unordered_map::at: key not found` في Avro output format عند تسلسل أعمدة `Enum8`/`Enum16` التي تحتوي على values غير موجودة في تعريف enum. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
* إصلاح CHECK TABLE عند استخدام التسلسل المتناثر داخل Tuple مع Dynamic. يغلق [#96588](https://github.com/ClickHouse/ClickHouse/issues/96588). [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح التحقق المتشدّد أكثر من اللازم من المعالجة المسبقة للفهرس النصي. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح التوافق عند ترقية الجداول المُكررة ذات فهارس minmax الضمنية من الإصدار 25.10 إلى الإصدارات الأحدث. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
* أُزيل دعم الدوال المنفية (`notEquals`, `notLike`, `notIn`) من تحليل الفهرس النصي. لم يكن بالإمكان لهذه الدوال تخطي أي حبيبات مطلقًا، لذا فإن تحليل الفهرس لها لم يكن يضيف سوى عبء إضافي من دون أي فائدة. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح `optimize_skip_unused_shards` مع المحلّل الجديد في الحالة التي يُستخدم فيها جدول `Distributed` داخل استعلام IN فرعي. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح heap-use-after-free في `INTERSECT`/`EXCEPT` عندما يُنتج الاستعلام أسماء أعمدة مكررة. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ منطقي في `ALTER TABLE ... DROP PART` عند استخدام معلمة استعلام محددة النوع لاسم الجزء. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `NOT_FOUND_COLUMN_IN_BLOCK` عندما يُشار إلى شرط فهرس نصي (مثل `hasAllTokens`) في كلٍّ من عبارتي `SELECT` و`WHERE` عبر اسم مستعار. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح النتائج غير الصحيحة عند استخدام `hasAllTokens` مع OR بين أعمدة لها فهارس نصية منفصلة. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
* تهيئة ذاكرة تخزين الصفحات المؤقتة في `clickhouse-local` حتى يصبح الإعداد `page_cache_max_size` فعّالًا. [#99510](https://github.com/ClickHouse/ClickHouse/pull/99510) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة نادرة يُوسم فيها جزء بيانات على نحو غير صحيح بأنه تالف ويُفصل بعد استعلام `DETACH/ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح استثناء `std::length_error` عند الاستعلام عن جداول النظام الفارغة باستخدام تنسيق Pretty عبر واجهة HTTP. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح `LOGICAL_ERROR` عند استخدام `ALTER TABLE ADD COLUMN` لإنشاء عمود `EPHEMERAL` بالاسم نفسه لعمود افتراضي (مثل `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة عدم طرد إدخالات `VectorSimilarityIndexCache` مطلقًا بعد إزالة الجزء بسبب عدم تطابق مفاتيح ذاكرة التخزين المؤقت. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
* منع قراءة بيانات اعتماد Google من ملف محلي. هذا الإعداد غير آمن لأنه يتيح قراءة بيانات اعتماد أخرى إذا كان مسار الملف معروفًا. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح تراجع الأداء في analyzer، واستبعاد الأعمدة غير المستخدمة من `ARRAY JOIN`. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح قراءة الفهرس النصي في جدول يحتوي على lightweight deletes وسياسات صفوف. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح إلغاء الإشارة إلى nullptr في قارئ Parquet عندما يواجه مسار filter-in-decoder صفحات مستبعَدة بالتصفية. يُغلق [#99676](https://github.com/ClickHouse/ClickHouse/issues/99676). [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عملية seek غير الصحيحة في AsynchronousReadBufferFromFileDescriptor مع O\_DIRECT. يُغلق [#99358](https://github.com/ClickHouse/ClickHouse/issues/99358). [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح heap-buffer-overflow في `CompressionCodecT64` وإنهاء العملية في `CompressionCodecMultiple` عند فك ضغط بيانات مضغوطة تالفة. وقد اكتُشفت كلتا المشكلتين بواسطة أهداف libFuzzer الجديدة. وأصبحت codecs الآن تطلق استثناءً بدلًا من التعطل. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul](https://github.com/motsc)).
* تأخير المعالجة إلى أن ينتهي server من تحميل جميع الجداول. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح تجاوز مصدر قاموس MySQL لـ `RemoteHostFilter` في معاملات DDL المضمّنة. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح خطأ منطقي عند التكرار عبر جداول data lake في `system.tables`. [#99739](https://github.com/ClickHouse/ClickHouse/pull/99739) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح تحليل predicates باستخدام الدالة `IN` عبر الفهرس النصي مع preprocessor. كما أُصلح تصادم tokens التي يجري البحث عنها في الفهرس النصي، وهو ما كان قد يؤدي إلى نتائج غير صحيحة. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح حلقة لا نهائية عند قراءة ملفات التنسيق `Npy` ذات أبعاد shape السالبة. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
* إصلاح global-buffer-overflow في الدالة `CRC32` على arguments من نوع `FixedString` عند تقييمها مع صفر صفوف أثناء حساب ترويسة query plan. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح التعطل (إلغاء الإشارة إلى مؤشر فارغ) عند تنفيذ `ALTER TABLE ... MODIFY COLUMN ... COMMENT` على جداول Iceberg. [#99838](https://github.com/ClickHouse/ClickHouse/pull/99838) ([Desel72](https://github.com/Desel72)).
* إصلاح الإعداد `aggregate_functions_null_for_empty` ليعمل مع aggregate functions التي تُرجع أنواعًا غير `Nullable` مثل `Array` أو `Map` (مثل `groupArray` و`sumMap`). [#99839](https://github.com/ClickHouse/ClickHouse/pull/99839) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء LOGICAL\_ERROR في الدالة `midpoint` عند استدعائها بأنواع أعداد صحيحة مختلطة موقعة/غير موقعة. [#99867](https://github.com/ClickHouse/ClickHouse/pull/99867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء "عدم تطابق بنية الكتلة" في queries التي تحتوي على HAVING clause، حيث يتضمن filter expression كِلَا من تجميع ملفوف داخل دالة تُنتج NULL و`materialize(0)`. [#99915](https://github.com/ClickHouse/ClickHouse/pull/99915) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل `assertion` في `sipHash128Keyed` (ودوال `hash` ذات المفاتيح المشابهة) عندما تكون وسيطة البيانات من نوع Map بمفاتيح Array أو بأنواع Array متداخلة أخرى. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء `LOGICAL_ERROR` "Set غير جاهز" في الدالة `IN` أثناء تحسين خطة الاستعلام باستخدام `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* تقليل وقت الترجمة بإزالة تضمينات ملفات الترويسة الثقيلة ونقل إنشاءات القوالب المكلفة خارج ملفات الترويسة. [#97893](https://github.com/ClickHouse/ClickHouse/pull/97893) ([Raúl Marín](https://github.com/Algunenano)).
* تقليل وقت ترجمة الدوال الحسابية وملفات الترويسة المرتبطة بها عبر تصغير مصفوفات توزيع القوالب وإزالة التضمينات الثقيلة. [#98204](https://github.com/ClickHouse/ClickHouse/pull/98204) ([Raúl Marín](https://github.com/Algunenano)).
* استخدام `mongo-c-driver` 2.2.2. [#98304](https://github.com/ClickHouse/ClickHouse/pull/98304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `postgres` REL\_18\_3. [#98306](https://github.com/ClickHouse/ClickHouse/pull/98306) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تمكين jemalloc allocator في builds الخاصة بـ UBSan لتجنب تراكم RSS الناتج عن ضعف سلوك `glibc malloc` في استعادة الذاكرة. [#98444](https://github.com/ClickHouse/ClickHouse/pull/98444) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدام Rust v0 symbol mangling وإزالة الرموز الداخلية من مكتبة PRQL لتقليل تضخم أسماء الرموز الناتج عن مكتبات parser combinator. [#98446](https://github.com/ClickHouse/ClickHouse/pull/98446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة مجموعة benchmark ‏TPC-H وملف README الخاص بـ TPC-DS إلى `tests/benchmarks`. [#98495](https://github.com/ClickHouse/ClickHouse/pull/98495) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إضافة اختبارات صحة لجميع استعلامات TPC-DS البالغ عددها 99. [#99204](https://github.com/ClickHouse/ClickHouse/pull/99204) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إضافة اختبار تكامل يعيد إنتاج الخلل المتعلق بـ DDL CREATE TABLE + ALTER مع نسخة متماثلة غير متصلة ([#44070](https://github.com/ClickHouse/ClickHouse/issues/44070))، مع تمييزه كإخفاق متوقع. [#99259](https://github.com/ClickHouse/ClickHouse/pull/99259) ([Raufs Dunamalijevs](https://github.com/rienath)).
* دمج jemalloc مع البادئة `je_` وإزالة استخدام `--wrap` الخاص بالمُرابط. [#99342](https://github.com/ClickHouse/ClickHouse/pull/99342) ([Azat Khuzhin](https://github.com/azat)).

<div id="262">
  ### إصدار ClickHouse 26.2 بتاريخ 2026-02-26. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.2/)، [الفيديو](https://www.youtube.com/watch?v=7qHba08vNfo)
</div>

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

* أصبحت إزالة التكرار مفعّلة افتراضيًا لجميع عمليات insert. في السابق، كانت غير مفعّلة لعمليات async inserts ولـ MVs، لكنها كانت مفعّلة لعمليات insert المتزامنة. الهدف هو توحيد القيم الافتراضية في كلتا طريقتَي insert. إذا كانت إزالة التكرار معطّلة صراحةً على الـ cluster لديك، فعليك ضبط `deduplicate_insert='backward_compatible_choice'` صراحةً للحفاظ على السلوك السابق. وينطبق الأمر نفسه على `deduplicate_blocks_in_dependent_materialized_views`. [#95970](https://github.com/ClickHouse/ClickHouse/pull/95970) ([Sema Checherinda](https://github.com/CheSema)).
* تم تحسين تنسيق تخزين الإحصاءات. أصبحت جميع الإحصاءات الآن تُخزَّن في ملف واحد. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)). إذا لم تكن قد فعّلت إحصاءات الجدول صراحةً، فيمكنك تجاهل هذا البند.
* تقييد البيانات الوصفية داخل الذاكرة لـ S3(Azure)Queue. أُعيدت تسمية جداول النظام من `azure_queue` إلى `azure_queue_metadata_cache` ومن `system.s3queue` إلى `s3queue_metadata_cache`. [#95809](https://github.com/ClickHouse/ClickHouse/pull/95809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* في السابق، كان تطبيق دالة على عمود `Variant` يعيد قيم NULL بصمت عندما يكون النوع الفرعي للـ variant غير متوافق مع الدالة؛ أما الآن، فإنه يطرح استثناءً، ما قد يؤدي إلى تعطّل الاستعلامات التي كانت تعتمد على سلوك NULL الصامت. [#95811](https://github.com/ClickHouse/ClickHouse/pull/95811) ([Bharat Nallan](https://github.com/bharatnc)).
* أصبحت أعمدة `DATE` من PostgreSQL تُستنتج الآن على أنها `Date32` في ClickHouse (في الإصدارات السابقة، كانت تُستنتج على أنها `Date`، ما كان يؤدي إلى overflow للقيم الواقعة خارج نطاق ضيق). كما أصبح مسموحًا بإدراج قيم `Date32` مرة أخرى إلى PostgreSQL. يغلق هذا [#73084](https://github.com/ClickHouse/ClickHouse/issues/73084). [#95999](https://github.com/ClickHouse/ClickHouse/pull/95999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت دلالات الإعداد `do_not_merge_across_partitions_select_final` أوضح. في السابق، كان يمكن تفعيل هذه الميزة تلقائيًا عندما لا يكون الإعداد مضبوطًا صراحةً في ملفات config. وقد تسبب ذلك مرارًا في حدوث التباس، وللأسف أدى إلى بعض المشكلات في بيئات production. أما الآن، فأصبحت القواعد أبسط: يفعّل `do_not_merge_across_partitions_select_final=1` هذه الوظيفة دون أي شرط. وإذا كان `do_not_merge_across_partitions_select_final=0`، فسيُستخدم الوضع التلقائي فقط إذا كان الإعداد الجديد `enable_automatic_decision_for_merging_across_partitions_for_final=1`، ولن يُستخدم في غير ذلك. وللحفاظ على السلوك السابق قدر الإمكان، ضُبطت القيم الافتراضية على `do_not_merge_across_partitions_select_final=0` و `enable_automatic_decision_for_merging_across_partitions_for_final=1`. [#96110](https://github.com/ClickHouse/ClickHouse/pull/96110) ([Nikita Taranov](https://github.com/nickitat)).
* عند إنشاء جدول S3 مع تحديد الأعمدة صراحةً، يتحقق ClickHouse الآن من أن أسماء تلك الأعمدة موجودة فعلًا في schema الخاصة بالملف البعيد. الاستعلامات التي كانت تعمل سابقًا رغم عدم تطابق أسماء الأعمدة ستفشل الآن عند إنشاء الجدول. يغلق هذا [#96089](https://github.com/ClickHouse/ClickHouse/issues/96089). [#96194](https://github.com/ClickHouse/ClickHouse/pull/96194) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* يُحظر استخدام الاستعلامات الفرعية في ORDER BY وفي تعبيرات مفاتيح الجداول الأخرى. [#96847](https://github.com/ClickHouse/ClickHouse/pull/96847) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `apply_row_policy_after_final` مفعّلًا افتراضيًا. في البداية، عندما كانت قيمة `optimize_move_to_prewhere_if_final=0`، كان كلٌّ من ROW POLICY وPREWHERE يراعيان FINAL ويُطبَّقان بعد FINAL. لكن هذا السلوك تعطّل بسبب [#87303](https://github.com/ClickHouse/ClickHouse/issues/87303)، الذي تجاهل `optimize_move_to_prewhere_if_final` لمرشّح ROW POLICY. ولإصلاح ذلك، يفعّل طلب السحب هذا الإعداد `apply_row_policy_after_final` الذي قُدِّم في [#91065](https://github.com/ClickHouse/ClickHouse/issues/91065). ومع تفعيل `apply_row_policy_after_final`، سيواصل ROW POLICY مراعاة FINAL افتراضيًا كما كان سابقًا. ويُعد طلب السحب هذا تغييرًا غير متوافق لأنه يغيّر السلوك عند `optimize_move_to_prewhere_if_final=1`. والآن، لجعل ROW POLICY يُطبَّق قبل FINAL، ينبغي استخدام `apply_row_policy_after_final` بدلًا من `optimize_move_to_prewhere_if_final`. [#97279](https://github.com/ClickHouse/ClickHouse/pull/97279) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* أصبح النوع `Date` الآن يُسلسَل باعتباره النوع الأصلي `date32` في Arrow ضمن تنسيقات Arrow/ArrowStream، بدلًا من `uint16`. وستتعرّف أدوات مثل PyArrow الآن على العمود بشكل صحيح باعتباره نوع تاريخ. ويمكن استعادة السلوك القديم باستخدام الإعداد `output_format_arrow_date_as_uint16`. ولا يزال دعم قراءة ملفات Arrow القديمة التي كانت تستخدم `uint16` لأعمدة `Date` متاحًا. [#96860](https://github.com/ClickHouse/ClickHouse/pull/96860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* يمكن للمستخدمين الآن استخدام ClickStack (واجهة observability) مباشرةً من ClickHouse، وهو ما يفيد في debugging والتطوير المحلي. [#96597](https://github.com/ClickHouse/ClickHouse/pull/96597) ([Aaron Knudtson](https://github.com/knudtty)).
* دعم كلمات المرور لمرة واحدة المستندة إلى الوقت (TOTP) بوصفها طريقة authentication. [#71273](https://github.com/ClickHouse/ClickHouse/pull/71273) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إضافة إعداد قاعدة البيانات `lazy_load_tables`. عند تمكينه، لا تُحمَّل الجداول أثناء بدء تشغيل قاعدة البيانات — وبدلًا من ذلك، يُنشأ `StorageTableProxy` خفيف الوزن، ثم يُنشأ table engine الفعلي عند أول وصول. [#96283](https://github.com/ClickHouse/ClickHouse/pull/96283) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* تمت إضافة الإعداد `input_format_max_block_wait_ms` لإخراج data blocks عند انتهاء المهلة، مع السماح بمعالجة البيانات المتبقية عند إغلاق HTTP connection بشكل غير متوقع. [#94509](https://github.com/ClickHouse/ClickHouse/pull/94509) ([Mostafa Mohamed Salah](https://github.com/Sasao4o)).
* تكامل catalog لـ Google BigLake. هذا يُغلق [#95339](https://github.com/ClickHouse/ClickHouse/issues/95339). [#97104](https://github.com/ClickHouse/ClickHouse/pull/97104) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تمت إضافة system table ‏`system.tokenizers` التي تعرض جميع أدوات tokenizer المتاحة. [#96753](https://github.com/ClickHouse/ClickHouse/pull/96753) ([Robert Schulze](https://github.com/rschu1ze)).
* إضافة system table جديدة `system.user_defined_functions` لمراقبة loading status وconfiguration الخاصة بـ UDF. [#90340](https://github.com/ClickHouse/ClickHouse/pull/90340) ([Xu Jia](https://github.com/XuJia0210)).
* إضافة table ‏`system.jemalloc_stats` التي تعرض إحصاءات allocator الذاكرة jemalloc (عبر `malloc_stats_print`) لتشخيص memory usage على الخوادم المبنية باستخدام jemalloc. كما تمت إضافة endpoint ‏HTTP باسم `/jemalloc.html` على ClickHouse HTTP interface من أجل تصور تفاعلي لهذه الإحصاءات. [#97077](https://github.com/ClickHouse/ClickHouse/pull/97077) ([Antonio Andelic](https://github.com/antonio2368)).
* تمت إضافة table ‏`system.jemalloc_profile_text` لقراءة heap profiles الخاصة بـ jemalloc وتحليلها. ويتحكم الإعداد `jemalloc_profile_text_output_format` في output format ‏(raw أو symbolized أو collapsed؛ والقيمة default هي collapsed). ويتحكم `jemalloc_profile_text_symbolize_with_inline` في resolution الخاصة بـ inline frame ‏(عند تمكينه، تُدرج inline frames على حساب بطء symbolization؛ وعند تعطيله، يتم تخطيها للحصول على مخرجات أسرع). وبالنسبة إلى الصيغة collapsed، يتحكم `jemalloc_profile_text_collapsed_use_count` في ما إذا كانت stacks تُوزن بحسب عدد التخصيصات الحية (true) أو البايتات الحية (false، وهي القيمة default). يسهّل ذلك profiling الذاكرة وتصور flame graph لملفات jemalloc heap profile. ويُصلح [#93248](https://github.com/ClickHouse/ClickHouse/issues/93248). [#97218](https://github.com/ClickHouse/ClickHouse/pull/97218) ([Antonio Andelic](https://github.com/antonio2368)).
* إضافة الإعداد `default_dictionary_database`، الذي يتيح لـ ClickHouse تحليل external dictionaries المشار إليها من دون محدد قاعدة بيانات ضمن قاعدة بيانات default محددة. وهذا يبسّط migration من القواميس العامة المعرّفة عبر XML إلى Dictionaries معرّفة عبر SQL لكل قاعدة بيانات، بما يسمح لاستعلامات القواميس الحالية (مثل dictGet('name', …)) بالاستمرار في العمل من دون تعديل. [#91412](https://github.com/ClickHouse/ClickHouse/pull/91412) ([Dmitrii Plotnikov](https://github.com/dimbo4ka)).
* دعم auxiliary ZooKeeper لـ `DatabaseReplicated`. [#91683](https://github.com/ClickHouse/ClickHouse/pull/91683) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* تنفيذ table function جديدة باسم `primes` وsystem table جديدة `system.primes` تحتوي على الأعداد الأولية بترتيب تصاعدي. يُغلق [#90839](https://github.com/ClickHouse/ClickHouse/issues/90839). [#92776](https://github.com/ClickHouse/ClickHouse/pull/92776) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تدعم `async inserts` النصاب المتوازي (parallel quorum). وتتم مطابقة البيانات المُدرجة عبر النصاب. وإذا عُثر على بيانات مكررة، ينتظر الاستعلام حتى تتم أيضًا مطابقة البيانات المُدرجة سابقًا. [#93356](https://github.com/ClickHouse/ClickHouse/pull/93356) ([Sema Checherinda](https://github.com/CheSema)).
* أُضيفت الدالتان `colorOKLABToSRGB` و`colorSRGBToOKLAB` لتحويل القيمة من sRGB إلى OKLAB والعكس. [#93361](https://github.com/ClickHouse/ClickHouse/pull/93361) ([Pranav Tiwari](https://github.com/pranavt84)).
* أُضيف إعداد جديد هو `deduplicate_insert` يتجاوز `insert_deduplicate` و`async_insert_deduplicate`. [#94413](https://github.com/ClickHouse/ClickHouse/pull/94413) ([Sema Checherinda](https://github.com/CheSema)).
* يتيح إعداد الخادم `insert_deduplication_version` الترحيل إلى قيمة hash موحّدة لإزالة التكرار. [#95409](https://github.com/ClickHouse/ClickHouse/pull/95409) ([Sema Checherinda](https://github.com/CheSema)).
* أُضيفت دالة hash باسم `xxh3_128`. [#96055](https://github.com/ClickHouse/ClickHouse/pull/96055) ([Raúl Marín](https://github.com/Algunenano)).
* أُضيف الاستعلام `OPTIMIZE <table> DRY RUN PARTS <part names>` لمحاكاة عمليات الدمج دون اعتماد الجزء الناتج. وقد يكون ذلك مفيدًا لأغراض الاختبار: التحقق من صحة الدمج في الإصدار الجديد، وإعادة إنتاج الأخطاء المرتبطة بالدمج بصورة حتمية، وقياس أداء الدمج بشكل موثوق. [#96122](https://github.com/ClickHouse/ClickHouse/pull/96122) ([Anton Popov](https://github.com/CurtizJ)).
* أُضيف فحص جديد مفعّل افتراضيًا عبر الإعداد `check_named_collection_dependencies` لتجنّب حذف المجموعات المسمّاة المستخدمة بواسطة الجداول. [#96181](https://github.com/ClickHouse/ClickHouse/pull/96181) ([Pablo Marcos](https://github.com/pamarcos)).
* أُضيفت `system.fail_points` لفحص نقاط الإخفاق الموجودة في الخادم وما إذا كانت مفعّلة أم لا. وسيساعد ذلك على أتمتة الاختبارات. [#96762](https://github.com/ClickHouse/ClickHouse/pull/96762) ([Pedro Ferreira](https://github.com/PedroTadim)).
* أُضيف التحكم في الوصول المستند إلى الأدوار إلى Glue catalog. استخدم الإعداد `aws_role_arn`، ويمكن استخدام `aws_role_session_name` اختياريًا. [#90825](https://github.com/ClickHouse/ClickHouse/pull/90825) ([Antonio Andelic](https://github.com/antonio2368)).
* أُضيف إعداد `add_minmax_index_for_temporal_columns` الذي ينشئ، عند تفعيله، MinMax indexes تلقائيًا لجميع الأعمدة `Date` و`Date32` و`Time` و`Time64` و`DateTime` و`DateTime64`. [#93355](https://github.com/ClickHouse/ClickHouse/pull/93355) ([Michael Jarrett](https://github.com/EmeraldShift)).
* أُضيف دعم الأسماء المستعارة الموسّعة للجداول في JOINs (استعلامات مثل `SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b`). ويغلق [#95131](https://github.com/ClickHouse/ClickHouse/issues/95131). [#95331](https://github.com/ClickHouse/ClickHouse/pull/95331) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أُضيف دعم `ALTER TABLE RENAME COLUMN` لجداول Iceberg. في السابق، كان الدعم يقتصر على `ADD COLUMN, DROP COLUMN, and MODIFY COLUMN` فقط. [#97455](https://github.com/ClickHouse/ClickHouse/pull/97455) ([murphy-4o](https://github.com/murphy-4o)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* أصبح الفهرس النصي الآن متاحًا للاستخدام العام (GA). [#96794](https://github.com/ClickHouse/ClickHouse/pull/96794) ([Robert Schulze](https://github.com/rschu1ze)).
* أصبح نوع البيانات `QBit` لتخزين المتجهات المكمّمة والمعبأة على مستوى البت (المستخدم في البحث التقريبي عن أقرب الجيران) متاحًا للاستخدام العام، ولم يعد يتطلب تفعيل إعداد تجريبي. [#95358](https://github.com/ClickHouse/ClickHouse/pull/95358) ([Raufs Dunamalijevs](https://github.com/rienath)).
* يمكن الآن لميزة vector search في ClickHouse استخدام النسخ المتماثلة في العنقود *لتوزيع* الحمل وعمليات البحث عبر أجزاء الفهرس المتجهي. ويتيح ذلك لـ ClickHouse دعم فهارس متجهية كبيرة تتجاوز سعة ذاكرة جهاز افتراضي واحد. [#95876](https://github.com/ClickHouse/ClickHouse/pull/95876) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إضافة server-side AST fuzzer، مع التحكم فيه عبر الإعدادين `ast_fuzzer_runs` و`ast_fuzzer_any_query`. وعند تفعيله، يُجري الخادم تحويرات عشوائية على كل استعلام بعد تنفيذه المعتاد، مع تجاهل النتائج. [#97568](https://github.com/ClickHouse/ClickHouse/pull/97568) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة الدالة `iif` إلى لهجة KQL التجريبية. [#94790](https://github.com/ClickHouse/ClickHouse/pull/94790) ([happyso](https://github.com/sunyeongchoi)).
* يراعي استنتاج المخطط الآن `allow_experimental_nullable_tuple_type`. وعند تفعيله، فإنه يسمح بأن تكون أنواع `Tuple` المستنتجة من النوع `Nullable(Tuple(...))`، بحيث يمكن أن تصبح الكائنات المتداخلة المفقودة `NULL` بدلًا من `Tuple` مكوَّن من عناصر `NULL`. [#95525](https://github.com/ClickHouse/ClickHouse/pull/95525) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* أصبح الإعداد `use_statistics_cache` مفعّلًا افتراضيًا الآن، بحيث تُخزَّن إحصاءات الأعمدة مؤقتًا في الذاكرة لتسريع تحسين الاستعلامات دون الحاجة إلى إعادة تحميلها من كل جزء بيانات. [#95950](https://github.com/ClickHouse/ClickHouse/pull/95950) ([Han Fei](https://github.com/hanfei1991)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* السماح باستخدام أي expression حتمي في المفتاح الأساسي لتخطي البيانات (مثل `ORDER BY cityHash64(user_id)` / `ORDER BY length(user_id)`). بالنسبة إلى التعبيرات الحتمية، يمكن لـ ClickHouse تطبيق expression على ثوابت query واستخدام النتيجة في index المفتاح الأساسي مع predicates مثل `=` و `IN` و `has`. وإذا كان expression أيضًا تقابليًا (injective) (مثل `ORDER BY hex(p)` أو `ORDER BY reverse(tuple(reverse(p), hex(p)))`)، فيمكن استخدام index بفعالية مع الصيغ المنفية: `!=` و `NOT IN` و `NOT has`. يُغلق [#10685](https://github.com/ClickHouse/ClickHouse/issues/10685). يُغلق [#82161](https://github.com/ClickHouse/ClickHouse/issues/82161). [#92952](https://github.com/ClickHouse/ClickHouse/pull/92952) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تحسين format تخزين الإحصاءات. أصبحت جميع الإحصاءات الآن مخزنة في ملف واحد. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)).
* السماح بالقراءة المتوازية لمحركات/دوال الجداول البعيدة في filesystem cache. [#71781](https://github.com/ClickHouse/ClickHouse/pull/71781) ([Kseniia Sumarokova](https://github.com/kssenii)).
* السماح باستخدام userspace page cache مع الملفات المحلية ودوال الجداول الخاصة بـ object storage. [#77874](https://github.com/ClickHouse/ClickHouse/pull/77874) ([Michael Kolupaev](https://github.com/al13n321)).
* تجنّب عمليات `memcpy` غير الضرورية في userspace page cache. [#77884](https://github.com/ClickHouse/ClickHouse/pull/77884) ([Michael Kolupaev](https://github.com/al13n321)).
* أصبحت القيمة الافتراضية لـ `concurrent_threads_scheduler` الآن `max_min_fair` بدلًا من `fair_round_robin`. يحسّن ذلك العدالة تحت الأحمال العالية عبر إعطاء الأولوية للاستعلامات ذات الخانات المخصّصة الأقل، بحيث لا تتأثر الاستعلامات القصيرة سلبًا بالاستعلامات طويلة التشغيل. [#95300](https://github.com/ClickHouse/ClickHouse/pull/95300) ([Sergei Trifonov](https://github.com/serxa)).
* إذا كان استعلام `FINAL` يستخدم شرط المفتاح الأساسي للتصفية ثم تتبعه skip indexes لشروط أخرى، فستتحقق خطوة المعالجة `PrimaryKeyExpand` الآن فقط من تقاطع نطاقات المفتاح الأساسي التي جرى اختيارها مبدئيًا. [#94903](https://github.com/ClickHouse/ClickHouse/pull/94903) ([Shankar Iyer](https://github.com/shankar-iyer)).
* عند استخدام parallel replicas مع table functions مثل `s3(...)`، أصبحت الاستعلامات التي تحتوي على subquery واحد يغلّف table function تُوزَّع الآن تلقائيًا بالتوازي عبر replicas، بينما كان التوزيع المتوازي سابقًا يقتصر على المراجع المباشرة إلى table functions فقط. يُغلق [#92264](https://github.com/ClickHouse/ClickHouse/issues/92264). [#96332](https://github.com/ClickHouse/ClickHouse/pull/96332) ([phulv94](https://github.com/phulv94)).
* تمكين تقسيم ملفات البيانات وملفات النظام داخل cache إلى segments منفصلة. [#87834](https://github.com/ClickHouse/ClickHouse/pull/87834) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* تسريع بعض عمليات hash join من خلال تنفيذ التوجيه الديناميكي لـ `ColumnVector::replicate`. [#79573](https://github.com/ClickHouse/ClickHouse/pull/79573) ([Raúl Marín](https://github.com/Algunenano)).
* تحسين الأداء لـ parallel hash join في حالات predicates المعقدة. سابقًا، كانت الصفوف غير المنضمّة تُعالَج في thread واحد، وهو ما لم يكن مثاليًا؛ وفكرة هذا التحسين هي موازاة معالجة الصفوف غير المنضمّة عبر عدة threads. يمكن التحكم به عبر الإعداد `parallel_non_joined_rows_processing`. وهو مُمكَّن افتراضيًا. [#92068](https://github.com/ClickHouse/ClickHouse/pull/92068) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* تحسين طفيف في parsing الخاص بـ JSON type. [#93614](https://github.com/ClickHouse/ClickHouse/pull/93614) ([Pavel Kruglov](https://github.com/Avogar)).
* تحسين البصمة الذاكرية لـ AST. يكون هذا التحسين مفيدًا لأن الحقول لا تُستخدم عند عدم استخدام التمييز البصري، وعند عدم وجود parsing لعبارات VALUES. [#93974](https://github.com/ClickHouse/ClickHouse/pull/93974) ([Ilya Yatsishin](https://github.com/qoega)).
* تحسين استهلاك الذاكرة لكائنات AST من النوع Tuple المسمّاة. توضع أسماء الأعمدة كسلاسل نصية داخل كائن tuple بدلًا من الاحتفاظ بها في عقد AST حرفية عامة. [#94704](https://github.com/ClickHouse/ClickHouse/pull/94704) ([Ilya Yatsishin](https://github.com/qoega)).
* جرى تحسين إزالة الافتراضية بإضافة خيارات ربط إضافية. [#94737](https://github.com/ClickHouse/ClickHouse/pull/94737) ([Nikita Taranov](https://github.com/nickitat)).
* تحسين أداء استنساخ replica لجداول ReplicatedMergeTree التي تحتوي على parts كثيرة من خلال batching لطلبات ZooKeeper. [#94847](https://github.com/ClickHouse/ClickHouse/pull/94847) ([c-end](https://github.com/c-end)).
* عندما كانت خطوة القراءة تحتوي مسبقًا على مرشحات PREWHERE، لم يكن من الممكن إضافة مرشح جديد. يؤخر هذا التغيير تحسين PREWHERE إلى ما بعد تحسين runtime filter في JOIN، بحيث يمكن أيضًا دفع runtime filters إلى PREWHERE. [#95838](https://github.com/ClickHouse/ClickHouse/pull/95838) ([Alexander Gololobov](https://github.com/davenger)).
* تسريع ضغط codec ‏`T64` باستخدام الإرسال الديناميكي على x86. [#95881](https://github.com/ClickHouse/ClickHouse/pull/95881) ([Raúl Marín](https://github.com/Algunenano)).
* تسريع `uniq` على الأنواع الرقمية عبر batching لعمليات insert عند الإمكان (Not null، وليس ‎-If، وبدون GROUP BY، وبدون IPv6 أو String). [#95904](https://github.com/ClickHouse/ClickHouse/pull/95904) ([Raúl Marín](https://github.com/Algunenano)).
* تحسينات منخفضة المستوى في Keeper: تبيّن أن `ZooKeeper::observeOperations` يستحوذ على أكثر من 20% من استهلاك CPU لخيط الاستقبال في ZooKeeper. ويعالج هذا التغيير ذلك عبر: 1. استخدام `CityHash64` بدلًا من `SipHash` في `AggregatedZooKeeperLog::stats` لأنه أسرع بأكثر من 10 مرات. 2. استخدام `std::array<std::atomic<UInt32>, N>` بدلًا من `std::unordered_map` و`std::mutex` في `Coordination::ErrorCounter`. [#95962](https://github.com/ClickHouse/ClickHouse/pull/95962) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إزالة المحاذاة إلى 64 بايت لـ `ProfileEvents::Counter` لتوفير الذاكرة. [#96097](https://github.com/ClickHouse/ClickHouse/pull/96097) ([Azat Khuzhin](https://github.com/azat)).
* تحسين الذاكرة: تقليص حجم البنية `CachedOnDiskReadBufferFromFile` بمقدار 50 مرة. [#96098](https://github.com/ClickHouse/ClickHouse/pull/96098) ([Azat Khuzhin](https://github.com/azat)).
* عدم نسخ البيانات القديمة عند تغيير حجم hash table إذا كانت فارغة. [#96180](https://github.com/ClickHouse/ClickHouse/pull/96180) ([Raúl Marín](https://github.com/Algunenano)).
* دعم JOIN runtime filters لعمليات `RIGHT OUTER` JOIN. [#96183](https://github.com/ClickHouse/ClickHouse/pull/96183) ([Hechem Selmi](https://github.com/m-selmi)).
* أصبح التحسين `enable_join_runtime_filters` مفعّلًا افتراضيًا الآن. [#89314](https://github.com/ClickHouse/ClickHouse/pull/89314) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* سابقًا، كان تحسين direct read للفهرس النصي يُطبَّق فقط عندما كانت جميع parts تحتوي على text index من نوع materialized. يضيف هذا PR دعمًا جزئيًا: إذا كانت بعض parts تحتوي على text index من نوع materialized، فستستخدمها تلك parts، بينما ستعود parts التي لا تحتوي على text index من نوع materialized إلى تنفيذ filter expression الأصلية. [#96411](https://github.com/ClickHouse/ClickHouse/pull/96411) ([Anton Popov](https://github.com/CurtizJ)).
* أُضيفت indexes ثانوية من نوع `minmax` على أعمدة الوقت، وindexes من نوع `bloom_filter` على عمودَي `query_id` و`initial_query_id` في log tables الخاصة بالنظام لتسريع التصفية. [#96712](https://github.com/ClickHouse/ClickHouse/pull/96712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يُطبَّق الآن تحسين `lazy materialization` على جميع فروع استعلام `UNION ALL`، وليس على الفرع الأول فقط. وستستفيد الاستعلامات التي تجمع بين قراءات متعددة مرتبة ومقيّدة من جداول `MergeTree` مختلفة عبر `UNION ALL` من تأجيل قراءة الأعمدة في كل فرع، مما يقلّل من عمليات I/O. [#96832](https://github.com/ClickHouse/ClickHouse/pull/96832) ([Federico Ginosa](https://github.com/menxit)).
* تحسين حساب `minmax skip index` أثناء INSERT من خلال إزالة نسخة بيانات غير ضرورية وتفعيل الحساب المتجهي لقيم min/max للأعمدة الرقمية. [#97392](https://github.com/ClickHouse/ClickHouse/pull/97392) ([Raúl Marín](https://github.com/Algunenano)).
* أصبح `DeltaLake` في Storage يأخذ نتيجة `count()` من البيانات الوصفية لـ delta lake ويعرض إحصاءات الجدول الصحيحة في system.tables (إجمالي البايتات/الصفوف). [#96190](https://github.com/ClickHouse/ClickHouse/pull/96190) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تُزال الأعمدة غير المستخدمة أيضًا من خطوة القراءة عند القراءة من MergeTree. ويكون ذلك مفيدًا بشكل خاص عندما يُدفَع عامل التصفية إلى `PREWHERE`. [#89982](https://github.com/ClickHouse/ClickHouse/pull/89982) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* تحسين معالجة استعلام `SHOW TABLES` من خلال جلب أسماء الجداول فقط، وتحسين getLightweightTablesIterator ليُرجع بنية تحتوي على أسماء الجداول فقط. يحلّ [#93835](https://github.com/ClickHouse/ClickHouse/issues/93835). [#94467](https://github.com/ClickHouse/ClickHouse/pull/94467) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* تحسين `assumeNotNull` و`coalesce` و`ifNull` لتمكين تقليم المفتاح الأساسي وskip index لشرطيات النطاق عندما تكون أعمدة المفتاح مغلّفة بهذه الدوال. يغلق [#94689](https://github.com/ClickHouse/ClickHouse/issues/94689). [#94754](https://github.com/ClickHouse/ClickHouse/pull/94754) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة الامتدادين with\_data وwith\_stat إلى طلب getChildren في Keeper. يتيح ذلك جلب ليس فقط قائمة العناصر الأبناء، بل أيضًا `stat` و/أو `data` الخاصة بها في عملية واحدة. [#94826](https://github.com/ClickHouse/ClickHouse/pull/94826) ([Nikolay Degterinsky](https://github.com/evillique)).
* يُجرى تحليل الفهرس مرة واحدة فقط (في معظم الحالات)، بغض النظر عمّا إذا كان التنفيذ سينتهي إلى خطة محلية أو خطة تستخدم parallel replicas. [#94854](https://github.com/ClickHouse/ClickHouse/pull/94854) ([Nikita Taranov](https://github.com/nickitat)).
* السماح بتمكين distributed index analysis استنادًا إلى عدد الأجزاء (`distributed_index_analysis_min_parts_to_activate`) وحجم الفهارس (`distributed_index_analysis_min_indexes_size_to_activate`). [#95216](https://github.com/ClickHouse/ClickHouse/pull/95216) ([Azat Khuzhin](https://github.com/azat)).
* تمكين تحسين PREWHERE لجداول Iceberg. [#95476](https://github.com/ClickHouse/ClickHouse/pull/95476) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تقليل استهلاك الذاكرة لبعض أصناف AST. [#95514](https://github.com/ClickHouse/ClickHouse/pull/95514) ([Raúl Marín](https://github.com/Algunenano)).
* تقييد عدد تدفقات pipeline المُولَّدة عند تمكين `split_intersecting_parts_ranges_into_layers`. يساعد ذلك على تجنب الاستهلاك المفرط للذاكرة. [#96478](https://github.com/ClickHouse/ClickHouse/pull/96478) ([Nikita Taranov](https://github.com/nickitat)).
* تنفيذ تحسين المجموعات المتكافئة لعمليات joins المتعددة. تستفيد الاستعلامات التي تتضمن عدة عمليات `INNER JOIN` متتالية الآن من تحسين أفضل لـ filter pushdown. وعندما تُربط الجداول باستخدام أعمدة متكافئة (مثلًا، `t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10`)، تُدفَع عوامل التصفية المطبقة على أي جدول في السلسلة تلقائيًا إلى جميع الجداول. يغلق [#96550](https://github.com/ClickHouse/ClickHouse/issues/96550). [#96596](https://github.com/ClickHouse/ClickHouse/pull/96596) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تحسين فحص البيانات الوصفية لـ delta lake. يستخدم تغييرات من طلب السحب PR في delta-kernel [https://github.com/delta-io/delta-kernel-rs/pull/1827](https://github.com/delta-io/delta-kernel-rs/pull/1827). [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686) ([Kseniia Sumarokova](https://github.com/kssenii)).
* في قاعدة البيانات Replicated، لا تُحدِّث العنقود المخزَّن مؤقتًا مع كل استعلام صوري. [#96897](https://github.com/ClickHouse/ClickHouse/pull/96897) ([Tuan Pham Anh](https://github.com/tuanpach)).
* استخدم فهرس المفتاح الأساسي عند التصفية باستخدام `startsWithUTF8` إذا كانت البادئة تحتوي فقط على محارف ASCII. [#97055](https://github.com/ClickHouse/ClickHouse/pull/97055) ([vkcku](https://github.com/vkcku)).

<div id="268-improvement">
  #### تحسينات
</div>

* إضافة تتبّع OpenTelemetry لطلبات Keeper. [#91332](https://github.com/ClickHouse/ClickHouse/pull/91332) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* خيارات configuration جديدة: `logger.startup_console_level` و `logger.shutdown_console_level` للسماح بتجاوز مستوى السجل الخاص بالـ console أثناء بدء تشغيل ClickHouse وإيقافه، على التوالي. [#95919](https://github.com/ClickHouse/ClickHouse/pull/95919) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* مراعاة التجاوزات عبر سطر الأوامر عند إعادة تحميل configuration. يُغلق [#80294](https://github.com/ClickHouse/ClickHouse/issues/80294). [#80295](https://github.com/ClickHouse/ClickHouse/pull/80295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* السماح بتجاوزات key-value لـ parameters الخاصة بـ named collection في table function ‏`mongodb`. [#89616](https://github.com/ClickHouse/ClickHouse/pull/89616) ([vanchaklar](https://github.com/vanchaklar)).
* يعمل الآن تحسين read-in-order لجداول Iceberg مع دوال فرز معقّدة مثل `icebergBucket` و `icebergTruncate`، وليس فقط مع مراجع column البسيطة. [#90256](https://github.com/ClickHouse/ClickHouse/pull/90256) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إضافة column جديد باسم parts\_postpone\_reasons في system.mutations لتحسين التشخيص، ويعرض أسباب تأجيل parts. [#92206](https://github.com/ClickHouse/ClickHouse/pull/92206) ([Shaohua Wang](https://github.com/tiandiwonder)).
* تتبّع التغييرات في عدد الصفوف المطلوب قراءتها (بسبب inserts/deletes أو استخدام query condition cache) في `DataflowStatisticsCache`. [#93636](https://github.com/ClickHouse/ClickHouse/pull/93636) ([Nikita Taranov](https://github.com/nickitat)).
* دعم query ‏SYSTEM RESET DDL WORKER \[ON CLUSTER]. يطلب هذا إعادة تعيين state الخاص بـ DDLWorker في thread الرئيسي له. ويفيد ذلك في refresh حالة replica النشط عند تحديث معرّفات المضيفين. [#93780](https://github.com/ClickHouse/ClickHouse/pull/93780) ([Tuan Pham Anh](https://github.com/tuanpach)).
* دعم `mutation_ids` في `system.part_log` لنوعي الحدث `MUTATE_PART` و `MUTATE_PART_START`. [#93811](https://github.com/ClickHouse/ClickHouse/pull/93811) ([Shaohua Wang](https://github.com/tiandiwonder)).
* يمكن الآن إعداد عمليات Background ‏(Mutate و Merge) بشكل مستقل عبر profile ‏'background'. سابقًا، كانت هذه العمليات تشترك في Settings مع queries العادية عبر profile ‏'default'. [#93905](https://github.com/ClickHouse/ClickHouse/pull/93905) ([Arsen Muk](https://github.com/arsenmuk)).
* إضافة مزيد من المعلومات إلى `system.crash_log`. [#94112](https://github.com/ClickHouse/ClickHouse/pull/94112) [#95857](https://github.com/ClickHouse/ClickHouse/pull/95857) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تمت إضافة metric جديد باسم `QueryNonInternal` لتتبّع عدد queries غير الداخلية الجاري تنفيذها. يُعرَض هذا metric باسم `ClickHouseMetrics_QueryNonInternal` ويساعد operators على مراقبة Concurrency الخاصة بالـ query مقارنةً بالحد `max_concurrent_queries`، الذي ينطبق فقط على queries غير الداخلية. [#94284](https://github.com/ClickHouse/ClickHouse/pull/94284) ([Ashwath Singh](https://github.com/ashwath)).
* دعم جمع إحصاءات بايتات الإدخال لـ columns من compact parts في `RuntimeDataflowStatisticsCacheUpdater`. [#94626](https://github.com/ClickHouse/ClickHouse/pull/94626) ([Nikita Taranov](https://github.com/nickitat)).
* إضافة check لاكتشاف سوء إعداد Keeper الذي يؤدي إلى فشل تجميع cluster. يُغلق [#60932](https://github.com/ClickHouse/ClickHouse/issues/60932). [#94682](https://github.com/ClickHouse/ClickHouse/pull/94682) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحسين deserialization لبادئات JSON أثناء loading الخاص بالـ part. [#94848](https://github.com/ClickHouse/ClickHouse/pull/94848) ([Pavel Kruglov](https://github.com/Avogar)).
* إعادة تنظيم مسار الكتابة باستخدام مسار INSERT الكامل، مما يؤدي إلى تشغيل العروض المادية على الجدول الهدف. [#94890](https://github.com/ClickHouse/ClickHouse/pull/94890) ([Kai Zhu](https://github.com/nauu)).
* استخدام تحسينات خطة البحث عن التشابه المتجهي فقط إذا كان الفهرس موجودًا لعمود البحث. [#94998](https://github.com/ClickHouse/ClickHouse/pull/94998) ([Eduard Karacharov](https://github.com/korowa)).
* التحقق من حد الذاكرة الإجمالي قبل مصادقة المستخدم، وإصدار `(total) memory limit exceeded` إذا كان الحد الإجمالي أكبر من المسموح به. [#95003](https://github.com/ClickHouse/ClickHouse/pull/95003) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إضافة خيار الضبط `throw_on_unmatched_row_policies` الذي، عند تمكينه، يطلق استثناءً إذا نفّذ مستخدم استعلامًا على جدول لديه سياسات صفوف ولكن لا تنطبق أيٌّ منها على ذلك المستخدم — مما يمنع السلوك الملتبس المتمثل في إرجاع جميع الصفوف بسبب سوء ضبط التحكم في الوصول. [#95014](https://github.com/ClickHouse/ClickHouse/pull/95014) ([Vitaly Baranov](https://github.com/vitlibar)).
* تحديث رموز وصول S3 ديناميكيًا في الاستعلامات الطويلة مع Unity Catalog. ويغلق هذا [#93981](https://github.com/ClickHouse/ClickHouse/issues/93981). [#95069](https://github.com/ClickHouse/ClickHouse/pull/95069) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تعطيل اضمحلال الصفحات المتسخة في jemalloc إذا كان ClickHouse تحت ضغط ذاكرة مستمر لمدة `memory_worker_decay_adjustment_period_ms` ميلي ثانية. وإعادة تمكين اضمحلال الصفحات المتسخة في jemalloc إذا كان ClickHouse يعمل في ظروف طبيعية للمدة الزمنية نفسها. [#95145](https://github.com/ClickHouse/ClickHouse/pull/95145) ([Antonio Andelic](https://github.com/antonio2368)).
* دعم ZooKeeper الإضافي في S3Queue باستخدام الإعداد `keeper_path` من s3Queue. [#95203](https://github.com/ClickHouse/ClickHouse/pull/95203) ([Diego Nieto](https://github.com/lesandie)).
* مراعاة `max_parts_to_merge_at_once` في عمليات دمج الأجزاء الخاصة بحذف TTL. [#95315](https://github.com/ClickHouse/ClickHouse/pull/95315) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إضافة `connection_address` و`connection_port` إلى query\_log لعكس الاتصال الفعلي (`address` و`port` يُستبدلان عند الاتصال عبر proxy وauth\_use\_forwarded\_address=1). [#95471](https://github.com/ClickHouse/ClickHouse/pull/95471) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح احتساب الذاكرة غير الصحيح لذاكرة التخزين المؤقت لشروط الاستعلام. وكانت المشكلة الأساسية أنه لم يأخذ في الحسبان مفتاح ذاكرة التخزين المؤقت المكوَّن من عدة سلاسل نصية (مثل part\_name ومعرّف الجدول وشرط SQL بالكامل). [#95478](https://github.com/ClickHouse/ClickHouse/pull/95478) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* سيتيح الخادم الذي يبدأ باستخدام التهيئة المضمنة التعامل مع المستخدمين والمنح، مع حفظها في الدليل `access`، كما في التهيئة العادية. وهذا يحسّن الاختبار. كما جرى تمكين جميع access\_control\_improvements في التهيئة المضمنة وفي clickhouse-local. [#95481](https://github.com/ClickHouse/ClickHouse/pull/95481) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين رسائل خطأ المصادقة الخاصة بـ S3 لتتضمن تلميحًا للتحقق من بيانات الاعتماد عند رفض الوصول. [#95648](https://github.com/ClickHouse/ClickHouse/pull/95648) ([Gerald Latkovic](https://github.com/batkovic75)).
* تمكين ذاكرة التخزين المؤقت للإحصاءات وضبط فترة تحديثها على 300 ثانية. [#95841](https://github.com/ClickHouse/ClickHouse/pull/95841) ([Han Fei](https://github.com/hanfei1991)).
* إضافة اسم المكوّن إلى `system.aggregated_zookeeper_log`. [#95882](https://github.com/ClickHouse/ClickHouse/pull/95882) ([Antonio Andelic](https://github.com/antonio2368)).
* تخطّي القراءات من object storage عند الاستعلام عن جداول `DeltaLake` من `system.tables`. [#95899](https://github.com/ClickHouse/ClickHouse/pull/95899) ([Antonio Andelic](https://github.com/antonio2368)).
* تفعيل `enable_max_bytes_limit_for_min_age_to_force_merge` افتراضيًا إذا كانت قيمة الإعداد `compatibility` هي `26.2` أو أعلى. [#95917](https://github.com/ClickHouse/ClickHouse/pull/95917) ([Christoph Wurm](https://github.com/cwurm)).
* أصبح Delta Lake متاحًا الآن على MacOS. إغلاق #95979. [#95985](https://github.com/ClickHouse/ClickHouse/pull/95985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في الإصدارات السابقة، عند دمج تعبيرات ALTER المتعارضة مع UPDATE وRENAME COLUMN، كان يُطرَح خطأ منطقي بدلًا من استثناء مناسب. إغلاق [#70678](https://github.com/ClickHouse/ClickHouse/issues/70678). [#96022](https://github.com/ClickHouse/ClickHouse/pull/96022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين مخرجات المساعدة لجميع تطبيقات ClickHouse وإضافة الخيار `--no-sudo` مع بعض الإصلاحات. وهذا استكمال لـ [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) من [Ilya Yatsishin](https://github.com/qoega). [#96025](https://github.com/ClickHouse/ClickHouse/pull/96025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة alias ‏`distanceCosine` لـ `cosineDistance` لأن جميع دوال المسافة الأخرى لديها بالفعل alias بهذا الشكل. [#96065](https://github.com/ClickHouse/ClickHouse/pull/96065) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إضافة دعم لامتداد `with_data` في Keeper لتحسين جلب الجداول في Database Replicated. [#96090](https://github.com/ClickHouse/ClickHouse/pull/96090) ([Nikolay Degterinsky](https://github.com/evillique)).
* تحديث chdig إلى [v26.2.1](https://github.com/azat/chdig/releases/tag/v26.2.1) (ميزات جديدة ودعم MacOS). [#96113](https://github.com/ClickHouse/ClickHouse/pull/96113) ([Azat Khuzhin](https://github.com/azat)).
* تحسين filter pushdown لـ `numbers` و`primes`. يمكن لـ ClickHouse الآن اشتقاق حدود قيم متحفظة من شروط `WHERE` عندما يتعذر اشتقاق حدود دقيقة، وتقييد توليد التسلسل بناءً على ذلك (على سبيل المثال، بالنسبة إلى `WHERE number % 5 < 2 AND number > 100 AND number < 300`، لن يولّد ClickHouse إلا الأرقام بين 100 و300، ثم يطبّق predicate)، ما يتجنب عمليات المسح غير المحدودة. إغلاق [#84853](https://github.com/ClickHouse/ClickHouse/issues/84853). إغلاق [#93913](https://github.com/ClickHouse/ClickHouse/issues/93913). [#96115](https://github.com/ClickHouse/ClickHouse/pull/96115) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* كان Formatter يضع SELECT سابقًا بين قوسين عند وجود clause ‏`COMMENT` لإزالة اللبس في parsing. وبدلًا من ذلك، يُخرِج `COMMENT` قبل `AS SELECT`، مما يزيل هذا اللبس من دون أقواس. [#96293](https://github.com/ClickHouse/ClickHouse/pull/96293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح إعداد `allow_impersonate_user` في `config` موجودًا الآن ضمن القسم `access_control_improvements` بدلًا من كونه server setting مستقلًا. [#96451](https://github.com/ClickHouse/ClickHouse/pull/96451) ([Vitaly Baranov](https://github.com/vitlibar)).
* جعل إعداد `core_dump.size_limit` في configuration قابلًا لإعادة التحميل الفوري، لتجنب الحاجة إلى إعادة تشغيل server حتى تدخل تغييرات configuration حيّز التنفيذ. [#96524](https://github.com/ClickHouse/ClickHouse/pull/96524) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تحسين قابلية التشغيل البيني بين Profiler المعالج وProfiler الزمن الحقيقي مع مهلات socket. [#96601](https://github.com/ClickHouse/ClickHouse/pull/96601) ([Sergei Trifonov](https://github.com/serxa)).
* منع عودة البيانات المحذوفة للظهور إذا جرى تشغيل ADD COLUMN بسرعة بعد تنفيذ mutation ‏DROP COLUMN. [#96713](https://github.com/ClickHouse/ClickHouse/pull/96713) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تغيير نوع `function_id` في `system.instrumentation` من LowCardinality(Int32) إلى Int32. [#96726](https://github.com/ClickHouse/ClickHouse/pull/96726) (Copilot).
* سيحترم الانتظار المتزامن لعمليات mutation إلغاء الاستعلام والمهل الزمنية. [#96756](https://github.com/ClickHouse/ClickHouse/pull/96756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة أمر النظام `SYSTEM RELOAD DELTA KERNEL TRACING <level>` لإتاحة تغيير مستوى logging الخاص بـ delta-kernel، وهو ما قد يكون مفيدًا في استكشاف الأخطاء وإصلاحها. [#96763](https://github.com/ClickHouse/ClickHouse/pull/96763) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تُطبَّق التصفية حسب عائلة عناوين IP، أي إعدادات `dns_allow_resolve_names_to_ipv4/ipv6`، حتى إذا كانت DNS cache معطلة. [#96810](https://github.com/ClickHouse/ClickHouse/pull/96810) ([c-end](https://github.com/c-end)).
* تحسين إمكانيات introspection في jemalloc. [#96840](https://github.com/ClickHouse/ClickHouse/pull/96840) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح تسبُّب واجهة الويب `/play` في ظهور الخطأ `QUERY_CACHE_USED_WITH_SYSTEM_TABLE` عند الاستعلام عن جداول النظام. [#96869](https://github.com/ClickHouse/ClickHouse/pull/96869) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين واجهة الويب: تغيير favicon للإشارة إلى حالة الاستعلام قيد التنفيذ؛ وعرض الأخطاء من الاستعلامات المساعدة (تحميل قواعد البيانات والجداول) بدلًا من تجاهلها بصمت. يُغلق [#85055](https://github.com/ClickHouse/ClickHouse/issues/85055). [#96883](https://github.com/ClickHouse/ClickHouse/pull/96883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* جعل اللوحة اليسرى في واجهة `/play` قابلة للنقر لإظهار قائمة قواعد البيانات أو إخفائها. [#96884](https://github.com/ClickHouse/ClickHouse/pull/96884) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح `DROP DATABASE` الآن يحذف الجداول بترتيب عكسي للتبعيات، مما يحسّن السلامة عند التعطل عندما تحتوي قاعدة البيانات على جداول لها تبعيات تحميل (مثل جداول `Distributed` التي تستخدم `joinGet`). [#97057](https://github.com/ClickHouse/ClickHouse/pull/97057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* ترقية yaml-cpp لمنع تجاوز YAML غير الصالح. [#97333](https://github.com/ClickHouse/ClickHouse/pull/97333) ([Azat Khuzhin](https://github.com/azat)).
* إظهار مؤشر تحميل في الشريط الجانبي لـ `play.html` أثناء جلب الجداول. [#97531](https://github.com/ClickHouse/ClickHouse/pull/97531) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة زر للنسخ إلى الحافظة لنتائج الاستعلام الخام في واجهة الويب المضمنة (play.html). [#97532](https://github.com/ClickHouse/ClickHouse/pull/97532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مُموِّه الاستعلامات (`clickhouse-format --obfuscate`) لإنتاج SQL قابلة للتحليل في مزيد من الحالات. [#97584](https://github.com/ClickHouse/ClickHouse/pull/97584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* بعد عمليات ALTER الخاصة بالبيانات الوصفية فقط، مثل توسيع عناصر Enums، قد يؤدي تحسين التجميع باستخدام projection إلى حدوث استثناء. [#84143](https://github.com/ClickHouse/ClickHouse/pull/84143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تستخدم materialized views الآن قاعدة البيانات التي أُنشئت فيها كسياق تنفيذ، ما يعني الآتي: - يمكن الاستغناء عن تحديد قاعدة البيانات صراحةً في الأسماء المشار إليها في استعلام select الخاص بالعرض - إذا لم يُحدَّد اسم قاعدة البيانات صراحةً، فسيُفترض استخدام قاعدة البيانات نفسها التي أُنشئ فيها materialized view. [#88193](https://github.com/ClickHouse/ClickHouse/pull/88193) ([Dmitry Kovalev](https://github.com/dk-github)).
* إصلاح استبدال query parameter في authentication methods الخاصة بـ CREATE USER عند استخدام ON CLUSTER. إذ لم تكن query parameters في authentication methods (مثل password) تُستبدل، مما كان يتسبب في ظهور أخطاء UNKNOWN\_QUERY\_PARAMETER على العقد البعيدة. [#92777](https://github.com/ClickHouse/ClickHouse/pull/92777) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* إصلاح حالات عدم الاتساق في index analysis الخاص بـ text index للدوال `has` و`mapContainsKey` و`mapContainsValue`. في السابق، كان يمكن أن تُرجع queries التي تستخدم هذه الدوال نتائج مختلفة بحسب ما إذا كان expression قد قُيِّم باستخدام text index أو بدونه. [#93578](https://github.com/ClickHouse/ClickHouse/pull/93578) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح crash عند Attach table إلى قاعدة بيانات `MaterializedPostgreSQL` إذا كانت `dropReplicationSlot` throws أثناء فك تكدس الاستدعاءات. [#96871](https://github.com/ClickHouse/ClickHouse/pull/96871) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* كان من الممكن أن تتسبب backups في crash للخادم عند إجراء عدد كبير من backups concurrent تتعارض على الملفات نفسها. [#93659](https://github.com/ClickHouse/ClickHouse/pull/93659) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح queries التي تستخدم parallel replicas وJOIN مع table غير MT. يغلق [#92056](https://github.com/ClickHouse/ClickHouse/issues/92056). [#93902](https://github.com/ClickHouse/ClickHouse/pull/93902) ([Igor Nikonov](https://github.com/devcrafter)).
* إصلاح مشكلة كانت تؤدي إلى أن columns في Iceberg التي تحتوي أسماؤها على نقطة تُرجع NULL باعتبارها values. [#94335](https://github.com/ClickHouse/ClickHouse/pull/94335) ([Mikhail Koviazin](https://github.com/mkmkme)).
* إصلاح التعامل مع strings بترميز UTF8 في `stringJaccardIndexUTF8` وتحسين الأداء. [#94613](https://github.com/ClickHouse/ClickHouse/pull/94613) ([Joanna Hulboj](https://github.com/jh0x)).
* إصلاح حالات overflow المحتملة في `WITH FILL STALENESS` (التي قد تؤدي إلى UB و/أو حلقات لا نهائية). وإصلاح احتمال حدوث حلقة لا نهائية بسبب القفزات الكبيرة. وإضافة دعم analyzer القديم (غالبًا لاختبارات stress). [#94663](https://github.com/ClickHouse/ClickHouse/pull/94663) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح احتمال تعليق distributed queries عندما تُحل hostnames إلى عدة عناوين ويتجمد replica بعيد. [#94726](https://github.com/ClickHouse/ClickHouse/pull/94726) ([c-end](https://github.com/c-end)).
* إصلاح نتيجة غير صحيحة عند joining عدة table expressions، عندما يكون leftmost table expression عبارة عن table function من نوع `-Cluster`. يحل [#89996](https://github.com/ClickHouse/ClickHouse/issues/89996). [#94748](https://github.com/ClickHouse/ClickHouse/pull/94748) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* إصلاح pruning غير الصحيح لكل من primary key وskip index بالنسبة إلى predicates التي تتضمن `toWeek` و`toYearWeek` و`toStartOfWeek` و`toLastDayOfWeek` و`toDayOfWeek`، مع إصلاح الاستثناءات في بعض هذه الدوال للاستعلامات الصحيحة التي تستخدم `LowCardinality(String)`. [#94816](https://github.com/ClickHouse/ClickHouse/pull/94816) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إزالة تجاوز التحقق من الأذونات دون داعٍ في استعلامات `ATTACH` الخاصة بعرض يستخدم SQL Security. يمنع هذا احتمال تصعيد الامتيازات عندما يقوم مستخدم بإرفاق عرض مع `definer` من دون التحقق من صلاحيات الوصول المطلوبة. [#94865](https://github.com/ClickHouse/ClickHouse/pull/94865) ([pufit](https://github.com/pufit)).
* إصلاح تعطل أثناء بدء تشغيل `ReplicatedMergeTree` ناتج عن إزالة متزامنة لأدلة `delete_tmp_*`. [#94892](https://github.com/ClickHouse/ClickHouse/pull/94892) ([myeongjun](https://github.com/myeongjjun)).
* إصلاح فقدان معلومات deduplication عند تنفيذ `INSERT` في جداول Iceberg مع materialized views، مما كان يتسبب في حدوث استثناء. [#94938](https://github.com/ClickHouse/ClickHouse/pull/94938) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح خلل كان يؤدي إلى أن `SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME>` يحذف cache بالكامل على مستوى cluster. [#94978](https://github.com/ClickHouse/ClickHouse/pull/94978) ([Rory Crispin](https://github.com/RoryCrispin)).
* الحفاظ على index granularity الثابتة (use\_const\_adaptive\_granularity) بعد عمليات Vertical merge (الإصدار v2 مع إصلاح لـ Nested، وبشكل عام). [#95013](https://github.com/ClickHouse/ClickHouse/pull/95013) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح race في filesystem cache في الإصدار 26.1 بعد \[ClickHouse/ClickHouse[#82764](https://github.com/ClickHouse/ClickHouse/issues/82764)]\([https://github.com/ClickHouse/ClickHouse/pull/82764](https://github.com/ClickHouse/ClickHouse/pull/82764)). [#95042](https://github.com/ClickHouse/ClickHouse/pull/95042) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح إلغاء table function ‏postgresql() عبر KILL QUERY واستعلام الإلغاء (Ctrl+C) في clickhouse-client. [#95136](https://github.com/ClickHouse/ClickHouse/pull/95136) ([Roman Vasin](https://github.com/rvasin)).
* إصلاح استنتاج الأنواع للأعمدة المؤهلة من source tables عند استخدام عدة joins مع عبارة `USING`. سابقًا، كانت الـ joins اللاحقة تحدّث types الخاصة بأعمدة المصدر الأساسية بشكل غير صحيح إلى common supertype حتى عندما لا يكون column مشاركًا في ذلك join (على سبيل المثال، في `SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a)`، فإن column ‏`t2.a` يُستخدم فقط في join الأول، لذلك يجب أن يكون نوعه هو supertype لـ `t1.a` و`t2.a` مع استبعاد `t3.a`). وقد يؤدي ذلك إلى أخطاء منطقية أو أعطال عندما تتوقع الدوال column types تختلف عما يظهر فعليًا في Execution Plan. [#95157](https://github.com/ClickHouse/ClickHouse/pull/95157) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تنفيذ تحويل الأعمدة مرة واحدة فقط أثناء جلب محتوى قائمة manifest ‏.avro والملفات. [#95164](https://github.com/ClickHouse/ClickHouse/pull/95164) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح الحساب غير الصحيح لأحجام JSON column، والذي قد يؤدي إلى استخدام مفرط للذاكرة أو column statistics غير صحيحة. [#95207](https://github.com/ClickHouse/ClickHouse/pull/95207) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح احتساب الذاكرة غير الدقيق عند تطبيق patch parts كبيرة بعد lightweight updates. سابقًا، كان تطبيق الرقع الكبيرة قد يتسبب في استخدام مفرط للذاكرة، وينتج عنه إنهاء server process بواسطة OOM killer. [#95231](https://github.com/ClickHouse/ClickHouse/pull/95231) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح سلوك غير معرّف كان قد يتسبب في نتائج غير صحيحة أو استثناء عند رجوع distributed query مع `max_parallel_replicas` إلى replica محلية أثناء index analysis. [#95263](https://github.com/ClickHouse/ClickHouse/pull/95263) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح aggregation للأعمدة المتناثرة مع `sum` وtimeseries عندما يكون `group_by_overflow_mode` مضبوطًا على `any`. [#95301](https://github.com/ClickHouse/ClickHouse/pull/95301) ([Mikhail Koviazin](https://github.com/mkmkme)).
* إصلاح مشكلة موثوقية في سياسة القرص `plain_rewritable`، إذ كان من الممكن أن يؤدي خطأ في الشبكة أثناء فك ارتباط ملف بيانات وصفية إلى ترك وحدة التخزين في حالة غير متسقة. [#95302](https://github.com/ClickHouse/ClickHouse/pull/95302) ([Mikhail Artemenko](https://github.com/Michicosun)).
* استبدال Date بـ Date32 في Iceberg. [#95322](https://github.com/ClickHouse/ClickHouse/pull/95322) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* سيُخفى الآن وسيط password في table function‏ `redis` ضمن السجلات وجداول النظام (مثل: `query_log`). [#95325](https://github.com/ClickHouse/ClickHouse/pull/95325) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح خطأ كان يسمح بحذف الجداول أو تعديلها بينما كان distributed query لا يزال قيد التنفيذ عليها، مما قد يؤدي إلى استثناءات أو نتائج غير صحيحة. [#95356](https://github.com/ClickHouse/ClickHouse/pull/95356) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح خطأ منطقي في بعض الحالات عند استخدام `LIMIT/OFFSET` بقيم سالبة في distributed queries. [#95357](https://github.com/ClickHouse/ClickHouse/pull/95357) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح خطأ كان يتسبب في أن يطلب clickhouse-client كلمة المرور مرتين عند الاتصال باستخدام ssh. [#95372](https://github.com/ClickHouse/ClickHouse/pull/95372) ([Isak Ellmer](https://github.com/spinojara)).
* إصلاح حالة data race في وحدة التخزين S3(Azure)Queue. [#95385](https://github.com/ClickHouse/ClickHouse/pull/95385) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح خطأ في مرشح prewhere تسببت فيه تعبيرات lambda داخل prewhere. [#95395](https://github.com/ClickHouse/ClickHouse/pull/95395) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* إصلاح `optimize_syntax_fuse_functions` بحيث لا يعيد Rewrite‏ `sum/count/avg` إلى `sumCount()` عندما يكون وسيط aggregate من النوع `Nullable`. يغلق [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#95441](https://github.com/ClickHouse/ClickHouse/pull/95441) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تجنب احتمال حدوث crash في distributed queries عند الإلغاء. [#95466](https://github.com/ClickHouse/ClickHouse/pull/95466) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* إصلاح deduplication للبث من محرك S3(Azure)Queue. [#95467](https://github.com/ClickHouse/ClickHouse/pull/95467) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح تحديث row policies المعيّنة للمستخدم الأولي في distributed queries. [#95469](https://github.com/ClickHouse/ClickHouse/pull/95469) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح التحقق من الأقراص المشفرة فوق plain\_rewritable (يُصلح احتمال ظهور `It is not possible to register multiple plain-rewritable disks with the same object storage prefix`). [#95470](https://github.com/ClickHouse/ClickHouse/pull/95470) ([Azat Khuzhin](https://github.com/azat)).
* كانت table function‏ `mergeTreeProjection` تفتقر إلى تحقق من الوصول، مما أتاح للمستخدمين الذين لا يملكون إذن SELECT على جدول (لكن لديهم أذونات table functions) قراءة البيانات من projections الخاصة به. يضيف هذا الإصلاح تحقق الوصول نفسه الموجود بالفعل في `mergeTreeIndex` و`mergeTreeAnalyzeIndexes`. [#95480](https://github.com/ClickHouse/ClickHouse/pull/95480) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتمال حدوث خطأ منطقي أثناء قراءة subcolumn الحجم من dynamic subcolumns لأنواع Dynamic/JSON. [#95573](https://github.com/ClickHouse/ClickHouse/pull/95573) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تراجع في النسخ المتماثل بدون نسخ (التجريبي) أُدخل في [#94262](https://github.com/ClickHouse/ClickHouse/issues/94262)، حيث كان يمكن حذف الأجزاء المشتركة قبل أن تنتهي النسخ المتماثلة الأخرى من جلبها. [#95597](https://github.com/ClickHouse/ClickHouse/pull/95597) ([filimonov](https://github.com/filimonov)).
* إصلاح تعطل أثناء تطبيق `tupleElement` على Arrays من JSON. يُغلق [#95581](https://github.com/ClickHouse/ClickHouse/issues/95581). [#95647](https://github.com/ClickHouse/ClickHouse/pull/95647) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح استثناء خطأ منطقي عند استخدام مُطابِق (`*`) داخل دالة لامبدا ضمن عبارة VALUES في JOIN مع USING. يُغلق [#93675](https://github.com/ClickHouse/ClickHouse/issues/93675). [#95661](https://github.com/ClickHouse/ClickHouse/pull/95661) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح الخطأ المنطقي `There was an error: Cannot obtain error message` عند انتظار distributed DDL وحذف قاعدة بيانات Replicated بالتزامن مع ذلك. يُصلح [#95539](https://github.com/ClickHouse/ClickHouse/issues/95539). [#95664](https://github.com/ClickHouse/ClickHouse/pull/95664) ([Alexander Tokmakov](https://github.com/tavplubix)).
* إصلاح إرجاع الدالة `IN` نتائج غير صحيحة مع قيم `NULL` عندما يكون `transform_null_in` مُمكّنًا. يُغلق [#65776](https://github.com/ClickHouse/ClickHouse/issues/65776). [#95674](https://github.com/ClickHouse/ClickHouse/pull/95674) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* التعامل بشكل صحيح مع الأنواع LowCardinality Nullable في `CAST` عندما يكون الإعداد `cast_keep_nullable` مُمكّنًا. يُغلق [#95670](https://github.com/ClickHouse/ClickHouse/issues/95670). [#95747](https://github.com/ClickHouse/ClickHouse/pull/95747) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح squashing لبيانات delta lake المُقسّمة إلى partitions. [#95773](https://github.com/ClickHouse/ClickHouse/pull/95773) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح حالة تسابق لعمود join من نوع Nullable في مرشحات وقت التشغيل. [#95775](https://github.com/ClickHouse/ClickHouse/pull/95775) ([Hechem Selmi](https://github.com/m-selmi)).
* إصلاح خطأ منطقي محتمل في استعلام يحتوي على مُطابِق (`*`, `table.*`) و`analyzer_compatibility_join_using_top_level_identifier` عندما يكون لعمود `USING` أنواع مختلفة في الجداول وفي قائمة SELECT. يُغلق [#90477](https://github.com/ClickHouse/ClickHouse/issues/90477). [#95808](https://github.com/ClickHouse/ClickHouse/pull/95808) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح مشكلات سلامة الذاكرة في عمليات thread pool المتوازية (backups وaggregation وdistributed queries) التي كان يمكن أن تتسبب في استثناءات عند حدوث خطأ أثناء scheduling المهام. [#95818](https://github.com/ClickHouse/ClickHouse/pull/95818) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطل عند تنفيذ DROP WORKLOAD بالتزامن مع استعلامات تستخدم workload الجاري حذفه. [#95856](https://github.com/ClickHouse/ClickHouse/pull/95856) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح بطء الأداء عند الاستعلام عن جداول النظام باستخدام مستخدم لديه أذونات محدودة على عدد كبير من قواعد البيانات. يُغلق [#89371](https://github.com/ClickHouse/ClickHouse/issues/89371). [#95874](https://github.com/ClickHouse/ClickHouse/pull/95874) ([pufit](https://github.com/pufit)).
* إصلاح تنفيذ `tupleElement` على JSON مع مسارات متداخلة، إذ كان يمكن أن يؤدي سابقًا إلى نتيجة استعلام خاطئة. [#95907](https://github.com/ClickHouse/ClickHouse/pull/95907) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح خطأ `NOT_SUPPORTED` كان يمكن أن يحدث عند استخدام خوارزمية join `direct` مع جدول MergeTree فارغ. [#95935](https://github.com/ClickHouse/ClickHouse/pull/95935) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح مشكلة عدم اقتراح العميل للأسماء المستعارة للإعدادات وعدم إكمالها تلقائيًا، يُغلق [#92190](https://github.com/ClickHouse/ClickHouse/issues/92190). [#95945](https://github.com/ClickHouse/ClickHouse/pull/95945) ([phulv94](https://github.com/phulv94)).
* إصلاح event\_date في system.asynchronous\_metric\_log. [#95947](https://github.com/ClickHouse/ClickHouse/pull/95947) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح skipping paths في نوع البيانات JSON. سابقًا، مع `JSON(SKIP path)` كان يتم تخطي جميع مفاتيح JSON التي تبدأ بالبادئة `path`، بما في ذلك مفاتيح مثل `"pathpath"`، ما كان قد يؤدي إلى فقدان البيانات لهذه المسارات أثناء insert. الآن أُصلحت هذه المشكلة، ولم يعد يتم تخطي سوى المفتاح `"path"`. [#95948](https://github.com/ClickHouse/ClickHouse/pull/95948) ([Pavel Kruglov](https://github.com/Avogar)).
* يجب ألا يتم اعتبار part الذي يحتوي على projections غير معروفة مفقودًا إلى الأبد. [#95952](https://github.com/ClickHouse/ClickHouse/pull/95952) ([Mikhail Artemenko](https://github.com/Michicosun)).
* إصلاح تحوّل السلسلة الفارغة إلى `NULL` في جدول `Join` مع مفتاح `Nullable(String)`. يُغلق [#71414](https://github.com/ClickHouse/ClickHouse/issues/71414). [#96002](https://github.com/ClickHouse/ClickHouse/pull/96002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح بإمكان engine PostgreSQL الآن قراءة `BOOLEAN[]` بشكل صحيح. يُغلق [#72754](https://github.com/ClickHouse/ClickHouse/issues/72754). [#96006](https://github.com/ClickHouse/ClickHouse/pull/96006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح format ‏`ProtobufList` عند القراءة من ملف فارغ. يُغلق [#70059](https://github.com/ClickHouse/ClickHouse/issues/70059). [#96007](https://github.com/ClickHouse/ClickHouse/pull/96007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة إنتاج format ‏`ProtobufList` سجلًا وهميًا للجداول الفارغة. يُغلق [#72596](https://github.com/ClickHouse/ClickHouse/issues/72596). [#96010](https://github.com/ClickHouse/ClickHouse/pull/96010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم تطابق الأنواع في الدالة `if` بين `UInt64` و `Int32` في حالة غير معتادة من distributed queries و PREWHERE، مع type inference. يُغلق [#70017](https://github.com/ClickHouse/ClickHouse/issues/70017). [#96012](https://github.com/ClickHouse/ClickHouse/pull/96012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح queries المترجمة بواسطة `JIT` التي تتضمن أنواع `Bool`. [#96013](https://github.com/ClickHouse/ClickHouse/pull/96013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح logical error عند قراءة UUID column من عمود TEXT في SQLite. يُغلق [#71263](https://github.com/ClickHouse/ClickHouse/issues/71263). [#96016](https://github.com/ClickHouse/ClickHouse/pull/96016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تحويل الأنواع في engine SQLite لكل من `DateTime` و `Date` و `UUID` وأنواع أخرى. يُغلق [#73481](https://github.com/ClickHouse/ClickHouse/issues/73481). [#96017](https://github.com/ClickHouse/ClickHouse/pull/96017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* كان يتم تهريب قيم `FixedString` بشكل غير صحيح في queries المرسلة إلى قواعد البيانات الخارجية، SQLite و PostgreSQL. يُغلق [#73519](https://github.com/ClickHouse/ClickHouse/issues/73519). بمشاركة @jh0x في التأليف. [#96019](https://github.com/ClickHouse/ClickHouse/pull/96019) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل assertion في WindowTransform عند استخدام إزاحة PRECEDING كبيرة. يغلق [#75852](https://github.com/ClickHouse/ClickHouse/issues/75852). [#96026](https://github.com/ClickHouse/ClickHouse/pull/96026) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خلل قد يؤدي إلى تلف البيانات عند استخدام async inserts متزامنة بأسماء المعلمات نفسها ولكن بقيم مختلفة. [#96035](https://github.com/ClickHouse/ClickHouse/pull/96035) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح الفترة الزمنية لأدوات التحليل العامة (ويتحكم فيها `global_profiler_real_time_period_ns` و `global_profiler_cpu_time_period_ns`). فبدلًا من القيمة المضبوطة، كانت تُستخدم قيمة مقصوصة، مما يؤدي إلى إيقاظ أداة التحليل أكثر من المقصود. [#96048](https://github.com/ClickHouse/ClickHouse/pull/96048) ([Antonio Andelic](https://github.com/antonio2368)).
* سابقًا، إذا كان ملف البيانات المرجعي داخل ملف manifest في Iceberg الخاص بـ position delete موجودًا في entry لكنه كان null، فلم نكن نحصل على الحدود الصحيحة لملفات البيانات المقابلة. يُصلح هذا الـ PR هذا الخلل. [#96061](https://github.com/ClickHouse/ClickHouse/pull/96061) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح سحب الأدوار الافتراضية. [#96103](https://github.com/ClickHouse/ClickHouse/pull/96103) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح use-after-free في تحليل الفهرس في حالة نادرة تجمع بين تعطيل `use_primary_key` ووجود عدد كبير جدًا من حالات الفصل بين الشروط التي تستخدم الفهرس. [#96112](https://github.com/ClickHouse/ClickHouse/pull/96112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تراجع في codec ‏`Gorilla` عندما لا يتطابق الحجم المحدد صراحةً مع حجم نوع البيانات، ويكون حجم buffer صغيرًا جدًا. في الإصدارات السابقة، كان هذا يؤدي إلى استثناء عند فك الضغط. يغلق [#78253](https://github.com/ClickHouse/ClickHouse/issues/78253). [#96118](https://github.com/ClickHouse/ClickHouse/pull/96118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تجنب حدوث deadlock في القواميس المحمّلة عندما يشير أحد القواميس إلى جدول Merge يشير إليه بشكل递عي. يغلق [#78360](https://github.com/ClickHouse/ClickHouse/issues/78360). [#96120](https://github.com/ClickHouse/ClickHouse/pull/96120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح use-of-uninitialized-value في `formatDateTime` مع Formatterات غير ثابتة العرض، مثل نمط MySQL ونمط JODA. [#96133](https://github.com/ClickHouse/ClickHouse/pull/96133) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أدى الجمع بين الإعدادين `use_const_adaptive_granularity` و `index_granularity_bytes` (والذي يعني "granularity غير تكيفية") إلى سوء حساب عدد الصفوف المطلوب قراءتها وحدوث استثناء. [#96143](https://github.com/ClickHouse/ClickHouse/pull/96143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* قد يؤدي تنفيذ mutation غير صالحة من ALTER UPDATE على الجداول الشبيهة بالملفات في object storage، مثل S3 وAzure، إلى إلغاء مرجعية nullptr. يغلق [#92994](https://github.com/ClickHouse/ClickHouse/issues/92994). [#96162](https://github.com/ClickHouse/ClickHouse/pull/96162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إرجاع `AccessRights::contains` نتائج غير صحيحة مع عمليات revoke الجزئية. [#96170](https://github.com/ClickHouse/ClickHouse/pull/96170) ([pufit](https://github.com/pufit)).
* إصلاح تصادم hash في query condition cache للثوابت المطوية في CTE، ما قد يؤدي إلى نتيجة query خاطئة. يغلق [#96060](https://github.com/ClickHouse/ClickHouse/issues/96060). [#96172](https://github.com/ClickHouse/ClickHouse/pull/96172) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتمال حدوث توقّف تام في ProcessList. وقد يحدث ذلك بسبب احتمال انعكاس ترتيب الأقفال إذا جرى تفعيل متتبّع memory overcommit أثناء إضافة مهمة إلى مدقّق الإلغاء. [#96182](https://github.com/ClickHouse/ClickHouse/pull/96182) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح خلل كان قد يؤدي إلى إرجاع نتائج غير صحيحة في الاستعلامات التي تتضمن عمليات ربط خارجية (LEFT أو RIGHT أو FULL) مع عدة عمليات INNER JOIN، وذلك بسبب إعادة ترتيب غير قانونية لعمليات الربط. فعندما كان شرط ON لعملية الربط الخارجية يشير إلى أعمدة من عدة جداول تم ربطها مسبقًا، كان المُحسِّن لا يراعي جميع تبعيات الجداول، ما قد يؤدي إلى إعادة ترتيب عمليات الربط بشكل غير صحيح والتسبب في فقدان بعض الصفوف. إغلاق [#95972](https://github.com/ClickHouse/ClickHouse/issues/95972). [#96193](https://github.com/ClickHouse/ClickHouse/pull/96193) ([Vladimir Cherkasov](https://github.com/vdimir)).
* عندما لا تكون هناك إحصاءات معرّفة لجدول ما، ينبغي ألّا يحاول ClickHouse تحميلها. وهذا يتجنّب بعض العبء الإضافي (أكثر من 100 مللي ثانية) الناتج عن التحقق من وجود ملفات الإحصاءات. (issue [#96068](https://github.com/ClickHouse/ClickHouse/issues/96068)). [#96233](https://github.com/ClickHouse/ClickHouse/pull/96233) ([Han Fei](https://github.com/hanfei1991)).
* إصلاح `optimize_syntax_fuse_functions` بحيث لا يعيد كتابة `sum/count/avg` إلى `sumCount()` عندما تكون وسيطة التجميع من النوع `LowCardinality(Nullable)`. إغلاق [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#96239](https://github.com/ClickHouse/ClickHouse/pull/96239) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تقليم الأقسام غير الصحيح للدالتين `not IN` و`not has` في بعض الحالات. [#96241](https://github.com/ClickHouse/ClickHouse/pull/96241) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح `stack-use-after-scope` في فهرس تشابه المتجهات. [#96259](https://github.com/ClickHouse/ClickHouse/pull/96259) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة عدم تعرّف مشغّل الاختبارات على تعليقات تلميحات الأخطاء عندما يسبق الاستعلامَ تعليقُ SQL. [#96336](https://github.com/ClickHouse/ClickHouse/pull/96336) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* إصلاح خطأ منطقي في KeyCondition عندما يكون للجدول مفتاح أساسي قابل للقيم الفارغة، ويستخدم الاستعلام الدالة `coalesce` بحيث تكون وسيطتها الأولى ثابتة. [#96340](https://github.com/ClickHouse/ClickHouse/pull/96340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* كان التفاعل بين `GROUPING SETS` و`group_by_use_nulls` ونوع البيانات `Tuple` مع وجود `LowCardinality` بداخله قد ينتج بنية block غير متوقعة في query pipeline، مما يؤدي إلى خطأ منطقي. وقد ظهر ذلك بعد إدخال `Tuple` من النوع `Nullable`. [#96358](https://github.com/ClickHouse/ClickHouse/pull/96358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* كان من الممكن إنشاء جدول باستخدام تعبير فارغ `()` بوصفه index، مما أدى إلى وصول غير صالح إلى الذاكرة. [#96363](https://github.com/ClickHouse/ClickHouse/pull/96363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل في المحلّل القديم عند وجود JOIN وأسماء مستعارة مكررة. [#96405](https://github.com/ClickHouse/ClickHouse/pull/96405) ([Ilya Golshtein](https://github.com/ilejn)).
* إصلاح الخطأ `Nested columns sizes are inconsistent with local_discriminators` الناتج عن تحسين خاطئ للتصفية الموضعية لأعمدة Variant. [#96410](https://github.com/ClickHouse/ClickHouse/pull/96410) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلة تجاهل `CREATE TABLE ... CLONE AS ...` للمؤهِّل الكامل للجدول المصدر. [#96415](https://github.com/ClickHouse/ClickHouse/pull/96415) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* إصلاح إلغاء table function ‏`mysql` باستخدام KILL QUERY وإلغاء الاستعلام (Ctrl+C) في clickhouse-client. [#96437](https://github.com/ClickHouse/ClickHouse/pull/96437) ([Roman Vasin](https://github.com/rvasin)).
* إصلاح حالة livelock في خيط التحقق من الإلغاء للاستعلامات ذات القيم المرتفعة لـ `max_execution_time`. [#96450](https://github.com/ClickHouse/ClickHouse/pull/96450) ([Sergei Trifonov](https://github.com/serxa)).
* إصلاح خطأ منطقي في بعض الحالات عند استخدام `LIMIT/OFFSET` بقيم كسرية في الاستعلامات الموزعة. [#96475](https://github.com/ClickHouse/ClickHouse/pull/96475) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح إلغاء مرجعية مؤشر فارغ في بعض التعبيرات التي تتضمن lambda functions. [#96479](https://github.com/ClickHouse/ClickHouse/pull/96479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح نتائج غير صحيحة عند تحويل الأعمدة `LowCardinality` إلى `Nullable`. [#96483](https://github.com/ClickHouse/ClickHouse/pull/96483) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تعطل عند إنشاء Iceberg table مع عبارة `ORDER BY` تشير إلى عمود غير موجود أو تستخدم argument موضعيًا. يغلق [#93280](https://github.com/ClickHouse/ClickHouse/issues/93280). [#96484](https://github.com/ClickHouse/ClickHouse/pull/96484) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح استثناء runtime filter لأعمدة Tuple ذات الحقول الفرعية Nullable. [#96509](https://github.com/ClickHouse/ClickHouse/pull/96509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` في القارئ native لـ Parquet V3 عندما يحتوي عمود عامل التصفية `PREWHERE` على قيم UInt8 غير Boolean. [#96594](https://github.com/ClickHouse/ClickHouse/pull/96594) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إعادة توليد الفهرس الضمنية في replicated tables أثناء تغييرات metadata. [#96600](https://github.com/ClickHouse/ClickHouse/pull/96600) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح حالة datarace عند DROP WORKLOAD. [#96614](https://github.com/ClickHouse/ClickHouse/pull/96614) ([Sergei Trifonov](https://github.com/serxa)).
* إصلاح خطأ في عمليات الكتابة إلى Iceberg table، حيث قد تؤدي عمليات insert المقسمة إلى partition إلى توزيع غير صحيح للبيانات عبر ملفات partition. [#96620](https://github.com/ClickHouse/ClickHouse/pull/96620) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح `heap-use-after-free` في `CREATE TABLE` مع القيود. [#96669](https://github.com/ClickHouse/ClickHouse/pull/96669) ([Nikita Taranov](https://github.com/nickitat)).
* التحقق من witness version في bech32 لتجنب تجاوز سعة buffer. [#96671](https://github.com/ClickHouse/ClickHouse/pull/96671) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح إرجاع `system.tables` لأخطاء عند إنشاء Data Lake REST catalog بإعداد `auth_header` غير صالح. [#96680](https://github.com/ClickHouse/ClickHouse/pull/96680) ([Han Fei](https://github.com/hanfei1991)).
* إصلاح إرجاع `min(timestamp)` لبداية الحقبة (`1970-01-01`) عبر `_minmax_count_projection` بعد دمج TTL عندما تُصفّى جميع الصفوف في block. [#96703](https://github.com/ClickHouse/ClickHouse/pull/96703) ([Raquel Barbadillo](https://github.com/rbarbadillo)).
* تحسين التحقق من إعداد `iceberg_metadata_file_path` لمنع path traversal وضمان وجود ملف metadata المحدد داخل directory الجدول. [#96754](https://github.com/ClickHouse/ClickHouse/pull/96754) ([Daniil Ivanik](https://github.com/divanik)).
* إصلاح تعطل في `ifNull` مع argument من نوع `Variant` مستخدم في `GROUP BY`. [#96790](https://github.com/ClickHouse/ClickHouse/pull/96790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِحت تصادمات مفاتيح الذاكرة المؤقتة بين الجداول التي تستخدم الإعداد `table_disk=1`. [#96818](https://github.com/ClickHouse/ClickHouse/pull/96818) ([Raufs Dunamalijevs](https://github.com/rienath)).
* أُصلِح تعلّق خيط التنظيف الخاص بـ MemoryWorker بسبب حالة تسابق. [#96819](https://github.com/ClickHouse/ClickHouse/pull/96819) ([Antonio Andelic](https://github.com/antonio2368)).
* لم يَعُد يجري تسجيل البيانات التي تحتوي على بيانات اعتماد في كتالوجات Iceberg. [#96831](https://github.com/ClickHouse/ClickHouse/pull/96831) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُصلِحت حالة الخروج الخاصة بـ clickhouse-client بعد حدوث خطأ في الخادم. [#96841](https://github.com/ClickHouse/ClickHouse/pull/96841) ([Vitaly Baranov](https://github.com/vitlibar)).
* قد تُرجِع الاستعلامات التي تتضمن `CROSS JOIN` مع تفعيل النسخ المتماثلة المتوازية نتائج غير صحيحة. يُصلح هذا [#74337](https://github.com/ClickHouse/ClickHouse/issues/74337). [#96848](https://github.com/ClickHouse/ClickHouse/pull/96848) ([Igor Nikonov](https://github.com/devcrafter)).
* أُصلِحت مشكلة فشل استعلامات `ALTER TABLE DROP COLUMN` بعد تنفيذ تحديث خفيف سابقًا على العمود نفسه. [#96861](https://github.com/ClickHouse/ClickHouse/pull/96861) ([Anton Popov](https://github.com/CurtizJ)).
* أُصلِح تجاوز المكدس (انهيار) عند إنشاء نسخ احتياطية أرشيفية (`.zip`, `.tzst`) على قرص تخزين كائنات `plain_rewritable`. [#96872](https://github.com/ClickHouse/ClickHouse/pull/96872) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح انهيار الخادم عند فشل النسخ الاحتياطي بسبب امتلاء القرص أو أخطاء إدخال/إخراج أخرى في نظام ملفات الوجهة. [#96873](https://github.com/ClickHouse/ClickHouse/pull/96873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح تجاهل `EXCEPT ALL` و`INTERSECT ALL` لتكرارات الصفوف وتعاملُهما كما لو كانا النظيرين `DISTINCT`. [#96876](https://github.com/ClickHouse/ClickHouse/pull/96876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح استثناء `std::terminate` في `indexOfAssumeSorted` عند استدعائه بأنواع غير متوافقة (مثل مصفوفة `IPv4` مع قيمة بحث صحيحة). [#96877](https://github.com/ClickHouse/ClickHouse/pull/96877) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح الاستثناء `Bad cast from type DB::ColumnNullable to DB::ColumnString` عند استخدام window functions مع `group_by_use_nulls = 1` وCUBE/ROLLUP/GROUPING SETS. [#96878](https://github.com/ClickHouse/ClickHouse/pull/96878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِحت النتائج غير الصحيحة عندما تحوّل compiled expressions المترجمة بـ JIT `DateTime` إلى `DateTime64` (مثلًا في `CASE`/`if`/`multiIf` مع أنواع DateTime مختلطة). فقد أُعيد تفسير القيمة بدلًا من تحجيمها بشكل صحيح، مما أدى إلى timestamps خاطئة بعد تفعيل ترجمة التعبير. [#96879](https://github.com/ClickHouse/ClickHouse/pull/96879) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح استثناء الخطأ المنطقي في `CoalescingMergeTree` عندما يُنتج تعبير skip index عمودًا ثابتًا (مثل `bloom_filter` على `ifNotFinite(1, c0)` لعمود صحيح). [#96880](https://github.com/ClickHouse/ClickHouse/pull/96880) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح رقم المنفذ الخاطئ في رسالة الخطأ عند الاتصال عبر HTTP بالخطأ بمنفذ native protocol المفعَّل بـ TLS. [#96881](https://github.com/ClickHouse/ClickHouse/pull/96881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلِح عدم تطبيق `SETTINGS` الخاصة بكل subquery على Table functions مثل `file` في CTEs والاستعلامات الفرعية. [#96882](https://github.com/ClickHouse/ClickHouse/pull/96882) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب الذاكرة في كائنات BIO عند قراءة شهادات X509. [#96885](https://github.com/ClickHouse/ClickHouse/pull/96885) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` في محلّل الاستعلامات عند تمرير تعبير lambda في موضع يُتوقَّع فيه وجود قيمة فعلية (على سبيل المثال، كوسيط للمُراكِم في `arrayFold`). [#96892](https://github.com/ClickHouse/ClickHouse/pull/96892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `ColumnNullable is not compatible with original` عند إجراء CAST للأنواع المتداخلة المعقّدة (Array من Nullable Tuple يحتوي على Map بقيم Nullable Enum). [#96924](https://github.com/ClickHouse/ClickHouse/pull/96924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة race condition في التحميل المتوازي لـ Dictionary المجزّأ `HASHED`، والتي كان يمكن أن تتسبب أحيانًا في عدم تحميل بعض الصفوف. [#96953](https://github.com/ClickHouse/ClickHouse/pull/96953) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح حالة race condition بين `REPLACE PARTITION` وmutations الخلفية، والتي كان يمكن أن تؤدي إلى ظهور كلٍّ من البيانات القديمة والجديدة بعد الاستبدال. [#96955](https://github.com/ClickHouse/ClickHouse/pull/96955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح دالة `arrayJoin` التي كانت تُنتج صفوفًا مكررة عند استخدامها مع INNER JOIN وWHERE clause، وكان السبب في ذلك أن تحسين الدفع الجزئي للمسندات كان يدفع عوامل التصفية التي تحتوي على `arrayJoin` بشكل غير صحيح إلى ما دون JOIN. [#96989](https://github.com/ClickHouse/ClickHouse/pull/96989) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الانهيار (SEGFAULT) في `clearCaches` الناتج عن أن `BlockIO::operator=` لم يكن ينقل `query_metadata_cache`، مما أدى إلى التدمير المبكر لـ snapshotات التخزين المخزنة مؤقتًا وحدوث use-after-free لتخزين `MergeTreeData`. [#96995](https://github.com/ClickHouse/ClickHouse/pull/96995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فشل assertion في `IfTransformStringsToEnumPass` عندما تُرجع الدالة `if` أو `transform` القيمة `Nullable(String)` (على سبيل المثال مع `GROUP BY ... WITH CUBE` و`group_by_use_nulls = true`). [#97002](https://github.com/ClickHouse/ClickHouse/pull/97002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح كتابة بيانات غير صحيحة أثناء `INSERT ... SELECT` مع `UNION ALL` و`JOIN`، حيث كان يمكن أن تتلقى أعمدة السلاسل النصية الثابتة قيمًا خاطئة بعد squashing الكتل. [#97019](https://github.com/ClickHouse/ClickHouse/pull/97019) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* إصلاح استثناء `assert_cast` (أو تلف البيانات الصامت في إصدارات release) عند إنشاء column statistics بعد أن يغيّر `ALTER TABLE MODIFY COLUMN` نوع العمود. [#97027](https://github.com/ClickHouse/ClickHouse/pull/97027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح قراءات من ذاكرة غير مهيّأة في Azure Blob Storage، وSSH protocol، وواجهات Arrow Flight. [#97053](https://github.com/ClickHouse/ClickHouse/pull/97053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الحالات التي كانت فيها indexes تؤثر في نتائج queries التي تستخدم row policy/PREWHERE وFINAL. [#97076](https://github.com/ClickHouse/ClickHouse/pull/97076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح ما تبقى من حالة race condition بين `REPLACE PARTITION` وmutations الخلفية في جداول `MergeTree`، والتي كان يمكن أن تتسبب في ظهور البيانات القديمة من جديد. [#97105](https://github.com/ClickHouse/ClickHouse/pull/97105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الفهارس الضمنية مع الأعمدة المستعارة، وإجراء تحقق كامل قبل إنشائها. [#97115](https://github.com/ClickHouse/ClickHouse/pull/97115) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح خطأ منطقي في `FunctionVariantAdaptor` مع الدوال التي تتطلب arguments ثابتة مثل `arrayROCAUC`. [#97116](https://github.com/ClickHouse/ClickHouse/pull/97116) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح تعثر mutations عند قيام `PartCheckThread` بإعادة إدراج `GET_PART` لجزء طُبِّق عليه mutation بالفعل، مما يترك entries وهمية في `parts_to_do`. [#97162](https://github.com/ClickHouse/ClickHouse/pull/97162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تقدير عدد rows في query plan للاستعلامات الفرعية التي تحتوي على `ORDER BY ... LIMIT`، وهو ما كان قد يدفع المُحسِّن إلى اختيار join order غير مثالي. [#97193](https://github.com/ClickHouse/ClickHouse/pull/97193) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح استثناء `LOGICAL_ERROR` في `FunctionVariantAdaptor` عندما تُرجِع دالة تعمل على Variant columns النوع `Nothing`، وهو ما قد يحدث مع Arrays الفارغة في queries `UNION ALL`. [#97213](https://github.com/ClickHouse/ClickHouse/pull/97213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح data race أثناء عمليات النسخ متعدد الأجزاء في S3 (مثل أثناء `BACKUP`/`RESTORE` إلى S3)، والتي كان يمكن أن تتسبب في استثناءات عند الوصول المتزامن. [#97227](https://github.com/ClickHouse/ClickHouse/pull/97227) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح استثناء `LOGICAL_ERROR` عندما يُشير `arrayJoin` في clause `WHERE` إلى columns من جانبي `JOIN`. [#97239](https://github.com/ClickHouse/ClickHouse/pull/97239) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` عند قراءة subcolumn `.size` لـ `Nullable(String)` sparse داخل Tuple مع PREWHERE. [#97264](https://github.com/ClickHouse/ClickHouse/pull/97264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الاستثناء "Number of rows in lazy chunk does not match number of offsets" في `LazyMaterializingTransform` عند القراءة من tables ذات index granularity غير تكيفية (`index_granularity_bytes = 0`) باستخدام `ORDER BY ... LIMIT`. [#97270](https://github.com/ClickHouse/ClickHouse/pull/97270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فقدان `SYSTEM RESTART REPLICA` للجدول من database عند فشل إعادة إنشاء الجدول بسبب استثناء غير متعلق بـ ZooKeeper (مثل memory limit)، مما يؤدي إلى عدم تطابق في ملخصات metadata في `DatabaseReplicated`. [#97276](https://github.com/ClickHouse/ClickHouse/pull/97276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبح الحقل `readonly` في `system.merge_tree_settings` يعكس الآن بشكل صحيح أن بعض إعدادات merge tree (مثل `index_granularity`) تكون readonly دون قيد. [#97277](https://github.com/ClickHouse/ClickHouse/pull/97277) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح crash أثناء تحسين `count()` على جداول `MergeTree` عندما كان snapshot التخزين قد أُنشئ من دون data. [#97281](https://github.com/ClickHouse/ClickHouse/pull/97281) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح crash محتمل عند تحليل أسماء الدوال من معلومات التصحيح لأجل stack traces. [#97294](https://github.com/ClickHouse/ClickHouse/pull/97294) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح خطأ منطقي في analyzer\_compatibility\_join\_using\_top\_level\_identifier ومع أعمدة ALIAS. إغلاق [#96228](https://github.com/ClickHouse/ClickHouse/issues/96228). [#97297](https://github.com/ClickHouse/ClickHouse/pull/97297) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح استثناء `LOGICAL_ERROR` في `applyOrder` عند استخدام columns مفهرسة نصيًا مع clause `QUALIFY`. [#97313](https://github.com/ClickHouse/ClickHouse/pull/97313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يعرض جدول النظام `system.functions` الآن للدوال الداخلية القيمة `categories = 'Internal'` بدلًا من `categories = ''`. [#97315](https://github.com/ClickHouse/ClickHouse/pull/97315) ([Robert Schulze](https://github.com/rschu1ze)).
* قد يُنتج الاستعلام الذي يتضمن سلسلة RIGHT JOIN مع تمكين parallel replicas نتيجة غير صحيحة. يُصلح [#74341](https://github.com/ClickHouse/ClickHouse/issues/74341). [#97316](https://github.com/ClickHouse/ClickHouse/pull/97316) ([Igor Nikonov](https://github.com/devcrafter)).
* إصلاح أخطاء `TABLE_UUID_MISMATCH` الزائفة التي قد تحدث مع العروض المادية القابلة للتحديث وفي سيناريوهات أخرى يُعاد فيها تسمية الجداول. [#97323](https://github.com/ClickHouse/ClickHouse/pull/97323) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح segfault في النسخ الاحتياطي لـ `StorageKeeperMap` بسبب استخدام مؤشر تخزين متدلٍّ بعد تحريره في دفعة النسخ الاحتياطي lazy. [#97336](https://github.com/ClickHouse/ClickHouse/pull/97336) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الدالة `exists` مع scalar subquery داخل `ALTER UPDATE/DELETE` عند تمكين `mutations_execute_subqueries_on_initiator`. جرى تقييم scalar subquery بشكل غير صحيح، ما قد يؤدي إلى خطأ أو إلى أمر mutation تالف يجعل الجدول غير قابل للتحميل عند إعادة تشغيل الخادم التالية. [#97347](https://github.com/ClickHouse/ClickHouse/pull/97347) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إصلاح الاستثناء المنطقي `Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8)))` عند مقارنة NULL بعمود Variant يحتوي على أنواع LowCardinality. [#97379](https://github.com/ClickHouse/ClickHouse/pull/97379) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح race condition محتملة عند تنفيذ `EXCHANGE TABLES` بالتوازي مع تمكين query cache المُجزّأ. [#97411](https://github.com/ClickHouse/ClickHouse/pull/97411) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح الاستثناء `LOGICAL_ERROR` في التحويل من Array إلى `QBit` عندما يستبدل `nullable_source` من غلاف `Tuple` خارجي عمود Array المُحوَّل بنوع عمود غير متطابق. يُغلق [#97389](https://github.com/ClickHouse/ClickHouse/issues/97389). [#97413](https://github.com/ClickHouse/ClickHouse/pull/97413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم اتساق التنسيق ذهابًا وإيابًا لـ AST في القيم الحرفية tuple ذات alias داخل الأقواس، فمثلًا أُعيدت تهيئة `(('a', 'b') AS x)` بشكل غير صحيح إلى `tuple(('a', 'b') AS x)`. [#97418](https://github.com/ClickHouse/ClickHouse/pull/97418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء أثناء asynchronous inserts مع deduplication عندما أدى فشل parsing إلى إنشاء block فارغ بلا rows. [#97460](https://github.com/ClickHouse/ClickHouse/pull/97460) ([Sema Checherinda](https://github.com/CheSema)).
* إصلاح الاستثناء "Number of rows in lazy chunk does not match number of offsets" في `LazyMaterializingTransform` عند القراءة من الجداول ذات index granularity غير التكيفية (`index_granularity_bytes = 0`) باستخدام `ORDER BY ... LIMIT`. [#97482](https://github.com/ClickHouse/ClickHouse/pull/97482) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إعدادات insert في Iceberg. إضافة alias للإعداد `allow_experimental_insert_into_iceberg`. [#97483](https://github.com/ClickHouse/ClickHouse/pull/97483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح `ACCESS_DENIED` للمستخدمين الذين لا يملكون permission ‏`CREATE TEMPORARY TABLE` عندما تعيد optimization ‏`optimize_inverse_dictionary_lookup` كتابة predicates الخاصة بـ `dictGet(...)`. يتخطّى ClickHouse الآن إعادة الكتابة وينفّذ expression الأصلي. يُغلق [#97269](https://github.com/ClickHouse/ClickHouse/issues/97269). [#97484](https://github.com/ClickHouse/ClickHouse/pull/97484) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح فشل assertion (استثناء في إصدارات debug/sanitizer) في `Set` و`MergeTreeIndexSet` عند معالجة الأعمدة التي تحتوي على أعمدة فرعية داخلية sparse (مثل أعمدة `Tuple` من أجزاء MergeTree ذات ملفات تعريف serialization sparse مختلفة). [#97493](https://github.com/ClickHouse/ClickHouse/pull/97493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتمال استخدام الذاكرة بعد تحريرها في StorageKafka2. [#97520](https://github.com/ClickHouse/ClickHouse/pull/97520) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح `INTO OUTFILE` مع `TRUNCATE` والإعداد `into_outfile_create_parent_directories` عندما يحتوي مسار الإخراج على مجلدات. [#97549](https://github.com/ClickHouse/ClickHouse/pull/97549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ `BAD_ARGUMENTS` عند الاستعلام عن الجداول التي تحتوي على تعبيرات lambda داخل أعمدة ALIAS عبر table function ‏`merge()` مع تمكين analyzer. [#97551](https://github.com/ClickHouse/ClickHouse/pull/97551) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `system.zookeeper_info` عندما تكون قيمة zxid في Keeper مساوية لـ 0. [#97553](https://github.com/ClickHouse/ClickHouse/pull/97553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح احتمال حدوث logical error في Dictionary ‏`ip_trie` عندما لا يكون نوع المفتاح String. [#97555](https://github.com/ClickHouse/ClickHouse/pull/97555) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح عدم عمل OAuth authentication في REST catalog الأساسي `RestCatalog` (إذ كانت تعمل فقط مع catalogs المشتقة مثل `OneLakeCatalog`). وقد أدى ذلك إلى تعطيل REST catalog الافتراضي بعد تقديم BigLake catalog. [#97561](https://github.com/ClickHouse/ClickHouse/pull/97561) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* تقبل دوال Geometry (`perimeterSpherical`, `areaSpherical`، إلخ) الآن الأنواع الفرعية الهندسية الفردية (`Polygon` و`Ring` و`Point` وغيرها) بالإضافة إلى النوع `Geometry` من نوع Variant. [#97571](https://github.com/ClickHouse/ClickHouse/pull/97571) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `LOGICAL_ERROR` عند استخدام `isNull`/`isNotNull` على subcolumns للأنواع `Nullable(Tuple(... Nullable(T) ...))`. يغلق [#97224](https://github.com/ClickHouse/ClickHouse/issues/97224). [#97582](https://github.com/ClickHouse/ClickHouse/pull/97582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إلغاء مرجعية مؤشر فارغ عند تطبيق patch parts أثناء lightweight updates. [#97583](https://github.com/ClickHouse/ClickHouse/pull/97583) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* يمرر `BaseSettings::readBinary` الفهرس من `accessor.find` إلى `field_infos[]` من دون التحقق من قيمة عدم العثور الخاصة (أي `-1`)، ما قد يؤدي إلى وصول خارج حدود `std::vector`. وقد اكتُشفت المشكلة بفضل تقوية libcxx. وعلى الأرجح كان هذا يحدث أثناء deserialization لخطة query عندما يرسل server أحدث إعدادًا غير معروف إلى server أقدم. تتعامل طريقة القراءة المعتمدة على السلاسل النصية مع هذا بشكل صحيح بالفعل، لكن `readBinary` كان يفتقد إلى التحقق نفسه. [#97585](https://github.com/ClickHouse/ClickHouse/pull/97585) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح نتائج query غير صحيحة لاستعلامات `UNION ALL` عندما كان أحد الفروع يحتوي على predicate ثابتة القيمة false، إذ كان الفرع يقرأ data بشكل غير صحيح بدلًا من ألا يعيد شيئًا. [#97620](https://github.com/ClickHouse/ClickHouse/pull/97620) ([Bharat Nallan](https://github.com/bharatnc)).
* إصلاح فشل `IN (col)` عند استخدام مرجع column واحد مع الخطأ `UNSUPPORTED_METHOD`. [#97646](https://github.com/ClickHouse/ClickHouse/pull/97646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء الخطأ المنطقي عند استخدام `GROUP BY ... WITH ROLLUP/CUBE` عندما تتضمن المفاتيح `LowCardinality(Nullable(...))` داخل `Nullable(Tuple(...))`. [#97647](https://github.com/ClickHouse/ClickHouse/pull/97647) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم اتساق تنسيق AST في `NOT (1, 1, 1)`، والذي كان قد يتسبب في `LOGICAL_ERROR` في بُنى التصحيح. [#97653](https://github.com/ClickHouse/ClickHouse/pull/97653) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح استثناء `keeper-converter` عند مصادفة ملفات سجل معاملات ZooKeeper فارغة. [#97673](https://github.com/ClickHouse/ClickHouse/pull/97673) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* يمكن بناء ClickHouse باستخدام clang-23 ‏(master). [#95578](https://github.com/ClickHouse/ClickHouse/pull/95578) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح فرض القيمة `false` على `is_local` عند تهيئة `bind_host`، مع استبداله باختبار تكامل. متابعة لـ [#74741](https://github.com/ClickHouse/ClickHouse/pull/74741). [#93109](https://github.com/ClickHouse/ClickHouse/pull/93109) [#96018](https://github.com/ClickHouse/ClickHouse/pull/96018) ([Zhigao Hong](https://github.com/zghong)).
* اختبارات الإجهاد: إصلاح اختبارات الإجهاد والترقية في CI، وتجاهل الوسوم `no-{build}`، وإضافة عشوائية للتوافق. [#94693](https://github.com/ClickHouse/ClickHouse/pull/94693) ([Nikita Fomichev](https://github.com/fm4v)).
* نشر الملف التنفيذي parser\_memory\_profiler من نواتج build. ويمكن استخدام الأداة لتحليل استهلاك ذاكرة AST. [#95826](https://github.com/ClickHouse/ClickHouse/pull/95826) ([Ilya Yatsishin](https://github.com/qoega)).
* إضافة الراية `--symbolize` إلى أداة `parser_memory_profiler`، بحيث تُنتج ملفات `.heap.sym` تحتوي على رموز محلولة في النتائج. [#96477](https://github.com/ClickHouse/ClickHouse/pull/96477) ([Ilya Yatsishin](https://github.com/qoega)).
* تثبيت Docker images التابعة لجهات خارجية في اختبارات التكامل على إصدارات محددة. [#96500](https://github.com/ClickHouse/ClickHouse/pull/96500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استعادة إمكانية الربط الديناميكي مع `OpenSSL`. لا يُنصح بهذا، ولا يُستخدم في أي builds خاصة ببيئات production، لكن الخيار لا يزال متاحًا للهواة على الإنترنت. [#96506](https://github.com/ClickHouse/ClickHouse/pull/96506) ([Govind R Nair](https://github.com/Revertionist)).
* تقليل نطاق `magic_enum` من \[-100, 1000] إلى النطاق default ‏\[-128, 127] باستخدام تخصيص لكل نوع لـ `Coordination::OpNum`، مما يحسن زمن build. [#96632](https://github.com/ClickHouse/ClickHouse/pull/96632) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إزالة قوالب C++ غير الضرورية من فئات Function لتقليل أزمنة build. [#96646](https://github.com/ClickHouse/ClickHouse/pull/96646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* نقل generation الخاصة بـ `StorageSystemLicenses` إلى وقت التهيئة لتحسين التوازي في build. [#96697](https://github.com/ClickHouse/ClickHouse/pull/96697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* جعل فحص التراخيص متوازيًا. [#96727](https://github.com/ClickHouse/ClickHouse/pull/96727) ([Raúl Marín](https://github.com/Algunenano)).
* إضافة اختبار functional عديم الحالة لدعم بروتوكول SSH. [#96996](https://github.com/ClickHouse/ClickHouse/pull/96996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة Kafka 3.9.0 إلى البنية التحتية لاختبارات functional العديمة الحالة، مما يتيح اختبارًا مباشرًا لمحركي الجدول Kafka وKafka2 باستخدام ClickHouse Keeper بوصفه ZooKeeper. وتغطي ستة اختبارات عديمة الحالة جديدة أساسيات الإنتاج/الاستهلاك، والأعمدة الافتراضية، وINSERT، وتنسيقات متعددة، والتعامل مع الرسائل التالفة، وتخزين الإزاحات المستند إلى Keeper. [#96997](https://github.com/ClickHouse/ClickHouse/pull/96997) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إضافة سير عمل في CI لبناء سلسلة أدوات clang محسّنة باستخدام PGO+BOLT. [#96991](https://github.com/ClickHouse/ClickHouse/pull/96991) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استخدام build محسّنة من LLVM/Clang باستخدام PGO في CI، ما يفترض أن يحقق تحسنًا في سرعة build بنسبة 20..30%. [#97031](https://github.com/ClickHouse/ClickHouse/pull/97031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* استبدال الدوال الرياضية من glibc بتنفيذات llvm-libc. [#90151](https://github.com/ClickHouse/ClickHouse/pull/90151) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* تحديث Boost من 1.83 إلى 1.90، مما يُصلح فشل تأكيد `devector` في إصدارات Debug. [#97037](https://github.com/ClickHouse/ClickHouse/pull/97037) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحديث `postgres` إلى REL\_18\_1. [#95189](https://github.com/ClickHouse/ClickHouse/pull/95189) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `libexpat` 2.7.3. [#95218](https://github.com/ClickHouse/ClickHouse/pull/95218) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `OpenSSL` 3.5.5. [#95345](https://github.com/ClickHouse/ClickHouse/pull/95345) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `simdjson` v4.2.4. [#97129](https://github.com/ClickHouse/ClickHouse/pull/97129) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `libarchive` 3.8.5. [#97131](https://github.com/ClickHouse/ClickHouse/pull/97131) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `fast_float` v8.2.3. [#97133](https://github.com/ClickHouse/ClickHouse/pull/97133) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* استخدام `abseil-cpp` 20260107.1، وترقية `s2geometry` إلى v0.13.1. [#97134](https://github.com/ClickHouse/ClickHouse/pull/97134) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* رفع `libxml2` إلى 2.15.1. [#95574](https://github.com/ClickHouse/ClickHouse/pull/95574) ([Robert Schulze](https://github.com/rschu1ze)).
* ترقية 7 صور Docker لاختبارات التكامل من Tier-3 من صور أساسية منتهية الدعم أو مُزالة إلى إصدارات مدعومة حاليًا. [#97314](https://github.com/ClickHouse/ClickHouse/pull/97314) ([Rahul](https://github.com/motsc)).
* إضافة استعلامات benchmark لـ TPC-DS. [#97349](https://github.com/ClickHouse/ClickHouse/pull/97349) ([Raufs Dunamalijevs](https://github.com/rienath)).
* استبدال خيارات cmake الفردية لمجموعات تعليمات x86 (`ENABLE_SSSE3`, `ENABLE_AVX2`, `NO_SSE3_OR_HIGHER`, `ARCH_NATIVE`، إلخ) بخيار رقمي واحد هو `X86_ARCH_LEVEL` (`1`/`2`/`3`/`4`)، بما يتوافق مع مستويات البنية الدقيقة القياسية لـ x86-64 المستخدمة بالفعل في نظام التوجيه وقت التشغيل. [#97354](https://github.com/ClickHouse/ClickHouse/pull/97354) ([Raúl Marín](https://github.com/Algunenano)).
* تجنب إنشاء متغيرات القوالب لـ `division_by_nullable=true` لعمليات غير القسمة في `FunctionBinaryArithmetic`، مما يقلل وقت الترجمة وحجم الملف الثنائي. [#97496](https://github.com/ClickHouse/ClickHouse/pull/97496) ([Raúl Marín](https://github.com/Algunenano)).
* تقليل أثر التضمين لـ `Exception.h` عبر إزالته من ملفات الترويسة واسعة الاستخدام مثل `typeid_cast.h` و`assert_cast.h` و`Context_fwd.h` و`IDataType.h` ومختلف ملفات ترويسة Column. [#97497](https://github.com/ClickHouse/ClickHouse/pull/97497) ([Raúl Marín](https://github.com/Algunenano)).
* استخدام ترويسات `compiler-rt` المضمّنة دائمًا (واجهات sanitizer وXRay) بدلًا من ترويسات مترجم المضيف، وبناء مكتبات `compiler-rt` من المصدر افتراضيًا. [#97499](https://github.com/ClickHouse/ClickHouse/pull/97499) ([Raúl Marín](https://github.com/Algunenano)).
* تجنّب تضمين ترويسات boost/multiprecision في `wide_integer_impl.h` على المنصات التي يتوفر فيها `long double` بالمستوى الكافي، مما يحسّن وقت البناء. [#96633](https://github.com/ClickHouse/ClickHouse/pull/96633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تنفيذ مهمة LLVM Code Coverage وتفعيلها مبدئيًا لفرع master. [#90952](https://github.com/ClickHouse/ClickHouse/pull/90952) ([Alexey Bakharew](https://github.com/alexbakharew)).
* تفعيل التحصين السريع لـ libcxx في بنيات الإصدار. وهذا مطلوب في الغالب لعمليات التحقق من تجاوز الحدود. واستنادًا إلى نتائج اختبارات الأداء، لا يُتوقع أي تأثير ملحوظ على الأداء. [#94757](https://github.com/ClickHouse/ClickHouse/pull/94757) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="261">
  ### إصدار ClickHouse 26.1، 2026-01-29. [العرض التقديمي](https://presentations.clickhouse.com/2026-release-26.1/)، [الفيديو](https://www.youtube.com/watch?v=fWuYt4M0xE4)
</div>

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

* أصلِح التنسيق غير المتسق الناتج عن الاستبدال غير الصحيح للأسماء المستعارة في المُنسِّق. يُغلق هذا [#82833](https://github.com/ClickHouse/ClickHouse/issues/82833). يُغلق هذا [#82832](https://github.com/ClickHouse/ClickHouse/issues/82832). يُغلق هذا [#68296](https://github.com/ClickHouse/ClickHouse/issues/68296). قد يكون هذا التغيير غير متوافق مع الإصدارات السابقة: عند تعطيل المحلّل، يتعذر معالجة بعض استعلامات CREATE VIEW التي تستخدم IN وتشير إلى اسم مستعار. ولتجنب عدم التوافق، فعِّل المحلّل (وهو مفعّل افتراضيًا منذ الإصدار 24.3). [#82838](https://github.com/ClickHouse/ClickHouse/pull/82838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُزيل المرمِّزان `DEFLATE_QPL` و`ZSTD_QAT`. ويُنصح المستخدمون بتحويل البيانات الحالية المضغوطة باستخدام `DEFLATE_QPL` أو `ZSTD_QAT` إلى codec آخر قبل الترقية. لاحظ أنه لاستخدام هذين الـ codecs كان يجب تفعيل الإعدادين `enable_deflate_qpl_codec` و`enable_zstd_qat_codec`. [#92150](https://github.com/ClickHouse/ClickHouse/pull/92150) ([Robert Schulze](https://github.com/rschu1ze)).
* تحسين تصحيح أخطاء UDF عبر تمكين التقاط stderr في `system.query_log.exception`. في السابق، كان stderr الخاص بـ UDF يُسجَّل في الملفات فقط ولا يظهر في سجلات الاستعلامات، مما جعل تصحيح الأخطاء مستحيلًا. الآن، يؤدي stderr افتراضيًا إلى إطلاق استثناءات، كما يُجمَّع بالكامل (حتى 1MB) قبل الإطلاق، بحيث تظهر آثار التتبّع الكاملة لبايثون ورسائل الخطأ في `system.query_log.exception` بما يسهّل استكشاف الأخطاء وإصلاحها بفعالية. [#92209](https://github.com/ClickHouse/ClickHouse/pull/92209) ([Xu Jia](https://github.com/XuJia0210)).
* تُعدّ قائمة الأعمدة الفارغة في clause `JOIN USING ()` الآن خطأً نحويًا. في السابق، كان من المفترض أن تكون `INVALID_JOIN_ON_EXPRESSION` أثناء تنفيذ الاستعلام. وفي بعض الحالات، مثل الربط مع تخزين `Join`، كان ذلك يؤدي إلى `LOGICAL_ERROR`، ويغلق [#82502](https://github.com/ClickHouse/ClickHouse/issues/82502). [#92371](https://github.com/ClickHouse/ClickHouse/pull/92371) ([Vladimir Cherkasov](https://github.com/vdimir)).
* استخدام المطابقة الجزئية لـ SKIP REGEXP في JSON type افتراضيًا. يُغلق [#79250](https://github.com/ClickHouse/ClickHouse/issues/79250). [#92847](https://github.com/ClickHouse/ClickHouse/pull/92847) ([Pavel Kruglov](https://github.com/Avogar)).
* التراجع عن "السماح بـ INSERT إلى أعمدة ALIAS البسيطة" (تراجع عن ClickHouse/ClickHouse[#84154](https://github.com/ClickHouse/ClickHouse/issues/84154)). فهذا لا يعمل مع formats مخصصة، ولا يخضع لأي setting. [#92849](https://github.com/ClickHouse/ClickHouse/pull/92849) ([Azat Khuzhin](https://github.com/azat)).
* إضافة إعداد لإطلاق خطأ إذا لم يكن لدى Data Lake Catalog إمكانية وصول إلى object storage. [#93606](https://github.com/ClickHouse/ClickHouse/pull/93606) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* أُزيل database engine ‏`Lazy` ولم يعد متاحًا. يُغلق [#91231](https://github.com/ClickHouse/ClickHouse/issues/91231). [#93627](https://github.com/ClickHouse/ClickHouse/pull/93627) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إزالة الوضع `transposed_with_wide_view` من `metric_log` لأنه غير قابل للاستخدام بسبب خلل برمجي. ولم يعد ممكنًا تعريف `system.metric_log` بهذا الوضع. ويتراجع هذا التغيير جزئيًا عن [#78412](https://github.com/ClickHouse/ClickHouse/issues/78412). [#93867](https://github.com/ClickHouse/ClickHouse/pull/93867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أصبحت جدولة CPU لأعباء العمل استباقية افتراضيًا. راجع server setting ‏`cpu_slot_preemption`. [#94060](https://github.com/ClickHouse/ClickHouse/pull/94060) ([Sergei Trifonov](https://github.com/serxa)).
* استخدم محارف الهروب في أسماء ملفات الفهارس لمنع تلف الأجزاء. مع هذا التغيير، سيفشل ClickHouse في تحميل الفهارس التي تحتوي أسماؤها على محارف غير ASCII والمُنشأة في الإصدارات السابقة. للتعامل مع ذلك، يمكنك استخدام إعداد MergeTree ‏`escape_index_filenames`. [#94079](https://github.com/ClickHouse/ClickHouse/pull/94079) ([Raúl Marín](https://github.com/Algunenano)).
* تغيّرت الإعدادات `exact_rows_before_limit` و`rows_before_aggregation` و`cross_to_inner_join_rewrite` و`regexp_dict_allow_hyperscan` و`regexp_dict_flag_case_insensitive` و`regexp_dict_flag_dotall` و`dictionary_use_async_executor` لتصبح الآن إعدادات عادية (وليست إعدادات format). هذا تغيير داخلي بحت من دون آثار جانبية مرئية للمستخدم، إلا في الحالة (غير المرجحة) التي تكون فيها قد حدّدت أيًا من هذه الإعدادات في تعريفات محرك الجدول Iceberg أو DeltaLake أو Kafka أو S3 أو S3Queue أو Azure أو Hive أو RabbitMQ أو Set أو FileLog أو NATS. في هذه الحالات، كانت هذه الإعدادات تُتجاهل سابقًا، أما الآن فستؤدي هذه التعريفات إلى ظهور خطأ. [#94106](https://github.com/ClickHouse/ClickHouse/pull/94106) ([Robert Schulze](https://github.com/rschu1ze)).
* تفرض الدالتان `joinGet/joinGetOrNull` الآن امتيازات `SELECT` على جدول Join الأساسي. بعد هذا التغيير، يتطلب تنفيذ `joinGet('db.table', 'column', key)` أن يمتلك المستخدم امتياز `SELECT` لكلٍّ من أعمدة المفتاح المعرّفة في جدول Join وعمود السمة الجاري استرجاعه. ستفشل الاستعلامات التي تفتقر إلى هذه الامتيازات مع `ACCESS_DENIED`. للترحيل، امنح الأذونات اللازمة باستخدام `GRANT SELECT ON db.join_table TO user` للوصول الكامل إلى الجدول، أو `GRANT SELECT(key_col, attr_col) ON db.join_table TO user` للوصول على مستوى العمود. يؤثر هذا التغيير في جميع المستخدمين والتطبيقات التي تعتمد على `joinGet`/`joinGetOrNull` حيث لم تكن امتيازات `SELECT` الصريحة مُعدّة مسبقًا. [#94307](https://github.com/ClickHouse/ClickHouse/pull/94307) ([Vladimir Cherkasov](https://github.com/vdimir)).
* تحقّق من `SHOW COLUMNS` في استعلامات `CREATE TABLE ... AS ...`. سابقًا، كان التحقق يتم عبر `SHOW TABLES`، وهو grant غير صحيح لهذا النوع من فحوصات الأذونات. [#94556](https://github.com/ClickHouse/ClickHouse/pull/94556) ([pufit](https://github.com/pufit)).
* اجعل output format ‏`Hash` مستقلًا عن أحجام block. [#94503](https://github.com/ClickHouse/ClickHouse/pull/94503) ([Alexey Milovidov](https://github.com/alexey-milovidov)). لاحظ أن هذا يغيّر قيم hash الناتجة مقارنة بالإصدارات السابقة.

<div id="268-new-feature">
  #### ميزة جديدة
</div>

* واجهة برمجة تطبيقات HTTP وواجهة ويب مدمجة لـ ClickHouse Keeper. [#78181](https://github.com/ClickHouse/ClickHouse/pull/78181) ([pufit](https://github.com/pufit) و[speeedmaster](https://github.com/speeedmaster)).
* تعمل الآن آلية إزالة التكرار في async insert مع العروض المادية التابعة. عند حدوث تعارض بسبب block\_id، تُرشَّح الكتلة الأصلية لإزالة الصفوف المرتبطة بـ block\_id، ثم تُحوَّل الصفوف المتبقية باستخدام جميع استعلامات select ذات الصلة في العروض المادية، ما يعيد بناء الكتلة الأصلية من دون الصفوف المتعارضة. [#89140](https://github.com/ClickHouse/ClickHouse/pull/89140) ([Sema Checherinda](https://github.com/CheSema)). كما أصبح استخدام إزالة التكرار مع async inserts مسموحًا عند وجود عروض مادية. [#93957](https://github.com/ClickHouse/ClickHouse/pull/93957) ([Sema Checherinda](https://github.com/CheSema)).
* تقديم صياغة جديدة وإطار عمل جديد لتبسيط ميزة فهرس projection وتوسيعها. ويأتي هذا استكمالًا لـ [https://github.com/ClickHouse/ClickHouse/pull/81021](https://github.com/ClickHouse/ClickHouse/pull/81021). [#91844](https://github.com/ClickHouse/ClickHouse/pull/91844) ([Amos Bird](https://github.com/amosbird)).
* إضافة دعم الفهرس النصي لأعمدة `Array`. [#89895](https://github.com/ClickHouse/ClickHouse/pull/89895) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* تفعيل `use_variant_as_common_type` افتراضيًا، ما يتيح استخدام أنواع غير متوافقة داخل `Array`، وفي استعلامات `UNION`، وفي فروع `if`/`multiIf`/`case`. [#90677](https://github.com/ClickHouse/ClickHouse/pull/90677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* جدول نظام جديد `zookeeper_info`. ينفّذ [#88014](https://github.com/ClickHouse/ClickHouse/issues/88014). [#90809](https://github.com/ClickHouse/ClickHouse/pull/90809) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* دعم النوع `Variant` في جميع الدوال. [#90900](https://github.com/ClickHouse/ClickHouse/pull/90900) ([Bharat Nallan](https://github.com/bharatnc)).
* إضافة مقياس `ClickHouse_Info` إلى نقطة النهاية `/metrics` في Prometheus، ويحتوي أساسًا على معلومات الإصدار، ما يتيح إنشاء مخططات تتتبّع معلومات الإصدار التفصيلية بمرور الوقت. [#91125](https://github.com/ClickHouse/ClickHouse/pull/91125) ([Christoph Wurm](https://github.com/cwurm)).
* تقديم أمر جديد مكوّن من أربعة أحرف هو `rcfg` لـ Keeper، يتيح تغيير تهيئة العنقود. ويوفّر هذا الأمر إمكانات أوسع لتغييرات التهيئة مقارنة بطلب `reconfigure` القياسي. ويأخذ الأمر سلسلة `json` بوصفها وسيطة. يجب أن تبدو المجموعة الكاملة من البايتات المُرسلة إلى واجهة TCP كما يلي: `rcfg{json_string_length_big_endian}{json_string}`. وقد تبدو بعض أمثلة الأمر كما يلي: `{"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}`. [#91354](https://github.com/ClickHouse/ClickHouse/pull/91354) ([alesapin](https://github.com/alesapin)).
* إضافة الدالة `reverseBySeparator` التي تعكس ترتيب substrings في سلسلة نصية مفصولة بفاصل محدد. ويغلق هذا [#91463](https://github.com/ClickHouse/ClickHouse/issues/91463). [#91780](https://github.com/ClickHouse/ClickHouse/pull/91780) ([Xuewei Wang](https://github.com/Sallery-X)).
* إضافة الإعداد الجديد `max_insert_block_size_bytes` الذي يتيح تحكمًا أدق في تكوين الكتل المُدخلة. [#92833](https://github.com/ClickHouse/ClickHouse/pull/92833) ([Kirill Kopnev](https://github.com/Fgrtue)).
* يمكن تنفيذ استعلامات DDL مع العبارة `ON CLUSTER` لقاعدة بيانات Replicated إذا كان الإعداد `ignore_on_cluster_for_replicated_database` مفعّلًا. في هذه الحالة، سيتم تجاهل اسم العنقود. [#92872](https://github.com/ClickHouse/ClickHouse/pull/92872) ([Kirill](https://github.com/kirillgarbar)).
* تنفيذ الدالة `mergeTreeAnalyzeIndexes`. [#92954](https://github.com/ClickHouse/ClickHouse/pull/92954) ([Azat Khuzhin](https://github.com/azat)).
* إضافة الإعداد الجديد `use_primary_key`. اضبطه على `false` لتعطيل استبعاد الحبيبات استنادًا إلى المفتاح الأساسي. [#93319](https://github.com/ClickHouse/ClickHouse/pull/93319) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة دالة الجدول `icebergLocalCluster`. [#93323](https://github.com/ClickHouse/ClickHouse/pull/93323) ([Anton Ivashkin](https://github.com/ianton-ru)).
* إضافة الدالة `cosineDistanceTransposed` التي تُقدّر [مسافة جيب التمام](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) بين نقطتين. [#93621](https://github.com/ClickHouse/ClickHouse/pull/93621) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إضافة العمود `files` إلى جدول system.parts، لعرض عدد الملفات في كل جزء بيانات. [#94337](https://github.com/ClickHouse/ClickHouse/pull/94337) ([Match](https://github.com/gayanMatch)).
* إضافة مُجدول عدالة من نوع max-min للتحكم في التزامن. يوفّر عدالة أفضل في حالات فرط الاشتراك الشديد، حيث تتنافس استعلامات كثيرة على خانات CPU محدودة. ولا تتضرر الاستعلامات قصيرة المدة بسبب الاستعلامات طويلة المدة التي راكمت خانات أكثر بمرور الوقت. ويُفعَّل ذلك عبر القيمة `max_min_fair` في إعداد الخادم `concurrent_threads_scheduler`. [#94732](https://github.com/ClickHouse/ClickHouse/pull/94732) ([Sergei Trifonov](https://github.com/serxa)).
* إضافة إمكانية لعميل ClickHouse لتجاوز قيمة TLS SNI عند الاتصال بالخادم. [#89761](https://github.com/ClickHouse/ClickHouse/pull/89761) ([Matt Klein](https://github.com/mattklein123)).
* دعم الجداول المؤقتة في استدعاءات الدالة `joinGet`. [#92973](https://github.com/ClickHouse/ClickHouse/pull/92973) ([Eduard Karacharov](https://github.com/korowa)).
* دعم متجهات الحذف في محرك الجدول `DeltaLake`. [#93852](https://github.com/ClickHouse/ClickHouse/pull/93852) ([Kseniia Sumarokova](https://github.com/kssenii)).
* دعم متجهات الحذف في `deltaLakeCluster`. [#94365](https://github.com/ClickHouse/ClickHouse/pull/94365) ([Kseniia Sumarokova](https://github.com/kssenii)).
* دعم Google Cloud Storage لبحيرات البيانات. [#93866](https://github.com/ClickHouse/ClickHouse/pull/93866) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="268-experimental-feature">
  #### ميزة تجريبية
</div>

* ترقية `QBit` من Experimental إلى Beta. [#93816](https://github.com/ClickHouse/ClickHouse/pull/93816) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إضافة دعم لـ `Nullable(Tuple)`. اضبط `allow_experimental_nullable_tuple_type = 1` لتمكينه. [#89643](https://github.com/ClickHouse/ClickHouse/pull/89643) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إضافة دعم لـ Paimon REST catalog، استكمالًا للعمل في [https://github.com/ClickHouse/ClickHouse/pull/84423](https://github.com/ClickHouse/ClickHouse/pull/84423). [#92011](https://github.com/ClickHouse/ClickHouse/pull/92011) ([JIaQi Tang](https://github.com/JiaQiTang98)).

<div id="268-performance-improvement">
  #### تحسين الأداء
</div>

* أصبح الإعداد `use_skip_indexes_on_data_read` مفعّلاً افتراضياً. يتيح هذا الإعداد إجراء التصفية بأسلوب streaming بالتزامن مع القراءة، مما يحسّن أداء الاستعلام ووقت بدء التشغيل. [#93407](https://github.com/ClickHouse/ClickHouse/pull/93407) ([Shankar Iyer](https://github.com/shankar-iyer)).
* تحسين أداء `DISTINCT` على الأعمدة `LowCardinality`. يُغلق [#5917](https://github.com/ClickHouse/ClickHouse/issues/5917). [#91639](https://github.com/ClickHouse/ClickHouse/pull/91639) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* تحسين aggregate function ‏`distinctJSONPaths` بحيث يقرأ مسارات JSON فقط من أجزاء البيانات، لا عمود JSON بالكامل. [#92196](https://github.com/ClickHouse/ClickHouse/pull/92196) ([Pavel Kruglov](https://github.com/Avogar)).
* دفع المزيد من عوامل التصفية إلى عمليات JOIN. [#85556](https://github.com/ClickHouse/ClickHouse/pull/85556) ([Nikita Taranov](https://github.com/nickitat)).
* دعم المزيد من حالات push down انطلاقاً من شرط ON في join عندما يستخدم عامل التصفية مدخلات من جانب واحد فقط. ودعم joins من النوع `ANY` و`SEMI` و`ANTI`. [#92584](https://github.com/ClickHouse/ClickHouse/pull/92584) ([Dmitry Novik](https://github.com/novikd)).
* السماح باستخدام sets مكافئة لدفع عوامل التصفية في `SEMI JOIN`. يُغلق [#85239](https://github.com/ClickHouse/ClickHouse/issues/85239). [#92837](https://github.com/ClickHouse/ClickHouse/pull/92837) ([Dmitry Novik](https://github.com/novikd)).
* تخطي قراءة الجانب الأيسر من hash join عندما يكون الجانب الأيمن فارغاً. سابقاً، كانت قراءة الجانب الأيسر تستمر حتى أول block غير فارغ، ما قد يسبب قدراً كبيراً من العمل عند وجود تصفية مكثفة أو aggregation. [#94062](https://github.com/ClickHouse/ClickHouse/pull/94062) ([Alexander Gololobov](https://github.com/davenger)).
* استخدام طريقة "fastrange" ‏(Daniel Lemire) لتقسيم البيانات داخل query pipeline. قد يحسّن ذلك الفرز المتوازي وعمليات JOIN. [#93080](https://github.com/ClickHouse/ClickHouse/pull/93080) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تحسين أداء window functions عندما يطابق PARTITION BY مفتاح الفرز أو يكون prefix له. [#87299](https://github.com/ClickHouse/ClickHouse/pull/87299) ([Nikita Taranov](https://github.com/nickitat)).
* يُدفع عامل التصفية الخارجي إلى views، مما يتيح تطبيق PREWHERE على العُقد المحلية والبعيدة. يعالج [#88189](https://github.com/ClickHouse/ClickHouse/issues/88189). [#88316](https://github.com/ClickHouse/ClickHouse/pull/88316) ([Igor Nikonov](https://github.com/devcrafter)).
* تنفيذ ترجمات JIT البرمجية لمزيد من الدوال. يُغلق [#73509](https://github.com/ClickHouse/ClickHouse/issues/73509). [#88770](https://github.com/ClickHouse/ClickHouse/pull/88770) ([Alexey Milovidov](https://github.com/alexey-milovidov) with [Taiyang Li](https://github.com/taiyang-li)).
* إذا كان skip index المستخدم في استعلام `FINAL` على عمود يُعد جزءاً من المفتاح الأساسي، فإن الخطوة الإضافية للتحقق من تقاطع المفتاح الأساسي في الأجزاء الأخرى تكون غير ضرورية، ولذلك لم تعد تُنفَّذ. يعالج [#85897](https://github.com/ClickHouse/ClickHouse/issues/85897). [#93899](https://github.com/ClickHouse/ClickHouse/pull/93899) ([Shankar Iyer](https://github.com/shankar-iyer)).
* تحسين الأداء واستخدام الذاكرة لكل من `LIMIT` و`OFFSET` الكسريين. [#91167](https://github.com/ClickHouse/ClickHouse/pull/91167) ([Ahmed Gouda](https://github.com/0xgouda)).
* إصلاح استخدام منطق القراءة العشوائية الأسرع في أداة الجلب المسبق لـ Parquet Reader V3. يُغلق [#90890](https://github.com/ClickHouse/ClickHouse/issues/90890). [#91435](https://github.com/ClickHouse/ClickHouse/pull/91435) ([Arsen Muk](https://github.com/arsenmuk)).
* تحسين أداء `icebergCluster`. يُغلق [#91462](https://github.com/ClickHouse/ClickHouse/issues/91462). [#91537](https://github.com/ClickHouse/ClickHouse/pull/91537) ([Yang Jiang](https://github.com/Ted-Jiang)).
* عدم التصفية حسب الأعمدة الافتراضية عند استخدام عوامل تصفية ثابتة. [#91588](https://github.com/ClickHouse/ClickHouse/pull/91588) ([c-end](https://github.com/c-end)).
* تقليل استخدام الذاكرة في INSERT/merges مع wide parts للجداول شديدة الاتساع من خلال تمكين مخازن الكتابة المؤقتة التكيفية. وإضافة دعم لمخازن الكتابة المؤقتة التكيفية للأقراص المشفرة. [#92250](https://github.com/ClickHouse/ClickHouse/pull/92250) ([Azat Khuzhin](https://github.com/azat)).
* تحسين أداء full text search باستخدام text index وtokenizer ‏`sparseGrams` عبر تقليل عدد الرموز المميزة التي يُبحث عنها في الفهرس. [#93078](https://github.com/ClickHouse/ClickHouse/pull/93078) ([Anton Popov](https://github.com/CurtizJ)).
* جرى تحسين الدالة `isValidASCII` للحالات الإيجابية، أي عندما تكون جميع قيم الإدخال من ASCII. [#93347](https://github.com/ClickHouse/ClickHouse/pull/93347) ([Robert Schulze](https://github.com/rschu1ze)).
* أصبح تحسين القراءة حسب الترتيب يتعرف على الحالات التي تكون فيها أعمدة ORDER BY ثابتة بسبب شروط WHERE، مما يتيح قراءات فعّالة بالترتيب العكسي. ويفيد ذلك الاستعلامات متعددة المستأجرين مثل `WHERE tenant='42' ORDER BY tenant, event_time DESC`، إذ يمكنها الآن استخدام InReverseOrder بدلًا من الحاجة إلى sort كامل. [#94103](https://github.com/ClickHouse/ClickHouse/pull/94103) ([matanper](https://github.com/matanper)).
* استحداث صنف Enum AST متخصص لتخزين معاملات القيم في أزواج (string, integer) بدلًا من العناصر الفرعية ASTLiteral، بهدف تحسين استهلاك الذاكرة. [#94178](https://github.com/ClickHouse/ClickHouse/pull/94178) ([Ilya Yatsishin](https://github.com/qoega)).
* تحليل الفهرس الموزع عبر replicas متعددة. وهو مفيد للتخزين المشترك وللكميات الضخمة من البيانات في cluster. وينطبق ذلك على SharedMergeTree ‏(ClickHouse Cloud)، وقد ينطبق أيضًا على أنواع أخرى من جداول MergeTree على تخزين مشترك. [#86786](https://github.com/ClickHouse/ClickHouse/pull/86786) ([Azat Khuzhin](https://github.com/azat)).
* تقليل overhead الخاص بمرشحات runtime في join عبر تعطيلها في الحالات التالية: - عند تعيين عدد كبير جدًا من البتات في bloom filter - عند تصفية عدد قليل جدًا من الصفوف أثناء runtime. [#91578](https://github.com/ClickHouse/ClickHouse/pull/91578) ([Alexander Gololobov](https://github.com/davenger)).
* استخدام مخزن مؤقت داخل الذاكرة لمدخلات الاستعلامات الفرعية المترابطة لتجنب تقييمها عدة مرات. جزء من [#79890](https://github.com/ClickHouse/ClickHouse/issues/79890). [#91205](https://github.com/ClickHouse/ClickHouse/pull/91205) ([Dmitry Novik](https://github.com/novikd)).
* السماح لجميع replicas بسرقة النطاقات اليتيمة في القراءة باستخدام parallel replicas. وهذا يحسّن موازنة الحمل ويقلل tail latency. [#91374](https://github.com/ClickHouse/ClickHouse/pull/91374) ([zoomxi](https://github.com/zoomxi)).
* أصبح external aggregation/sorting/join يراعي الآن إعداد الاستعلام `temporary_files_codec` في جميع السياقات. كما أُصلحت profile events المفقودة لخوارزمية grace hash join. [#92388](https://github.com/ClickHouse/ClickHouse/pull/92388) ([Vladimir Cherkasov](https://github.com/vdimir)).
* جعل اكتشاف استخدام ذاكرة الاستعلام عند spilling to disk أثناء aggregation/sorting أكثر متانة. [#92500](https://github.com/ClickHouse/ClickHouse/pull/92500) ([Azat Khuzhin](https://github.com/azat)).
* تقدير العدد الإجمالي للصفوف وإحصاءات NDV ‏(عدد القيم المميزة) لأعمدة مفاتيح aggregation. [#92812](https://github.com/ClickHouse/ClickHouse/pull/92812) ([Alexander Gololobov](https://github.com/davenger)).
* تحسين Compression لقائمة postings باستخدام simdcomp. [#92871](https://github.com/ClickHouse/ClickHouse/pull/92871) ([Peng Jian](https://github.com/fastio)).
* إعادة هيكلة معالجة الوضع ordered في S3Queue باستخدام buckets. من شأن ذلك أيضًا تحسين الأداء وتقليل عدد طلبات Keeper. [#92889](https://github.com/ClickHouse/ClickHouse/pull/92889) ([Kseniia Sumarokova](https://github.com/kssenii)).
* يمكن الآن للدالتين `mapContainsKeyLike` و`mapContainsValueLike` الاستفادة من text index على `mapKeys()` أو `mapValues()` على الترتيب. [#93049](https://github.com/ClickHouse/ClickHouse/pull/93049) ([Michael Jarrett](https://github.com/EmeraldShift)).
* تقليل استهلاك الذاكرة على الأنظمة غير التابعة لـ Linux (تمكين purge الفوري لـ dirty pages الخاصة بـ jemalloc). [#93360](https://github.com/ClickHouse/ClickHouse/pull/93360) ([Eduard Karacharov](https://github.com/korowa)).
* فرض purge لـ arenas الخاصة بـ jemalloc إذا تجاوزت نسبة حجم dirty pages إلى `max_server_memory_usage` القيمة `memory_worker_purge_dirty_pages_threshold_ratio`. [#93500](https://github.com/ClickHouse/ClickHouse/pull/93500) ([Eduard Karacharov](https://github.com/korowa)).
* تقليل استهلاك الذاكرة في AST. [#93601](https://github.com/ClickHouse/ClickHouse/pull/93601) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* في بعض الحالات، لاحظنا أن ClickHouse لا يلتزم بـ memory limit عند القراءة من table. تم إصلاح هذا السلوك. [#93715](https://github.com/ClickHouse/ClickHouse/pull/93715) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تفعيل extension الخاص بـ Keeper لكل من `CHECK_STAT` و`TRY_REMOVE` افتراضيًا. [#93886](https://github.com/ClickHouse/ClickHouse/pull/93886) ([Mikhail Artemenko](https://github.com/Michicosun)).
* تحليل الحدين الأدنى والأعلى لأسماء الملفات المقابلة لعمليات حذف المواضع من entries في manifest file الخاص بـ Iceberg، لتحسين اختيار data files المقابلة. [#93980](https://github.com/ClickHouse/ClickHouse/pull/93980) ([Daniil Ivanik](https://github.com/divanik)).
* إضافة إعدادين آخرين للتحكم في الحد الأقصى لعدد subcolumns الديناميكية في JSON column. الأول هو MergeTree setting `merge_max_dynamic_subcolumns_in_compact_part` (مماثل للإعداد المضاف سابقًا `merge_max_dynamic_subcolumns_in_wide_part`) ويحدّ من عدد subcolumns الديناميكية التي تُنشأ أثناء merge إلى compact part. والثاني هو إعداد على مستوى query باسم `max_dynamic_subcolumns_in_json_type_parsing` يحدّ من عدد subcolumns الديناميكية التي تُنشأ أثناء parsing لبيانات JSON، ما يتيح تحديد الحد عند insert. [#94184](https://github.com/ClickHouse/ClickHouse/pull/94184) ([Pavel Kruglov](https://github.com/Avogar)).
* تحسين طفيف لعملية squashing الخاصة بـ JSON columns في بعض الحالات. [#94247](https://github.com/ClickHouse/ClickHouse/pull/94247) ([Pavel Kruglov](https://github.com/Avogar)).
* خفض أحجام queue الخاصة بـ thread pool استنادًا إلى الخبرة في بيئات production. وإضافة فحص صريح لاستهلاك الذاكرة قبل قراءة أي بيانات من MergeTree. [#94692](https://github.com/ClickHouse/ClickHouse/pull/94692) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* التأكد من أن scheduler يفضّل thread الخاص بـ MemoryWorker عند شحّ موارد CPU، لأنه يحمي عملية ClickHouse من تهديد وجودي. [#94864](https://github.com/ClickHouse/ClickHouse/pull/94864) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* تشغيل purge لـ dirty pages الخاصة بـ jemalloc في thread مختلف عن thread الرئيسي لـ MemoryWorker. وإذا كانت عملية purge بطيئة، فقد تؤخر تحديثات استخدام RSS، ما قد يؤدي إلى إنهاء العملية بسبب نفاد الذاكرة. وإضافة config جديد باسم `memory_worker_purge_total_memory_threshold_ratio` لبدء purge لـ dirty pages استنادًا إلى نسبة إجمالي استخدام الذاكرة. [#94902](https://github.com/ClickHouse/ClickHouse/pull/94902) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="268-improvement">
  #### تحسينات
</div>

* أصبح `system.blob_storage_log` متاحًا الآن لـ Azure Blob Storage. [#93105](https://github.com/ClickHouse/ClickHouse/pull/93105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تمت إضافة `blob_storage_log` لكلٍّ من Local وHDFS. كما أُصلح خطأ كان يحدث عندما يستخدم `S3Queue` قيمة غير اسم القرص للتسجيل في `blob_storage_log`. وأُضيف العمود `error_code` إلى `blob_storage_log`. كذلك جرى تقسيم ملف التهيئة الخاص بالاختبارات لتبسيط الاختبار المحلي. [#93106](https://github.com/ClickHouse/ClickHouse/pull/93106) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* سيقوم `clickhouse-client` و`clickhouse-local` الآن بإبراز مجموعات الأرقام (الآلاف والملايين وما إلى ذلك) داخل القيم الرقمية الحرفية أثناء الكتابة. هذا يُغلق [#93100](https://github.com/ClickHouse/ClickHouse/issues/93100). [#93108](https://github.com/ClickHouse/ClickHouse/pull/93108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم في `clickhouse-client` لوسائط سطر الأوامر التي تحتوي على مسافات حول علامة التساوي. يُغلق هذا [#93077](https://github.com/ClickHouse/ClickHouse/issues/93077). [#93174](https://github.com/ClickHouse/ClickHouse/pull/93174) ([Cole Smith](https://github.com/colesmith54)).
* مع `<interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>`، يمكن لعميل CLI الآن الرجوع تلقائيًا إلى Ctrl-R للبحث العادي كما كان سابقًا، بينما يُستخدم Ctrl-T للبحث الضبابي. [#87785](https://github.com/ClickHouse/ClickHouse/pull/87785) ([Larry Snizek](https://github.com/larry-cdn77)).
* كانت العبارة المستخدمة لمسح الذاكرات المؤقتة `SYSTEM DROP [...] CACHE` تعطي انطباعًا خاطئًا بأنها تعطل الذاكرة المؤقتة. يدعم ClickHouse الآن العبارة `SYSTEM CLEAR [...] CACHE` لأنها أوضح. وتظل الصياغة القديمة متاحة. [#93727](https://github.com/ClickHouse/ClickHouse/pull/93727) ([Pranav Tiwari](https://github.com/pranavt84)).
* دعم استخدام عدة أعمدة كمفتاح أساسي في `EmbeddedRocksDB`. يُغلق هذا [#32819](https://github.com/ClickHouse/ClickHouse/issues/32819). [#33917](https://github.com/ClickHouse/ClickHouse/pull/33917) ([usurai](https://github.com/usurai)).
* أصبح من الممكن الآن استخدام IN غير ثابتة مع القيم scalar (استعلامات مثل `val1 NOT IN if(cond, val2, val3)`). [#93495](https://github.com/ClickHouse/ClickHouse/pull/93495) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* منع تمرير الترويسات `x-amz-server-side-encryption` إلى طلبات S3 من نوع `HeadObject` و`UploadPart` و`CompleteMultipartUpload` لأنها غير مدعومة. [#64577](https://github.com/ClickHouse/ClickHouse/pull/64577) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* تتبّع partitioning الخاص بـ hive في الوضع ordered ضمن S3Queue. يحل هذا [#71161](https://github.com/ClickHouse/ClickHouse/issues/71161). [#81040](https://github.com/ClickHouse/ClickHouse/pull/81040) ([Anton Ivashkin](https://github.com/ianton-ru)).
* تحسين حجز المساحة في filesystem cache. سيُنفَّذ `FileCache::collectCandidatesForEviction` من دون قفل حصري. [#82764](https://github.com/ClickHouse/ClickHouse/pull/82764) ([Kseniia Sumarokova](https://github.com/kssenii)).
* دعم استراتيجية rotation مركبة (الحجم + الوقت) لـ server log. [#87620](https://github.com/ClickHouse/ClickHouse/pull/87620) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* يمكن لعميل CLI الآن تحديد `<warnings>false</warnings>` بدلًا من وسيطة سطر الأوامر `--no-warnings`. [#87783](https://github.com/ClickHouse/ClickHouse/pull/87783) ([Larry Snizek](https://github.com/larry-cdn77)).
* إضافة دعم للدالة التجميعية `avg` مع قيم Date وDateTime وTime كوسائط. يُغلق [#82267](https://github.com/ClickHouse/ClickHouse/issues/82267). [#87845](https://github.com/ClickHouse/ClickHouse/pull/87845) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* أصبح التحسين `use_join_disjunctions_push_down` مفعّلًا افتراضيًا. [#89313](https://github.com/ClickHouse/ClickHouse/pull/89313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم المزيد من محركات الجداول وأنواع مصادر البيانات في الاستعلامات الفرعية المترابطة. يُغلق [#80775](https://github.com/ClickHouse/ClickHouse/issues/80775). [#90175](https://github.com/ClickHouse/ClickHouse/pull/90175) ([Dmitry Novik](https://github.com/novikd)).
* إذا تم تحديد مخطط العرض ذي المعلمات صراحةً، فسيُعرض. يُغلق [#88875](https://github.com/ClickHouse/ClickHouse/issues/88875)، [#81385](https://github.com/ClickHouse/ClickHouse/issues/81385). [#90220](https://github.com/ClickHouse/ClickHouse/pull/90220) ([Grigorii Sokolik](https://github.com/GSokol)).
* التعامل بشكل صحيح مع الفجوة في إدخالات سجل Keeper إذا كانت السجلات تسبق آخر فهرس مُعتمد. [#90403](https://github.com/ClickHouse/ClickHouse/pull/90403) ([Antonio Andelic](https://github.com/antonio2368)).
* تحسين الإعداد `min_free_disk_bytes_to_perform_insert` ليعمل بشكل صحيح مع وحدات JBOD. [#90878](https://github.com/ClickHouse/ClickHouse/pull/90878) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* إتاحة تحديد الإعداد `storage_class_name` في المجموعات المسماة لمحرك الجدول `S3` ودالة الجدول `s3`. [#91926](https://github.com/ClickHouse/ClickHouse/pull/91926) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* دعم الإدراج في ZooKeeper إضافي عبر `system.zookeeper`. [#92092](https://github.com/ClickHouse/ClickHouse/pull/92092) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* إضافة مقاييس جديدة إلى Keeper: أحداث profile ‏`KeeperChangelogWrittenBytes` و`KeeperChangelogFileSyncMicroseconds` و`KeeperSnapshotWrittenBytes` و`KeeperSnapshotFileSyncMicroseconds`، بالإضافة إلى مقاييس المدرج التكراري `KeeperBatchSizeElements` و`KeeperBatchSizeBytes`. [#92149](https://github.com/ClickHouse/ClickHouse/pull/92149) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إضافة إعداد جديد، `trace_profile_events_list`، يقيّد التتبّع باستخدام `trace_profile_event` بقائمة أسماء الأحداث المحددة. يتيح ذلك جمع بيانات أدق في أحمال العمل الكبيرة. [#92298](https://github.com/ClickHouse/ClickHouse/pull/92298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* دعم SYSTEM NOTIFY FAILPOINT لنقاط الفشل القابلة للإيقاف المؤقت. - دعم SYSTEM WAIT FAILPOINT fp PAUSE/RESUME. [#92368](https://github.com/ClickHouse/ClickHouse/pull/92368) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إضافة العمود `creation` ‏(implicit/explicit) إلى `system.data_skipping_indices`. [#92378](https://github.com/ClickHouse/ClickHouse/pull/92378) ([Raúl Marín](https://github.com/Algunenano)).
* السماح بتمرير وصف الأعمدة لجداول YTsaurus الديناميكية إلى مصدر القاموس. [#92391](https://github.com/ClickHouse/ClickHouse/pull/92391) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* في [#63985](https://github.com/ClickHouse/ClickHouse/pull/63985)، أصبح بالإمكان تحديد جميع المعلمات اللازمة لإعداد TLS لكل منفذ على حدة (راجع [البروتوكولات القابلة للتركيب](https://clickhouse.com/docs/operations/settings/composable-protocols))، بحيث لا نعود بحاجة إلى الاعتماد على إعداد TLS عام. ومع ذلك، لا يزال التنفيذ يتطلب ضمنيًا وجود قسم إعداد عام `openSSL.server`، وهو ما يتعارض مع البيئات التي تحتاج إلى إعدادات TLS مختلفة لمنافذ مختلفة. على سبيل المثال، في عمليات نشر keeper-in-server، نحتاج إلى إعدادات TLS منفصلة للاتصال بين Keeper واتصالات عميل ClickHouse. [#92457](https://github.com/ClickHouse/ClickHouse/pull/92457) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* تقديم إعداد جديد `input_format_binary_max_type_complexity` يقيّد العدد الإجمالي لعُقد الأنواع التي يمكن فك ترميزها بالتنسيق الثنائي، وذلك لمنع حمولات البيانات الضارة. [#92519](https://github.com/ClickHouse/ClickHouse/pull/92519) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إظهار المهام قيد التشغيل في `system.background_schedule_pool{,_log}`. وإضافة التوثيق. [#92587](https://github.com/ClickHouse/ClickHouse/pull/92587) ([Azat Khuzhin](https://github.com/azat)).
* تنفيذ الاستعلام الحالي في بحث Ctrl+R داخل العميل إذا لم يتم العثور على أي تطابق في السجل. [#92749](https://github.com/ClickHouse/ClickHouse/pull/92749) ([Azat Khuzhin](https://github.com/azat)).
* دعم `EXPLAIN indices = 1` كاسم بديل لـ `EXPLAIN indexes = 1`. يغلق [#92483](https://github.com/ClickHouse/ClickHouse/issues/92483). [#92774](https://github.com/ClickHouse/ClickHouse/pull/92774) ([Pranav Tiwari](https://github.com/pranavt84)).
* يتيح قارئ Parquet الآن قراءة أعمدة Tuple أو Map بصيغة JSON: يعمل `select x from file(f.parquet, auto, 'x JSON')` حتى إذا كان نوع العمود `x` في `f.parquet` هو tuple أو map. [#92864](https://github.com/ClickHouse/ClickHouse/pull/92864) ([Michael Kolupaev](https://github.com/al13n321)).
* دعم tuple الفارغة في قارئ Parquet. [#92868](https://github.com/ClickHouse/ClickHouse/pull/92868) ([Michael Kolupaev](https://github.com/al13n321)).
* التراجع إلى النسخ بأسلوب القراءة والكتابة في Azure Blob Storage عندما تفشل عملية النسخ الأصلية مع BadRequest (على سبيل المثال، عند وجود قائمة block غير صالحة). سابقًا، كان هذا يُنفَّذ فقط عند حدوث الخطأ Unauthorized، والذي كان يظهر عند نسخ blob إلى storage accounts مختلفة. لكننا نرى أيضًا أحيانًا الخطأ "The specified block list is invalid". لذلك تم الآن تحديث الشرط للتراجع إلى القراءة والكتابة عند فشل أي عملية نسخ أصلية. [#92888](https://github.com/ClickHouse/ClickHouse/pull/92888) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* إصلاح تقييد EC2 metadata endpoint عند تشغيل عدد كبير من استعلامات S3 المتزامنة باستخدام بيانات اعتماد ملف تعريف مثيل EC2. سابقًا، كان كل استعلام ينشئ `AWSInstanceProfileCredentialsProvider` خاصًا به، مما كان يؤدي إلى طلبات متزامنة إلى خدمة بيانات EC2 الوصفية، وقد يتسبب في حالات timeout وأخطاء `HTTP response code: 403`. الآن أصبح موفر بيانات الاعتماد يُخزَّن مؤقتًا ويُشارَك بين جميع الاستعلامات. [#92891](https://github.com/ClickHouse/ClickHouse/pull/92891) ([Sav](https://github.com/sberss)).
* إعادة العمل على الإعداد `insert_select_deduplicate` لإتاحة الحفاظ على التوافق مع الإصدارات السابقة. [#92951](https://github.com/ClickHouse/ClickHouse/pull/92951) ([Sema Checherinda](https://github.com/CheSema)).
* تسجيل المهام الخلفية الأبطأ من المتوسط (`background_schedule_pool_log.duration_threshold_milliseconds=30`) لتجنّب الإفراط في تسجيل المهام. [#92965](https://github.com/ClickHouse/ClickHouse/pull/92965) ([Azat Khuzhin](https://github.com/azat)).
* في الإصدارات السابقة، كانت بعض أسماء دوال C++ تُعرض بشكل غير صحيح ("mangled") في `system.trace_log` و`system.symbols`، ولم تكن الدالة `demangle` تتعامل معها جيدًا. يُغلق [#93074](https://github.com/ClickHouse/ClickHouse/issues/93074). [#93075](https://github.com/ClickHouse/ClickHouse/pull/93075) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف إعداد النسخ الاحتياطي `backup_data_from_refreshable_materialized_view_targets` لتخطي النسخ الاحتياطي لأهداف الـ refreshable materialized views. أما RMVs التي تستخدم استراتيجية التحديث APPEND، فيتم دائمًا نسخها احتياطيًا. [#93076](https://github.com/ClickHouse/ClickHouse/pull/93076) ([Julia Kartseva](https://github.com/jkartseva)). [#93658](https://github.com/ClickHouse/ClickHouse/pull/93658) ([Julia Kartseva](https://github.com/jkartseva))
* استخدام الحد الأدنى من معلومات Debug بدلًا من عدم تضمين أي معلومات Debug لوحدات الترجمة الثقيلة، مثل الدوال. [#93079](https://github.com/ClickHouse/ClickHouse/pull/93079) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُضيف دعم التوافق مع MinIO إلى AWS S3 C++ SDK من خلال تنفيذ ربط لرموز الأخطاء الخاصة بـ MinIO. يتيح هذا التغيير لـ ClickHouse التعامل بشكل صحيح مع أخطاء خادم MinIO وإعادة المحاولة عند استخدام عمليات نشر MinIO بدلًا من AWS S3، مما يحسّن الاعتمادية للمستخدمين الذين يشغّلون object storage على clusters MinIO self-hosted. [#93082](https://github.com/ClickHouse/ClickHouse/pull/93082) ([XiaoBinMu](https://github.com/Binnn-MX)).
* كتابة ملفات jemalloc profile symbolized، مما يلغي الحاجة إلى binary أثناء generation الخاصة بـ heap profile. [#93099](https://github.com/ClickHouse/ClickHouse/pull/93099) ([Azat Khuzhin](https://github.com/azat)).
* أُعيد إحياء أداة `clickhouse git-import` بعد أن كانت معطلة مع commits الكبيرة وغير الصالحة. راجع [https://presentations.clickhouse.com/2020-matemarketing/](https://presentations.clickhouse.com/2020-matemarketing/). [#93202](https://github.com/ClickHouse/ClickHouse/pull/93202) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* لا تعرض كلمات المرور من URL storage في query log. [#93245](https://github.com/ClickHouse/ClickHouse/pull/93245) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* دعم النوع `Geometry` في `flipCoordinates`. [#93303](https://github.com/ClickHouse/ClickHouse/pull/93303) ([Bharat Nallan](https://github.com/bharatnc)).
* تحسين تجربة المستخدم في SYSTEM INSTRUMENT ADD/REMOVE: استخدام قيم `String` النصية لأسماء الدوال، وتطبيق التصحيح على جميع الدوال المطابقة، والسماح باستخدام function\_name في `REMOVE`. [#93345](https://github.com/ClickHouse/ClickHouse/pull/93345) ([Pablo Marcos](https://github.com/pamarcos)).
* إضافة إعداد جديد `materialize_statistics_on_merge` يفعّل/يعطّل materializing للإحصاءات أثناء merge. القيمة الافتراضية هي `1`. [#93379](https://github.com/ClickHouse/ClickHouse/pull/93379) ([Han Fei](https://github.com/hanfei1991)).
* أصبح ClickHouse الآن قادرًا على parse `SELECT` دون أقواس في استعلامات `DESCRIBE SELECT`. يُغلق [#58382](https://github.com/ClickHouse/ClickHouse/issues/58382). [#93429](https://github.com/ClickHouse/ClickHouse/pull/93429) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إضافة إضفاء الطابع العشوائي على checks الخاصة بصحة cache وفق احتمال محدد. [#93439](https://github.com/ClickHouse/ClickHouse/pull/93439) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أُضيف الإعداد `type_json_allow_duplicated_key_with_literal_and_nested_object` للسماح بالمسارات المكررة في JSON عندما تكون إحداها قيمة حرفية والأخرى كائنًا متداخلًا، مثل `{"a" : 42, "a" : {"b" : 42}}`. ربما تكون بعض البيانات قد أُنشئت قبل إضافة هذا القيد على المسارات المكررة في [https://github.com/ClickHouse/ClickHouse/pull/79317،](https://github.com/ClickHouse/ClickHouse/pull/79317،) وقد يؤدي التعامل معها الآن إلى حدوث أخطاء. وباستخدام هذا الإعداد، يمكن الاستمرار في استخدام هذه البيانات القديمة من دون أخطاء. [#93604](https://github.com/ClickHouse/ClickHouse/pull/93604) ([Pavel Kruglov](https://github.com/Avogar)).
* لا تطبع قيم الأنواع البسيطة في Pretty JSON على أسطر منفصلة. [#93836](https://github.com/ClickHouse/ClickHouse/pull/93836) ([Pavel Kruglov](https://github.com/Avogar)).
* عند وجود عدد كبير من عبارات `alter table ... modify setting ...`، قد يتعذر الحصول على القفل خلال 5 ثوانٍ. من الأفضل إرجاع `timeout` بدلًا من `logical error`. [#93856](https://github.com/ClickHouse/ClickHouse/pull/93856) ([Han Fei](https://github.com/hanfei1991)).
* منع الإخراج المفرط عند حدوث خطأ في الصياغة. قبل هذا التغيير، كان النظام يطبع سكربت SQL بالكامل، وقد يحتوي على عدد كبير من الاستعلامات. [#93876](https://github.com/ClickHouse/ClickHouse/pull/93876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُصلح حساب حجم البايت لطلب `check` مع الإحصاءات في Keeper بشكل صحيح. [#93907](https://github.com/ClickHouse/ClickHouse/pull/93907) ([Mikhail Artemenko](https://github.com/Michicosun)).
* أُضيف الإعداد `use_hash_table_stats_for_join_reordering` للتحكم في ما إذا كانت إحصاءات حجم hash table وقت التشغيل تُستخدم لإعادة ترتيب join. هذا الإعداد مفعّل افتراضيًا، بما يحافظ على السلوك الحالي لـ `collect_hash_table_stats_during_joins`. [#93912](https://github.com/ClickHouse/ClickHouse/pull/93912) ([Vladimir Cherkasov](https://github.com/vdimir)).
* يمكن للمستخدمين الآن عرض جزء من إعدادات الخادم العامة المتداخلة في الجدول `system.server_settings` (مثل `logger.level`). ويقتصر ذلك على الإعدادات ذات البنية الثابتة فقط (من دون قوائم أو تعدادات أو تكرارات وما إلى ذلك). [#94001](https://github.com/ClickHouse/ClickHouse/pull/94001) ([Hechem Selmi](https://github.com/m-selmi)).
* يمكن الآن مقارنة `QBit` للتحقق من التساوي. [#94078](https://github.com/ClickHouse/ClickHouse/pull/94078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* عندما يكتشف Keeper وجود snapshot تالفة أو سجلات تغييرات غير متسقة، يُطرح استثناء بدلًا من الإنهاء اليدوي أو تنظيف الملفات تلقائيًا. ومن المفترض أن يؤدي ذلك إلى سلوك أكثر أمانًا في Keeper يعتمد على التدخل اليدوي. [#94168](https://github.com/ClickHouse/ClickHouse/pull/94168) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح مشكلة ترك بقايا محتملة في حال فشل `CREATE TABLE`. [#94174](https://github.com/ClickHouse/ClickHouse/pull/94174) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الوصول إلى ذاكرة غير مهيأة (وهو خلل في OpenSSL) عند استخدام مفتاح TLS محمي بكلمة مرور. [#94182](https://github.com/ClickHouse/ClickHouse/pull/94182) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* ترقية chdig إلى [v26.1.1](https://github.com/azat/chdig/releases/tag/v26.1.1). [#94290](https://github.com/ClickHouse/ClickHouse/pull/94290) ([Azat Khuzhin](https://github.com/azat)).
* دعم partitioning أكثر عمومية لوضع S3Queue المرتب. [#94321](https://github.com/ClickHouse/ClickHouse/pull/94321) ([Bharat Nallan](https://github.com/bharatnc)).
* أُضيف alias باسم `use_statistics` للإعداد `allow_statistics_optimize`. وهذا أكثر اتساقًا مع الإعدادات الحالية `use_primary_key` و `use_skip_indexes`. [#94366](https://github.com/ClickHouse/ClickHouse/pull/94366) ([Robert Schulze](https://github.com/rschu1ze)).
* تم تفعيل الإعداد `input_format_numbers_enum_on_conversion_error` للتحويل من Numbers إلى Enums للتحقق من وجود العنصر. [#94384](https://github.com/ClickHouse/ClickHouse/pull/94384) ([Elmi Ahmadov](https://github.com/ahmadov)).
* في وضع ordered لـ S3(Azure)Queue، أصبح تنظيف العُقد الفاشلة يتم عبر تتبّع الحدود (وكان هذا قبل ذلك يُنفَّذ فقط في وضع Unordered لكلٍّ من العُقد الفاشلة والمُعالجة، لذا سيُنفَّذ الآن أيضًا في Ordered ولكن للعُقد الفاشلة فقط). [#94412](https://github.com/ClickHouse/ClickHouse/pull/94412) ([Kseniia Sumarokova](https://github.com/kssenii)).
* تم تمكين إدارة الوصول للمستخدم `default` في clickhouse-local. كان المستخدم default في `clickhouse-local` يفتقد امتياز access\_management، مما كان يتسبب في فشل عمليات مثل `DROP ROW POLICY IF EXISTS` مع الخطأ `ACCESS_DENIED`، رغم أنه يُفترض ألا يكون هذا المستخدم مقيّدًا. [#94501](https://github.com/ClickHouse/ClickHouse/pull/94501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* تم تمكين named collection لقواميس YTsaurus وجداوله. [#94582](https://github.com/ClickHouse/ClickHouse/pull/94582) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* تمت إضافة دعم named collections المعرّفة عبر SQL في BACKUP/RESTORE لكل من S3 وAzure Blob Storage. يُغلق [#94604](https://github.com/ClickHouse/ClickHouse/issues/94604). [#94605](https://github.com/ClickHouse/ClickHouse/pull/94605) ([Pablo Marcos](https://github.com/pamarcos)).
* دعم التقسيم إلى buckets استنادًا إلى partition key في S3Queue في وضع ordered. [#94698](https://github.com/ClickHouse/ClickHouse/pull/94698) ([Bharat Nallan](https://github.com/bharatnc)).
* تمت إضافة metric غير متزامن يتضمن الزمن المنقضي لأطول عملية merge قيد التشغيل. [#94825](https://github.com/ClickHouse/ClickHouse/pull/94825) ([Raúl Marín](https://github.com/Algunenano)).
* تمت إضافة فحص للملف المرتبط قبل تطبيق position delete باستخدام IcebergBitmapPositionDeleteTransform. [#94897](https://github.com/ClickHouse/ClickHouse/pull/94897) ([Yang Jiang](https://github.com/Ted-Jiang)).
* الآن يعرض `view_duration_ms` المدة التي كانت خلالها المجموعة نشطة، لا مجموع مدة الخيوط داخلها. [#94966](https://github.com/ClickHouse/ClickHouse/pull/94966) ([Sema Checherinda](https://github.com/CheSema)).
* أُزيل الحد الأقصى لعدد tokens البحث في الدالتين `hasAnyTokens` و`hasAllTokens`، والذي كان محددًا بـ 64. مثال: `SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]);` كان هذا الـ query سيؤدي إلى الخطأ `BAD_ARGUMENTS` لوجود 65 token بحث. مع طلب السحب هذا، أُزيل الحد بالكامل، وأصبح الـ query نفسه يعمل دون خطأ. [#95152](https://github.com/ClickHouse/ClickHouse/pull/95152) ([Elmi Ahmadov](https://github.com/ahmadov)).
* تمت إضافة الإعداد `input_format_numbers_enum_on_conversion_error` للتحويل من Numbers إلى Enums للتحقق من وجود العنصر. يُغلق: [#56144](https://github.com/ClickHouse/ClickHouse/issues/56144). [#56240](https://github.com/ClickHouse/ClickHouse/pull/56240) ([Nikolay Degterinsky](https://github.com/evillique)).
* تمت مشاركة موارد محلل format بين قراءة ملف البيانات وملف position delete في جداول Iceberg لتقليل عمليات تخصيص الذاكرة. [#94701](https://github.com/ClickHouse/ClickHouse/pull/94701) ([Yang Jiang](https://github.com/Ted-Jiang)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### إصلاح خطأ (خلل ظاهر للمستخدم في إصدار مستقر رسمي)
</div>

* يُصلح خطأً كانت فيه معالجات الاستعلامات المعرّفة مسبقًا تفسّر المسافات البيضاء اللاحقة على أنها بيانات أثناء عمليات insert. [#83604](https://github.com/ClickHouse/ClickHouse/pull/83604) ([Fabian Ponce](https://github.com/FabianPonce)).
* يُصلح الخطأ INCOMPATIBLE\_TYPE\_OF\_JOIN في Join storage عند تطبيق تحسين تحويل outer join إلى inner join. يحلّ [#80794](https://github.com/ClickHouse/ClickHouse/issues/80794). [#84292](https://github.com/ClickHouse/ClickHouse/pull/84292) ([Vladimir Cherkasov](https://github.com/vdimir)).
* يُصلح الاستثناء "Invalid number of rows in Chunk" عند استخدام hash join مع تفعيل `allow_experimental_join_right_table_sorting`. [#86440](https://github.com/ClickHouse/ClickHouse/pull/86440) ([yanglongwei](https://github.com/ylw510)).
* يستبدل أسماء الملفات دائمًا بقيم hash في MergeTree إذا كان filesystem غير حساس لحالة الأحرف. سابقًا، كان هذا قد يؤدي في الأنظمة ذات filesystem غير الحساس لحالة الأحرف (مثل MacOS) إلى تلف البيانات عندما تختلف عدة أسماء column/subcolumn فقط في حالة الأحرف. [#86559](https://github.com/ClickHouse/ClickHouse/pull/86559) ([Pavel Kruglov](https://github.com/Avogar)).
* يضيف تحققًا كاملًا من permissions في مرحلة CREATE للاستعلام الأساسي داخل materialized view. [#89180](https://github.com/ClickHouse/ClickHouse/pull/89180) ([pufit](https://github.com/pufit)).
* يُصلح crash في الدالة `icebergHash` عند استخدام argument ثابت. [#90335](https://github.com/ClickHouse/ClickHouse/pull/90335) ([Michael Kolupaev](https://github.com/al13n321)).
* يُصلح logical error يحدث عندما تُعدّل mutation من دون transaction أجزاء parts ضمن transaction نشطة ثم يجري التراجع عنها في النهاية. [#90469](https://github.com/ClickHouse/ClickHouse/pull/90469) ([Shaohua Wang](https://github.com/tiandiwonder)).
* يحدّث `system.warnings` بشكل صحيح بعد تحويل database عادية إلى database من نوع atomic. [#90473](https://github.com/ClickHouse/ClickHouse/pull/90473) ([sdk2](https://github.com/sdk2)).
* يُصلح assertion عند القراءة من Parquet file، عندما يُستخدم جزء من تعبير **prewhere** أيضًا في موضع آخر من الاستعلام. [#90635](https://github.com/ClickHouse/ClickHouse/pull/90635) ([Max Kainov](https://github.com/maxknv)).
* يُصلح crash في cluster أحادي العقدة عند القراءة من Iceberg في وضع split-by-buckets. يُغلق هذا [#90913](https://github.com/ClickHouse/ClickHouse/issues/90913#issue-3668583963). [#91553](https://github.com/ClickHouse/ClickHouse/pull/91553) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* يُصلح logical error محتملًا في Log engine أثناء قراءة subcolumns. يُغلق [#91710](https://github.com/ClickHouse/ClickHouse/issues/91710). [#91711](https://github.com/ClickHouse/ClickHouse/pull/91711) ([Pavel Kruglov](https://github.com/Avogar)).
* يُصلح الخطأ Logical error: 'Storage does not support transaction' أثناء ATTACH AS REPLICATED. [#91772](https://github.com/ClickHouse/ClickHouse/pull/91772) ([Shaohua Wang](https://github.com/tiandiwonder)).
* إصلاح لعمل Runtime Filters بشكل غير صحيح عندما يحتوي LEFT ANTI JOIN على post-condition إضافي. [#91824](https://github.com/ClickHouse/ClickHouse/pull/91824) ([Alexander Gololobov](https://github.com/davenger)).
* يُصلح خطأً يحدث عند وجود مقارنة null-safe تتضمن النوع Nothing. يُغلق [#91834](https://github.com/ClickHouse/ClickHouse/issues/91834). يُغلق [#84870](https://github.com/ClickHouse/ClickHouse/issues/84870). يُغلق [#91821](https://github.com/ClickHouse/ClickHouse/issues/91821). [#91884](https://github.com/ClickHouse/ClickHouse/pull/91884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* يُصلح أخطاء في فك ترميز DELTA\_BYTE\_ARRAY في native Parquet reader تؤثر في بيانات String كثيرة التكرار. [#91929](https://github.com/ClickHouse/ClickHouse/pull/91929) ([Daniel Muino](https://github.com/dmuino)).
* خزّن الـ schema فقط للملف الذي استُنتجت منه ضمن globs بدلًا من جميع الملفات أثناء schema inference. يُغلق [#91745](https://github.com/ClickHouse/ClickHouse/issues/91745). [#92006](https://github.com/ClickHouse/ClickHouse/pull/92006) ([Pavel Kruglov](https://github.com/Avogar)).
* أصلِح الخطأ `Couldn't pack tar archive: Failed to write all bytes` الناتج عن حجم header غير الصحيح لمدخل الأرشيف. يُصلح [#89075](https://github.com/ClickHouse/ClickHouse/issues/89075). [#92122](https://github.com/ClickHouse/ClickHouse/pull/92122) ([Julia Kartseva](https://github.com/jkartseva)).
* حرّر stream الطلب في insert select لمنع إغلاق HTTP connection. [#92175](https://github.com/ClickHouse/ClickHouse/pull/92175) ([Sema Checherinda](https://github.com/CheSema)).
* أصلِح logical error في queries التي تتضمن عدة JOINs مع clause ‏`USING` و`join_use_nulls`. [#92251](https://github.com/ClickHouse/ClickHouse/pull/92251) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أصلِح logical error أثناء إعادة ترتيب join مع join\_use\_nulls، ويُغلق [https://github.com/clickhouse/clickhouse/issues/90795](https://github.com/clickhouse/clickhouse/issues/90795). [#92289](https://github.com/ClickHouse/ClickHouse/pull/92289) ([Vladimir Cherkasov](https://github.com/vdimir)).
* أصلِح عدم اتساق تنسيق AST لـ arrayElement مع negate literal. يُغلق [#92288](https://github.com/ClickHouse/ClickHouse/issues/92288) يُغلق [#92212](https://github.com/ClickHouse/ClickHouse/issues/92212) يُغلق [#91832](https://github.com/ClickHouse/ClickHouse/issues/91832) يُغلق [#91789](https://github.com/ClickHouse/ClickHouse/issues/91789) يُغلق [#91735](https://github.com/ClickHouse/ClickHouse/issues/91735) يُغلق [#88495](https://github.com/ClickHouse/ClickHouse/issues/88495) يُغلق [#92386](https://github.com/ClickHouse/ClickHouse/issues/92386). [#92293](https://github.com/ClickHouse/ClickHouse/pull/92293) ([Pavel Kruglov](https://github.com/Avogar)).
* أصلِح احتمال حدوث crash مع الإعداد `join_on_disk_max_files_to_merge`. [#92335](https://github.com/ClickHouse/ClickHouse/pull/92335) ([Bharat Nallan](https://github.com/bharatnc)).
* issue ذات صلة: #[https://github.com/ClickHouse/support-escalation/issues/6365](https://github.com/ClickHouse/support-escalation/issues/6365). [#92339](https://github.com/ClickHouse/ClickHouse/pull/92339) ([Tuan Pham Anh](https://github.com/tuanpach)).
* أصلِح missing access check في `SYSTEM SYNC FILE CACHE`. يُغلق [#92101](https://github.com/ClickHouse/ClickHouse/issues/92101). [#92372](https://github.com/ClickHouse/ClickHouse/pull/92372) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أصلِح تمرير `count_distinct_optimization` عبر window functions وعبر عدة arguments. [#92376](https://github.com/ClickHouse/ClickHouse/pull/92376) ([Raúl Marín](https://github.com/Algunenano)).
* أصلِح الخطأ "Cannot write to finalized buffer" عند استخدام aggregate functions معينة مع window functions. يُغلق [#91415](https://github.com/ClickHouse/ClickHouse/issues/91415). [#92395](https://github.com/ClickHouse/ClickHouse/pull/92395) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* أصلِح logical error مع `CREATE TABLE ... AS urlCluster()` وdatabase engine ‏`Replicated`. يُغلق [#92216](https://github.com/ClickHouse/ClickHouse/issues/92216). [#92418](https://github.com/ClickHouse/ClickHouse/pull/92418) ([Kseniia Sumarokova](https://github.com/kssenii)).
* ورّث إعدادات معلومات serialization الخاصة بالـ part المصدر أثناء mutation في MergeTree. وهذا يُصلح احتمال ظهور نتيجة query غير صحيحة على part mutated بعد تغييرات في serialization الخاصة بـ data types. [#92419](https://github.com/ClickHouse/ClickHouse/pull/92419) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعارض محتمل بين عمود وعمود فرعي يحملان الاسم نفسه، ما قد يؤدي إلى استخدام serialization غير صحيح وفشل الاستعلامات. يُغلق [#90219](https://github.com/ClickHouse/ClickHouse/issues/90219). يُغلق [#85161](https://github.com/ClickHouse/ClickHouse/issues/85161). [#92453](https://github.com/ClickHouse/ClickHouse/pull/92453) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح `LOGICAL_ERROR` كان يحدث بسبب تعديل غير مقصود في query plan عند تحويل OUTER JOIN إلى INNER JOIN. كما جرى تخفيف متطلبات هذا التحسين ليصبح قابلاً للتطبيق أيضاً في الحالات التي تُطبَّق فيها الدوال الحقنية على مفاتيح التجميع أثناء joins. [#92503](https://github.com/ClickHouse/ClickHouse/pull/92503) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح الخطأ المحتمل `SIZES_OF_COLUMNS_DOESNT_MATCH` أثناء فرز عمود Tuple فارغ. يُغلق [#92422](https://github.com/ClickHouse/ClickHouse/issues/92422). [#92520](https://github.com/ClickHouse/ClickHouse/pull/92520) ([Pavel Kruglov](https://github.com/Avogar)).
* التحقق من وجود paths غير متوافقة من حيث النوع في JSON type. يُغلق [#91577](https://github.com/ClickHouse/ClickHouse/issues/91577). [#92539](https://github.com/ClickHouse/ClickHouse/pull/92539) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح حالة deadlock في SHOW CREATE DATABASE لقاعدة بيانات Backup. [#92541](https://github.com/ClickHouse/ClickHouse/pull/92541) ([Azat Khuzhin](https://github.com/azat)).
* استخدام رمز الخطأ الصحيح عند التحقق من hypothesis index. [#92559](https://github.com/ClickHouse/ClickHouse/pull/92559) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح resolution للأعمدة الفرعية الديناميكية في aliases الأعمدة داخل analyzer. في السابق، كان العمود الفرعي الديناميكي في alias العمود يُغلَّف داخل `getSubcolumn`، وفي بعض الحالات لم يكن يمكن resolve له إطلاقاً. يُغلق [#91434](https://github.com/ClickHouse/ClickHouse/issues/91434). [#92583](https://github.com/ClickHouse/ClickHouse/pull/92583) ([Pavel Kruglov](https://github.com/Avogar)).
* منع حدوث crash في tokens() عندما تكون الوسيطة الثانية بقيمة NULL. [#92586](https://github.com/ClickHouse/ClickHouse/pull/92586) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح crash محتمل ناتج عن mutation موضعي للأعمدة الثابتة الأساسية في PREWHERE. كان يمكن أن يحدث ذلك عند تقليص العمود (`IColumn::shrinkToFit`) أو تطبيق filter عليه (`IColumn::filter`)، وهو ما كان يمكن أن يُحفَّز بالتزامن من عدة threads. [#92588](https://github.com/ClickHouse/ClickHouse/pull/92588) ([Arsen Muk](https://github.com/arsenmuk)).
* جرى تعطيل إنشاء text indexes وmaterializing لها مؤقتاً على الجداول التي تحتوي على parts كبيرة (أكثر من 4,294,967,295 صفاً). يمنع هذا القيد ظهور نتائج استعلامات غير صحيحة، لأن التطبيق الحالي للفهرس لا يدعم بعد مثل هذه الأجزاء الكبيرة. [#92644](https://github.com/ClickHouse/ClickHouse/pull/92644) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح logical error من نوع `Too large size (A) passed to allocator` أثناء تنفيذ عمليات JOIN. يُغلق [#92043](https://github.com/ClickHouse/ClickHouse/issues/92043). [#92667](https://github.com/ClickHouse/ClickHouse/pull/92667) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إزالة خلل كان يؤدي إلى أن indexes من نوع `ngrambf_v1` ذات طول ngram (المعامل الأول) > 8 كانت تطرح استثناءً. [#92672](https://github.com/ClickHouse/ClickHouse/pull/92672) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح استثناء غير ملتقط أثناء إعادة تحميل named collections في الخلفية عند استخدام تخزين ZooKeeper. يُغلق [https://github.com/ClickHouse/clickhouse-private/issues/44180](https://github.com/ClickHouse/clickhouse-private/issues/44180). [#92717](https://github.com/ClickHouse/ClickHouse/pull/92717) ([Kseniia Sumarokova](https://github.com/kssenii)).
* يُعيد العمل على المنطق غير الصحيح في التحقق من grants الوصول الخاصة بمنح wildcard. كانت المحاولة السابقة [https://github.com/ClickHouse/ClickHouse/pull/90928](https://github.com/ClickHouse/ClickHouse/pull/90928) تعالج ثغرة حرجة، لكنها كانت مقيِّدة أكثر من اللازم، ما أدى إلى فشل بعض عبارات `GRANT` الخاصة بـ wildcard بسبب عمليات `REVOKE` غير مرتبطة. [#92725](https://github.com/ClickHouse/ClickHouse/pull/92725) ([pufit](https://github.com/pufit)).
* إصلاح خطأ في منطق تخطي البيانات عند استخدام `not match(...)` في `WHERE`، ما كان يؤدي إلى نتائج غير صحيحة. يغلق [#92492](https://github.com/ClickHouse/ClickHouse/issues/92492). [#92726](https://github.com/ClickHouse/ClickHouse/pull/92726) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* عدم محاولة حذف الأدلة المؤقتة عند بدء التشغيل إذا أُنشئ جدول MergeTree على قرص للقراءة فقط. [#92748](https://github.com/ClickHouse/ClickHouse/pull/92748) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح الخطأ "Cannot add action to empty ExpressionActionsChain" في ALTER TABLE REWRITE PARTS ‏(v2). [#92754](https://github.com/ClickHouse/ClickHouse/pull/92754) ([Azat Khuzhin](https://github.com/azat)).
* تجنّب التعطل بسبب القراءة من `Connection` منقطعة. [#92807](https://github.com/ClickHouse/ClickHouse/pull/92807) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح الخطأ المنطقي ` Failed to set file processing within 100 retries` في `S3Queue` ضمن وضع `Ordered`. وقد استُبدل الآن بتحذير. كان يمكن أن يحدث هذا الخطأ قبل الإصدار 25.10 إذا انتهت صلاحية جلسة Keeper، لكنه سيظل مجرد تحذير في إصدارات 25.10+ أيضًا، إذ لا يزال من الممكن نظريًا ظهور هذا الخطأ عند ارتفاع تزامن المعالجة في وضع `Ordered`. [#92814](https://github.com/ClickHouse/ClickHouse/pull/92814) ([Kseniia Sumarokova](https://github.com/kssenii)).
* في السابق، كانت بعض queries التي تستخدم sharding بالمفتاح الأساسي PK مع شرط غير صحيح تفشل. الآن لم تعد كذلك. هذا مطلوب من أجل [https://github.com/ClickHouse/ClickHouse/pull/89313](https://github.com/ClickHouse/ClickHouse/pull/89313). [#92815](https://github.com/ClickHouse/ClickHouse/pull/92815) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح حساب الأحجام غير المضغوطة للفهارس النصية في جدول `system.parts`. [#92832](https://github.com/ClickHouse/ClickHouse/pull/92832) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح استخدام الفهرس الأساسي في lightweight updates التي تحتوي على عبارة `IN` مع استعلامات فرعية ضمن predicate لعبارة `WHERE`. [#92838](https://github.com/ClickHouse/ClickHouse/pull/92838) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح إنشاء type hint للمسار 'skip' في JSON. يغلق [#92731](https://github.com/ClickHouse/ClickHouse/issues/92731). [#92842](https://github.com/ClickHouse/ClickHouse/pull/92842) ([Pavel Kruglov](https://github.com/Avogar)).
* في محرك الجدول S3، يجب تجنّب التخزين المؤقت لمفتاح partition إذا كانت هناك دوال غير حتمية. [#92844](https://github.com/ClickHouse/ClickHouse/pull/92844) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح خطأ محتمل `FILE_DOESNT_EXIST` بعد mutation لعمود sparse مع `ratio_of_defaults_for_sparse_serialization=0.0`. يغلق [#92633](https://github.com/ClickHouse/ClickHouse/issues/92633). [#92860](https://github.com/ClickHouse/ClickHouse/pull/92860) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح schema inference في Parquet في قارئ Parquet القديم (غير المستخدم افتراضيًا) عندما يأتي عمود JSON بعد عمود Tuple. وإصلاح فشل قارئ Parquet القديم (غير المستخدم افتراضيًا) مع tuples الفارغة. [#92867](https://github.com/ClickHouse/ClickHouse/pull/92867) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح خطأ منطقي عند وجود عدة عمليات join على شرط ثابت ومع `join_use_nulls`. إغلاق [#92640](https://github.com/ClickHouse/ClickHouse/issues/92640). [#92892](https://github.com/ClickHouse/ClickHouse/pull/92892) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح الخطأ المحتمل `NOT_FOUND_COLUMN_IN_BLOCK` أثناء insert إلى جدول يحتوي على عمود فرعي ضمن partition expression. إغلاق [#93210](https://github.com/ClickHouse/ClickHouse/issues/93210). إغلاق [#83406](https://github.com/ClickHouse/ClickHouse/issues/83406). [#92905](https://github.com/ClickHouse/ClickHouse/pull/92905) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الخطأ `NO_SUCH_COLUMN_IN_TABLE` في محرك Merge فوق الجداول التي تحتوي على aliases. إغلاق [#88665](https://github.com/ClickHouse/ClickHouse/issues/88665). [#92910](https://github.com/ClickHouse/ClickHouse/pull/92910) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح حالة `NULL != NULL` في full\_sorting\_join على عمود LowCardinality(Nullable(T)). [#92924](https://github.com/ClickHouse/ClickHouse/pull/92924) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح عدة حالات crash أثناء merges لفهارس نصية في جداول `MergeTree`. [#92925](https://github.com/ClickHouse/ClickHouse/pull/92925) ([Anton Popov](https://github.com/CurtizJ)).
* استعادة wrappers الخاصة بـ LowCardinality في نتائج تعبيرات SET عند الحاجة أثناء aggregation الخاصة بـ TTL، لمنع الاستثناءات أثناء تحسين الجدول. [#92971](https://github.com/ClickHouse/ClickHouse/pull/92971) ([Seva Potapov](https://github.com/seva-potapov)).
* إصلاح خطأ منطقي أثناء index analysis عند استخدام Array فارغة في الدالة `has`. إغلاق [#92906](https://github.com/ClickHouse/ClickHouse/issues/92906). [#92995](https://github.com/ClickHouse/ClickHouse/pull/92995) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح احتمال حدوث تعليق عند إنهاء background schedule pool (وقد يؤدي ذلك إلى تعليق server عند الإغلاق). [#93008](https://github.com/ClickHouse/ClickHouse/pull/93008) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الخطأ المحتمل FILE\_DOESNT\_EXIST بعد mutation على عمود sparse عندما جرى تغيير الإعداد `ratio_of_defaults_for_sparse_serialization` إلى `1.0` عبر alter. [#93016](https://github.com/ClickHouse/ClickHouse/pull/93016) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح خلل في منطق data skipping عند استخدام `not materialize(...)` أو `not CAST(...)` في WHERE، ما يؤدي إلى نتائج غير صحيحة. إغلاق [#88536](https://github.com/ClickHouse/ClickHouse/issues/88536). [#93017](https://github.com/ClickHouse/ClickHouse/pull/93017) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح احتمال استخدام outdated parts بسبب سباق TOCTOU للأجزاء المشتركة. [#93022](https://github.com/ClickHouse/ClickHouse/pull/93022) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح crash عند إلغاء تسلسل aggregate state الخاصة بـ `groupConcat` إذا كانت معطوبة وتحتوي على offsets خارج الحدود. [#93028](https://github.com/ClickHouse/ClickHouse/pull/93028) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح ترك connection في حالة معطوبة بعد الإلغاء المبدئي للاستعلامات الموزعة. [#93029](https://github.com/ClickHouse/ClickHouse/pull/93029) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح نتائج join عندما يكون join key في الطرف الأيمن عمودًا sparse. هذا يُغلق [#92920](https://github.com/ClickHouse/ClickHouse/issues/92920). لم أتمكن من إعادة إنتاج الخلل إلا مع `set compatibility='23.3'`. لست متأكدًا مما إذا كان ينبغي backport له. [#93038](https://github.com/ClickHouse/ClickHouse/pull/93038) ([Amos Bird](https://github.com/amosbird)).
* إصلاح مشكلة محتملة تتمثل في `Cannot finalize buffer after cancellation` في `estimateCompressionRatio()`. إصلاح: [#87380](https://github.com/ClickHouse/ClickHouse/issues/87380). [#93068](https://github.com/ClickHouse/ClickHouse/pull/93068) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح عمليات دمج الفهارس النصية المبنية فوق تعبيرات معقدة (مثل `concat(col1, col2)`). [#93073](https://github.com/ClickHouse/ClickHouse/pull/93073) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح تطبيق projection عندما يحتوي filter على subcolumns. إغلاق [#92882](https://github.com/ClickHouse/ClickHouse/issues/92882). [#93141](https://github.com/ClickHouse/ClickHouse/pull/93141) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح logical error في بعض الحالات التي تحدث عند إضافة join runtime filters إلى query plan. وكان السبب هو إرجاع أعمدة const مكررة بشكل غير صحيح من أحد طرفي join. [#93144](https://github.com/ClickHouse/ClickHouse/pull/93144) ([Alexander Gololobov](https://github.com/davenger)).
* كانت الدالة الخاصة `__applyFilter` المستخدمة من قِبل join runtime filters تُرجع ILLEGAL\_TYPE\_OF\_ARGUMENT في بعض الحالات الصحيحة. [#93187](https://github.com/ClickHouse/ClickHouse/pull/93187) ([Alexander Gololobov](https://github.com/davenger)).
* منع انهيار أعمدة interpolated المختلفة إلى العمود نفسه داخل block عندما تكون أعمدة interpolated في الواقع aliases للعمود نفسه. [#93197](https://github.com/ClickHouse/ClickHouse/pull/93197) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* عدم إضافة runtime filter عند إجراء join مع right table ممتلئ مسبقًا. [#93211](https://github.com/ClickHouse/ClickHouse/pull/93211) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح تنظيف watches الدائمة في Keeper بعد انتهاء session. هذا يغلق [#92480](https://github.com/ClickHouse/ClickHouse/issues/92480). [#93213](https://github.com/ClickHouse/ClickHouse/pull/93213) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح ORDER BY بحسب Tuple في Iceberg. هذا يغلق [#92977](https://github.com/ClickHouse/ClickHouse/issues/92977). [#93225](https://github.com/ClickHouse/ClickHouse/pull/93225) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح خلل في إعداد S3Queue `s3queue_migrate_old_metadata_to_buckets`. إغلاق [#93392](https://github.com/ClickHouse/ClickHouse/issues/93392)، [#93196](https://github.com/ClickHouse/ClickHouse/issues/93196)، [#81739](https://github.com/ClickHouse/ClickHouse/issues/81739). [#93232](https://github.com/ClickHouse/ClickHouse/pull/93232) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إزالة الأعمدة غير المستخدمة عند إعادة بناء projection أثناء merge. وهذا يقلل memory usage وينشئ parts مؤقتة أقل. [#93233](https://github.com/ClickHouse/ClickHouse/pull/93233) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح إزالة الأعمدة غير المستخدمة من subqueries في وجود subquery scalar مترابط. قبل هذا الإصلاح، كان يمكن إزالة العمود إذا كان مستخدمًا فقط داخل subquery المترابط، وكان query سيفشل بالخطأ `NOT_FOUND_COLUMN_IN_BLOCK`. [#93273](https://github.com/ClickHouse/ClickHouse/pull/93273) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح احتمال فقدان subcolumn في MV أثناء alter لـ source table. إغلاق [#93231](https://github.com/ClickHouse/ClickHouse/issues/93231). [#93276](https://github.com/ClickHouse/ClickHouse/pull/93276) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تخطيط الاستعلام لمحرك الجداول `Merge` مع analyzer، والذي كان قد يُطلق الخطأ ILLEGAL\_COLUMN مع `hostName()` عند دمج الجداول المحلية والجداول البعيدة/Distributed. يُغلق [#92059](https://github.com/ClickHouse/ClickHouse/issues/92059). [#93286](https://github.com/ClickHouse/ClickHouse/pull/93286) ([Jinlin](https://github.com/withlin)).
* إصلاح حالة كانت فيها NOT IN مع وسائط Array غير الثابتة تُرجع قيمة غير صحيحة، مع إضافة دعم دوال Array غير الثابتة. يُغلق [#14980](https://github.com/ClickHouse/ClickHouse/issues/14980). [#93314](https://github.com/ClickHouse/ClickHouse/pull/93314) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* إصلاح الخطأ `Not found column` في التحسين `use_top_k_dynamic_filtering`. يُصلح [#93186](https://github.com/ClickHouse/ClickHouse/issues/93186). [#93316](https://github.com/ClickHouse/ClickHouse/pull/93316) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* إصلاح إعادة بناء text indexes المُنشأة فوق subcolumns. [#93326](https://github.com/ClickHouse/ClickHouse/pull/93326) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح التعامل مع Array فارغة كوسيطة ثانية في الدالتين `hasAllTokens` و`hasAnyTokens`. [#93328](https://github.com/ClickHouse/ClickHouse/pull/93328) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح خطأ منطقي عند استخدام runtime filters في query تحتوي على totals لجدول الجانب الأيمن. [#93330](https://github.com/ClickHouse/ClickHouse/pull/93330) ([Alexander Gololobov](https://github.com/davenger)).
* لم يعد الخادم يتعطل إذا استُدعيت الدالة `tokens` باستخدام معاملات tokenizer غير ثابتة (المعاملات الثاني والثالث والرابع)، مثل `SELECT tokens(NULL, 1, materialize(1))`. [#93383](https://github.com/ClickHouse/ClickHouse/pull/93383) ([Robert Schulze](https://github.com/rschu1ze)).
* إصلاح ثغرة تجاوز صحيح في إلغاء تسلسل state الخاصة بـ `groupConcat`، والتي كان يمكن أن تتسبب في مشكلات سلامة الذاكرة باستخدام aggregate states مُعدّة خصيصًا. [#93426](https://github.com/ClickHouse/ClickHouse/pull/93426) ([Raufs Dunamalijevs](https://github.com/rienath)).
* إصلاح تحليل text index على array columns عندما لا يحتوي الفهرس على أي tokens (إذا كانت جميع المصفوفات فارغة أو كانت جميع tokens يتخطاها tokenizer). [#93457](https://github.com/ClickHouse/ClickHouse/pull/93457) ([Anton Popov](https://github.com/CurtizJ)).
* تجنّب تسجيل الدخول عبر oauth في ClickHouse Client عندما تكون username/password موجودتَين ضمن connection string. [#93459](https://github.com/ClickHouse/ClickHouse/pull/93459) ([Krishna Mannem](https://github.com/kcmannem)).
* إصلاح دعم credentials المورَّدة لـ Azure ADLS Gen2 في DataLakeCatalog - تحليل مفاتيح `adls.sas-token.*` من REST catalogs الخاصة بـ Iceberg وإصلاح parsing لعناوين URL من نوع ABFSS. [#93477](https://github.com/ClickHouse/ClickHouse/pull/93477) ([Karun Anantharaman](https://github.com/karunmotorq)).
* إصلاح دعم GLOBAL IN مع analyzer (إذ كانت المجموعة في السابق تُنشأ مرة أخرى على العقدة البعيدة). [#93507](https://github.com/ClickHouse/ClickHouse/pull/93507) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح استخراج subcolumn أثناء إلغاء التسلسل مباشرةً إلى أعمدة Sparse. [#93512](https://github.com/ClickHouse/ClickHouse/pull/93512) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح direct read من text index مع استعلامات البحث المكررة. [#93516](https://github.com/ClickHouse/ClickHouse/pull/93516) ([Anton Popov](https://github.com/CurtizJ)).
* إصلاح الخطأ NOT\_FOUND\_COLUMN\_IN\_BLOCK عند تمكين runtime filter وكانت الجداول المربوطة تُرجع العمود نفسه عدة مرات (مثل SELECT a, a, a FROM t). [#93526](https://github.com/ClickHouse/ClickHouse/pull/93526) ([Alexander Gololobov](https://github.com/davenger)).
* إصلاح خلل كان يجعل `clickhouse-client` يطلب كلمة المرور مرتين عند الاتصال باستخدام ssh. [#93547](https://github.com/ClickHouse/ClickHouse/pull/93547) ([Isak Ellmer](https://github.com/spinojara)).
* التأكد من إنهاء `zookeeper` بشكل صحيح عند إيقاف التشغيل (مع إصلاح احتمال التعليق أثناء الإيقاف في حالات نادرة جدًا). [#93602](https://github.com/ClickHouse/ClickHouse/pull/93602) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح `LOGICAL_ERROR` عند استعادة `ReplicatedMergeTree` في حال حدوث حالة تسابق في إزالة التكرار. [#93612](https://github.com/ClickHouse/ClickHouse/pull/93612) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح استخدام عمود Sparse لتحديث TTL أثناء فك التسلسل المباشر إلى أعمدة Sparse في بعض تنسيقات الإدخال. ويعالج ذلك احتمال حدوث خطأ منطقي `Unexpected type of result TTL column`. [#93619](https://github.com/ClickHouse/ClickHouse/pull/93619) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح تعطل دوال H3 index أحيانًا أو توقفها عند استدعائها بمدخلات غير صالحة. [#93657](https://github.com/ClickHouse/ClickHouse/pull/93657) ([Michael Kolupaev](https://github.com/al13n321)).
* أدى استخدام الفهرس `ngram_bf` على بيانات غير UTF-8 إلى قراءة ذاكرة غير مهيأة، مع قيم قد تنتهي إلى بنية الفهرس الناتجة. يغلق [#92576](https://github.com/ClickHouse/ClickHouse/issues/92576). [#93663](https://github.com/ClickHouse/ClickHouse/pull/93663) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* التحقق من أن حجم المخزن المؤقت بعد فك الضغط مطابق لما هو متوقع. [#93690](https://github.com/ClickHouse/ClickHouse/pull/93690) ([Raúl Marín](https://github.com/Algunenano)).
* منع المستخدمين من الحصول على قائمة الأعمدة من جدول من دون التحقق من إذن `SHOW COLUMNS` باستخدام محرك الجدول `merge`. [#93695](https://github.com/ClickHouse/ClickHouse/pull/93695) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* إصلاح materialization لفهارس skip المُنشأة فوق subcolumns. [#93708](https://github.com/ClickHouse/ClickHouse/pull/93708) ([Anton Popov](https://github.com/CurtizJ)).
* نخزن المؤشرات المشتركة الخاصة بوحدات التخزين في `QueryPipeline::resources::storage_holders` للتأكد من أن كائنات `IStorage` لا تُدمَّر ما دام `PipelineExecutor` قيد التشغيل. [#93746](https://github.com/ClickHouse/ClickHouse/pull/93746) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح إرفاق قواعد بيانات Replicated عند تغيّر مضيف interserver بعد إعادة التشغيل. [#93779](https://github.com/ClickHouse/ClickHouse/pull/93779) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح assert `!read_until_position` في `ReadBufferFromS3` الذي كان يحدث عند تفعيل الذاكرة المؤقتة. [#93809](https://github.com/ClickHouse/ClickHouse/pull/93809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح خطأ منطقي في حالة نادرة عند استخدام Tuple فارغ مع عمود `Map`. يغلق [#93784](https://github.com/ClickHouse/ClickHouse/issues/93784). [#93814](https://github.com/ClickHouse/ClickHouse/pull/93814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح تلف `_part_offset` عند إعادة بناء projections أثناء merges، وتحسين معالجة projection عبر تجنب القراءات غير الضرورية للعمود `_part_offset` وتخطي الأعمدة غير المطلوبة في حسابات projection. ويواصل ذلك التحسينات التي قُدمت في [#93233](https://github.com/ClickHouse/ClickHouse/issues/93233). [#93827](https://github.com/ClickHouse/ClickHouse/pull/93827) ([Amos Bird](https://github.com/amosbird)).
* إزالة معالجة 'Bad version'. [#93843](https://github.com/ClickHouse/ClickHouse/pull/93843) ([Anton Ivashkin](https://github.com/ianton-ru)).
* إصلاح عدم عمل `optimize_inverse_dictionary_lookup` مع الاستعلام الموزع عندما يكون المفتاح من نوع عددي صحيح موقّع. يغلق [#93259](https://github.com/ClickHouse/ClickHouse/issues/93259). [#93848](https://github.com/ClickHouse/ClickHouse/pull/93848) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح عدم عمل `lag`/`lead` مع استعلام `remote()` الموزع. يغلق [#90014](https://github.com/ClickHouse/ClickHouse/issues/90014). [#93858](https://github.com/ClickHouse/ClickHouse/pull/93858) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح خلل في توزيع system instrument. [#93937](https://github.com/ClickHouse/ClickHouse/pull/93937) ([Pablo Marcos](https://github.com/pamarcos)).
* في [https://github.com/ClickHouse/ClickHouse/pull/89173،](https://github.com/ClickHouse/ClickHouse/pull/89173،) أضفنا حقلاً إضافياً إلى البنية التي يرسلها `TraceSender` عبر قناة داخلية. لكن لم يتم تحديث حجم المخزن المؤقت ([هنا](https://github.com/ClickHouse/ClickHouse/pull/89173/changes#diff-36ecfac5cde34c92c031652d8a77f0d12782cd5d43e68d6ef159e6d46a54224fL44))، ولذلك أصبحنا نكتب إلى المخزن المؤقت بيانات أكثر مما يسمح به `buffer_size`، ما يؤدي إلى عدة عمليات flush. وبما أن `TraceSender::send` يُستدعى من خيوط تنفيذ مختلفة، فقد تتداخل عمليات flush الخاصة بهذه الخيوط، مما يخلّ بالخاصية التي تعتمد عليها جهة الاستقبال (`TraceCollector`). [#93966](https://github.com/ClickHouse/ClickHouse/pull/93966) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح تحويل النوع إلى النوع الأعلى أثناء عملية join في التخزين `Join` مع عبارة `USING`. يصلح [#91672](https://github.com/ClickHouse/ClickHouse/issues/91672). يصلح [#78572](https://github.com/ClickHouse/ClickHouse/issues/78572). [#94000](https://github.com/ClickHouse/ClickHouse/pull/94000) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح عدم إضافة FilterStep بالشكل الصحيح عند تطبيق join runtime filter على Merge table. [#94021](https://github.com/ClickHouse/ClickHouse/pull/94021) ([Alexander Gololobov](https://github.com/davenger)).
* كان من الممكن أن يُرجع استعلام `SELECT` يحتوي على predicate على عدة أعمدة مع bloom filter skip indexes، ومع وجود الشرطين `OR` و`NOT`، نتائج غير متسقة. تم إصلاح ذلك الآن. [#94026](https://github.com/ClickHouse/ClickHouse/pull/94026) ([Shankar Iyer](https://github.com/shankar-iyer)).
* إصلاح CLEAR للعمود مع الفهارس التابعة. [#94057](https://github.com/ClickHouse/ClickHouse/pull/94057) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح استخدام قيمة غير مهيأة في `ReadWriteBufferFromHTTP`. [#94058](https://github.com/ClickHouse/ClickHouse/pull/94058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تحقق غير صحيح من المسارات ذات الأنواع المحددة في JSON. أُضيف هذا التحقق في [https://github.com/ClickHouse/ClickHouse/pull/92842](https://github.com/ClickHouse/ClickHouse/pull/92842) وقد يؤدي إلى حدوث خطأ أثناء بدء تشغيل الجداول الحالية. [#94070](https://github.com/ClickHouse/ClickHouse/pull/94070) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح الانهيار أثناء تحليل المرشح في وجود `OUTER JOIN`. يصلح [#90979](https://github.com/ClickHouse/ClickHouse/issues/90979). [#94080](https://github.com/ClickHouse/ClickHouse/pull/94080) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح دقة `uniqTheta` عند استخدام مفاتيح aggregation من نوع UInt8 بالتوازي (`max_threads` > 1 - الافتراضي). [#94095](https://github.com/ClickHouse/ClickHouse/pull/94095) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح الانهيار الناتج عن استثناء تم طرحه من استدعاء `socket.setBlocking(true)` داخل `SCOPE_EXIT`. [#94100](https://github.com/ClickHouse/ClickHouse/pull/94100) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح فقدان البيانات عندما يزيل `DROP PARTITION` الأجزاء التي أنشأتها إدخالات log لاحقة في ReplicatedMergeTree. [#94123](https://github.com/ClickHouse/ClickHouse/pull/94123) ([Tuan Pham Anh](https://github.com/tuanpach)).
* إصلاح المعالجة غير الصحيحة في parquet reader v3 للمصفوفات التي تتجاوز حدود الصفحة. يحدث ذلك مثلًا في الملفات التي يكتبها Arrow من دون تمكين page statistics أو page index. يؤثر هذا فقط في الأعمدة من نوع البيانات Array. ومن الأعراض المحتملة أن تُقتطع مصفوفة واحدة تقريبًا كل \~1 MB من البيانات. إلى حين تطبيق هذا الإصلاح، استخدم هذا الإعداد كحل بديل: `input_format_parquet_use_native_reader_v3 = 0`. [#94125](https://github.com/ClickHouse/ClickHouse/pull/94125) ([Michael Kolupaev](https://github.com/al13n321)).
* إصلاح العدد الزائد من watches في ReplicatedMergeTree أثناء انتظار log entry. [#94133](https://github.com/ClickHouse/ClickHouse/pull/94133) ([Azat Khuzhin](https://github.com/azat)).
* جعل الدوال `arrayShuffle` و`arrayPartialShuffle` و`arrayRandomSample` تُجسِّد الأعمدة الثابتة بحيث تحصل الصفوف المختلفة على نتائج مختلفة. [#94134](https://github.com/ClickHouse/ClickHouse/pull/94134) ([Joanna Hulboj](https://github.com/jh0x)).
* إصلاح data race عند تقييم table functions داخل materialized views. [#94171](https://github.com/ClickHouse/ClickHouse/pull/94171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح إلغاء مرجع nullptr في محركات قاعدة البيانات `PostgreSQL` (عندما يكون الاستعلام غير صحيح). يُغلق [#92887](https://github.com/ClickHouse/ClickHouse/issues/92887). [#94180](https://github.com/ClickHouse/ClickHouse/pull/94180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تسرّب للذاكرة في refreshable materialized views التي تستخدم استعلامات `SELECT` مع عدة subqueries. [#94200](https://github.com/ClickHouse/ClickHouse/pull/94200) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح data race بين `DataPartStorageOnDiskBase::remove` و`system.parts`. يُغلق [#49076](https://github.com/ClickHouse/ClickHouse/issues/49076). [#94262](https://github.com/ClickHouse/ClickHouse/pull/94262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إزالة محدد `noexcept` الخاطئ في عملية إسناد النسخ لـ HashTable، والذي قد يؤدي إلى crash (`std::terminate`) عند حدوث استثناءات في الذاكرة. [#94275](https://github.com/ClickHouse/ClickHouse/pull/94275) ([Nikita Taranov](https://github.com/nickitat)).
* سابقًا، كان إنشاء projection بأعمدة مكررة في GROUP BY (مثل `GROUP BY c0, c0`) ثم إدراج البيانات يتسبب في `std::length_error` إذا كان `optimize_row_order` مفعّلًا. يُغلق [#94065](https://github.com/ClickHouse/ClickHouse/issues/94065). [#94277](https://github.com/ClickHouse/ClickHouse/pull/94277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خلل غامض في عميل ZooKeeper عند الاتصال، كان يؤدي إلى حالات تعليق وتعطّل. [#94320](https://github.com/ClickHouse/ClickHouse/pull/94320) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح عدم تطبيق تحسين function to subcolumns على subcolumns. [#94323](https://github.com/ClickHouse/ClickHouse/pull/94323) ([Pavel Kruglov](https://github.com/Avogar)).
* إصلاح نتيجة قد تكون غير صحيحة في عمليات RIGHT JOIN المتداخلة عند تمكين `enable_lazy_columns_replication`. كان الخلل يتسبب في أن تُرجِع جميع الصفوف في الأعمدة replicated القيمة نفسها بشكل غير صحيح بدلًا من قيمها المميزة. يُغلق [#93891](https://github.com/ClickHouse/ClickHouse/issues/93891). [#94339](https://github.com/ClickHouse/ClickHouse/pull/94339) ([Vladimir Cherkasov](https://github.com/vdimir)).
* إصلاح دفع التصفية إلى المصدر في `SEMI JOIN` باستخدام مجموعات التكافؤ. لا تُدفَع التصفية إذا كانت أنواع `argument` قد تغيّرت. يُصلح [#93264](https://github.com/ClickHouse/ClickHouse/issues/93264). [#94340](https://github.com/ClickHouse/ClickHouse/pull/94340) ([Dmitry Novik](https://github.com/novikd)).
* إصلاح استخدام `DeltaLake CDF` مع محرك قاعدة البيانات `DataLake` (تكامل كتالوجات delta lake). يُغلق [#94122](https://github.com/ClickHouse/ClickHouse/issues/94122). [#94342](https://github.com/ClickHouse/ClickHouse/pull/94342) ([Kseniia Sumarokova](https://github.com/kssenii)).
* إصلاح القيمة غير الصحيحة للمقياس الحالي `FilesystemCacheSizeLimit` عند استخدام سياسة التخزين المؤقت `SLRU`. [#94363](https://github.com/ClickHouse/ClickHouse/pull/94363) ([Kseniia Sumarokova](https://github.com/kssenii)).
* أصبح إنشاء محرك قاعدة البيانات `Backup` بأقل من وسيطين يعيد رسالة خطأ أكثر وضوحًا (`Wrong number of arguments` بدلًا من `std::out_of_range: InlinedVector::at(size_type) const failed bounds check.`). [#94374](https://github.com/ClickHouse/ClickHouse/pull/94374) ([Robert Schulze](https://github.com/rschu1ze)).
* يتجاهل عمليات `revoke` غير الممكنة للامتيازات العامة على مستوى قاعدة البيانات بالنسبة إلى امتيازات `grant` التي تتضمن خيار grant. [#94386](https://github.com/ClickHouse/ClickHouse/pull/94386) ([pufit](https://github.com/pufit)).
* إصلاح قراءة `offsets` المتفرقة من الأجزاء المدمجة. يُغلق [#94385](https://github.com/ClickHouse/ClickHouse/issues/94385). [#94399](https://github.com/ClickHouse/ClickHouse/pull/94399) ([Pavel Kruglov](https://github.com/Avogar)).
* لا تمنع `ALTER` للأعمدة التي تستخدم فهارس ضمنية، حتى عند استخدام وضع `throw` الخاص بـ `alter_column_secondary_index_mode`. [#94425](https://github.com/ClickHouse/ClickHouse/pull/94425) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح تعطل في `TCPHandler` عندما تقرأ استدعاءات متعددة لـ `receivePacketsExpectQuery` القيمة `Protocol::Client::IgnoredPartUUIDs`. [#94434](https://github.com/ClickHouse/ClickHouse/pull/94434) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح إخفاء البيانات الحساسة في `system.functions`. [#94436](https://github.com/ClickHouse/ClickHouse/pull/94436) ([Vitaly Baranov](https://github.com/vitlibar)).
* إصلاح إلغاء مرجع nullptr عند تعطيل `send_profile_events`. أُضيفت هذه الميزة مؤخرًا إلى برنامج تشغيل ClickHouse لـ بايثون. يُغلق [#92488](https://github.com/ClickHouse/ClickHouse/issues/92488). [#94466](https://github.com/ClickHouse/ClickHouse/pull/94466) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح عدم توافق `.mrk` في الفهرس النصي أثناء عمليات الدمج. [#94494](https://github.com/ClickHouse/ClickHouse/pull/94494) ([Peng Jian](https://github.com/fastio)).
* عند تمكين `read_in_order_use_virtual_row`، كان الكود يصل إلى أعمدة الفهرس استنادًا إلى الحجم الكامل للمفتاح الأساسي من دون التحقق مما إذا كان الفهرس قد اقتُطع، مما أدى إلى use-after-free / استخدام ذاكرة غير مهيأة. يُغلق [#85596](https://github.com/ClickHouse/ClickHouse/issues/85596). [#94500](https://github.com/ClickHouse/ClickHouse/pull/94500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح خطأ ناتج عن عدم تطابق الأنواع عند إرسال الجداول الخارجية للاستعلامات الفرعية التي تستخدم `GLOBAL IN` إذا كانت الأنواع `Nullable`. يُغلق [#94097](https://github.com/ClickHouse/ClickHouse/issues/94097). [#94511](https://github.com/ClickHouse/ClickHouse/pull/94511) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* في الإصدارات السابقة، كانت الاستعلامات التي تتضمن عدة شروط فهرس على التعبير نفسه قد تطرح بالخطأ الاستثناء `Not found column`. يُغلق [#60660](https://github.com/ClickHouse/ClickHouse/issues/60660). [#94515](https://github.com/ClickHouse/ClickHouse/pull/94515) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح المعالجة غير الصحيحة لعمود join من النوع Nullable في Runtime Filters. [#94555](https://github.com/ClickHouse/ClickHouse/pull/94555) ([Alexander Gololobov](https://github.com/davenger)).
* لم يعد إنشاء workload داخل workload أخرى قيد الاستخدام يتسبب في حدوث crash. [#94599](https://github.com/ClickHouse/ClickHouse/pull/94599) ([Sergei Trifonov](https://github.com/serxa)).
* إصلاح crash أثناء تحسين ANY LEFT JOIN عند تقييم `isNotNull` على عمود غير موجود. [#94600](https://github.com/ClickHouse/ClickHouse/pull/94600) ([Molly](https://github.com/ggmolly)).
* إصلاح تقييم التعبير default عند الإشارة إلى أعمدة أخرى ذات قيم default محسوبة. [#94615](https://github.com/ClickHouse/ClickHouse/pull/94615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح مشكلات permission في عمليات BACKUP/RESTORE. [#94617](https://github.com/ClickHouse/ClickHouse/pull/94617) ([Pablo Marcos](https://github.com/pamarcos)).
* إصلاح crash ناتج عن تحويل نوع غير صحيح عندما يكون نوع البيانات `Nullable(DateTime64)`. [#94627](https://github.com/ClickHouse/ClickHouse/pull/94627) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* إصلاح خلل كان يؤدي إلى أن بعض distributed queries مع `ORDER BY` قد تُرجع أعمدة `ALIAS` بقيم متبدلة (أي إن العمود `a` يعرض بيانات العمود `b` والعكس صحيح). [#94644](https://github.com/ClickHouse/ClickHouse/pull/94644) ([filimonov](https://github.com/filimonov)).
* إصلاح تخزين نتائج keeper-bench في ملف. [#94654](https://github.com/ClickHouse/ClickHouse/pull/94654) ([Antonio Andelic](https://github.com/antonio2368)).
* إصلاح التقديرات غير الدقيقة مع إحصاءات من نوع MinMax عندما يحتوي العمود على قيم floating-point سالبة. [#94665](https://github.com/ClickHouse/ClickHouse/pull/94665) ([zoomxi](https://github.com/zoomxi)).
* إصلاح قراءة ملفات Parquet عندما يكون مفتاح الـ map من نوع struct. [#94670](https://github.com/ClickHouse/ClickHouse/pull/94670) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* إصلاح احتمال ظهور JOIN result غير صحيحة في RIGHT join عند استخدام شروط ON معقدة. Close [#92913](https://github.com/ClickHouse/ClickHouse/issues/92913). [#94680](https://github.com/ClickHouse/ClickHouse/pull/94680) ([Vladimir Cherkasov](https://github.com/vdimir)).
* الحفاظ على index granularity الثابتة (use\_const\_adaptive\_granularity) بعد Vertical merges. [#94725](https://github.com/ClickHouse/ClickHouse/pull/94725) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح خلل في mutation متعلق بـ scalar subqueries واعتماديات الجدول. إذا كانت لدى الجدول اعتماديات (index أو projections) على عمود ما، فقد تُقيَّم scalar subqueries وتُخزَّن مؤقتًا بلا بيانات، مما يؤدي إلى تغييرات غير صحيحة. [#94731](https://github.com/ClickHouse/ClickHouse/pull/94731) ([Raúl Marín](https://github.com/Algunenano)).
* إصلاح fallback الخاص بـ AsynchronousMetrics cpu\_pressure عند حدوث error. [#94827](https://github.com/ClickHouse/ClickHouse/pull/94827) ([Raúl Marín](https://github.com/Algunenano)).
* كانت الدالة `getURLHostRFC` تفتقد إلى فحوصات حدود قبل إلغاء الإشارة إلى المؤشرات. وعند تمرير سلسلة فارغة إلى `domainRFC``،` كانت تقرأ ذاكرة غير مهيأة، مما يؤدي إلى أخطاء MSan. [#94851](https://github.com/ClickHouse/ClickHouse/pull/94851) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح وضع readonly للأقراص المشفرة. [#94852](https://github.com/ClickHouse/ClickHouse/pull/94852) ([Azat Khuzhin](https://github.com/azat)).
* إصلاح logical error في `LIMIT/OFFSET` الكسري عند استخدام analyzer القديم مع Distributed tables. Closes [#94712](https://github.com/ClickHouse/ClickHouse/issues/94712). [#94999](https://github.com/ClickHouse/ClickHouse/pull/94999) ([Ahmed Gouda](https://github.com/0xgouda)).
* إصلاح تعطل يحدث في بعض الحالات عندما تكون مرشحات runtime لعمليات join مفعّلة افتراضيًا. [#95000](https://github.com/ClickHouse/ClickHouse/pull/95000) ([Alexander Gololobov](https://github.com/davenger)).
* تحسين إخفاء كلمات المرور في عناوين url المستخدمة في محرك الجدول `URL()` ودالة الجدول `url()`. [#95006](https://github.com/ClickHouse/ClickHouse/pull/95006) ([Vitaly Baranov](https://github.com/vitlibar)).
* أصبحت الدالة `toStartOfInterval` تعمل الآن بالطريقة نفسها التي تعمل بها `toStartOfX`، حيث تكون `X` إحدى القيم `Day, Week, Month, Quarter, Year` عندما يكون `enable_extended_results_for_datetime_functions` مفعّلًا. [#95011](https://github.com/ClickHouse/ClickHouse/pull/95011) ([Kirill Kopnev](https://github.com/Fgrtue)).
* إصلاح عدم التزام مقارنات السلاسل النصية الثابتة بالإعدادات `cast_string_to_date_time_mode` و`bool_true_representation` و`bool_false_representation` و`input_format_null_as_default`. يُغلق [#91681](https://github.com/ClickHouse/ClickHouse/issues/91681). [#95040](https://github.com/ClickHouse/ClickHouse/pull/95040) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* إصلاح حالة data race في filesystem cache. [#95064](https://github.com/ClickHouse/ClickHouse/pull/95064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح race condition نادرة في قارئ Parquet. [#95068](https://github.com/ClickHouse/ClickHouse/pull/95068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* إصلاح تعطل في تحسين top K عندما تكون `LIMIT` صفرًا. يُغلق [#93893](https://github.com/ClickHouse/ClickHouse/issues/93893). [#95072](https://github.com/ClickHouse/ClickHouse/pull/95072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* عند التحويل من DateTime/الأعداد الصحيحة إلى Time64، يُستخرج مكوّن time-of-day باستخدام `toTime`، وهو غير رتيب. وقد أشار القالب `ToDateTimeMonotonicity` خطأً إلى أن هذا التحويل رتيب، مما تسبب في الاستثناء "Invalid binary search result in MergeTreeSetIndex" في إصدارات Debug. [#95125](https://github.com/ClickHouse/ClickHouse/pull/95125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* أُعيد إنشاء قائمة entries في manifest file فقط عند الضرورة (إذ كان ذلك يُجرى سابقًا في كل تكرار). [#95162](https://github.com/ClickHouse/ClickHouse/pull/95162) ([Daniil Ivanik](https://github.com/divanik)).

<div id="268-build-testing-packaging-improvement">
  #### تحسينات البناء/الاختبار/التغليف
</div>

* إضافة مجموعة أدوات لتوصيف تخصيصات الذاكرة في محلل ClickHouse SQL باستخدام إمكانات توصيف الكومة في jemalloc. [#94072](https://github.com/ClickHouse/ClickHouse/pull/94072) ([Ilya Yatsishin](https://github.com/qoega)).
* أُضيفت أداة تُسهّل استكشاف تخصيصات الذاكرة وإصلاح مشكلاتها في المحلل. تستخدم هذه الأداة المقياس `stats.allocated` في jemalloc قبل تحليل الاستعلام إلى تمثيل AST وبعده، لعرض ما تم تخصيصه. كما تدعم وضع توصيف الذاكرة الذي يُخرج ملف توصيف قبل العملية وبعدها لبناء تقارير توضّح مواضع حدوث التخصيصات. [#93523](https://github.com/ClickHouse/ClickHouse/pull/93523) ([Ilya Yatsishin](https://github.com/qoega)).
* إزالة تضمينات libc++ العابرة. [#92523](https://github.com/ClickHouse/ClickHouse/pull/92523) ([Raúl Marín](https://github.com/Algunenano)).
* جعل بعض الاختبارات المتسلسلة تعمل بالتوازي: [https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df](https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df). [#93030](https://github.com/ClickHouse/ClickHouse/pull/93030) ([Nikita Fomichev](https://github.com/fm4v)).
* تنظيف بعض خيارات البناء. [#93679](https://github.com/ClickHouse/ClickHouse/pull/93679) ([Raúl Marín](https://github.com/Algunenano)).
* ترقية c-ares من v1.34.5 إلى v1.34.6. يعالج هذا الثغرة `CVE-2025-62408` الخاصة بـ c-ares، لكنها غير ذات صلة بـ ClickHouse. [#94129](https://github.com/ClickHouse/ClickHouse/pull/94129) ([Govind R Nair](https://github.com/Revertionist)).
* استخدام `curl` 8.18.0. [#94742](https://github.com/ClickHouse/ClickHouse/pull/94742) ([Konstantin Bogdanov](https://github.com/thevar1able)).
