التغييرات غير المتوافقة مع الإصدارات السابقة
- يحوّل تنسيق الإخراج Parquet أعمدة Date وDateTime إلى أنواع التاريخ/الوقت التي يدعمها Parquet، بدلًا من كتابتها كأرقام أولية. تصبح DateTime هي DateTime64(3) (كانت: UInt32)؛ ويعيد الإعداد
output_format_parquet_datetime_as_uint32السلوك القديم. وتصبح Date هي Date32 (كانت: UInt16). #70950 (Michael Kolupaev). - لم يعد يُسمح افتراضيًا بالأنواع القابلة للمقارنة (مثل JSON/Object/AggregateFunction) في ORDER BY ودوال المقارنة
less/greater/equal/etc. #73276 (Pavel Kruglov). - سيكتب
JSONEachRowWithProgressمعلومات التقدّم كلما حدث تقدّم. في الإصدارات السابقة، كان التقدّم يُعرض فقط بعد كل block من النتيجة، مما جعله غير ذي فائدة. تغيّرت طريقة عرض التقدّم: فلن يعرض القيم الصفرية. ضع في اعتبارك أن معلومات التقدّم تُرسَل حتى إذا حدثت بشكل متكرر. وقد يؤدي ذلك إلى توليد قدر كبير من حركة البيانات. وضع في اعتبارك أيضًا أن معلومات التقدّم لا تُفرَّغ عندما يكون الإخراج مضغوطًا. هذا يُغلق #70800. #73834 (Alexey Milovidov). - لم يعد مصدر القاموس
mysqlينفّذ استعلامSHOW TABLE STATUS، لأنه لا يقدّم أي فائدة لجداول InnoDB، وكذلك في أي إصدار MySQL حديث. هذا يُغلق #72636. هذا التغيير متوافق مع الإصدارات السابقة، لكنه وُضع في هذه الفئة كي تتاح لك فرصة ملاحظته. #73914 (Alexey Milovidov). - ستوحّد جداول
Mergeبنية الجداول الأساسية باستخدام union لأعمدتها واستنتاج الأنواع المشتركة. هذا يُغلق #64864. وهذا يُغلق #35307. في بعض الحالات، قد يكون هذا التغيير غير متوافق مع الإصدارات السابقة. ومن أمثلة ذلك عدم وجود نوع مشترك بين الجداول، مع بقاء التحويل إلى نوع الجدول الأول ممكنًا، كما في حالة UInt64 وInt64 أو أي نوع رقمي وString. إذا كنت تريد العودة إلى السلوك القديم، فاضبطmerge_table_max_tables_to_look_for_schema_inferenceعلى1أو اضبطcompatibilityعلى24.12أو أقدم. #73956 (Alexey Milovidov). - تتطلب استعلامات
CHECK TABLEالآن امتيازCHECKمنفصلًا. في الإصدارات السابقة، كان يكفي امتلاك امتيازSHOW TABLESلتشغيل هذه الاستعلامات. لكن استعلامCHECK TABLEقد يكون مكلفًا، ولا تنطبق عليه حدود تعقيد query المعتادة الخاصة باستعلاماتSELECT. وقد أدى ذلك إلى احتمال حدوث DoS. #74471 (Alexey Milovidov). - تحقّق الآن من أن جميع الأعمدة في materialized view تطابق target table إذا كانت قيمة
allow_materialized_view_with_bad_selectهيfalse. #74481 (Christoph Wurm). - تُرجع الدالة
h3ToGeo()الآن النتائج بالترتيب(lat, lon)(وهو الترتيب القياسي للدوال الهندسية). ويمكن للمستخدمين الذين يرغبون في الاحتفاظ بترتيب النتائج القديم(lon, lat)ضبط الإعدادh3togeo_lon_lat_result_order = true. #74719 (Manish Gill). - أُضيف التنسيقان
JSONCompactEachRowWithProgressوJSONCompactStringsEachRowWithProgress. استكمالًا لـ #69989. ولم يعدJSONCompactWithNamesوJSONCompactWithNamesAndTypesيُخرجان “totals” — ويبدو أن ذلك كان خطأً في التنفيذ. #75037 (Alexey Milovidov). - غُيّرت القيمة الافتراضية لـ
format_alter_operations_with_parenthesesإلى true لجعل قائمة أوامر alter غير ملتبسة (انظر https://github.com/ClickHouse/ClickHouse/pull/59532). ويؤدي ذلك إلى كسر التكرار مع العناقيد الأقدم من 24.3. إذا كنت تُرقّي عنقودًا يستخدم إصدارات أقدم، فعطّل هذا الإعداد في تهيئة الخادم أو رقِّ إلى 24.3 أولًا. #75302 (Raúl Marín). - مُنع truncate database لقواعد البيانات المكرّرة. #76651 (Bharat Nallan).
- عُطّلت النسخ المتماثلة المتوازية افتراضيًا عند تعطيل المحلّل، بغضّ النظر عن إعداد
compatibility. ولا يزال من الممكن تغيير هذا السلوك عبر ضبطparallel_replicas_only_with_analyzerصراحةً إلىfalse. #77115 (Igor Nikonov). - لم يعد من الممكن استخدام
NaNأوinfكقيم Float في الإعدادات. #77546 (Yarik Briukhovetskyi). - أُصلحت الحالات التي يُستخدم فيها
dateTruncمع وسيطات date/datetime سالبة. #77622 (Yarik Briukhovetskyi). - أُزيل تكامل MongoDB القديم. وأصبح إعداد الخادم
use_legacy_mongodb_integrationمتقادمًا ولم يعد يفعل شيئًا. #77895 (Robert Schulze). - حُسِّن التحقّق في SummingMergeTree لتخطّي التجميع للأعمدة المستخدمة في مفاتيح التقسيم أو الفرز. #78022 (Pervakov Grigorii).
الميزات الجديدة
- تمت إضافة ذاكرة تخزين مؤقت داخل الذاكرة لحبيبات فهرس التخطي بعد إلغاء تسلسلها. ومن شأن ذلك تسريع الاستعلامات المتكررة التي تستخدم فهارس التخطي. ويُتحكَّم في حجم ذاكرة التخزين المؤقت الجديدة من خلال إعدادات الخادم
skipping_index_cache_sizeوskipping_index_cache_max_entries. وكان الدافع الأصلي لهذه الذاكرة المؤقتة هو فهارس تشابه المتجهات، التي أصبحت الآن أسرع بكثير. #70102 (Robert Schulze). - تنفيذ جديد لذاكرة Userspace Page Cache يتيح تخزين البيانات مؤقتًا في الذاكرة داخل العملية بدلًا من الاعتماد على OS page cache. ويكون ذلك مفيدًا عندما تكون البيانات مخزنة على virtual filesystem بعيد من دون الاعتماد على local filesystem cache. #70509 (Michael Kolupaev).
- إضافة إعداد للاستعلام عن جداول Iceberg عند طابع زمني محدد. #71072 (Brett Hoerner).
- تنفيذ partition pruning لجداول Iceberg لعمليات partition transform المرتبطة بالوقت في Iceberg. #72044 (Daniil Ivanik).
- إضافة إمكانية إنشاء فهارس min-max (skipping) افتراضيًا للأعمدة التي يديرها MergeTree باستخدام الإعدادين
enable_minmax_index_for_all_numeric_columns(للأعمدة الرقمية) وenable_minmax_index_for_all_string_columns(للأعمدة النصية). وحتى الآن، لا يزال كلا الإعدادين معطَّلَين، لذا لا يوجد أي تغيير في السلوك بعد. #72090 (Smita Kulkarni). - تمت إضافة دالة aggregation
sequenceMatchEventsالتي تُرجع الطوابع الزمنية للأحداث المطابقة لأطول تسلسل أحداث في النمط. #72349 (UnamedRus). - أصبحت عبارتا
SELECTوVIEWتدعمان aliases الآن، مثل:SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. يتيح ذلك تشغيل استعلام TPC-H رقم 15 من دون تعديلات. #72480 (Yarik Briukhovetskyi). - تمت إضافة إعداد جديد
enable_adaptive_memory_spill_schedulerيتيح لعدة عمليات grace JOIN ضمن الاستعلام نفسه مراقبة بصمتها المشتركة في الذاكرة، وتفعيل spilling إلى external storage بشكل تكيّفي لمنع MEMORY_LIMIT_EXCEEDED. #72728 (lgbo). - تمت إضافة الدالة
arrayNormalizedGini. #72823 (flynn). - دعم data types العشرية ذات low cardinality، مع إصلاح #72256. #72833 (zhanglistar).
- عند تفعيل كلٍّ من
min_age_to_force_merge_secondsوmin_age_to_force_merge_on_partition_only، ستتجاهل عملية دمج الأجزاء حد البايتات الأقصى. #73656 (Kai Zhu). - دعم قراءة قيم HALF_FLOAT من Apache Arrow/Parquet/ORC (وتُقرأ إلى Float32). هذا يغلق #72960. تجدر الإشارة إلى أن IEEE-754 half float ليس هو نفسه BFloat16. إغلاق #73835. #73836 (Alexey Milovidov).
- سيحتوي جدول
system.trace_logعلى عمودين جديدين،symbolsوlines، يحتويان على stack trace مرفق بالرموز. يتيح ذلك جمع معلومات profile وتصديرها بسهولة. ويجري التحكم في ذلك عبر قيمة server configuration symbolizeداخلtrace_log، وهي مفعّلة افتراضيًا. #73896 (Alexey Milovidov). - إضافة دالة جديدة،
generateSerialID، يمكن استخدامها لتوليد أرقام متزايدة تلقائيًا في الجداول. استكمالًا لـ #64310 بواسطة kazalika. هذا يُغلق #62485. #73950 (Alexey Milovidov). - إضافة الصياغة
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN، وهذا يعني أنه يُسمح لـ subqueries {query1, query2, ... queryN}بالتشغيل in parallel مع بعضها البعض (وهو الخيار المفضل). #73983 (Vitaly Baranov). - يحتوي Play UI الآن على شريط تقدم أثناء runtime للاستعلام. ويتيح إلغاء الاستعلامات. كما يعرض العدد الإجمالي للسجلات ومعلومات موسعة عن السرعة. ويمكن عرض الجدول بصورة incremental فور وصول البيانات. تم تمكين HTTP compression. وأصبح عرض الجدول أسرع. وأصبح header الجدول ثابتًا. كما يتيح تحديد الخلايا والتنقل بينها باستخدام مفاتيح الأسهم. وتم إصلاح issue التي كان فيها إطار الخلية المحددة يجعلها أصغر. ولم تعد الخلايا تتمدد عند تمرير مؤشر الفأرة فوقها، بل عند التحديد فقط. ويُتخذ قرار توقيت إيقاف عرض البيانات الواردة على جانب client بدلًا من جانب server. وتم تمييز مجموعات الأرقام داخل القيم العددية. كما تم تحديث التصميم العام وأصبح أكثر جرأة. ويتحقق من إمكانية الوصول إلى server وصحة credentials ويعرض version الخاص بالخادم وuptime. وأصبحت أيقونة cloud محددة الحواف في جميع الخطوط، حتى في Safari. وسيجري عرض الأعداد الصحيحة الكبيرة داخل data types المتداخلة بشكل أفضل. وسيعرض inf/nan بصورة صحيحة. كما سيعرض data types عند تمرير مؤشر الفأرة فوق header العمود. #74204 (Alexey Milovidov).
- إضافة إمكانية إنشاء فهارس min-max (skipping) افتراضيًا للأعمدة التي يديرها MergeTree باستخدام settings
add_minmax_index_for_numeric_columns(للأعمدة الرقمية) وadd_minmax_index_for_string_columns(للأعمدة النصية). وحتى الآن، لا يزال كلا الإعدادين معطلًا، لذلك لا يوجد أي تغيير في السلوك بعد. #74266 (Smita Kulkarni). - إضافة حقلي
script_query_numberوscript_line_numberإلىsystem.query_log، وإلى ClientInfo في native protocol، وإلى server logs. هذا يُغلق #67542. والشكر لـ pinsvin00 على إطلاق هذا feature في وقت مبكر ضمن #68133. #74477 (Alexey Milovidov). - إضافة دعم operator الطرح لـ DateTime64، بما يتيح إجراء الطرح بين قيم DateTime64، وكذلك DateTime. #74482 (Li Yin).
- دعم DeltaLake table engine لـ AzureBlobStorage. يُصلح #68043. #74541 (Smita Kulkarni).
- إضافة إعداد bind_host لتعيين عنوان IP المصدر لاتصالات clickhouse client. #74741 (Todd Yocum).
- أُضيفت إمكانية تطبيق التعديلات غير المكتملة (غير المُطبَّقة ماديًا بواسطة عملية الخلفية) أثناء تنفيذ استعلامات
SELECTمباشرةً بعد إرسالها. ويمكن تمكين ذلك عبر الإعدادapply_mutations_on_fly. #74877 (Anton Popov). - أُصلحت بعض الحالات غير المتوقعة سابقًا عندما تكون وسائط التاريخ والوقت في
toStartOfIntervalسالبة. وقد تم ذلك عبر تنفيذ دالة جديدة باسم toStartOfIntervalAllowNegative، تؤدي تقريبًا المهمة نفسها لكنها تُرجع فقط Date32/DateTime64. #74933 (Yarik Briukhovetskyi). - أُضيفت دالة جديدة باسم initialQueryStartTime. وهي تُرجع وقت بدء الاستعلام الحالي. وتكون القيمة نفسها عبر جميع الـ shards أثناء الاستعلام الموزع. #75087 (Roman Lomonosov).
- أُضيفت parametrized_view_parameters إلى system.tables. يُغلق هذا https://github.com/clickhouse/clickhouse/issues/66756. #75112 (NamNguyenHoai).
- أصبح تعديل تعليق قاعدة البيانات ممكنًا. يُغلق #73351 ### إدخال توثيقي للتغييرات الظاهرة للمستخدم. #75622 (NamNguyenHoai).
- أُضيفت إمكانية ATTACH للجداول دون طبقة قاعدة البيانات (لتجنب التحايل باستخدام UUID). #75788 (Azat Khuzhin).
- أُضيف إعداد الخادم
concurrent_threads_schedulerالذي يتحكم في كيفية توزيع CPU slots بين الاستعلامات المتزامنة. ويمكن ضبطه علىround_robin(السلوك السابق) أوfair_round_robinلمعالجة مشكلة التوزيع غير العادل للـ CPU بين عمليات INSERT وSELECT. #75949 (Sergei Trifonov). - استعادة codec QPL الذي أُزيل في v24.10 بسبب مشكلات الترخيص. #76021 (Konstantin Bogdanov).
- أُضيفت الدالة
arraySymmetricDifference. وهي تُرجع جميع العناصر من وسائط المصفوفات المتعددة التي لا تظهر في جميع الوسائط. مثال:SELECT arraySymmetricDifference([1, 2], [2, 3])تُرجع[1, 3]. (المشكلة #61673). #76231 (Filipp Abapolov). - أُضيفت الدالة التجميعية
estimatecompressionratio- انظر #70801. #76661 (Tariq Almawash). - ستعرض أحداث profile
FilterTransformPassedRowsوFilterTransformPassedBytesعدد الصفوف وعدد البايتات التي تمت تصفيتها أثناء تنفيذ الاستعلام. #76662 (Onkar Deshpande). - أُضيفت دالة hash function
keccak256، وهي تُستخدم على نطاق واسع في تطبيقات البلوك تشين، وخاصةً في الأنظمة المعتمدة على EVM. #76669 (Arnaud Briche). - Scram SHA256 وتحديث مصادقة postgres wire. #76839 (scanhex12).
- تضيف هذه الوظيفة إمكانية تعريف قائمة من headers التي يُعاد توجيهها من headers طلب العميل إلى موثّق HTTP خارجي. #77054 (inv2004).
- دعم
IcebergMetadataFilesCache، الذي يخزّن ملفات manifest/القائمة وmetadata.jsonفي ذاكرة تخزين مؤقت واحدة. #77156 (Han Fei). - إضافة الدوال
arrayLevenshteinDistanceوarrayLevenshteinDistanceWeightedوarraySimilarity. #77187 (Mikhail f. Shiryaev). - إضافة ثلاث دوال جديدة:
icebergTruncateوفقًا للمواصفة https://iceberg.apache.org/spec/#truncate-transform-details، وtoYearNumSinceEpochوtoMonthNumSinceEpoch. ودعم تحويلtruncateفي استبعاد الأقسام لمحركIceberg. #77403 (alesapin). - أصبح بإمكان المستخدم الاستعلام عن حالة جدول Iceberg كما كانت عند نقطة زمنية سابقة. #77439 (Daniil Ivanik).
- تمت إضافة جدولة CPU slot لأعباء العمل؛ راجع https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling للتفاصيل. #77595 (Sergei Trifonov).
- يمكن للدالة
hasAll()الآن الاستفادة من فهارس تخطي النص الكاملtokenbf_v1وngrambf_v1. #77662 (UnamedRus). - أصبح نوع البيانات
JSONجاهزًا لبيئات الإنتاج. راجع https://jsonbench.com/. كما أصبح نوعا البياناتDynamicوVaraintجاهزين لبيئات الإنتاج. #77785 (Alexey Milovidov). - تمت إضافة ذاكرة تخزين مؤقت داخل الذاكرة لفهارس تشابه المتجهات بعد فك تسلسلها. من شأن ذلك تسريع استعلامات البحث المتكرر عن أقرب الجيران التقريبيين (ANN). ويجري التحكم في حجم ذاكرة التخزين المؤقت الجديدة عبر إعدادات الخادم
vector_similarity_index_cache_sizeوvector_similarity_index_cache_max_entries. وتحل هذه الميزة محل ميزة ذاكرة التخزين المؤقت لفهارس التخطي في الإصدارات السابقة. #77905 (Shankar Iyer). - تمت إضافة الدالتين
sparseGramsوsparseGramsHashesمع إصداراتUTF8. المؤلف: scanhex12. #78176 (Pervakov Grigorii). - تقديم الدالة
toInterval. تقبل هذه الدالة وسيطين (القيمة والوحدة)، وتحول القيمة إلى نوعIntervalمحدد. #78723 (Andrew Davis).
الميزات التجريبية
- السماح بإجراء عمليات دمج تنظيف تلقائية على أقسام كاملة بعد مهلة قابلة للتهيئة، باستخدام الإعداد الجديد
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm). - إضافة دعم Unity Catalog لجداول DeltaLake على AWS S3 ونظام الملفات المحلي. #76988 (alesapin).
- تقديم تكامل تجريبي مع كتالوج خدمة AWS Glue لجداول Iceberg. #77257 (alesapin).
تحسينات الأداء
- حسِّن الأداء باستخدام الإسقاط الكسول لتجنّب قراءة الأعمدة غير المستخدمة. #55518 (Xiaozhe Yu).
- ابدأ بمقارنة الصفوف اعتمادًا على الأعمدة الأكثر احتمالًا للاختلاف أولًا. #63780 (UnamedRus).
- حسِّن input format RowBinary. إغلاق #63805. #65059 (Pavel Kruglov).
- سرِّع فك تسلسل السلاسل النصية عبر بعض التحسينات منخفضة المستوى. #65948 (Nikita Taranov).
- طبِّق attribute
preserve_mostفي بعض مواضع الشيفرة. #67778 (Nikita Taranov). - نفِّذ query condition cache لتحسين query performance عند استخدام الشروط المتكررة. يُتذكَّر نطاق الجزء من البيانات الذي لا يستوفي الشرط بوصفه فهرسًا مؤقتًا في الذاكرة. وستستخدم queries اللاحقة هذا الفهرس. إغلاق #67768 ### إدخال توثيقي للتغييرات الموجَّهة للمستخدم. #69236 (zhongyuankai).
- دعم IO prefetch غير المتزامن لـ
NativeORCBlockInputFormat، ما يحسّن الأداء العام عبر إخفاء زمن كمون IO البعيد. وقد تصل نسبة التسريع إلى 1.47x في حالة الاختبار الخاصة بي. #70534 (李扬). - حسِّن أداء grace hash join عبر إعادة ترتيب جدول join الأيمن بحسب المفاتيح. #72237 (kevinyhzou).
- أعد تفعيل مراعاة
ttl_only_drop_partsفيmaterialize ttl؛ واقرأ فقط الأعمدة اللازمة لإعادة حساب TTL، واحذف parts عبر استبدالها بجزء فارغ. #72751 (Andrey Zvonov). - اسمح لـ
arrayROCAUCوarrayAUCPRبحساب مساحة جزئية من المنحنى الكامل، بحيث يمكن تنفيذ الحساب بالتوازي على datasets ضخمة. #72904 (Emmanuel). - تجنّب إنشاء عدد كبير جدًا من idle threads. #72920 (Guo Wangyang).
- أُزيل تقسيم blocks الجدول الأيسر حسب hash من مرحلة الـ probe في join algorithm
parallel_hashJOIN. #73089 (Nikita Taranov). - لا تسرد keys الخاصة بـ blob storage إذا كان لدينا فقط توسيع الأقواس المعقوفة في table function. إغلاق #73333. #73518 (Konstantin Bogdanov).
- استبدِل Int256 وUInt256 بـ clang builtin i256 في العمليات الحسابية وفقًا للاختبارات في #70502. #73658 (李扬).
- يضيف مسارًا سريعًا للدوال التي تكون جميع argument types فيها رقمية. يُصلح مشكلات الأداء في https://github.com/ClickHouse/ClickHouse/pull/72258. #73820 (李扬).
- لا تطبّق
maskedExecuteعلى الأعمدة التي ليست دوالًا، مع تحسين أداء التنفيذ قصير الدارة. #73965 (lgbo). - عطّل اكتشاف الترويسات لـ Kafka/NATS/RabbitMQ/FileLog لتحسين الأداء. #74006 (Azat Khuzhin).
- استخدم أغلفة السجل بالقيمة بدلًا من تخصيصها على heap. #74034 (Mikhail Artemenko).
- نفّذ pipeline بدرجة أعلى من التوازي بعد aggregation مع مجموعات التجميع. #74082 (Nikita Taranov).
- قلّل المقطع الحرج في
MergeTreeReadPool. #74202 (Guo Wangyang). - حُسّنت الدالة
indexHint. الآن، الأعمدة التي لا تُستخدم إلا كوسيطات للدالةindexHintلا تُقرأ من الجدول. #74314 (Anton Popov). - تحسين في أداء parallel replicas. أصبحت إزالة تسلسل الحزم على initiator الخاص بالاستعلام، للحزم غير المرتبطة ببروتوكول parallel replicas، تتم دائمًا الآن في thread الخاصة بالـ pipeline. سابقًا، كان ذلك قد يحدث في thread مسؤولة عن scheduling الخاصة بالـ pipeline، مما قد يجعل initiator أقل استجابة ويؤخر تنفيذ الـ pipeline. #74398 (Igor Nikonov).
- جرى إصلاح حساب حجم الذاكرة لأعمدة
LowCardinality. #74688 (Nikita Taranov). - يحسّن أداء قراءة عمود JSON كاملًا في Wide parts من S3. ويتم ذلك بإضافة عمليات prefetches لإزالة تسلسل prefixes الخاصة بالأعمدة الفرعية، وcache للـ prefixes بعد إزالة تسلسلها، وإزالة تسلسل prefixes الأعمدة الفرعية على نحو متوازٍ. ويحسّن ذلك قراءة عمود JSON من S3 بمقدار 4 مرات في query مثل
SELECT data FROM tableونحو 10 مرات في query مثلSELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov). - خصّص مسبقًا الذاكرة المستخدمة بواسطة async inserts لتحسين الأداء. #74945 (Ilya Golshtein).
- جرى إصلاح التخصيص المسبق المزدوج في
ConcurrentHashJoinفي حال بدّل المُحسِّن طرفي join. #75149 (Nikita Taranov). - جرى إصلاح التنازع غير الضروري في
parallel_hashعندما تكونmax_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov). - تحسين طفيف في بعض سيناريوهات join: احسب مسبقًا عدد صفوف المخرجات واحجز لها الذاكرة. #75376 (Alexander Gololobov).
- ملفات metadata الخاصة بـ
plain_rewritableصغيرة ولا تحتاج إلى buffer افتراضي كبير. استُخدم buffer كتابة بحجم مناسب ليلائم المسار المحدد، مما يحسّن استهلاك الذاكرة عند وجود عدد كبير من active parts. ### إدخال توثيقي للتغييرات الظاهرة للمستخدم. #75758 (Julia Kartseva). - في بعض الحالات (مثل array column فارغ) قد تحتوي data parts على ملفات فارغة. يمكن تخطي كتابة blobs الفارغة إلى ObjectStorage والاكتفاء بتخزين metadata لهذه الملفات عندما يكون الجدول موجودًا على قرص ذي metadata وobject storages منفصلين. #75860 (Alexander Gololobov).
- اكتُشف أن التحكّم في التزامن قد يؤدي إلى توزيع غير عادل لموارد CPU بين عمليات INSERT وSELECT. فعندما تُخصَّص جميع فتحات CPU بلا قيد (w/o competition) لعمليات INSERT مع
max_threads= 1، فإن عمليات SELECT ذات القيم المرتفعة لـmax_threadsتعاني من ضعف الأداء لأنها لا تستخدم سوى خيط واحد فقط. #75941 (Sergei Trifonov). - تحسين بسيط في wrapInNullable لتجنّب تخصيص خريطة NULL غير الضرورية. #76489 (李扬).
- تحسين أداء min/max لـ Decimal32/Decimal64/DateTime64. #76570 (李扬).
- إزالة البيانات من الذاكرة المؤقتة بشكل نشط عند إزالة الأجزاء، وعدم السماح للذاكرة المؤقتة بالنمو إلى الحجم الأقصى إذا كانت كمية البيانات أقل من ذلك. #76641 (Alexey Milovidov).
- أصبح تجميع الاستعلامات (الإعداد
compile_expressions) يراعي الآن نوع الجهاز. وهذا يسرّع مثل هذه الاستعلامات بشكل ملحوظ. #76753 (Robert Schulze). - تحسين arraySort. #76850 (李扬).
- تسريع بناء JOIN result عبر إلغاء الافتراضية في استدعاءات
col->insertFrom(). #77350 (Alexander Gololobov). - دمج العلامات الخاصة بالجزء نفسه وكتابتها إلى ذاكرة التخزين المؤقت لشروط الاستعلام دفعة واحدة لتقليل استهلاك الأقفال. #77377 (zhongyuankai).
- تحسين ORDER BY لعمود Nullable واحد أو لأعمدة منخفضة الكاردينالية. #77789 (李扬).
- تعطيل
filesystem_cache_prefer_bigger_buffer_sizeعندما تُستخدم الذاكرة المؤقتة بشكل غير نشط، مثل عمليات merges. #77898 (Kseniia Sumarokova). - تنفيذ تحسين بسيط لعملية count في Iceberg. وأصبحت الاستعلامات التي تحتوي على
count()ومن دون أي عوامل تصفية أسرع الآن. يُغلق #77639. #78090 (alesapin). - دعم تشذيب بيانات Iceberg استنادًا إلى قيم lower_bound وuppert_bound للأعمدة. يُصلح #77638. #78242 (alesapin).
- تحسين استخدام الذاكرة في NativeReader. #78442 (Azat Khuzhin).
- تحسين بسيط: لا تُعِد كتابة
count(if())إلى countIf إذا كانCASTمطلوبًا. يُغلق #78564. #78565 (李扬).
التحسينات
- تقليل عدد طلبات Keeper عبر الاستغناء عن طلبات
getالفردية، التي كان يمكن أن تتسبب في حمل كبير على Keeper مع زيادة عدد النسخ المتماثلة، في المواضع التي يتوفر فيهاmultiRead. #56862 (Nikolay Degterinsky). - إضافة دعم المصادقة عبر SSL باستخدام named collections في MySQL. يُغلق #59111. #59452 (Nikolay Degterinsky).
- تحسين أداء البنية التحتية الجديدة لـ analyzer عبر تخزين
ColumnPtrبدلًا منFieldفيConstantNode. مرتبط بـ #62245. #63198 (Dmitry Novik). - رفض الاستعلامات عندما يكون الخادم محمّلًا فوق طاقته. يُتخذ القرار بناءً على نسبة وقت الانتظار (
OSCPUWaitMicroseconds) إلى وقت الانشغال (OSCPUVirtualTimeMicroseconds). ويُسقَط الاستعلام باحتمال معيّن عندما تكون هذه النسبة بينmin_os_cpu_wait_time_ratio_to_throwوmax_os_cpu_wait_time_ratio_to_throw(وهما إعدادان على مستوى الاستعلام). #63206 (Alexey Katsman). - إسقاط الكتل في أقرب وقت ممكن لتقليل متطلبات الذاكرة. #65647 (lgbo).
- أصبح جدول
processors_profile_logيحتوي الآن على إعداد افتراضي مع TTL لمدة 30 يومًا. #66139 (Ilya Yatsishin). - السماح بإنشاء فهرس
bloom_filterعلى الأعمدة ذات نوع البيانات DateTime64. #66416 (Yutong Xiao). - تقديم حاويات latency واستخدامها لتتبّع أزمنة قراءة/كتابة أول بايت وأزمنة الاتصال لطلبات S3. وبهذه الطريقة يمكن لاحقًا استخدام البيانات المجمّعة لحساب القيم المئينية التقريبية وتكييف مهلات الانتظار. #69783 (Alexey Katsman).
- لم تعد الاستعلامات الممرَّرة إلى تخزين
Executableمقتصرة على التنفيذ أحادي الخيط. #70084 (yawnt). - تمت إضافة HTTP headers إلى جدول سجلات spans في OpenTelemetry لتحسين إمكانية تتبّع الأثر. #70516 (jonymohajanGmail).
- دعم كتابة ملفات orc باستخدام منطقة زمنية مخصّصة بدلًا من استخدام المنطقة الزمنية
GMTدائمًا. #70615 (kevinyhzou). - استبدال table functions ببدائلها
-Clusterإذا كانت parallel replicas مفعّلة. يُصلح #65024. #70659 (Konstantin Bogdanov). - مراعاة إعدادات IO scheduling عند كتابة النسخ الاحتياطية عبر السحب. #71093 (János Benjamin Antal).
- إعادة إنشاء الاتصال بنسخ Dictionary المتماثلة في MySQL وPostgres في الخلفية حتى لا يتسبب ذلك في تأخير الطلبات الموجّهة إلى Dictionaries المقابلة. #71101 (Yakov Olkhovskiy).
- إضافة اسم alias الخاص بالـ metric إلى system.asynchronous_metrics. #71164 (megao).
- أصبحت عمليات تحديث العروض المادية القابلة للتحديث تظهر الآن في
system.query_log. #71333 (Michael Kolupaev). - تقييم bloom filters وفهارس min/max في Parquet معًا. وهذا ضروري لدعم الحالة التالية على نحو صحيح:
x = 3 or x > 5حيث data = [1, 2, 4, 5]. #71383 (Arthur Passos). - تحسينات على المقاييس التفاعلية. إصلاح مشكلة عدم عرض المقاييس الواردة من parallel replicas بالكامل. تُعرض المقاييس وفقًا لأحدث تحديث أولًا، ثم بترتيب معجمي حسب الاسم. ولا تُعرض المقاييس القديمة. #71631 (Julia Kartseva).
- تاريخيًا، ولسبب ما، كان الاستعلام
ALTER TABLE MOVE PARTITION TO TABLEيتحقق من صلاحياتSELECTوALTER DELETEبدلًا من الصلاحية المخصصةALTER_MOVE_PARTITION. يستخدم هذا الطلب الآن نوع الوصول هذا. ولأغراض التوافق، سيُمنح هذا الإذن أيضًا ضمنيًا إذا كانت صلاحيتاSELECTوALTER DELETEممنوحتين، لكن هذا السلوك سيُزال في الإصدارات المستقبلية. يغلق #16403. #71632 (pufit). - يفعّل الإعداد
use_hive_partitioningافتراضيًا. #71636 (Yarik Briukhovetskyi). - طرح استثناء عند محاولة materialize لعمود ضمن مفتاح الفرز بدلًا من السماح له بكسر ترتيب الفرز. لكنه لا يحل #71777. #71891 (Peter Nguyen).
- السماح بخوارزمية أكثر عمومية لتخطيط join عند تفعيل خوارزمية hash join. #71926 (János Benjamin Antal).
- إخفاء secrets في
EXPLAIN QUERY TREE. #72025 (Yakov Olkhovskiy). - السماح باستخدام disk قابل للتهيئة لتخزين ملفات metadata الخاصة بقواعد البيانات والجداول. ويمكن تعيين اسم الـ disk عبر parameter الإعداد
database_disk.disk. #72027 (Tuan Pham Anh). - دعم الأنواع المنطقية الصحيحة في Parquet في native reader. #72105 (Arthur Passos).
- جعل JSON output format يستخدم Pretty افتراضيًا. وإضافة setting جديد
output_format_json_pretty_printللتحكم في ذلك وتفعيله افتراضيًا. #72148 (Pavel Kruglov). - طلب credentials تفاعليًا في المتصفح إذا كان default user يتطلب password. في الإصدارات السابقة، كان server يعيد HTTP 403؛ أما الآن فيعيد HTTP 401. #72198 (Alexey Milovidov).
- يحوّل هذا الطلب أنواع الوصول
CREATE_USERوALTER_USERوDROP_USERوCREATE_ROLEوALTER_ROLEوDROP_ROLEمن عامة إلى مُعلَّمة بمعاملات. وهذا يعني أنه يمكنك الآن منح أذونات إدارة الوصول بدرجة أعلى من الدقة:. #72246 (pufit). - السماح بتسمية الأجزاء shard في إعدادات cluster. #72276 (MikhailBurdukov).
- دعم CAST وALTER بين JSON types ذات المعاملات المختلفة. #72303 (Pavel Kruglov).
- أضِف العمود
latest_fail_error_code_nameإلىsystem.mutations. نحتاج إلى هذا العمود لإضافة Metric جديدة للطفرات العالقة واستخدامها في إنشاء رسوم بيانية للأخطاء التي تتم مواجهتها في Cloud، وكذلك، اختياريًا، إضافة alert جديدة أقل إزعاجًا. #72398 (Miсhael Stetsyuk). - تقليل حجم التخصيصات عند Attach للأقسام. #72583 (Konstantin Morozov).
- اجعل حد
max_bytes_before_external_sortيعتمد على إجمالي استهلاك ذاكرة الـ query (سابقًا كان يمثل عدد البايتات في block الفرز لخيط فرز واحد، أما الآن فأصبح يحمل المعنى نفسه لـmax_bytes_before_external_group_by، أي إنه الحد الإجمالي لذاكرة الـ query بالكامل عبر جميع الخيوط). كما أُضيف إعداد آخر للتحكم في حجم block على القرص وهوmin_external_sort_block_bytes. #72598 (Azat Khuzhin). - تجاهل قيود الذاكرة من قِبل trace collector. #72606 (Azat Khuzhin).
- دعم subcolumns في sorting key الخاصة بـ MergeTree وفي skip indexes. #72644 (Pavel Kruglov).
- أضِف server settings
dictionaries_lazy_loadوwait_dictionaries_load_at_startupإلىsystem.server_settings. #72664 (Christoph Wurm). - يضيف الإعداد
max_backup_bandwidthإلى قائمة الإعدادات التي يمكن تحديدها كجزء من استعلاماتBACKUP/RESTORE. #72665 (Christoph Wurm). - كانت parallel replicas تستخدم معلومات تاريخية عن مدى توفر replica لتحسين اختيار replica، لكنها لم تكن تُحدّث عدد أخطاء الـ replica عندما يكون الاتصال غير متاح. يحدّث هذا PR عدد أخطاء الـ replica عند عدم توفر الاتصال. #72666 (zoomxi).
- خفض log level لظهور parts المكررة في محرك ReplicatedMergeTree للمساعدة في تقليل حجم السجلات الناتجة في cluster مكرّر. #72876 (mor-akamai).
- سيتطلب كثير من الميزات الجديدة تغليفًا أفضل للكود (فيما يتعلق بـ metadata الخاصة بـ Iceberg) وتجريدات أفضل له. #72941 (Daniil Ivanik).
- دعم المقارنة بالمساواة لقيم JSON column. #72991 (Pavel Kruglov).
- تحسين formatting الخاص بالمُعرّفات التي تحتوي على JSON subcolumns لتجنب علامات الاقتباس العكسية غير الضرورية. #73085 (Pavel Kruglov).
- سجّل conditions الخاصة بـ
PREWHEREبمستوىTest. #73116 (Vladimir Cherkasov). - دعم SETTINGS مع ENGINE ضمني، والجمع بين إعدادات المحرك وإعدادات query. #73120 (Raúl Marín).
- اكتب parts بالمستوى 1 إذا كان
optimize_on_insertمُمكّنًا. يتيح ذلك استخدام عدة تحسينات للاستعلامات التي تستخدمFINALعلى الأجزاء المكتوبة حديثًا. #73132 (Anton Popov). - بالنسبة إلى استعلام مثل
WHERE a<b AND b<c AND c<5، يمكن إنشاء شروط مقارنة جديدة (a<5 and b<5) لتحسين قدرة التصفية. #73164 (Shichao Jin). - تحسين استخراج التعبير المشترك في حالات الفصل المنطقي، مع السماح بتبسيط تعبير التصفية الناتج حتى في حال عدم وجود تعبير فرعي مشترك بين جميع أجزاء الفصل. استكمال لـ #71537. #73271 (Dmitry Novik).
- في Storage
S3(Azure)Queue، أصبح بالإمكان إضافة settings إلى table أُنشئ من دون settings. #73283 (Kseniia Sumarokova). - يدعم
clickhouse-clientالآن Ctrl+D لإنهاء الاستعلام. ويتيح استخدام Ctrl+D بدلًا من كتابة فاصلة منقوطة والضغط على Enter. بالإضافة إلى ذلك، أصبح Ctrl+D يعمل مثل Enter في وضع السطر الواحد. #73293 (Xiaozhe Yu). - تقديم setting باسم
least_greatest_legacy_null_behavior(الافتراضي:false) للتحكم في ما إذا كانت الدالتانleastوgreatestتتعاملان مع arguments من نوعNULLبإرجاعNULLدائمًا (إذا كانتtrue) أو بتجاهلها (إذا كانتfalse). #73344 (Robert Schulze). - استخدام الطلبات المتعددة من Keeper في خيط التنظيف
ObjectStorageQueueMetadata. #73357 (Antonio Andelic). - أصبح برنامج تشغيل جديد لـ MongoDB هو الافتراضي الآن. ويمكن للمستخدمين الذين يفضّلون الاستمرار في استخدام برنامج التشغيل القديم ضبط إعداد الخادم
use_legacy_mongodb_integrationعلى true. #73359 (Robert Schulze). - عندما يعمل ClickHouse تحت cgroup، سنواصل جمع المقاييس غير المتزامنة على مستوى النظام والمتعلقة بحمل النظام وجدولة العمليات والذاكرة وغيرها. وقد توفّر هذه المقاييس إشارات مفيدة عندما يكون ClickHouse هو العملية الوحيدة على المضيف ذات الاستهلاك المرتفع للموارد. #73369 (Nikita Taranov).
- في storage S3Queue، أصبح بالإمكان نقل الجداول القديمة ذات النمط ordered التي أُنشئت قبل 24.6 إلى البنية الجديدة مع buckets. #73467 (Kseniia Sumarokova).
- إضافة
system.azure_queueعلى غرارsystem.s3queueالموجود حاليًا. #73477 (Kseniia Sumarokova). - إصلاح تراجع كان يتسبب في خطأ عند استخدام collation locales مع modifiers. على سبيل المثال، أصبح
SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shiftedيعمل الآن. #73544 (Robert Schulze). - دعم النوع Nullable(JSON). #73556 (Pavel Kruglov).
- أصبحت الدالة
parseDateTime64(ومتغيراتها) تُنتج الآن نتائج صحيحة لتواريخ الإدخال السابقة لعام 1970 أو اللاحقة لعام 2106. مثال:SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar). - معالجة بعض مشكلات سهولة الاستخدام في clickhouse-disks التي أشار إليها المستخدمون. يُغلق #67136. #73616 (Daniil Ivanik).
- السماح بتعديل إعدادات commit في التخزين S3(Azure)Queue. (إعدادات commit هي: max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
- في التخزين S3(Azure)Queue، تجميع التقدم عبر المصادر للمقارنة مع إعدادات حدود commit. #73641 (Kseniia Sumarokova).
- دعم الإعدادات الأساسية في الاستعلام
BACKUP/RESTORE. #73650 (Vitaly Baranov). - قراءة
output_format_compression_levelعند إخراج Parquet. #73651 (Arthur Passos). - إضافة دعم لقراءة arrow fixed_size_list كنوع Array بدلًا من اعتباره نوعًا غير مدعوم. #73654 (Julian Meyers).
- يضيف طلب السحب هذا محركَي نسخ احتياطي:
Memory(يحتفظ بالنسخ الاحتياطية ضمن جلسة المستخدم الحالية)، وNull(لا يحتفظ بالنسخ الاحتياطية في أي مكان):. #73690 (Vitaly Baranov). - يمكن تغيير
concurrent_threads_soft_limit_numوconcurrent_threads_soft_limit_num_ratio_to_coresدون إعادة تشغيل الخادم. #73713 (Sergei Trifonov). - إضافة دعم للأنواع الرقمية الموسعة (Decimal والأعداد الصحيحة الكبيرة) في دوال formatReadable. #73765 (Raúl Marín).
- اعتماد مطابقة غير حساسة لحالة الأحرف لأسماء الحقول داخل أعمدة tuple. إغلاق https://github.com/apache/incubator-gluten/issues/8324. #73780 (李扬).
- دعم TLS لبروتوكول Postgres wire. #73812 (scanhex12).
- السماح بـ
LowCardinality(UUID)افتراضيًا. وقد ثبتت جدواه عمليًا لدى عملاء ClickHouse Cloud. #73826 (Alexey Milovidov). - تحسين الرسالة أثناء التثبيت. #73827 (Alexey Milovidov).
- تحسين الرسالة المتعلقة بإعادة تعيين كلمة المرور في ClickHouse Cloud. #73831 (Alexey Milovidov).
- تحسين رسالة الخطأ الخاصة بجدول File الذي لا يدعم append إلى ملف. #73832 (Alexey Milovidov).
- اطلب التأكيد عندما يطلب المستخدم عن طريق الخطأ إخراج تنسيق ثنائي في الطرفية (مثل Native وParquet وAvro). هذا يُغلق #59524. #73833 (Alexey Milovidov).
- أصبح نوع البيانات
BFloat16جاهزًا للاستخدام في بيئة production. #73840 (Alexey Milovidov). - إبراز المسافات اللاحقة في تنسيقات Pretty وVertical في الطرفية لتحسين الوضوح. يُتحكَّم في ذلك عبر الإعداد
output_format_pretty_highlight_trailing_spaces. التنفيذ الأولي من Braden Burns انطلاقًا من #72996. هذا يُغلق #71590. #73847 (Alexey Milovidov). - سيكتشف
clickhouse-clientوclickhouse-localالضغط على stdin تلقائيًا عندما يُعاد توجيهه من ملف. هذا يُغلق #70865. #73848 (Alexey Milovidov). - اقتطاع أسماء الأعمدة الطويلة جدًا في Pretty formats افتراضيًا. يُتحكَّم في ذلك بواسطة الإعدادين
output_format_pretty_max_column_name_width_cut_toوoutput_format_pretty_max_column_name_width_min_chars_to_cut. وهذا استكمال لعمل tanmaydatta في #66502. هذا يُغلق #65968. #73851 (Alexey Milovidov). - جعل تنسيقات
Prettyأجمل: دمج blocks إذا لم يمضِ وقت طويل منذ إخراج block السابقة. يُتحكَّم في ذلك عبر الإعدادين الجديدينoutput_format_pretty_squash_consecutive_ms(50 مللي ثانية افتراضيًا) وoutput_format_pretty_squash_max_wait_ms(1000 مللي ثانية افتراضيًا). استكمال لـ #49537. هذا يُغلق #49153. #73852 (Alexey Milovidov). - إصلاح type mapping لـ SQLite (أنواع الأعداد الصحيحة إلى
int64، وأعداد الفاصلة العائمة إلىfloat64). #73853 (Joanna Hulboj). - إضافة Metric لعدد source parts التي يجري دمجها حاليًا. هذا يُغلق #70809. #73868 (Alexey Milovidov).
- إبراز الأعمدة في تنسيق
Verticalإذا كان الإخراج موجَّهًا إلى طرفية. يمكن تعطيل ذلك عبر الإعدادoutput_format_pretty_color. #73898 (Alexey Milovidov). - جرى تحسين التوافق مع MySQL إلى مستوى أصبح معه
mysqlsh(واجهة CLI غنية لـ MySQL من Oracle) قادرًا الآن على الاتصال بـ ClickHouse. وهذا مطلوب لتسهيل الاختبار. #73912 (Alexey Milovidov). - إذا كان عدد السجلات الناتجة أكبر من N =
output_format_pretty_max_rows، فبدلًا من عرض أول N صفوف فقط، سيُقتطع جدول الإخراج من المنتصف، مع عرض أول N/2 صفوف وآخر N/2 صفوف. استكمالًا لـ #64200. هذا يُغلق #59502. #73929 (Alexey Milovidov). - كانت الدالة
isIPv4Stringتُرجع true إذا كان عنوان IPv4 صحيحًا ويتبعه بايت صفري، بينما ينبغي أن تُرجع false في هذه الحالة. استكمالًا لـ #65387. #73946 (Alexey Milovidov). - اجعل رمز الخطأ في MySQL wire protocol متوافقًا مع MySQL. استكمالًا لـ #56831. يُغلق #50957. #73948 (Alexey Milovidov).
- أضف الإعداد
validate_enum_literals_in_opearatorsللتحقق من القيم الحرفية لـ enum في المعاملات مثلINوNOT INمقابل نوع enum، وطرح استثناء إذا لم تكن القيمة الحرفية قيمة enum صالحة. #73985 (Vladimir Cherkasov). - في
S3(Azure)Queue، نفّذ commit لجميع الملفات (ضمن دفعة واحدة تحددها إعدادات commit) في معاملة Keeper واحدة. #73991 (Kseniia Sumarokova). - عطّل اكتشاف الترويسة لـ Executable UDFs والقواميس (إذ قد يؤدي ذلك إلى Function ‘X’: نتيجة خاطئة، المتوقع Y صفوف، والفعلي Y-1). #73992 (Azat Khuzhin).
- أضف الخيار
distributedإلىEXPLAIN PLAN.الآن، يضيفEXPLAIN distributed=1 ...الخطة البعيدة إلى خطواتReadFromParallelRemote*. #73994 (Nikolai Kochetov). - استخدم نوع الإرجاع الصحيح لـ not/xor مع الوسائط من النوع Dynamic. #74013 (Pavel Kruglov).
- اسمح بتغيير
add_implicit_sign_column_constraint_for_collapsing_engineبعد إنشاء الجدول. #74014 (Christoph Wurm). - دعم الأعمدة الفرعية في استعلام select للعرض المادي. #74030 (Pavel Kruglov).
- يمكن لـ Pretty formats عرض الحقول متعددة الأسطر داخل خلية جدول، مما يحسّن سهولة القراءة. هذا مفعّل افتراضيًا، ويمكن التحكم فيه عبر الإعداد
output_format_pretty_multiline_fields. استكمالًا للعمل الذي بدأه Volodyachan في #64094. هذا يُغلق #56912. #74032 (Alexey Milovidov). - دعم تحسين
predicate-push-downعلى مستوى خطة الاستعلام لخطوةMergingAggregated. هذا يحسّن الأداء لبعض الاستعلامات مع المُحلِّل الجديد. #74073 (Nikolai Kochetov). - توجد الآن ثلاث طرق بسيطة لتعيين prompt مخصص في
clickhouse-client: 1. عبر معامِل سطر الأوامر--prompt، 2. في ملف الإعدادات، عبر الإعداد<prompt>[...]</prompt>، و3. أيضًا في ملف الإعدادات، عبر إعدادات كل connection على حدة<connections_credentials><prompt>[...]</prompt></connection_credentials>. #74168 (Christoph Wurm). - تغيير رمز نجاح استجابة prometheus remote write من 200/OK إلى 204/NoContent. #74170 (Michael Dempsey).
- إتاحة رؤوس HTTP الخاصة بـ X-ClickHouse إلى JavaScript في المتصفح، مما يجعل كتابة التطبيقات أكثر سهولة. #74180 (Alexey Milovidov).
- سيشمل التنسيق
JSONEachRowWithProgressأحداثًا تتضمن metadata، بالإضافة إلى totals وextremes. كما يتضمنrows_before_limit_at_leastوrows_before_aggregation. وسيطبع التنسيق الاستثناء بشكل صحيح إذا وصل بعد نتائج جزئية. ويتضمن progress الآن عدد النانوثواني المنقضية. كما سيُرسَل حدث progress نهائي واحد في النهاية. ولن يُطبَع progress أثناء runtime الاستعلام بوتيرة أعلى من قيمة الإعدادinteractive_delay. #74181 (Alexey Milovidov). - سيدور Hourglass بسلاسة في واجهة Play. #74182 (Alexey Milovidov).
- حتى إذا كانت استجابة HTTP مضغوطة، فأرسِل الحزم فور وصولها. يتيح ذلك للمتصفح تلقي حزم progress والبيانات المضغوطة. #74201 (Alexey Milovidov).
- إضافة إمكانية إعادة تحميل
max_remote_read_network_bandwidth_for_serveوmax_remote_write_network_bandwidth_for_serverأثناء التشغيل دون إعادة تشغيل server. #74206 (Kai Zhu). - الاكتشاف التلقائي للاتصال الآمن استنادًا إلى الاتصال بالمنفذ 9440 في ClickHouse Client. #74212 (Christoph Wurm).
- مصادقة users باستخدام username فقط في http_handlers (في السابق، كان ذلك يتطلب من المستخدم إدخال password أيضًا). #74221 (Azat Khuzhin).
- تم تصنيف دعم لغات الاستعلام البديلة PRQL وKQL على أنه Experimental. لاستخدامها، حدِّد الإعدادات
allow_experimental_prql_dialect = 1وallow_experimental_kusto_dialect = 1. #74224 (Robert Schulze). - دعم إرجاع نوع Enum الافتراضي في المزيد من aggregate functions. #74272 (Raúl Marín).
- في
OPTIMIZE TABLE، أصبح من الممكن الآن تحديد keywordFORCEكبديل عن keyword الحاليةFINAL. #74342 (Robert Schulze). - تمت إضافة setting لشجرة الدمج باسم
materialize_skip_indexes_on_mergeتمنع إنشاء skip indexes أثناء merge. يتيح لك ذلك التحكم بشكل صريح (عبرALTER TABLE [..] MATERIALIZE INDEX [...]) في توقيت إنشاء skip indexes. وقد يكون هذا مفيدًا إذا كانت skip indexes مكلفة في الإنشاء (مثل vector similarity indexes). #74401 (Robert Schulze). - دعم subcolumns في expressions الافتراضية وmaterialized. #74403 (Pavel Kruglov).
- تحسين طلبات Keeper في Storage(S3/Azure)Queue. #74410 (Kseniia Sumarokova).
- إضافة المقياس IsServerShuttingDown، وهو مطلوب لتشغيل تنبيه عندما يستغرق إيقاف تشغيل الخادم وقتًا طويلًا جدًا. #74429 (Miсhael Stetsyuk).
- أُضيفت أسماء جداول Iceberg إلى EXPLAIN. #74485 (alekseev-maksim).
- استخدام ما يصل إلى
1000من النسخ المتماثلة المتوازية افتراضيًا. #74504 (Konstantin Bogdanov). - توفير رسالة خطأ أفضل عند استخدام RECURSIVE CTE مع analyzer القديم. #74523 (Raúl Marín).
- تحسين طلبات Keeper في Storage(S3/Azure)Queue. #74538 (Kseniia Sumarokova).
- تحسين إعادة استخدام جلسة HTTP عند القراءة من قرص S3 (#72401). #74548 (Julian Maicher).
- عرض رسائل خطأ موسَّعة في
system.errors. #74574 (Vitaly Baranov). - تم تمكين منطق backoff لجميع أنواع المهام المكررة. يتيح ذلك تقليل استهلاك CPU واستهلاك الذاكرة وأحجام ملفات السجل. وأُضيفت الإعدادات الجديدة
max_postpone_time_for_failed_replicated_fetches_msوmax_postpone_time_for_failed_replicated_merges_msوmax_postpone_time_for_failed_replicated_tasks_ms، وهي مشابهة لـmax_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov). - احتساب أكثر دقة للإعداد
max_joined_block_size_rowsلخوارزمية JOIN parallel_hash. يساعد ذلك على تجنب زيادة استهلاك الذاكرة مقارنةً بخوارزميةhash. #74630 (Nikita Taranov). - أُضيف دعم خيار config
dfs.client.use.datanode.hostnameفي libhdfs3. #74635 (Mikhail Tiukavkin). - إصلاح الخطأ Invalid: Codec ‘snappy’ لا يدعم تعيين مستوى ضغط. #74659 (Arthur Passos).
- السماح باستخدام password لاتصال client مع clickhouse-keeper. هذه الميزة ليست مفيدة جدًا إذا حدّدت إعداد SSL صحيحًا للخادم والعميل، لكنها قد تظل مفيدة في بعض الحالات. لا يمكن أن يزيد طول password عن 16 حرفًا. وهي غير مرتبطة بنموذج مصادقة Keeper. #74673 (alesapin).
- السماح باستخدام مسارات blob لحساب checksums أثناء إنشاء نسخة احتياطية. #74729 (Vitaly Baranov).
- استخدام sharding ديناميكي لـ JOIN إذا كان JOIN key عبارة عن prefix لـ PK في كلا الجزأين. يُفعَّل هذا التحسين بالإعداد
query_plan_join_shard_by_pk_ranges(معطَّل افتراضيًا). #74733 (Nikolai Kochetov). - إضافة رمز خطأ لمعيد تحميل الإعدادات. #74746 (Garrett Thomas).
- أُضيف دعم عناوين IPv6 في وظائف الجداول ومحركات MySQL وPostgreSQL. #74796 (Mikhail Koviazin).
- سيجري الآن دائمًا حفظ معلمات codec Gorilla في البيانات الوصفية للجدول داخل ملف .sql. يُغلق هذا: #70072. #74814 (Nikita Mikhaylov).
- تنفيذ تحسين short circuit للدالة
divideDecimal. يُصلح #74280. #74843 (Kevin Mingtarja). - تحسين أداء الطلبات المتعددة الكبيرة في Keeper. #74849 (Antonio Andelic).
- أصبح بالإمكان الآن تحديد المستخدمين داخل نصوص بدء التشغيل. #74894 (pufit).
- جلب الأجزاء بالتوازي في ALTER TABLE FETCH PARTITION (يُتحكَّم في حجم thread pool عبر
max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin). - أُضيف عمود معرّف الاستعلام إلى
system.query_cache(المشكلة #68205). #74982 (NamNguyenHoai). - أُعيد تفعيل بروتوكول SSH. وأُصلحت بعض الثغرات الحرجة، بحيث لم يعد ممكنًا استخدام pager مخصص أو تحديد
server-logs-file. كما عُطِّلت افتراضيًا إمكانية تمرير خيارات client عبر متغيرات البيئة (ولا يزال ذلك ممكنًا عبرssh-server.enable_client_options_passingفي config.xml). وأُضيف دعم لجدول التقدم، وإلغاء الاستعلام، والإكمال، وتقدم profile events، وstdin، وخيارsend_logs_level. يُغلق هذا: #74340. #74989 (Nikita Mikhaylov). - إصلاح تنسيق الاستثناءات باستخدام format مخصص إذا ظهرت أثناء تفسير الاستعلام. في الإصدارات السابقة، كانت الاستثناءات تُنسَّق باستخدام format الافتراضي بدلًا من format المحدد في الاستعلام. يُغلق هذا #55422. #74994 (Alexey Milovidov).
- تنفيذ تحسينات على parsing (تحليل معرّفات التسلسل: أُضيفت إمكانية تحليل معرّفات التسلسل في ملفات manifest، وكذلك تحليل البيانات الوصفية لـ Avro: أُعيد تصميم parser البيانات الوصفية لـ Avro ليكون سهل التوسعة للتحسينات المستقبلية). #75010 (Daniil Ivanik).
- أصبح مسموحًا بإلغاء استعلامات
ALTER TABLE ... FREEZE ...باستخدامKILL QUERYوtimeout(max_execution_time). #75016 (Kirill). - إضافة دعم
groupUniqArrayArrayMapبوصفهSimpleAggregateFunction. #75034 (Miel Donkers). - دعم prepared statements في postgres wire protocol. #75035 (scanhex12).
- إخفاء إعدادات بيانات اعتماد الكتالوج في محرك قاعدة البيانات
Iceberg. يُغلق #74559. #75080 (Kseniia Sumarokova). - إضافة بعض الميزات الناقصة إلى BuzzHouse: المعاملان
ILIKEوREGEXP، و<=>وIS NOT DISTINCT FROM. #75168 (Pedro Ferreira). - لم يعد مسموحًا بأن تكون قيمة
min_chunk_bytes_for_parallel_parsingصفرًا. ويُصلح هذا: #71110. #75239 (Nikita Mikhaylov). intExp2/intExp10: تحديد السلوك غير المعرّف: إرجاع 0 إذا كانت قيمة argument صغيرة جدًا، و18446744073709551615إذا كانت كبيرة جدًا، ورمي استثناء إذا كانتnan. #75312 (Vitaly Baranov).- دعم
s3.endpointدعمًا أصيلًا من إعدادات الكتالوج فيDatabaseIceberg. يُغلق #74558. #75375 (Kseniia Sumarokova). - عدم الفشل بصمت إذا لم تكن لدى المستخدم الذي ينفّذ
SYSTEM DROP REPLICAأذونات كافية. #75377 (Bharat Nallan). - إضافة ProfileEvent عن عدد المرات التي فشل فيها تفريغ أي من سجلات النظام. #75466 (Alexey Milovidov).
- إضافة تحقّق وLogging لعمليتَي فك التشفير وفك الضغط. #75471 (Vitaly Baranov).
- أُضيف دعم لعلامة الميكرو (U+00B5) في الدالة
parseTimeDelta. وأصبح الآن كلٌّ من علامة الميكرو (U+00B5) والحرف اليوناني mu (U+03BC) معترفًا بهما بوصفهما تمثيلين صالحين للميكروثانية، بما يجعل سلوك ClickHouse متوافقًا مع تنفيذ Go (انظر time.go وtime/format.go). #75472 (Vitaly Orlov). - استبدال إعداد الخادم (
send_settings_to_client) بإعداد العميل (apply_settings_from_server) الذي يتحكم في ما إذا كان ينبغي للشيفرة على جانب العميل (مثل parsing بيانات INSERT وformatting مخرجات query) استخدام الإعدادات منusers.xmlالخاص بالخادم ومن profile المستخدم. بخلاف ذلك، لا تُستخدم إلا الإعدادات القادمة من سطر أوامر العميل، وsession، وquery. لاحظ أن هذا ينطبق فقط على native client (وليس مثلًا HTTP)، ولا ينطبق على معظم query processing (الذي يحدث على الخادم). #75478 (Michael Kolupaev). - تحسين في Keeper: تعطيل حساب digest عند تنفيذ commit إلى التخزين داخل الذاكرة لتحسين الأداء. ويمكن تفعيله عبر إعداد config
keeper_server.digest_enabled_on_commit. ولا يزال يُحتسب digest عند preprocess الطلبات. #75490 (Antonio Andelic). - Push down لتعبير التصفية من JOIN ON متى أمكن. #75536 (Vladimir Cherkasov).
- رسائل خطأ أفضل عند أخطاء الصياغة. سابقًا، إذا كان الاستعلام كبيرًا جدًا وكان الـ token الذي يتجاوز طوله الحد عبارة عن سلسلة نصية طويلة جدًا، كانت الرسالة التي تشرح السبب تضيع بين مثالين لهذا الـ token الطويل جدًا. كما أُصلحت المشكلة التي كان فيها الاستعلام بترميز UTF-8 يُقتطع بشكل غير صحيح في رسالة الخطأ، وأُصلح أيضًا الإفراط في وضع علامات الاقتباس حول أجزاء من الاستعلام. هذا يُغلق #75473. #75561 (Alexey Milovidov).
- إضافة profile events إلى التخزين
S3(Azure)Queue. #75618 (Kseniia Sumarokova). - تعطيل إرسال الإعدادات من server إلى client (
send_settings_to_client=false) لأغراض التوافق (ستُعاد لاحقًا صياغة هذه الميزة على شكل client setting لتحسين سهولة الاستخدام). #75648 (Michael Kolupaev). - إضافة config باسم
memory_worker_correct_memory_trackerلتمكين تصحيح memory tracker الداخلي اعتمادًا على معلومات تُقرأ من source مختلف دوريًا في background thread. #75714 (Antonio Andelic). - استخدام Analyzer في PrometheusRemoteReadProtocol. #75729 (Dmitry Novik).
- يوجد دعم لنوعي Metric: Gauge وCounter. لكنهما غير كافيين لبعض المقاييس (مثل response time لطلبات Keeper)، لذلك هناك حاجة إلى دعم نوع histogram metric. وتحاكي الواجهة عميل Prometheus بشكل وثيق، إذ يكفي استدعاء
observe(value)لزيادة العداد في الـ bucket المقابل للقيمة. وتُعرَض histogram metrics عبر system.histogram_metrics. #75736 (Miсhael Stetsyuk). - إضافة column
normalized_query_hashإلىsystem.processes. ملاحظة: رغم أنه يمكن حسابه بسهولة أثناء التنفيذ باستخدام الدالةnormalizedQueryHash، فإن هذا مطلوب تمهيدًا لتغييرات لاحقة. #75756 (Alexey Milovidov). - لن يؤدي الاستعلام عن
system.tablesإلى حدوث error حتى إذا وُجد table من نوعMergeأُنشئ فوق database لم تعد موجودة. وإزالة method getTotalRowsمن جداولHiveلأننا لا نسمح لها بتنفيذ أعمال معقدة. #75772 (Alexey Milovidov). - أصبحت web UI تتضمن الآن تنقلًا تفاعليًا بين قواعد البيانات. #75777 (Alexey Milovidov).
- السماح بدمج disks للقراءة فقط وdisks للقراءة والكتابة ضمن storage policy (على شكل وحدات تخزين متعددة أو أقراص متعددة). يتيح ذلك قراءة البيانات من وحدة التخزين بالكامل، بينما ستفضّل عمليات insert القرص القابل للكتابة (أي storage policy من نوع copy-on-write). #75862 (Azat Khuzhin).
- إزالة trace_id من ORDER BY الافتراضي لـ system.opentelemetry_span_log. #75907 (Azat Khuzhin).
- يمكن الآن تطبيق التشفير (سمة XML
encrypted_by) على أي configuration file (config.xml و users.xml وملفات الإعداد المتداخلة). سابقًا، كان ذلك يعمل فقط مع ملف config.xml ذي المستوى الأعلى. #75911 (Mikhail Gorshkov). - تخزين start_time/end_time للنسخ الاحتياطية بدقة الميكروثانية. #75929 (Aleksandr Musorin).
- إضافة المقياس
MemoryTrackingUncorrectedالذي يعرض قيمة متتبّع الذاكرة العام الداخلي غير المصحّحة بواسطة RSS. #75935 (Antonio Andelic). - حساب أحجام الأعمدة والفهارس عند الحاجة في MergeTree. #75938 (Pavel Kruglov).
- تحويل
joinإلىin subqueryإذا كان عمود الإخراج مرتبطًا بالجدول الأيسر؛ لكن ذلك يتطلب أولًا خطوة لضمان التفرد، لذا فهو معطّل افتراضيًا إلى أن تُضاف هذه الخطوة لاحقًا. #75942 (Shichao Jin). - أُضيف إعداد خادوم
throw_on_unknown_workloadيتيح اختيار السلوك عند تنفيذ استعلام مع ضبطworkloadعلى قيمة غير معروفة: إما السماح بوصول غير محدود (الافتراضي) أو إطلاق خطأRESOURCE_ACCESS_DENIED. وهذا مفيد لفرض استخدام جميع الاستعلامات لجدولة أعباء العمل. #75999 (Sergei Trifonov). - جعل Kafka table engine الجديدة والتجريبية تلتزم بالكامل بـ feature flags الخاصة بـ Keeper. #76004 (János Benjamin Antal).
- عدم إعادة كتابة subcolumns إلى getSubcolumn في ARRAY JOIN ما لم يكن ذلك ضروريًا. #76018 (Pavel Kruglov).
- إعادة محاولة أخطاء coordination عند تحميل الجداول. #76020 (Alexander Tokmakov).
- تحسين جدول
system.warningsوإضافة بعض warning messages الديناميكية التي يمكن إضافتها أو تحديثها أو إزالتها. #76029 (Bharat Nallan). - دعم flush سجلات فردية في SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
- تحسين صفحة
/binaryالخاصة بالخادوم: استخدام منحنى Hilbert بدلًا من منحنى Morton، وعرض عناوين بحجم 512 ميغابايت داخل المربع، مما يملأه بصورة أفضل (في الإصدارات السابقة، كانت العناوين تملأ نصف المربع فقط)، وتلوين العناوين بحسب قربها من اسم المكتبة بدلًا من اسم الدالة، مع السماح بالتمرير لمسافة أكبر قليلًا خارج المنطقة. #76192 (Alexey Milovidov). - يجعل هذا التغيير تشغيل استعلام مثل
ALTER USER user1 ADD PROFILES a, DROP ALL PROFILESغير ممكن، لأن جميع عملياتDROPيجب أن تأتي أولًا في الترتيب. #76242 (pufit). - تحسينات متنوعة على SYNC REPLICA (رسائل خطأ أفضل، واختبارات أفضل، وفحوصات سلامة). #76307 (Azat Khuzhin).
- إعادة محاولة استعلامات ON CLUSTER في حالة TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
- تغيير default value للإعداد
output_format_pretty_max_rowsمن 10000 إلى 1000. أعتقد أن ذلك أفضل من ناحية سهولة الاستخدام. #76407 (Alexey Milovidov). - دعم refresh في جداول MergeTree المخصّصة للقراءة فقط. #76467 (Alexey Milovidov).
- استخدام آلية fallback الصحيحة عند فشل النسخ متعدد الأجزاء إلى S3 أثناء النسخ الاحتياطي بسبب خطأ Access Denied. قد يتسبب النسخ متعدد الأجزاء في ظهور خطأ Access Denied عند إجراء النسخ الاحتياطي بين bucket تستخدم credentials مختلفة. #76515 (Antonio Andelic).
- تسريع إيقاف تشغيل ClickHouse Servers (إزالة التأخير البالغ 2.5 ثانية). #76550 (Azat Khuzhin).
- إضافة query_id إلى system.errors. التذكرة ذات الصلة #75815. #76581 (Vladimir Baikov).
- ترقية librdkafka إلى الإصدار 2.8.0 وتحسين تسلسل إيقاف التشغيل لـ Kafka tables، ما يقلل التأخير أثناء حذف الجداول وإعادة تشغيل الخادم. لم يعد
engine=Kafkaيغادر consumer group صراحةً عند حذف table. وبدلًا من ذلك، يبقى consumer ضمن المجموعة حتى تتم إزالته تلقائيًا بعدsession_timeout_ms(الافتراضي: 45 ثانية) من عدم النشاط. #76621 (filimonov). - إصلاح التحقق من إعدادات طلبات S3. #76658 (Vitaly Baranov).
- تجنب التخصيص الزائد في ReadBufferFromS3 وغيرها من buffers الخاصة بالقراءة عن بُعد، مع خفض استهلاكها للذاكرة إلى النصف. #76692 (Sema Checherinda).
- دعم قراءة JSON type وsubcolumns من View. #76903 (Pavel Kruglov).
- إضافة دعم لتحويل UInt128 إلى IPv6. يتيح ذلك استخدام العملية
bitAndوالعمليات الحسابية على IPv6 ثم التحويل مرة أخرى إلى IPv6. يُغلق هذا #76752. كما يتيح أيضًا تحويل ناتج العمليةbitAndعلى IPv6 مرة أخرى إلى IPv6. انظر: https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman). - تحتوي system tables مثل
server_settingsأوsettingsعلى عمود للقيمةdefault، وهو أمر مفيد. لكنmerge_tree_settingsوreplicated_merge_tree_settingsفقط لا يتوفر فيهما هذا العمود. #76942 (Diego Nieto). - عدم parse قيم Bool الخاصة في text formats داخل Variant type افتراضيًا. ويمكن تفعيل ذلك باستخدام الإعداد
allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov). - دعم مدة انتظار قابلة للتهيئة لكل task بالنسبة إلى query منخفضة الأولوية، على مستوى session ومستوى server. #77013 (VicoWu).
- إضافة
ProfileEvents::QueryPreempted، وله المنطق نفسه فيCurrentMetrics::QueryPreempted. #77015 (VicoWu). - في السابق، كان database replicated قد يطبع credentials المحددة في query ضمن logs. وقد أُصلح هذا السلوك. وهذا يغلق: #77123. #77133 (Nikita Mikhaylov).
- ترقية zstd من 1.5.5 إلى 1.5.7، والذي يتضمن تحسينات ملحوظة في الأداء. #77137 (Pradeep Chhetri).
- السماح باستخدام ALTER TABLE DROP PARTITION مع قرص plain_rewritable. #77138 (Julia Kartseva).
- إضافة إمكانية الانتظار عشوائيًا لمدة تصل إلى 500ms، بشكل مستقل عن أحجام الأجزاء، قبل تنفيذ عمليات الدمج/mutations في حالة النسخ المتماثل zero-copy. #77165 (Alexey Katsman).
- دعم إعادة التسمية الذرية عند استخدام
TRUNCATEمعINTO OUTFILE. يحل #70323. #77181 (Onkar Deshpande). - استخدام FixedString مع الأنواع CHARACTER وCHAR وBPCHAR في PostgreSQL. #77304 (Pablo Marcos).
- السماح بتحديد ملف metadata المطلوب قراءته صراحةً لـ Iceberg باستخدام إعداد التخزين/دالة الجدول
iceberg_metadata_file_path. يصلح #47412. #77318 (alesapin). - دعم استخدام قرص بعيد لقواعد البيانات لتخزين ملفات metadata. #77365 (Tuan Pham Anh).
- تنفيذ المقارنة لقيم نوع بيانات JSON. يمكن الآن مقارنة كائنات JSON بطريقة مشابهة لـ Maps. #77397 (Pavel Kruglov).
- تم التراجع عن هذا التغيير. #77399 (Yarik Briukhovetskyi).
- يدعم إعداد النسخ الاحتياطي/الاستعادة
allow_s3_native_copyالآن ثلاث قيم ممكنة: -False- لن يُستخدم النسخ الأصلي في S3؛ -True(الافتراضي السابق) - سيحاول ClickHouse أولًا النسخ الأصلي في S3، وإذا فشل فسيعود إلى نهج القراءة+الكتابة؛ -'auto'(الافتراضي الجديد) - سيقارن ClickHouse أولًا بيانات اعتماد المصدر والوجهة. إذا كانت متطابقة، فسيحاول ClickHouse النسخ الأصلي في S3 ثم قد يعود إلى نهج القراءة+الكتابة. وإذا كانت مختلفة، فسينتقل ClickHouse مباشرةً إلى نهج القراءة+الكتابة. #77401 (Vitaly Baranov). - دعم ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION مع قرص plain_rewritable. #77406 (Julia Kartseva).
- تم التراجع عن ذاكرة التخزين المؤقت لـ skipping index. #77447 (Nikita Mikhaylov).
- تقليل استخدام الذاكرة أثناء عمليات الجلب المسبق لعمود JSON في الأجزاء العريضة. #77640 (Pavel Kruglov).
- دعم استخدام رمز جلسة AWS وبيانات اعتماد البيئة في delta kernel لمحرك جدول DeltaLake. #77661 (Kseniia Sumarokova).
- دعم معاملات الاستعلام داخل الإعداد
additional_table_filters. بعد هذا التغيير، سينجح الاستعلام التالي:. #77680 (wxybear). - يمكن الآن وسم الدوال المعرّفة من قبل المستخدم (UDFs) على أنها حتمية عبر وسم جديد في تعريف XML الخاص بها. كما تتحقق ذاكرة التخزين المؤقت للاستعلامات الآن مما إذا كانت UDFs المستدعاة داخل الاستعلام حتمية. وإذا كان الأمر كذلك، فإنها تخزّن نتيجة الاستعلام مؤقتًا. (Issue #59988). #77769 (Jimmy Aguilar Mena).
- تمت إضافة التحقق من صحة معلمات محرك الجدول Buffer. #77840 (Pervakov Grigorii).
- أُضيف الإعداد
enable_hdfs_preadلتمكين أو تعطيل hdfs pread. #77885 (kevinyhzou). - أُضيفت profile events لعدد طلبات القراءة والكتابة
multiفي ZooKeeper. #77888 (JackyWoo). - السماح بإنشاء جدول مؤقت والإدراج فيه عند تفعيل disable_insertion_and_mutation. #77901 (Xu Jia).
- خُفِّضت قيمة max_insert_delayed_streams_for_parallel_write (إلى 100). #77919 (Azat Khuzhin).
- أُضيفت إمكانية ضبط عدد الأعمدة التي يمكن لعمليات الدمج تنفيذ flush لها بالتوازي باستخدام
max_merge_delayed_streams_for_parallel_write(من المفترض أن يقلل هذا استهلاك الذاكرة لعمليات vertical merge إلى S3 بنحو 25 مرة). #77922 (Azat Khuzhin). - إصلاح parsing السنة في Joda syntax مثل ‘yyy’. #77973 (李扬).
- سيُنفَّذ Attach لأجزاء جداول MergeTree وفق ترتيب block الخاص بها، وهو أمر مهم لخوارزميات الدمج الخاصة، مثل ReplacingMergeTree. هذا يغلق #71009. #77976 (Alexey Milovidov).
- أصبحت Query masking rules قادرة الآن على throw LOGICAL_ERROR في حال حدوث تطابق. وسيساعد ذلك في التحقق مما إذا كانت password محددة مسبقًا تتسرّب إلى أي موضع في logs. #78094 (Nikita Mikhaylov).
- تمت إضافة العمود
index_length_columnإلىinformation_schema.tablesلتحسين التوافق مع MySQL. #78119 (Paweł Zakrzewski). - استُحدث مقياسان جديدان:
TotalMergeFailuresوNonAbortedMergeFailures. هناك حاجة إلى هذين المقياسين لاكتشاف الحالات التي يفشل فيها عدد كبير جدًا من عمليات الدمج خلال فترة قصيرة. #78150 (Miсhael Stetsyuk). - إصلاح parsing غير الصحيح لـ S3 uri عندما لا يكون key محددًا في path style. #78185 (Arthur Passos).
- إصلاح values غير الصحيحة لمقاييس Asynchronous
BlockActiveTimeوBlockDiscardTimeوBlockWriteTimeوBlockQueueTimeوBlockReadTime(قبل هذا التغيير، كان يُبلّغ بشكل غير صحيح عن ثانية واحدة على أنها 0.001). #78211 (filimonov). - مراعاة الحد
loading_retriesللأخطاء أثناء الدفع إلىmaterialized viewفي StorageS3(Azure)Queue. قبل ذلك، كانت إعادة المحاولة على مثل هذه الأخطاء تستمر إلى أجل غير مسمى. #78313 (Kseniia Sumarokova). - في StorageDeltaLake مع تنفيذ delta-kernel-rs، تم إصلاح الأداء وشريط التقدم. #78368 (Kseniia Sumarokova).
- كان بإمكان
vector similarity indexأن يخصص من الذاكرة الرئيسية ما يصل إلى ضعفي المطلوب. يعيد هذا الإصلاح صياغة استراتيجية تخصيص الذاكرة، مما يقلل استهلاك الذاكرة ويحسن فعاليةvector similarity index cache. (issue #78056). #78394 (Shankar Iyer). - إضافة إعداد
schema_typeإلى جدولsystem.metric_logلتحديد نوع الـ schema. هناك ثلاثة أنواع schema مسموح بها:wide— الـ schema الحالي، حيث يكون كل metric/event في عمود منفصل (وهو الأكثر كفاءة عند قراءة أعمدة منفصلة)، وtransposed— مشابه لـsystem.asynchronous_metric_log، حيث تُخزَّن metrics/events على شكل صفوف، وtransposed_with_wide_view— وهو الأكثر إثارة للاهتمام، إذ ينشئunderlying tableبـ schema من نوعtransposed، ويضيف أيضًاviewبـ schema من نوعwideيترجمqueriesإلىunderlying table. فيtransposed_with_wide_view، لا يتم دعم دقة أقل من الثانية فيview، ويكونevent_time_microsecondsمجردaliasمن أجلbackward compatibility. #78412 (alesapin). - دعم
includeوfrom_envوfrom_zkلأقراص وقت التشغيل. يغلق #78177. #78470 (Kseniia Sumarokova). - إضافة عدة طرق مريحة لتحديد ملف
metadata.jsonالجذر فيiceberg table functionوengine. يغلق #78455. #78475 (Daniil Ivanik). - دعم
partition pruningفي delta lake. #78486 (Kseniia Sumarokova). - دعم المصادقة المعتمدة على كلمة المرور في بروتوكول SSH في ClickHouse. #78586 (Nikita Mikhaylov).
- إضافة تحذير ديناميكي إلى جدول
system.warningsبشأنmutationsطويلة التشغيل. #78658 (Bharat Nallan). - إسقاط
connectionsإذا كانCPUتحت حمل مفرط جدًا. ويُتخذ القرار استنادًا إلى نسبة وقت الانتظار (OSCPUWaitMicroseconds) إلى وقت الانشغال (OSCPUVirtualTimeMicroseconds). ويُسقَطqueryباحتمال معين عندما تكون هذه النسبة بينmin_os_cpu_wait_time_ratio_to_drop_connectionوmax_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman). - السماح بقيمة فارغة في
hive partitioning. #78816 (Arthur Passos). - إصلاح تحويل الأنواع في clause
INلـBFloat16(أي إنSELECT toBFloat16(1) IN [1, 2, 3];يعيد الآن1). يغلق #78754. #78839 (Raufs Dunamalijevs). - عدم التحقق من
partsالموجودة علىdisksالأخرى في MergeTree إذا كانdisk=مضبوطًا. #78855 (Azat Khuzhin). - جعل أنواع البيانات في
used_data_type_familiesضمنsystem.query_logبصيغتها المعيارية. #78972 (Kseniia Sumarokova).
إصلاح خلل (سلوك غير صحيح ظاهر للمستخدم في إصدار مستقر رسمي)
- إصلاح تعذّر إنشاء عقدة SEQUENTIAL باستخدام keeper-client. #64177 (Duc Canh Le).
- إصلاح تحليل المعرّفات من النطاقات الأب. والسماح باستخدام الأسماء المستعارة للتعبيرات في عبارة WITH. يُصلح #58994. يُصلح #62946. يُصلح #63239. يُصلح #65233. يُصلح #71659. يُصلح #71828. يُصلح #68749. #66143 (Dmitry Novik).
- إصلاح العدّ غير الصحيح للأحرف في PositionImpl::vectorVector. #71003 (思维).
- إصلاح اطراد الدالة negate. في الإصدارات السابقة، كان الاستعلام
select * from a where -x = -42;، حيث إنxهو المفتاح الأساسي، قد يُرجع نتيجة خاطئة. #71440 (Michael Kolupaev). - كانت عمليات
RESTOREالخاصة بكيانات الوصول تتطلب أذونات أكثر من اللازم بسبب حالات سحب الصلاحيات الجزئية غير المعالَجة. ويُصلح هذا التغيير المشكلة. يُغلق #71853. #71958 (pufit). - تجنّب حدوث توقّف بعد
ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. واسترجاع الإعدادات الصحيحة لجدولة المهام الخلفية. #72024 (Aleksei Filatov). - إصلاح التعامل مع tuple الفارغة في arrayIntersect. هذا يُصلح #72578. #72581 (Amos Bird).
- إصلاح التعامل مع tuples الفارغة في بعض صيغ الإدخال والإخراج (مثل Parquet وArrow). #72616 (Michael Kolupaev).
- أصبحت عبارات GRANT SELECT/INSERT على مستوى الأعمدة في قواعد البيانات/الجداول ذات أحرف البدل تُرجع الآن خطأ. #72646 (Johann Gan).
- إصلاح الحالة التي يتعذّر فيها على المستخدم تشغيل
REVOKE ALL ON *.*بسبب منح ضمنية في كيان الوصول المستهدف. #72872 (pufit). - إصلاح التعليق أثناء معالجة الدفعة المعلّقة لـ INSERT الموزّع غير المتزامن (بسبب مثلًا
No such file or directory). #72939 (Azat Khuzhin). - إضافة دعم Azure SAS Tokens. #72959 (Azat Khuzhin).
- إصلاح تنسيق المنطقة الزمنية ذات الإزاحة الموجبة في الدالة scalar formatDateTime. #73091 (ollidraese).
- إصلاح إظهار منفذ المصدر بشكل صحيح عند إنشاء اتصال عبر PROXYv1 وتعيين
auth_use_forwarded_address، إذ كان يُستخدم سابقًا منفذ الوكيل بشكل غير صحيح. وإضافة الدالةcurrentQueryID(). #73095 (Yakov Olkhovskiy). - تمرير إعدادات التنسيق إلى
NativeWriterفيTCPHandler، بحيث تُطبَّق إعدادات مثلoutput_format_native_write_json_as_stringبشكل صحيح. #73179 (Pavel Kruglov). - إصلاح قراءة الأعمدة الفرعية للكائنات الفرعية في JSON عند استخدام بادئة غير صحيحة. #73182 (Pavel Kruglov).
- إصلاح تعطل في
StorageObjectStorageQueue. #73274 (Kseniia Sumarokova). - إصلاح تعطل نادر في العرض المادي القابل للتحديث أثناء إيقاف الخادم. #73323 (Michael Kolupaev).
- أصبح العنصر النائب
%fفي الدالةformatDateTimeيُنتج الآن دائمًا ستة أرقام (لأجزاء الثانية). وهذا يجعل السلوك متوافقًا مع الدالةDATE_FORMATفي MySQL. ويمكن استعادة السلوك السابق باستخدام الإعدادformatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese). - تحسين تحويل
DateTimeأثناء تحليل الفهرس عبر فرض سلوك التشبّع في التحويلات الضمنية منDateإلىDateTime. ويعالج هذا حالات عدم الدقة المحتملة في تحليل الفهرس الناتجة عن قيود نطاقDateTime. كما يُصلح #73307. ويُصلح أيضًا التحويل الصريحtoDateTimeعندما تكونdate_time_overflow_behavior = 'ignore'، وهي القيمة الافتراضية. #73326 (Amos Bird). - إصلاح التصفية حسب العمود
_etagأثناء القراءة من تخزينs3وtable function. #73353 (Anton Popov). - إصلاح الخطأ
Not-ready Set is passed as the second argument for function 'in'عند استخدامIN (subquery)في تعبيرJOIN ONمع analyzer القديم. #73382 (Nikolai Kochetov). - إصلاح التحضير لعملية squashin لأعمدة
DynamicوJSON. في السابق، كان يمكن في بعض الحالات إدراج أنواع جديدة فيshared variant/shared dataحتى عند عدم بلوغ الحد الأقصى للأنواع/المسارات. #73388 (Pavel Kruglov). - التحقق من الأحجام التالفة أثناء فك الترميز الثنائي للأنواع لتجنّب تخصيصات كبيرة جدًا. #73390 (Pavel Kruglov).
- إصلاح خطأ منطقي عند القراءة من cluster ذي replica واحدة مع تمكين parallel replicas. #73403 (Michael Kolupaev).
- إصلاح
ObjectStorageQueueمع ZooKeeper وKeeper الأقدم. #73420 (Antonio Andelic). - تنفيذ إصلاح مطلوب لتمكين partitioning بنمط Hive افتراضيًا. #73479 (Yarik Briukhovetskyi).
- إصلاح data race عند إنشاء vector similarity index. #73517 (Antonio Andelic).
- إصلاح segfault عندما يحتوي مصدر الـ Dictionary على دالة ببيانات غير صحيحة. #73535 (Yarik Briukhovetskyi).
- إصلاح إعادات المحاولة عند فشل
insertفيS3(Azure)Queue. يغلق #70951. #73546 (Kseniia Sumarokova). - تم إصلاح خطأ في الدالة
tupleElementقد يظهر في بعض الحالات مع Tuples التي تحتوي على عناصرLowCardinalityوعند تفعيل الإعدادoptimize_functions_to_subcolumns. #73548 (Anton Popov). - إصلاح تحليل enum glob عندما يتبعه نطاق. يعالج #73473. #73569 (Konstantin Bogdanov).
- تم إصلاح تجاهل
parallel_replicas_for_non_replicated_merge_treeداخل الاستعلامات الفرعية للجداول غير المكررة. #73584 (Igor Nikonov). - إصلاح حالة رمي
std::logical_errorعند تعذّر جدولة مهمة. تم العثور عليها في اختبارات الضغط. مثال على stacktrace:2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.#73629 (Alexander Gololobov). - لا تفسّر الاستعلامات في
EXPLAIN SYNTAXلتجنب الأخطاء المنطقية الناتجة عن مرحلة معالجة غير صحيحة للاستعلامات الموزعة. يعالج #65205. #73634 (Dmitry Novik). - إصلاح احتمال عدم اتساق البيانات في عمود Dynamic. كما يعالج احتمال ظهور الخطأ المنطقي
Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov). - تم إصلاح
NOT_FOUND_COLUMN_IN_BLOCKفي الاستعلامات التي تتضمنFINALوSAMPLE. كما تم إصلاح النتيجة غير الصحيحة في عمليات SELECT التي تستخدمFINALمنCollapsingMergeTreeمع تفعيل تحسيناتFINAL. #73682 (Anton Popov). - إصلاح تعطل في LIMIT BY COLUMNS. #73686 (Raúl Marín).
- إصلاح الخلل الذي يحدث عند فرض استخدام projection عادي، مع كون query مطابقة تمامًا لـ projection المعرّف، لكن projection لا يُختار وبالتالي يظهر خطأ. #73700 (Shichao Jin).
- إصلاح إلغاء تسلسل بنية Dynamic/Object. كان ذلك قد يؤدي إلى استثناءات
CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov). - تخطّي
metadata_version.txtأثناء استعادة الأجزاء من نسخة احتياطية. #73768 (Vitaly Baranov). - يعالج #73737. #73775 (zhanglistar).
- يعالج #72078 (كان دعم S3 Express معطّلًا). #73777 (Sameer Tamsekar).
- السماح بدمج الصفوف التي تحتوي على قيم غير صالحة في عمود sign في جداول CollapsingMergeTree. #73864 (Christoph Wurm).
- إصلاح الخطأ الآتي
Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh). - يُصلح الفشل المتقطع في مقارنة أنواع
map()بسبب إمكانية إنشاءMapيفتقر إلى التسمية الصريحة ('keys','values') للـ tuple المتداخلة فيه. #73878 (Yakov Olkhovskiy). - يتجاهل window functions أثناء تحليل عبارة GROUP BY ALL. يُصلح #73501. #73916 (Dmitry Novik).
- يمرّر إعدادات Native format بشكل صحيح في اتصال العميل بالخادم. #73924 (Pavel Kruglov).
- يُصلح privileges الضمنية (كانت تعمل سابقًا كحرف بدل). #73932 (Azat Khuzhin).
- يُصلح الارتفاع الكبير في memory usage أثناء إنشاء Maps متداخلة. #73982 (Pavel Kruglov).
- يُصلح parsing لـ JSON المتداخل ذي المفاتيح الفارغة. #73993 (Pavel Kruglov).
- إصلاح: قد لا تتم إضافة alias إلى projection إذا كان مُشارًا إليه بواسطة alias آخر وتم اختياره بترتيب عكسي. #74033 (Yakov Olkhovskiy).
- يمكن مشاركة disk يستخدم metadata من نوع plain_rewritable بين عدة مثيلات server. ومن المتوقع أن يقرأ أحد المثيلات كائن metadata بينما يعدّله مثيل آخر. يتم تجاهل أخطاء عدم العثور على object أثناء تهيئة plain_rewritable مع Azure storage، على نحو مماثل للسلوك المطبّق على S3. #74059 (Julia Kartseva).
- يُصلح سلوك
anyوanyLastمع أنواع enum والجدول الفارغ. #74061 (Joanna Hulboj). - يُصلح الحالة التي يحدد فيها المستخدم arguments مُسمّاة في Kafka table engine. #74064 (Yarik Briukhovetskyi).
- يُصلح تعديل إعدادات Storage
S3Queueذات البادئة “s3queue_” إلى الصيغة بدونها والعكس صحيح. #74075 (Kseniia Sumarokova). - يضيف إعداد
allow_push_predicate_ast_for_distributed_subqueries. يضيف هذا دفع predicate المعتمد على AST إلى المصدر في distributed queries باستخدام analyzer. هذا حل مؤقت نستخدمه إلى أن يصبح دعم distributed queries مع serialization لـ query plan متاحًا. يغلق #66878 #69472 #65638 #68030 #73718. #74085 (Nikolai Kochetov). - يُصلح مشكلة تحدث بعد #73095، حيث قد يظهر المنفذ في الحقل forwarded_for، مما يؤدي إلى تعذّر تحليل host name عند تضمين المنفذ. #74116 (Yakov Olkhovskiy).
- يُصلح التنسيق غير الصحيح لـ
ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei). - إصلاح للمشكلة #66112. #74128 (Anton Ivashkin).
- لم يعد ممكنًا استخدام
Loopكمحرك جدول فيCREATE TABLE. فقد كان هذا الاستخدام يتسبب سابقًا في حدوث أخطاء segfault. #74137 (Yarik Briukhovetskyi). - إصلاح مشكلة أمنية لمنع حقن SQL في دوال الجداول الخاصة بـ PostgreSQL و SQLite. #74144 (Pablo Marcos).
- إصلاح تعطل عند قراءة عمود فرعي من جدول يستخدم محرك Memory المضغوط. يعالج هذا #74009. #74161 (Nikita Taranov).
- إصلاح حلقة لا نهائية كانت تحدث مع الاستعلامات على system.detached_tables. #74190 (Konstantin Morozov).
- إصلاح خطأ منطقي في s3queue أثناء تعيين الملف كـ failed. #74216 (Kseniia Sumarokova).
- التحقق من الأنواع غير المدعومة لبعض وحدات التخزين. #74218 (Pavel Kruglov).
- إصلاح تعطل في الاستعلام
INSERT INTO SELECTعبر واجهة PostgreSQL على macOS (المشكلة #72938). #74231 (Artem Yurov). - إصلاح إعدادات النسخ الأصلي (
allow_s3_native_copy/allow_azure_native_copy) لعمليةRESTOREمن النسخة الاحتياطية الأساسية. #74286 (Azat Khuzhin). - إصلاح المشكلة التي تحدث عندما يكون عدد الجداول المفصولة في قاعدة البيانات من مضاعفات max_block_size. #74289 (Konstantin Morozov).
- إصلاح النسخ عبر ObjectStorage (أي S3) عندما تختلف بيانات الاعتماد بين المصدر والوجهة. #74331 (Azat Khuzhin).
- إصلاح عدم تهيئة max_log_ptr في قاعدة البيانات المكررة. #74336 (Konstantin Morozov).
- إصلاح اكتشاف “استخدام طريقة Rewrite في واجهة برمجة تطبيقات JSON” للنسخ الأصلي على GCS. #74338 (Azat Khuzhin).
- إصلاح تعطل عند إدراج interval (المشكلة #74299). #74478 (NamNguyenHoai).
- إصلاح التحليل غير الصحيح للإسقاطات عند استخدام
count(nullable)في الإسقاطات التجميعية. يعالج هذا #74495. ويضيف طلب الدمج هذا أيضًا بعض السجلات حول تحليل الإسقاطات لتوضيح سبب استخدام إسقاط معيّن أو عدم استخدامه. #74498 (Amos Bird). - إصلاح الحساب غير الصحيح لـ
BackgroundMergesAndMutationsPoolSize(إذ كانت قيمته ضعف القيمة الفعلية). #74509 (alesapin). - إصلاح خطأ تسرّب عمليات watch في Keeper عند تمكين Cluster Discovery. #74521 (RinChanNOW).
- إصلاح تنسيق ثوابت JSON الحرفية. وكان هذا قد يؤدي سابقًا إلى أخطاء في البنية أثناء إرسال query إلى server آخر. #74533 (Pavel Kruglov).
- إصلاح مشكلة محاذاة الذاكرة التي أبلغ عنها UBSan #74512. #74534 (Arthur Passos).
- إصلاح مشكلة التنظيف concurrent في KeeperMap أثناء إنشاء table. #74568 (Antonio Andelic).
- عدم إزالة أعمدة projection غير المستخدمة في subqueries عند وجود
EXCEPTأوINTERSECT، وذلك للحفاظ على صحة نتيجة query. يصلح #73930. يصلح #66465. #74577 (Dmitry Novik). - إصلاح create query المعطّل عند استخدام partition expression ثابتة مع تمكين implicit projections. هذا يصلح #74596 . #74634 (Amos Bird).
- إصلاح queries من نوع
INSERT SELECTبين tables تحتوي على أعمدةTupleمع تمكين sparse serialization. #74698 (Anton Popov). - تعمل الدالة
rightبشكل غير صحيح مع offset سالب ثابت. #74701 (Daniil Ivanik). - إصلاح فشل insertion للبيانات المضغوطة بـ gzip أحيانًا بسبب فك ضغط معيب من جهة client. #74707 (siyuan).
- تجنّب ترك connection في حالة معطوبة بعد انتهاء INSERT مع Exception. #74740 (Azat Khuzhin).
- تجنّب إعادة استخدام connections التي تُركت في حالة وسيطة. #74749 (Azat Khuzhin).
- كان من الممكن أن تؤدي عمليات revoke الجزئية مع grants التي تتضمن wildcard إلى إزالة privileges أكثر من المتوقع. يغلق #74263. #74751 (pufit).
- إصلاح crash أثناء parsing لتعريف JSON type عندما لا يكون type name مكتوبًا بأحرف كبيرة. #74784 (Pavel Kruglov).
- إصلاح في Keeper: إصلاح قراءة log entries من disk. #74785 (Antonio Andelic).
- إصلاح التحقق من grants الخاصة بـ SYSTEM REFRESH/START/STOP VIEW، ولم يعد مطلوبًا الآن امتلاك هذا grant على
*.*لتنفيذ query على view محدد، بل يكفي grant على هذا الـ view فقط. #74789 (Alexander Tokmakov). - لا تأخذ الدالة
hasColumnInTableأعمدة alias في الحسبان. وتم إصلاحها لتعمل أيضًا مع أعمدة alias. #74841 (Bharat Nallan). - Keeper: إصلاح
logical_errorعندما يكون الاتصال قد أُنهي قبل اكتمال إنشائه. #74844 (Michael Kolupaev). - إصلاح سلوك كان يمنع الخادم من بدء التشغيل عند وجود جدول يستخدم
AzureBlobStorage. تُحمَّل الجداول من دون إرسال أي طلبات إلى Azure. #74880 (Alexey Katsman). - إصلاح غياب الحقلين
used_privilegesوmissing_privilegesفيquery_logلعمليات BACKUP و RESTORE. #74887 (Alexey Katsman). - إصلاح الخطأ FILE_DOESNT_EXIST الذي يحدث أثناء دمج أجزاء البيانات لجدول يحتوي على عمود فارغ في Azure Blob Storage. #74892 (Julia Kartseva).
- إصلاح اسم عمود الإسقاط عند ضم الجداول المؤقتة، وإغلاق #68872. #74897 (Vladimir Cherkasov).
- تحديث تذكرة krb في HDFS إذا حدث خطأ sasl أثناء طلب select في hdfs. #74930 (inv2004).
- إصلاح الاستعلامات على قاعدة بيانات Replicated في startup_scripts. #74942 (Azat Khuzhin).
- إصلاح المشكلات المتعلقة بأنواع التعبيرات ذات الأسماء المستعارة في عبارة JOIN ON عند استخدام مقارنة null-safe. #74970 (Vladimir Cherkasov).
- إعادة حالة الجزء من deleting إلى outdated عند فشل عملية الإزالة. #74985 (Sema Checherinda).
- في الإصدارات السابقة، عند وجود استعلام فرعي scalar، بدأنا في كتابة التقدم (المتراكم من معالجة الاستعلام الفرعي) أثناء تهيئة تنسيق البيانات، أي قبل كتابة رؤوس HTTP. وأدى ذلك إلى فقدان رؤوس HTTP، مثل X-ClickHouse-QueryId و X-ClickHouse-Format، بالإضافة إلى Content-Type. #74991 (Alexey Milovidov).
- إصلاح استعلامات
CREATE TABLE AS...عندdatabase_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan). - إصلاح ترك الاتصال في حالة غير سليمة في العميل بعد استثناءات INSERT. #75030 (Azat Khuzhin).
- إصلاح التعطل الناتج عن استثناء غير مُعالج في replication الخاصة بـ PSQL. #75062 (Azat Khuzhin).
- قد يفشل Sasl في أي استدعاء rpc، ويساعد هذا الإصلاح على إعادة المحاولة إذا كانت تذكرة krb5 منتهية الصلاحية. #75063 (inv2004).
- إصلاح استخدام الفهارس (الأساسية والثانوية) لأعمدة
ArrayوMapوNullable(..)عند تفعيل الإعدادoptimize_function_to_subcolumns. سابقًا، كان من الممكن تجاهل فهارس هذه الأعمدة. #75081 (Anton Popov). - تعطيل
flatten_nestedعند إنشاء العروض المادية ذات الجداول الداخلية، لأنه لن يكون من الممكن استخدام هذه الأعمدة المسطحة. #75085 (Christoph Wurm). - إصلاح مشكلة في بعض عناوين IPv6 (مثل ::ffff:1.1.1.1) في الحقل forwarded_for، حيث كانت تُفسَّر بشكل خاطئ مما يؤدي إلى قطع اتصال العميل وظهور استثناء. #75133 (Yakov Olkhovskiy).
- إصلاح معالجة JOIN الآمنة مع NULL لنوع البيانات LowCardinality Nullable. سابقًا، لم يكن JOIN ON مع مقارنة آمنة مع NULL، مثل
IS NOT DISTINCT FROM,<=>,a IS NULL AND b IS NULL OR a == bيعمل بشكل صحيح مع أعمدة LowCardinality. #75143 (Vladimir Cherkasov). - إصلاح الاستعلامات التي تحتوي على interpolation غير مستخدم مع المحلل الجديد. #75173 (János Benjamin Antal).
- إصلاح خطأ تعطل في CTE مع Insert. #75188 (Shichao Jin).
- إصلاح في Keeper: تجنب الكتابة إلى سجلات تغييرات تالفة عند التراجع عن السجلات. #75197 (Antonio Andelic).
- استخدام
BFloat16كنوع عام حيثما كان ذلك مناسبًا. هذا يُغلق: #74404. #75236 (Nikita Mikhaylov). - إصلاح القيم الافتراضية غير المتوقعة في نتيجة JOIN مع any_join_distinct_right_table_keys و OR في JOIN ON. #75262 (Vladimir Cherkasov).
- إخفاء بيانات اعتماد محرك الجدول azureblobstorage. #75319 (Garrett Thomas).
- إصلاح السلوك الذي قد يجعل ClickHouse ينفّذ بالخطأ filter pushdown إلى قاعدة بيانات خارجية مثل PostgreSQL أو MySQL أو SQLite. هذا يُغلق: #71423. #75320 (Nikita Mikhaylov).
- إصلاح تعطل في ذاكرة التخزين المؤقت لمخطط Protobuf قد يحدث أثناء الإخراج بتنسيق Protobuf وبالتوازي مع الاستعلام
SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov). - إصلاح احتمال حدوث خطأ منطقي أو مشكلة في ذاكرة غير مهيأة عند دفع عامل تصفية من
HAVINGمع النسخ المتماثلة المتوازية. #75363 (Vladimir Cherkasov). - إخفاء المعلومات الحساسة لدوال الجداول
icebergS3وicebergAzureومحركات الجداول. #75378 (Kseniia Sumarokova). - أصبحت FUNCTION
TRIMمع أحرف trim الفارغة المحسوبة تُعالَج الآن بشكل صحيح. مثال:SELECT TRIM(LEADING concat('') FROM 'foo')(Issue #69922). #75399 (Manish Gill). - إصلاح حالة data race في IOutputFormat. #75448 (Pavel Kruglov).
- إصلاح خطأ محتمل
Elements ... and ... of Nested data structure ... (Array columns) have different array sizesعند استخدام JSON subcolumns من نوع Array في JOIN عبر الجداول الموزعة. #75512 (Pavel Kruglov). - إصلاح احتساب حجم مخزن نتائج مؤقت غير صالح. يُغلق #70031. #75548 (Konstantin Bogdanov).
- إصلاح التفاعل بين allow_feature_tier وإعداد التوافق لـ MergeTree. #75635 (Raúl Marín).
- إصلاح قيمة processed_rows غير الصحيحة في system.s3queue_log عند إعادة محاولة الملف. #75666 (Kseniia Sumarokova).
- مراعاة
materialized_views_ignore_errorsعندما يكتب عرض مادي إلى محرك URL وتحدث مشكلة في الاتصال. #75679 (Christoph Wurm). - إصلاح حالات تعطل نادرة أثناء القراءة من جدول
MergeTreeبعد عدة استعلاماتRENAMEغير متزامنة (معalter_sync = 0) بين أعمدة ذات أنواع مختلفة. #75693 (Anton Popov). - إصلاح الخطأ
Block structure mismatch in QueryPipeline streamفي بعض الاستعلامات التي تستخدمUNION ALL. #75715 (Nikolai Kochetov). - إعادة بناء الإسقاط عند تنفيذ alter modify على عمود المفتاح الأساسي الخاص به. سابقًا، كان هذا قد يؤدي إلى ظهور أخطاء
CANNOT_READ_ALL_DATAأثناء عمليات select بعد alter modify للعمود المستخدم في المفتاح الأساسي للإسقاط. #75720 (Pavel Kruglov). - إصلاح النتيجة غير الصحيحة لـ
ARRAY JOINفي الاستعلامات الفرعية scalar (مع analyzer). #75732 (Nikolai Kochetov). - إصلاح إلغاء مرجعية مؤشر NULL في
DistinctSortedStreamTransform. #75734 (Nikita Taranov). - إصلاح سلوك
allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov). - إصلاح قراءة ذاكرة غير مهيأة في الدالة
translate. يُغلق هذا #75592. #75794 (Alexey Milovidov). - تمرير إعدادات format إلى تنسيق JSON كسلاسل نصية في Native format. #75832 (Pavel Kruglov).
- تسجيل التفعيل الافتراضي لـ parallel hash كخوارزمية join في v24.12 ضمن سجل تغييرات الإعدادات. وهذا يعني أن ClickHouse سيواصل تنفيذ join باستخدام non-parallel hash إذا كان مستوى توافق أقدم من v24.12 مُعدًّا. #75870 (Robert Schulze).
- إصلاح خلل كان يمنع نسخ الجداول التي تحتوي على فهارس min-max مضافة ضمنيًا إلى جدول جديد (المشكلة #75677). #75877 (Smita Kulkarni).
- يتيح
clickhouse-library-bridgeفتح مكتبات عشوائية من نظام الملفات، لذلك لا يكون تشغيله آمنًا إلا داخل بيئة معزولة. ولمنع ثغرة أمنية عند تشغيله بالقرب منclickhouse-server، سنقيّد مسارات المكتبات إلى موقع يُحدَّد في الإعدادات. اكتُشفت هذه الثغرة من خلال ClickHouse Bug Bounty Program بواسطة Arseniy Dugin. #75954 (Alexey Milovidov). - صادف أننا استخدمنا التسلسل بصيغة JSON لبعض البيانات الوصفية، وكان ذلك خطأً، لأن JSON لا يدعم البيانات الثنائية داخل السلاسل النصية، بما في ذلك البايتات الصفرية. يمكن أن تحتوي استعلامات SQL على بيانات ثنائية وUTF-8 غير صالح، لذا يجب أن ندعم ذلك أيضًا في ملفات البيانات الوصفية. وفي الوقت نفسه، تتحايل صيغة
JSONEachRowفي ClickHouse والصيغ المشابهة على هذه المشكلة عبر الخروج عن معيار JSON لضمان إمكانية التحويل ذهابًا وإيابًا للبيانات الثنائية بشكل كامل. يمكن الاطلاع على الدافع هنا: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. ويكمن الحل في جعل مكتبةPoco::JSONمتسقة مع تسلسل JSON في ClickHouse. يُغلق هذا #73668. #75963 (Alexey Milovidov). - إصلاح الخطأ
Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)أثناء DETACH PART. #76039 (Aleksei Filatov). - إصلاح التحقق من حدود commit في وحدة التخزين
S3Queue. #76104 (Kseniia Sumarokova). - إصلاح Attach لجداول MergeTree التي تحتوي على فهارس تلقائية (
add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin). - إصلاح مشكلة عدم طباعة stack traces من threads الأصلية الخاصة بالمهمة (الإعداد
enable_job_stack_trace). كما تم إصلاح مشكلة عدم تمرير الإعدادenable_job_stack_traceبشكل صحيح إلى threads، مما كان يؤدي إلى أن محتوى stack trace لا يلتزم بهذا الإعداد دائمًا. #76191 (Yakov Olkhovskiy). - إصلاح
reinterpretAsمع FixedString على معمارية big-endian. #76253 (Azat Khuzhin). - إصلاح شتى أنواع الأخطاء الناتجة عن حالة تسابق بين UUID وأسماء الجداول (على سبيل المثال، سيؤدي ذلك إلى إصلاح حالة التسابق بين
RENAMEوRESTART REPLICA؛ ففي حال تنفيذRENAMEبالتزامن معSYSTEM RESTART REPLICA، قد ينتهي الأمر بإعادة تشغيل replica خاطئة، أو بترك أحد الجداول في الحالةTable X is being restarted). #76308 (Azat Khuzhin). - أُزيلت عمليات التخصيص من signal handler. #76446 (Nikita Taranov).
- إصلاح معالجة تغيير الحجم الديناميكي لذاكرة filesystem cache المؤقتة عند حدوث أخطاء غير متوقعة أثناء eviction. #76466 (Kseniia Sumarokova).
- إصلاح تهيئة
used_flagفي parallel hash. فقد كان ذلك قد يتسبب في تعطل الخادم. #76580 (Nikita Taranov). - إصلاح logical error عند استدعاء الدالة
defaultProfiles()داخل projection. #76627 (pufit). - عدم طلب المصادقة الأساسية التفاعلية في المتصفح ضمن واجهة الويب. يُغلق #76319. #76637 (Alexey Milovidov).
- إصلاح الاستثناء THERE_IS_NO_COLUMN عند اختيار قيمة منطقية ثابتة من الجداول الموزعة. #76656 (Yakov Olkhovskiy).
- أصبح اختيار المسار الفرعي داخل دليل الجدول يتم بطريقة أدق. #76681 (Daniil Ivanik).
- إصلاح الخطأ
Not found column in blockبعد تعديل جدول يحتوي على عمود فرعي في PK. بعد https://github.com/ClickHouse/ClickHouse/pull/72644، أصبح يتطلب https://github.com/ClickHouse/ClickHouse/pull/74403. #76686 (Nikolai Kochetov). - إضافة اختبارات الأداء لحالات الاختصار مع NULL وإصلاح الأخطاء. #76708 (李扬).
- تفريغ مخازن كتابة المخرجات المؤقتة قبل إتمامها. وإصلاح
LOGICAL_ERRORالذي يُولَّد أثناء إتمام بعض تنسيقات الإخراج، مثلJSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic). - تمت إضافة دعم UUID الثنائي في MongoDB (#74452) - وتم إصلاح Pushdown لعبارة WHERE إلى MongoDB عند استخدام table function (#72210) - وتم تغيير type mapping بين MongoDB وClickHouse بحيث لا يمكن تحليل UUID الثنائي في MongoDB إلا إلى UUID في ClickHouse. ومن المفترض أن يجنّب ذلك حالات الالتباس والمفاجآت مستقبلًا. - كما تم إصلاح تعيين OID مع الحفاظ على التوافق مع الإصدارات السابقة. #76762 (Kirill Nikiforov).
- إصلاح التعامل مع الاستثناءات أثناء إلغاء التسلسل المتوازي للبادئات في الأعمدة الفرعية لـ JSON. #76809 (Pavel Kruglov).
- إصلاح سلوك الدالة lgamma مع الأعداد الصحيحة السالبة. #76840 (Ilya Kataev).
- إصلاح تحليل المفتاح العكسي للمفاتيح الأساسية المعرّفة صراحةً. وهو مشابه لـ #76654. #76846 (Amos Bird).
- إصلاح الطباعة المنسقة لقيم Bool بتنسيق JSON. #76905 (Pavel Kruglov).
- إصلاح احتمال حدوث تعطل بسبب التراجع غير الصحيح لعمود JSON عند وقوع خطأ أثناء async inserts. #76908 (Pavel Kruglov).
- سابقًا، كان
multi_ifقد يُرجع أنواعًا مختلفة من الأعمدة أثناء التخطيط والتنفيذ الرئيسي. وقد أدى ذلك إلى توليد الشيفرة لسلوك غير معرّف من منظور C++. #76914 (Nikita Taranov). - تم إصلاح التسلسل غير الصحيح للمفاتيح الثابتة من النوع Nullable في MergeTree. وهذا يصلح #76939. #76985 (Amos Bird).
- إصلاح فرز قيم
BFloat16. ويغلق هذا #75487. ويغلق هذا #75669. #77000 (Alexey Milovidov). - إصلاح خلل في JSON مع subcolumn من نوع Variant، وذلك بإضافة check لتخطي subcolumns المؤقتة في فحص اتساق part. #72187. #77034 (Smita Kulkarni).
- إصلاح crash في parsing للقالب ضمن Values format عند عدم تطابق types. #77071 (Pavel Kruglov).
- عدم السماح بإنشاء table من نوع EmbeddedRocksDB تحتوي على subcolumn في primary key. سابقًا، كان يمكن إنشاء مثل هذا table، لكن queries من نوع
SELECTكانت تفشل. #77074 (Pavel Kruglov). - إصلاح مقارنة غير صالحة في distributed queries لأن تمرير predicates إلى الطرف البعيد لا يراعي أنواع القيم الحرفية. #77093 (Duc Canh Le).
- إصلاح crash أثناء إنشاء Kafka table مع exception. #77121 (Pavel Kruglov).
- دعم JSON الجديد وsubcolumns في Kafka وRabbitMQ engines. #77122 (Pavel Kruglov).
- إصلاح فك تكدس الاستثناءات على MacOS. #77126 (Eduard Karacharov).
- إصلاح قراءة subcolumn بالقيمة ‘null’ في الدالة getSubcolumn. #77163 (Pavel Kruglov).
- إصلاح عدم عمل skip indexes مع expression تحتوي على literals في analyzer، وإزالة التحويلات التافهة أثناء تحليل indexes. #77229 (Pavel Kruglov).
- إصلاح bloom filter index مع Array والدوال غير المدعومة. #77271 (Pavel Kruglov).
- يجب التحقق من القيد المفروض على عدد الجداول فقط أثناء query الأولية من نوع CREATE. #77274 (Nikolay Degterinsky).
- أصبح
SELECT toBFloat16(-0.0) == toBFloat16(0.0)يُرجع الآنtrueبشكل صحيح (بعد أن كان يُرجع سابقًاfalse). وهذا يجعل السلوك متسقًا معFloat32وFloat64. #77290 (Shankar Iyer). - إصلاح مرجع غير صحيح محتمل إلى المتغير key_index غير المهيأ، مما قد يؤدي إلى crash في Debug builds (لن يتسبب هذا المرجع غير المهيأ في مشكلات في release builds لأن الكود اللاحق يُرجح أن يطرح أخطاء.) ### إدخال توثيقي للتغييرات الموجَّهة للمستخدم. #77305 (wxybear).
- تم التراجع عنه. #77307 (Nikolai Kochetov).
- إصلاح اسم partition ذي قيمة Bool. كان هذا معطّلًا في https://github.com/ClickHouse/ClickHouse/pull/74533. #77319 (Pavel Kruglov).
- إصلاح المقارنة بين قيم Tuple التي تحتوي على عناصر Nullable وStrings. على سبيل المثال، قبل هذا التغيير، كانت المقارنة بين Tuple
(1, null)وString'(1,null)'تؤدي إلى خطأ. ومثال آخر هو المقارنة بين Tuple(1, a)، حيث إنaعمود Nullable، وString'(1, 2)'. يعالج هذا التغيير هذه المشكلات. #77323 (Alexey Katsman). - إصلاح تعطل في ObjectStorageQueueSource. أُدخل هذا الخلل في https://github.com/ClickHouse/ClickHouse/pull/76358. #77325 (Pavel Kruglov).
- إصلاح خطأ كانت فيه معلمة الاستعلام
close_sessionبلا أي تأثير، مما كان يؤدي إلى إغلاق الجلسات المسماة فقط بعدsession_timeout. #77336 (Alexey Katsman). - إصلاح
async_insertمعinput(). #77340 (Azat Khuzhin). - إصلاح: قد يفشل
WITH FILLمعNOT_FOUND_COLUMN_IN_BLOCKعندما يزيل المُخطِّط عمود الفرز. وهناك مشكلة مشابهة تتعلق بحساب DAG غير متسق لتعبيرINTERPOLATE. #77343 (Yakov Olkhovskiy). - تم التراجع عن هذا التغيير. #77390 (Vladimir Cherkasov).
- إصلاح استقبال الرسائل من خادم nats من دون MV مرتبطة. #77392 (Dmitry Novikov).
- إصلاح خطأ منطقي أثناء القراءة من
FileLogفارغ عبر الدالة الجدوليةmerge، وإغلاق #75575. #77441 (Vladimir Cherkasov). - إصلاح عدة أخطاء
LOGICAL_ERRORتتعلق بتعيين alias لعُقد AST غير صالحة. #77445 (Raúl Marín). - في تنفيذ filesystem cache، تم إصلاح معالجة الأخطاء أثناء كتابة file segment. #77471 (Kseniia Sumarokova).
- جعل DatabaseIceberg يستخدم ملف metadata الصحيح الذي يوفّره catalog. يغلق #75187. #77486 (Kseniia Sumarokova).
- استخدام إعدادات format الافتراضية في serialization لـ Dynamic من الـ variant المشترَك. #77572 (Pavel Kruglov).
- التراجع عن ‘Avoid toAST() in execution of scalar subqueries’. #77584 (Raúl Marín).
- إصلاح التحقق من وجود مسار بيانات الجدول على القرص المحلي. #77608 (Tuan Pham Anh).
- تفترض query cache الآن أن UDFs غير حتمية. وبناءً على ذلك، لم تعد نتائج الاستعلامات التي تحتوي على UDFs تُخزَّن مؤقتًا. سابقًا، كان بإمكان المستخدمين تعريف UDFs غير حتمية، وكانت نتائجها تُخزَّن مؤقتًا بالخطأ (المشكلة #77553). #77633 (Jimmy Aguilar Mena).
- إصلاح إرسال القيم الثابتة إلى الخادم البعيد لبعض الأنواع. #77634 (Pavel Kruglov).
- إصلاح عمل system.filesystem_cache_log بحيث كان يقتصر على حالة تفعيل الإعداد
enable_filesystem_cache_log. #77650 (Kseniia Sumarokova). - إصلاح خطأ منطقي عند استدعاء الدالة
defaultRoles()داخل إسقاط. متابعة لـ #76627. #77667 (pufit). - إصلاح تعطل ناتج عن انتهاء صلاحية السياق في StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
- لم يعد مسموحًا الآن باستخدام وسيطة ثانية من النوع
Nullableمع الدالةarrayResize. سابقًا، كان استخدامNullableكوسيطة ثانية قد يؤدي إلى أي شيء، من أخطاء إلى نتائج غير صحيحة. (المشكلة #48398). #77724 (Manish Gill). - إخفاء بيانات الاعتماد في محركات الجداول RabbitMQ وNats وRedis وAzureQueue. #77755 (Kseniia Sumarokova).
- إصلاح سلوك غير معرّف عند مقارنة NaN في ArgMin/ArgMax. #77756 (Raúl Marín).
- التحقق بانتظام مما إذا كانت عمليات الدمج وعمليات mutation قد أُلغيت، حتى عندما لا تنتج العملية أي كتل للكتابة. #77766 (János Benjamin Antal).
- تم التراجع عن هذا التغيير. #77843 (Vladimir Cherkasov).
- إصلاح تعطل محتمل عند حدوث الخطأ
NOT_FOUND_COLUMN_IN_BLOCK. #77854 (Vladimir Cherkasov). - إصلاح تعطل يحدث في
StorageSystemObjectStorageQueueSettingsأثناء تعبئة البيانات. #77878 (Bharat Nallan). - تعطيل البحث الضبابي في سجل الأوامر على خادم SSH (لأنه يتطلب skim). #78002 (Azat Khuzhin).
- إصلاح خطأ كان يؤدي إلى إرجاع نتائج غير صحيحة عند تنفيذ استعلام بحث متجهي على عمود غير مفهرس، إذا كان هناك عمود متجه آخر في الجدول معرّف له فهرس تشابه متجهات. (المشكلة #77978). #78069 (Shankar Iyer).
- إصلاح المُوجّه
The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin). - إصلاح خطأ في حالة
toStartOfIntervalعندما تكون وسيطة origin صفرًا. #78096 (Yarik Briukhovetskyi). - عدم السماح بتحديد معلمة الاستعلام
session_idفارغة في واجهة HTTP. #78098 (Alexey Katsman). - إصلاح تجاوز بيانات التعريف في Database Replicated، والذي كان يمكن أن يحدث بسبب تنفيذ استعلام RENAME مباشرةً بعد استعلام ALTER. #78107 (Nikolay Degterinsky).
- إصلاح تعطل في NATS engine. #78108 (Dmitry Novikov).
- عدم محاولة إنشاء
history_fileفي client مضمن لـ SSH. #78112 (Azat Khuzhin). - إصلاح عرض system.detached_tables لمعلومات غير صحيحة بعد استعلامات RENAME DATABASE أو DROP TABLE. #78126 (Nikolay Degterinsky).
- إصلاح فحوصات وجود عدد كبير جدًا من الجداول مع Database Replicated بعد https://github.com/ClickHouse/ClickHouse/pull/77274. كذلك، يُجرى التحقق قبل إنشاء وحدة التخزين لتجنب إنشاء عُقد غير محسوبة في ZooKeeper في حالة RMT أو KeeperMap. #78127 (Nikolay Degterinsky).
- إصلاح احتمال حدوث تعطل بسبب التهيئة المتزامنة لبيانات تعريف S3Queue. #78131 (Azat Khuzhin).
- أصبحت دوال
groupArray*تُنتج الآن الخطأ BAD_ARGUMENTS عند استخدام القيمة 0 من النوع Int للوسيطة max_size، كما هو الحال بالفعل مع UInt، بدلًا من محاولة التنفيذ بها. #78140 (Eduard Karacharov). - منع حدوث تعطل عند recoverLostReplica إذا أُزيل الجدول المحلي قبل فصله. #78173 (Raúl Marín).
- إصلاح العمود “alterable” في system.s3_queue_settings، والذي كان يعيد دائمًا القيمة
false. #78187 (Kseniia Sumarokova). - إخفاء توقيع الوصول في Azure بحيث لا يكون مرئيًا للمستخدم أو في السجلات. #78189 (Kseniia Sumarokova).
- إصلاح الجلب المسبق لـ substreams ذات البادئات في Wide parts. #78205 (Pavel Kruglov).
- إصلاح حالات التعطل / النتائج غير الصحيحة للدالة
mapFromArraysفي حالة النوعLowCardinality(Nullable)لمصفوفة المفاتيح. #78240 (Eduard Karacharov). - إصلاح خيارات المصادقة لـ delta-kernel. #78255 (Kseniia Sumarokova).
- عدم جدولة مهمة RefreshMV إذا كانت قيمة
disable_insertion_and_mutationفي replica تساوي true، لأن المهمة تُعد نوعًا من عمليات insert وستفشل إذا كانتdisable_insertion_and_mutationتساوي true. #78277 (Xu Jia). - التحقق من إمكانية الوصول إلى underlying tables لمحرك Merge. #78339 (Pervakov Grigorii).
- قد يُفقَد المُعدِّل FINAL لجدول بمحرك
Distributed. #78428 (Yakov Olkhovskiy). - تعيد
Bitmapminالقيمة uint32_max عندما تكون الصورة النقطيةempty(uint64_max when input type >= 8bits)، بما يتوافق مع سلوكminimum()فيroaring_bitmapالفارغة. #78444 (wxybear). - التراجع عن “تطبيق السمة preserve_most في بعض مواضع الشيفرة” لأنه قد يؤدي إلى تعطل. #78449 (Azat Khuzhin).
- استخدام أعمدة الإدراج في استدلال مخطط INFILE. #78490 (Pervakov Grigorii).
- تعطيل موازاة معالجة الاستعلام مباشرةً بعد قراءة
FROMعند تمكينdistributed_aggregation_memory_efficient، لأن ذلك قد يؤدي إلى logical error. إغلاق #76934. #78500 (flynn). - تعيين stream واحدة على الأقل للقراءة في حال لم تكن هناك streams مخطط لها بعد تطبيق الإعداد
max_streams_to_max_threads_ratio. #78505 (Eduard Karacharov). - في وحدة التخزين S3Queue، إصلاح logical error “Cannot unregister: table uuid is not registered”. إغلاق #78285. #78541 (Kseniia Sumarokova).
- أصبح ClickHouse الآن قادرًا على اكتشاف cgroup v2 الخاص به على الأنظمة التي يكون فيها كل من cgroups v1 وv2 مُمكّنين. #78566 (Grigory Korolev).
- كانت cluster table functions الخاصة بـ ObjectStorage تفشل عند استخدامها مع إعدادات على مستوى table. #78587 (Daniil Ivanik).
- تحسين عمليات التحقق من أن transactions غير مدعومة في ReplicatedMergeTree مع عمليات
INSERT. #78633 (Azat Khuzhin). - تطبيق إعدادات الاستعلام أثناء الإرفاق. #78637 (Raúl Marín).
- إصلاح تعطل يحدث عند تحديد path غير صالح في
iceberg_metadata_file_path. #78688 (alesapin). - في محرك الجداول DeltaLake مع تنفيذ delta-kernel، إصلاح الحالة التي يختلف فيها مخطط القراءة عن مخطط table مع وجود partition columns في الوقت نفسه، ما يؤدي إلى خطأ عدم العثور على column. #78690 (Kseniia Sumarokova).
- يصحح هذا التحديث خطأً كان يتسبب في إغلاق جلسة مُسمّاة جديدة دون قصد في الوقت المجدول لجلسة سابقة إذا كانت الجلستان تحملان الاسم نفسه وكانت الجديدة قد أُنشئت قبل انتهاء timeout الخاصة بالقديمة. #78698 (Alexey Katsman).
- لا تحظر إيقاف table أثناء تشغيل CHECK TABLE. #78782 (Raúl Marín).
- إصلاح في Keeper: تصحيح عدد العناصر ephemeral في جميع الحالات. #78799 (Antonio Andelic).
- إصلاح تحويل نوع غير صحيح في
StorageDistributedعند استخدام دوال الجداول غيرview(). يغلق #78464. #78828 (Konstantin Bogdanov). - إصلاح تنسيق
tupleElement(*, 1). يغلق #78639. #78832 (Konstantin Bogdanov). - أصبحت القواميس من النوع
ssd_cacheترفض الآن المعلمتينblock_sizeوwrite_buffer_sizeإذا كانت قيمتاهما صفرًا أو سالبة (المشكلة #78314). #78854 (Elmi Ahmadov). - إصلاح تعطل في REFRESHABLE MV عند تنفيذ ALTER بعد إيقاف تشغيل غير سليم. #78858 (Azat Khuzhin).
- إصلاح تحليل قيم DateTime غير الصالحة في تنسيق CSV. #78919 (Pavel Kruglov).
تحسينات في البناء/الاختبار/التحزيم
- تم ترقية تبعية LLVM الداخلية من 16 إلى 18. #66053 (Nikita Mikhaylov).
- استعادة اختبارات التكامل المحذوفة الخاصة بـ nats وإصلاح الأخطاء. - تم إصلاح بعض حالات التسابق في محرك nats - تم إصلاح فقدان البيانات عند بث البيانات المتدفقة إلى nats في حال انقطاع الاتصال - تم إصلاح تجمّد استقبال آخر جزء من البيانات عند انتهاء البث من nats - nats_max_reconnect مهمل ولم يعد له أي تأثير، إذ تتم إعادة الاتصال بشكل دائم مع مهلة nats_reconnect_wait. #69772 (Dmitry Novikov).
- إصلاح المشكلة التي تمنع توليد ملفات asm الخاصة بـ contrib openssl. #72622 (RinChanNOW).
- تحسين استقرار الاختبار 03210_variant_with_aggregate_function_type. #74012 (Anton Ivashkin).
- دعم بناء HDFS على كل من أجهزة Mac بمعالجات ARM وIntel. #74244 (Yan Xin).
- سيقترح برنامج التثبيت العام التثبيت حتى على macOS. #74339 (Alexey Milovidov).
- إصلاح عملية البناء عندما لا يكون kerberos مفعّلًا. #74771 (flynn).
- التحديث إلى LLVM 19 المضمّن. #75148 (Konstantin Bogdanov).
- قد يؤدي إلى كسر التوافق: تحسين يفرض قيمًا افتراضية أكثر تقييدًا. القيم الافتراضية الحالية آمنة بالفعل. يجب على المستخدم تحديد خيار لنشر المنافذ صراحةً. ولكن عندما لا تكون للمستخدم
defaultكلمة مرور محددة عبر متغير البيئةCLICKHOUSE_PASSWORDو/أو لم يتم تغيير اسم المستخدم عبر متغير البيئةCLICKHOUSE_USER، فينبغي أن يكون الوصول إليه متاحًا فقط من النظام المحلي كطبقة حماية إضافية. #75259 (Mikhail f. Shiryaev). - لدى اختبارات التكامل مهلة قدرها ساعة واحدة لدفعة واحدة من الاختبارات المتوازية قيد التشغيل. عند بلوغ هذه المهلة، يتم إنهاء
pytestمن دون بعض السجلات. تم ضبط مهلةpytestالداخلية على 55 دقيقة لطباعة نتائج session وعدم تشغيل إشارة المهلة الخارجية. يغلق #75532. #75533 (Ilya Yatsishin). - جعل جميع الإجراءات المرتبطة بـ clickhouse-server ضمن دالة، وتنفيذها فقط عند تشغيل الملف التنفيذي الافتراضي في
entrypoint.sh. تم اقتراح هذا التحسين المؤجل منذ فترة طويلة في #50724. أُضيف الخيار--usersإلىclickhouse-extract-from-configللحصول على القيم منusers.xml. #75643 (Mikhail f. Shiryaev). - في اختبارات stress، إذا لم يتوقف server أثناء جمع stacktraces عبر gdb، تتم إضافة وقت انتظار إضافي لجعل اكتشاف
Possible deadlock on shutdown (see gdb.log)أقل إزعاجًا. ولن يضيف ذلك تأخيرًا إلا في الحالات التي لم يكتمل فيها الاختبار بنجاح. #75668 (Ilya Yatsishin). - استعادة اختبارات التكامل المحذوفة لـ nats وإصلاح الأخطاء. - أُصلحت بعض حالات التسابق في محرك nats - أُصلح فقدان البيانات عند بث البيانات إلى nats عند فقدان الاتصال - أُصلح تجمّد استقبال آخر جزء من البيانات عند انتهاء البث من nats - nats_max_reconnect مُهمَل ولم يعد له أي تأثير، وتتم إعادة الاتصال باستمرار مع مهلة nats_reconnect_wait. #75850 (Dmitry Novikov).
- تفعيل ICU وGRPC عند البناء المتقاطع لـ Darwin. #75922 (Raúl Marín).
- إصلاح انقسام مخرجات الاختبار بسبب
sleepأثناء إنهاء مجموعة العمليات. #76090 (Mikhail f. Shiryaev). - عدم جمع سجلات
docker-composeعند نهاية التشغيل لأن البرنامج النصي كثيرًا ما يُنهى. وبدلًا من ذلك، تُجمع في الخلفية. #76140 (Mikhail f. Shiryaev). - تقسيم اختبارات تخزين Kafka إلى عدة ملفات. يُصلح #69452. #76208 (Mikhail f. Shiryaev).
- نُقل
clickhouse-odbc-bridgeوclickhouse-library-bridgeإلى مستودع منفصل: https://github.com/ClickHouse/odbc-bridge/. #76225 (Alexey Milovidov). - إزالة نحو 20 ميغابايت من الشيفرة غير المستخدمة من الملف التنفيذي. #76226 (Alexey Milovidov).
- رفع الحد الأدنى المطلوب لإصدار CMake إلى 3.25 بسبب إضافة
block(). #76316 (Konstantin Bogdanov). - تحديث fmt إلى 11.1.3. #76547 (Raúl Marín).
- ترقية
lz4إلى1.10.0. #76571 (Konstantin Bogdanov). - ترقية
curlإلى8.12.1. #76572 (Konstantin Bogdanov). - ترقية
libcpuidإلى0.7.1. #76573 (Konstantin Bogdanov). - استخدام تنسيق قابل للقراءة آليًا لتحليل نتائج pytest. #76910 (Mikhail f. Shiryaev).
- إصلاح البناء المتقاطع لـ Rust وإتاحة تعطيل Rust بالكامل. #76921 (Raúl Marín).
- اشتراط clang 19 لبناء المشروع. #76945 (Raúl Marín).
- يستغرق تنفيذ الاختبار أكثر من 10 ثوانٍ في الوضع التسلسلي. وهذا طويل جدًا بالنسبة إلى الاختبارات السريعة. #76948 (Mikhail f. Shiryaev).
- ترقية
sccacheإلى0.10.0. #77580 (Konstantin Bogdanov). - مراعاة ميزات الاستهداف الخاصة بـ CPU في Rust، وتمكين LTO في جميع الـ crates. #78590 (Raúl Marín).
- ترقية
minizip-ngإلى4.0.9. #78917 (Konstantin Bogdanov).