إصدار ClickHouse 18.16
إصدار ClickHouse 18.16.1، 2018-12-21
إصلاحات الأخطاء:
- تم إصلاح خطأ تسبب في حدوث مشكلات عند تحديث القواميس باستخدام مصدر ODBC. #3825, #3829
- يعمل الآن التحويل البرمجي الفوري (التجميع الفوري) لدوال التجميع مع أعمدة LowCardinality. #3838
تحسينات:
- أُضيف الإعداد
low_cardinality_allow_in_native_format(مفعّل افتراضيًا). عند تعطيله، ستُحوَّل أعمدة LowCardinality إلى أعمدة عادية في استعلاماتSELECT، وسيُتوقَّع استخدام أعمدة عادية في استعلاماتINSERT. #3879
تحسينات البناء:
- إصلاحات لعمليات البناء على macOS ومعمارية ARM.
إصدار ClickHouse 18.16.0، 2018-12-14
الميزات الجديدة:
- يتم تقييم تعبيرات
DEFAULTللحقول المفقودة عند تحميل البيانات في تنسيقات الإدخال شبه المهيكلة (JSONEachRow,TSKV). ويتم تفعيل هذه الميزة باستخدام الإعدادinsert_sample_with_metadata. #3555 - يتضمن استعلام
ALTER TABLEالآن الإجراءMODIFY ORDER BYلتغيير مفتاح الفرز عند إضافة عمود إلى جدول أو إزالته منه. وهذا مفيد للجداول ضمن عائلةMergeTreeالتي تنفذ مهام إضافية أثناء الدمج استنادًا إلى مفتاح الفرز هذا، مثلSummingMergeTreeوAggregatingMergeTreeوغير ذلك. #3581 #3755 - بالنسبة للجداول ضمن عائلة
MergeTree، يمكنك الآن تحديد مفتاح فرز (ORDER BY) وفهرس (PRIMARY KEY) مختلفين. ويمكن أن يكون مفتاح الفرز أطول من الفهرس. #3581 - تمت إضافة دالة الجدول
hdfsومحرك الجدولHDFSلاستيراد البيانات إلى HDFS وتصديرها منه. chenxing-xc - تمت إضافة دوال للعمل مع base64:
base64Encodeوbase64DecodeوtryBase64Decode. Alexander Krasheninnikov - يمكنك الآن استخدام معلمة لضبط الدقة الخاصة بـ الدالة التجميعية
uniqCombined(أي تحديد عدد خلايا HyperLogLog). #3406 - تمت إضافة table
system.contributorsالتي تحتوي على أسماء جميع من أجروا commits في ClickHouse. #3452 - تمت إضافة إمكانية حذف تحديد partition من الاستعلام
ALTER TABLE ... FREEZEلأخذ نسخة احتياطية من جميع partitions دفعة واحدة. #3514 - تمت إضافة الدالتين
dictGetوdictGetOrDefaultاللتين لا تتطلبان تحديد type لقيمة الإرجاع. ويُحدَّد النوع تلقائيًا من وصف Dictionary. Amos Bird - يمكنك الآن تحديد comments لـ column في وصف table وتغييرها باستخدام
ALTER. #3377 - أصبحت القراءة مدعومة للجداول من type
Joinذات المفاتيح البسيطة. Amos Bird - يمكنك الآن تحديد الخيارات
join_use_nullsوmax_rows_in_joinوmax_bytes_in_joinوjoin_overflow_modeعند إنشاء table من typeJoin. Amos Bird - تمت إضافة الدالة
joinGetالتي تتيح لك استخدام table من typeJoinمثل Dictionary. Amos Bird - تمت إضافة الأعمدة
partition_keyوsorting_keyوprimary_keyوsampling_keyإلى tablesystem.tablesلتوفير معلومات حول مفاتيح الجدول. #3609 - تمت إضافة الأعمدة
is_in_partition_keyوis_in_sorting_keyوis_in_primary_keyوis_in_sampling_keyإلى tablesystem.columns. #3609 - تمت إضافة العمودين
min_timeوmax_timeإلى tablesystem.parts. ويتم ملء هذين العمودين عندما يكون partitioning key عبارة عن expression تتكون من أعمدةDateTime. Emmanuel Donin de Rosière
إصلاحات الأخطاء:
- إصلاحات وتحسينات في الأداء لنوع البيانات
LowCardinality. استخدامGROUP BYمعLowCardinality(Nullable(...)). جلب قيمextremes. معالجة الدوال عالية الرتبة.LEFT ARRAY JOIN.GROUP BYالموزّع. الدوال التي تُرجعArray. تنفيذORDER BY. الكتابة إلى جداولDistributed(nicelulu). التوافق مع الإصدارات السابقة لاستعلاماتINSERTمن العملاء القدامى الذين يطبّقون بروتوكولNative. دعمLowCardinalityفيJOIN. تحسين الأداء عند العمل ضمنsingle streamواحد. #3823 #3803 #3799 #3769 #3744 #3681 #3651 #3649 #3641 #3632 #3568 #3523 #3518 - تم إصلاح طريقة عمل الخيار
select_sequential_consistency. في السابق، عند تمكين هذا الإعداد، كانت تُعاد أحيانًا نتيجة غير مكتملة بعد بدء الكتابة إلى partition جديد. #2863 - تُحدَّد قواعد البيانات بشكل صحيح عند تنفيذ استعلامات DDL
ON CLUSTERوALTER UPDATE/DELETE. #3772 #3460 - تُحدَّد قواعد البيانات بشكل صحيح في الاستعلامات الفرعية داخل
VIEW. #3521 - تم إصلاح خلل في
PREWHEREمعFINALفيVersionedCollapsingMergeTree. 7167bfd7 - يمكنك الآن استخدام
KILL QUERYلإلغاء الاستعلامات التي لم تبدأ بعد لأنها تنتظر قفل الجدول. #3517 - تم تصحيح حسابات التاريخ والوقت إذا أُعيدت الساعة إلى الوراء عند منتصف الليل (يحدث هذا في إيران، وحدث في موسكو من 1981 إلى 1983). في السابق، كان هذا يؤدي إلى إرجاع الوقت يومًا إلى الوراء أكثر من اللازم، كما كان يتسبب أيضًا في تنسيق غير صحيح للتاريخ والوقت في التنسيق النصي. #3819
- تم إصلاح أخطاء في بعض حالات
VIEWوالاستعلامات الفرعية التي تُهمل قاعدة البيانات. Winter Zhang - تم إصلاح حالة تسابق عند القراءة بالتزامن من
MATERIALIZED VIEWوحذفMATERIALIZED VIEWبسبب عدم قفلMATERIALIZED VIEWالداخلية. #3404 #3694 - تم إصلاح الخطأ
Lock handler cannot be nullptr.#3689 - تم إصلاح معالجة الاستعلامات عند تمكين الخيار
compile_expressions(وهو مفعّل افتراضيًا). لم تعد التعبيرات الثابتة غير الحتمية مثل الدالةnowتُبسَّط. #3457 - تم إصلاح تعطل عند تحديد وسيطة scale غير ثابتة في الدوال
toDecimal32/64/128. - تم إصلاح خطأ عند محاولة إدراج مصفوفة تحتوي على عناصر
NULLبتنسيقValuesفي عمود من النوعArrayبدونNullable(إذا كانت القيمةinput_format_values_interpret_expressions= 1). #3487 #3503 - تم إصلاح التسجيل المستمر للأخطاء في
DDLWorkerإذا لم يكن ZooKeeper متاحًا. 8f50c620 - تم إصلاح نوع الإرجاع لدوال
quantile*عند استخدام وسيطات من النوعينDateوDateTime. #3580 - تم إصلاح عبارة
WITHإذا كانت تحدد اسمًا مستعارًا بسيطًا بدون تعبيرات. #3570 - تم إصلاح معالجة الاستعلامات التي تحتوي على استعلامات فرعية مسماة وأسماء أعمدة مؤهلة عند تفعيل
enable_optimize_predicate_expression. Winter Zhang - تم إصلاح الخطأ
Attempt to attach to nullptr thread groupعند العمل مع العروض المادية. Marek Vavruša - تم إصلاح تعطل عند تمرير بعض الوسيطات غير الصحيحة إلى الدالة
arrayReverse. 73e3a7b6 - تم إصلاح تجاوز سعة المخزن المؤقت في الدالة
extractURLParameter. كما تم تحسين الأداء، وإضافة معالجة صحيحة للسلاسل التي تحتوي على بايتات صفرية. 141e9799 - تم إصلاح تجاوز سعة المخزن المؤقت في الدالتين
lowerUTF8وupperUTF8. وأُزيلت إمكانية تنفيذ هاتين الدالتين على وسيطات من النوعFixedString. #3662 - تم إصلاح حالة تسابق نادرة عند حذف جداول
MergeTree. #3680 - تم إصلاح حالة تسابق عند القراءة من جداول
BufferوتنفيذALTERأوDROPعلى الجداول الهدف في الوقت نفسه. #3719 - تم إصلاح خطأ segfault عند تجاوز الحد
max_temporary_non_const_columns. #3788
تحسينات:
- لم يعد الخادم يكتب ملفات الإعداد المُعالجة إلى الدليل
/etc/clickhouse-server/. وبدلًا من ذلك، يحفظها في الدليلpreprocessed_configsداخلpath. وهذا يعني أن الدليل/etc/clickhouse-server/لا يتطلب صلاحية الكتابة للمستخدمclickhouse، مما يعزز الأمان. #2443 - يُضبط الخيار
min_merge_bytes_to_use_direct_ioعلى 10 GiB افتراضيًا. وتُنفَّذ عملياتmergeالتي تُنشئpartsكبيرة من جداول عائلة MergeTree في وضعO_DIRECT، مما يمنع الإخلاء المفرط لذاكرةpage cache. #3504 - تسريع بدء تشغيل الخادم عند وجود عدد كبير جدًا من الجداول. #3398
- تمت إضافة
connection poolوKeep-Aliveعبر HTTP للاتصالات بينreplicas. #3594 - إذا كان بناء جملة
queryغير صالح، فسيُعاد الرمز400 Bad Requestفي واجهةHTTP(كان يُعاد 500 سابقًا). 31bc680a - يُضبط الخيار
join_default_strictnessعلىALLافتراضيًا للتوافق. 120e2cbe - أزيل تسجيل السجلات إلى
stderrمن مكتبةre2عند وجود تعبيرات نمطية غير صالحة أو معقدة. #3723 - أُضيف إلى
table engineKafka: التحقق من الاشتراكات قبل بدء القراءة من Kafka؛ وإعداد kafka_max_block_size للجدول. Marek Vavruša - تعمل الآن الدوال
cityHash64وfarmHash64وmetroHash64وsipHash64وhalfMD5وmurmurHash2_32وmurmurHash2_64وmurmurHash3_32وmurmurHash3_64مع أي عدد من الوسيطات، وكذلك مع الوسيطات بصيغة tuples. #3451 #3519 - تعمل الدالة
arrayReverseالآن مع المصفوفات من أي نوع. 73e3a7b6 - تمت إضافة
parameterاختياري: حجمslotللدالةtimeSlots. Kirill Shvakov - بالنسبة إلى
FULLوRIGHT JOIN، يُستخدم الإعدادmax_block_sizeمع تدفق البيانات غير المنضمّة منright table. Amos Bird - تمت إضافة
parameterسطر الأوامر--secureفيclickhouse-benchmarkوclickhouse-performance-testلتمكين TLS. #3688 #3690 - تحويل النوع عندما لا يتطابق
structureجدول من النوعBufferمعstructuredestination table. Vitaly Baranov - تمت إضافة الخيار
tcp_keep_alive_timeoutلتمكين حزم keep-alive بعد فترة الخمول الزمنية المحددة. #3441 - أُزيلت علامات الاقتباس غير الضرورية حول
valuesالخاصة بـpartition keyفي الجدولsystem.partsإذا كان يتكون منcolumnواحد. #3652 - تعمل دالة باقي القسمة مع
data typesDateوDateTime. #3385 - أُضيفت أسماء بديلة للدوال
POWERوLNوLCASEوUCASEوREPLACEوLOCATEوSUBSTRوMID. #3774 #3763 وأصبحت بعض أسماء الدوال غير حساسة لحالة الأحرف توافقًا مع معيار SQL. كما أُضيف الصياغة المختصرةSUBSTRING(expr FROM start FOR length)توافقًا مع SQL. #3804 - أُضيفت إمكانية استخدام
mlockلقفل صفحات الذاكرة الخاصة بالشفرة التنفيذية لـclickhouse-serverلمنع إخراجها قسرًا من الذاكرة. هذه الميزة معطلة افتراضيًا. #3553 - جرى تحسين الأداء عند القراءة من
O_DIRECT(مع تمكين الخيارmin_bytes_to_use_direct_io). #3405 - جرى تحسين أداء الدالة
dictGet...OrDefaultعند استخدام مُعامل مفتاح ثابت ومُعامل قيمة افتراضية غير ثابت. Amos Bird - أصبحت الدالة
firstSignificantSubdomainتدعم الآن النطاقاتgovوmilوedu. Igor Hatarist كما جرى تحسين الأداء. #3628 - أُضيفت إمكانية تحديد متغيرات بيئة مخصصة لبدء تشغيل
clickhouse-serverباستخدام سكربتSYS-V init.dعبر تعريفCLICKHOUSE_PROGRAM_ENVفي/etc/default/clickhouse. Pavlo Bashynskyi - تصحيح رمز الإرجاع لسكريبت التهيئة الخاص بـ
clickhouse-server. #3516 - يحتوي جدول
system.metricsالآن على المقياسVersionInteger، كما أُضيف إلىsystem.build_optionsالسطرVERSION_INTEGERالذي يحتوي على الصيغة الرقمية لإصدار ClickHouse، مثل18016000. #3644 - أُزيلت إمكانية مقارنة النوع
Dateبرقم لتجنّب الأخطاء المحتملة مثلdate = 2018-12-17، حيث قد تُحذف علامات الاقتباس حول التاريخ بالخطأ. #3687 - أُصلح سلوك الدوال ذات الحالة مثل
rowNumberInAllBlocks. إذ كانت تُخرج سابقًا نتيجة أكبر بمقدار واحد بسبب بدء تنفيذها أثناء تحليل الاستعلام. Amos Bird - إذا تعذر حذف الملف
force_restore_data، فستظهر رسالة خطأ. Amos Bird
تحسينات البناء:
- تم تحديث مكتبة
jemalloc، ما يعالج احتمال حدوث تسرّب في الذاكرة. Amos Bird - أصبح profiling باستخدام
jemallocمُمكّنًا افتراضيًا لأغراض Debug builds. 2cc82f5c - أُضيفت إمكانية تشغيل اختبارات التكامل حتى عندما يكون
Dockerوحده مثبّتًا على النظام. #3650 - أُضيف اختبار fuzz للتعبيرات في استعلامات SELECT. #3442
- أُضيف اختبار ضغط للـ commits، ويُجري اختبارات وظيفية بالتوازي وبترتيب عشوائي لاكتشاف المزيد من حالات التسابق. #3438
- جرى تحسين طريقة تشغيل clickhouse-server داخل Docker image. Elghazal Ahmed
- بالنسبة إلى Docker image، أُضيف دعم لتهيئة databases باستخدام الملفات الموجودة في directory
/docker-entrypoint-initdb.d. Konstantin Lebedev - إصلاحات لعمليات البناء على ARM. #3709
التغييرات غير المتوافقة مع الإصدارات السابقة:
- أُزيلت إمكانية مقارنة النوع
Dateبقيمة رقمية. بدلًا منtoDate('2018-12-18') = 17883، يجب استخدام تحويل صريح للنوع:= toDate(17883)#3687
إصدار ClickHouse 18.14
إصدار ClickHouse 18.14.19، 2018-12-19
إصلاحات الأخطاء:
- تم إصلاح خطأ أدى إلى مشكلات في تحديث القواميس باستخدام مصدر ODBC. #3825, #3829
- تُحدَّد قواعد البيانات بشكل صحيح عند تنفيذ استعلامات DDL
ON CLUSTER. #3460 - تم إصلاح خطأ segfault عند تجاوز الحد
max_temporary_non_const_columns. #3788
تحسينات البناء:
- إصلاحات لعمليات البناء على معمارية ARM.
إصدار ClickHouse 18.14.18، بتاريخ 2018-12-04
إصلاحات الأخطاء:
- تم إصلاح خطأ في الدالة
dictGet...للقواميس من النوعrange، إذا كانت إحدى الوسيطتين ثابتة والأخرى غير ثابتة. #3751 - تم إصلاح خطأ كان يتسبب في طباعة الرسائل
netlink: '...': attribute type 1 has an invalid lengthفي سجل نواة Linux، وكان يحدث فقط على الإصدارات الأحدث بما يكفي من نواة Linux. #3749 - تم إصلاح عطل
segfaultفي الدالةemptyعند استخدام وسيطة من النوعFixedString. Daniel, Dao Quang Minh - تم إصلاح التخصيص المفرط للذاكرة عند استخدام قيمة كبيرة للإعداد
max_query_size(إذ كان يجري التخصيص المسبق دفعة واحدة لكتلة ذاكرة بحجمmax_query_sizeبايت). #3720
تغييرات البناء:
- تم إصلاح البناء باستخدام مكتبات LLVM/Clang بالإصدار 7 من حزم نظام التشغيل (تُستخدم هذه المكتبات لتجميع الاستعلامات في وقت التشغيل). #3582
إصدار ClickHouse 18.14.17، 2018-11-30
إصلاحات الأخطاء:
- أُصلحت الحالات التي لم تكن فيها عملية ODBC bridge تنتهي مع عملية الخادم الرئيسية. #3642
- أُصلح الإدراج المتزامن في جدول
Distributedعند استخدام قائمة أعمدة تختلف عن قائمة أعمدة الجدول البعيد. #3673 - أُصلحت حالة تسابق نادرة قد تؤدي إلى تعطّل عند حذف جدول MergeTree. #3643
- أُصلحت حالة توقف متبادل في الاستعلام عند فشل إنشاء خيط تنفيذ الاستعلام بسبب الخطأ
Resource temporarily unavailable. #3643 - أُصلح تحليل عبارة
ENGINEعند استخدام البنيةCREATE AS tableوتحديد عبارةENGINEقبلAS table(وكان هذا الخطأ يؤدي إلى تجاهل المحرك المحدد). #3692
إصدار ClickHouse 18.14.15، 2018-11-21
إصلاحات الأخطاء:
- جرى تقدير حجم جزء من الذاكرة بأكبر من حجمه الفعلي أثناء إلغاء تسلسل العمود من النوع
Array(String)، مما أدى إلى ظهور أخطاء "تم تجاوز حد الذاكرة". ظهرت هذه المشكلة في الإصدار 18.12.13. #3589
إصدار ClickHouse 18.14.14، 2018-11-20
إصلاحات الأخطاء:
- تم إصلاح استعلامات
ON CLUSTERعند تهيئة العنقود على أنه آمن (العلامة<secure>). #3599
تغييرات البناء:
- تم إصلاح مشكلات (llvm-7 من النظام، MacOS) #3582
إصدار ClickHouse 18.14.13، 2018-11-08
إصلاحات الأخطاء:
- تم إصلاح الخطأ
Block structure mismatch in MergingSorted stream. #3162 - تم إصلاح استعلامات
ON CLUSTERعند تفعيل الاتصالات الآمنة في إعدادات العنقود (العلامة<secure>). #3465 - تم إصلاح خطأ في الاستعلامات التي تستخدم
SAMPLEوPREWHEREوالأعمدة ذات الأسماء المستعارة. #3543 - تم إصلاح الخطأ النادر
unknown compression methodعند تفعيل الإعدادmin_bytes_to_use_direct_io. 3544
تحسينات الأداء:
- تم إصلاح تدهور في أداء الاستعلامات التي تستخدم
GROUP BYعلى أعمدة من النوع UInt16 أو Date عند تنفيذها على معالجات AMD EPYC. Igor Lapko - تم إصلاح تدهور في أداء الاستعلامات التي تعالج سلاسل نصية طويلة. #3530
تحسينات البناء:
إصدار ClickHouse 18.14.12، 2018-11-02
إصلاحات الأخطاء:
- تم إصلاح تعطل عند تنفيذ join بين استعلامين فرعيين غير مُسمّيين. #3505
- تم إصلاح إنشاء استعلامات غير صحيحة (مع بند
WHEREفارغ) عند الاستعلام عن قواعد بيانات خارجية. hotid - تم إصلاح استخدام قيمة timeout غير صحيحة في قواميس ODBC. Marek Vavruša
إصدار ClickHouse 18.14.11، بتاريخ 2018-10-29
إصلاحات الأخطاء:
- تم إصلاح الخطأ
Block structure mismatch in UNION stream: different number of columnsفي استعلامات LIMIT. #2156 - تم إصلاح الأخطاء عند دمج البيانات في الجداول التي تحتوي على مصفوفات داخل بُنى Nested. #3397
- تم إصلاح نتائج الاستعلام غير الصحيحة عند تعطيل الإعداد
merge_tree_uniform_read_distribution(وهو مُمكَّن افتراضيًا). #3429 - تم إصلاح خطأ في عمليات الإدراج إلى جدول Distributed بتنسيق Native format. #3411
إصدار ClickHouse 18.14.10، 2018-10-23
- الإعداد
compile_expressions(التجميع الفوري للتعبيرات (JIT)) معطّل افتراضيًا. #3410 - الإعداد
enable_optimize_predicate_expressionمعطّل افتراضيًا.
إصدار ClickHouse 18.14.9، 2018-10-16
الميزات الجديدة:
- أُضيف المُعدِّل
WITH CUBEإلىGROUP BY(كما تتوفر أيضًا الصياغة البديلةGROUP BY CUBE(...)). #3172 - أُضيفت الدالة
formatDateTime. Alexandr Krasheninnikov - أُضيف محرك الجدول
JDBCودالة الجدولjdbc(يتطلب ذلك تثبيت clickhouse-jdbc-bridge). Alexandr Krasheninnikov - أُضيفت دوال للعمل مع رقم الأسبوع وفق معيار ISO:
toISOWeekوtoISOYearوtoStartOfISOYearوtoDayOfYear. #3146 - يمكنك الآن استخدام أعمدة
Nullableمع جداولMySQLوODBC. #3362 - أصبح بالإمكان قراءة البُنى البيانية المتداخلة ككائنات متداخلة بتنسيق
JSONEachRow. وأُضيف الإعدادinput_format_import_nested_json. Veloman Yunkan - أصبحت المعالجة المتوازية متاحة للعديد من
MATERIALIZED VIEWعند إدراج البيانات. راجع الإعدادparallel_view_processing. Marek Vavruša - أُضيف الاستعلام
SYSTEM FLUSH LOGS(لفرض تفريغ السجلات إلى جداول النظام مثلquery_log) #3321 - يمكنك الآن استخدام ماكروَي
databaseوtableالمعرّفين مسبقًا عند تعريف جداولReplicated. #3251 - أُضيفت إمكانية قراءة قيم النوع
Decimalبالصيغة الهندسية (الدالة على قوى العدد عشرة). #3153
الميزات التجريبية:
- تحسين بند GROUP BY لأنواع البيانات
LowCardinality data types.#3138 - تحسين حساب التعبيرات لأنواع البيانات
LowCardinality data types.#3200
التحسينات:
- انخفض استهلاك الذاكرة بشكل كبير للاستعلامات التي تتضمن
ORDER BYوLIMIT. راجع الإعدادmax_bytes_before_remerge_sort. #3205 - عند عدم وجود
JOIN(LEFTأوINNERأو …)، يُفترض استخدامINNER JOIN. #3147 - تعمل العلامات النجمية المؤهلة بشكل صحيح في الاستعلامات التي تتضمن
JOIN. Winter Zhang - يختار محرك الجدول
ODBCبشكل صحيح أسلوب إحاطة المعرّفات بعلامات اقتباس في SQL dialect لقاعدة بيانات بعيدة. Alexandr Krasheninnikov - الإعداد
compile_expressions(الترجمة الفورية JIT للتعبيرات) مفعّل افتراضيًا. - أُصلح السلوك عند تنفيذ DROP DATABASE/TABLE IF EXISTS وCREATE DATABASE/TABLE IF NOT EXISTS في الوقت نفسه. سابقًا، كان من الممكن أن يُرجع الاستعلام
CREATE DATABASE ... IF NOT EXISTSرسالة الخطأ "File … already exists"، كما كان من الممكن أن تُرجع استعلاماتCREATE TABLE ... IF NOT EXISTSوDROP TABLE IF EXISTSالرسالةTable ... is creating or attaching right now. #3101 - تُمرَّر تعبيرات LIKE وIN ذات الطرف الأيمن الثابت إلى الخادم البعيد عند الاستعلام من جداول MySQL أو ODBC. #3182
- تُمرَّر المقارنات مع التعبيرات الثابتة في WHERE clause إلى الخادم البعيد عند الاستعلام من جداول MySQL وODBC. سابقًا، كانت المقارنات مع الثوابت فقط هي التي تُمرَّر. #3182
- تصحيح حساب عرض الصف في الطرفية لتنسيقات
Pretty، بما في ذلك السلاسل التي تحتوي على رموز هيروغليفية. Amos Bird. - يمكن تحديد
ON CLUSTERلاستعلاماتALTER UPDATE. - تحسين الأداء عند قراءة البيانات بتنسيق
JSONEachRow. #3332 - أُضيفت أسماء بديلة للدالتين
LENGTHوCHARACTER_LENGTHللتوافق. ولم تعد الدالةCONCATحساسة لحالة الأحرف. #3306 - أُضيف الاسم البديل
TIMESTAMPللنوعDateTime. #3390 - تُحجز دائمًا مساحة لـ query_id في سجلات الخادم، حتى إذا لم يكن سطر السجل متعلقًا باستعلام. وهذا يسهّل تحليل سجلات الخادم النصية باستخدام أدوات تابعة لجهات خارجية.
- يُسجَّل استهلاك الذاكرة الخاص بالاستعلام عندما يتجاوز مستوى الغيغابايت الصحيح التالي. #3205
- أُضيف وضع توافق للحالة التي ترسل فيها مكتبة العميل التي تستخدم native protocol، عن طريق الخطأ، عددًا من الأعمدة أقل مما يتوقعه الخادم لاستعلام INSERT. كان هذا السيناريو ممكنًا عند استخدام مكتبة clickhouse-cpp. سابقًا، كان هذا السيناريو يؤدي إلى تعطل الخادم. #3171
- في تعبير WHERE المعرّف من المستخدم في
clickhouse-copier، يمكنك الآن استخدام الاسم المستعارpartition_key(للتصفية الإضافية حسب partition في الجدول المصدر). ويكون هذا مفيدًا إذا تغيّر مخطط partitioning أثناء النسخ، ولكن بشكل طفيف فقط. #3166 - نُقلت آلية عمل محرك
Kafkaإلى thread pool في الخلفية لتقليل سرعة data reading تلقائيًا عند الأحمال المرتفعة. Marek Vavruša. - دعم قراءة قيم
TupleوNestedللبُنى من نوعstructفيCap'n'Proto format. Marek Vavruša - تتضمن قائمة top-level domains للدالة
firstSignificantSubdomainالآن النطاقbiz. decaseal - في configuration الخاصة بـ external dictionaries، تُفسَّر
null_valueعلى أنها قيمة Data type الافتراضي. #3330 - إضافة دعم للدالتين
intDivوintDivOrZeroلـDecimal. b48402e8 - إضافة دعم للأنواع
DateوDateTimeوUUIDوDecimalلاستخدامها كمفتاح للدالة التجميعيةsumMap. #3281 - إضافة دعم لنوع البيانات
Decimalفي القواميس الخارجية. #3324 - إضافة دعم لنوع البيانات
Decimalفي جداولSummingMergeTree. #3348 - أُضيفت حالات تخصيص خاصة لـ
UUIDفيif. #3366 - تقليل عدد استدعاءات النظام
openوcloseعند القراءة منMergeTree table. #3283 - يمكن تنفيذ استعلام
TRUNCATE TABLEعلى أي نسخة متماثلة (ويُمرَّر الاستعلام إلى النسخة القائدة). Kirill Shvakov
إصلاحات الأخطاء:
- تم إصلاح مشكلة في جداول
Dictionaryالخاصة بقواميسrange_hashed. ظهر هذا الخطأ في الإصدار 18.12.17. #1702 - تم إصلاح خطأ عند تحميل قواميس
range_hashed(الرسالةUnsupported type Nullable (...)). ظهر هذا الخطأ في الإصدار 18.12.17. #3362 - تم إصلاح أخطاء في الدالة
pointInPolygonبسبب تراكم الحسابات غير الدقيقة في المضلعات التي تحتوي على عدد كبير من الرؤوس المتقاربة. #3331 #3341 - إذا اختلفت قيمة
checksumللجزء الناتج بعد دمج أجزاء البيانات عن نتيجة الدمج نفسها في replica أخرى، فستُحذف نتيجة الدمج ويُنزل جزء البيانات من replica الأخرى (وهذا هو السلوك الصحيح). لكن بعد تنزيل جزء البيانات، تعذرت إضافته إلى مجموعة العمل بسبب خطأ يفيد بأن الجزء موجود بالفعل (لأن جزء البيانات حُذف بعد الدمج مع بعض التأخير). وأدى ذلك إلى محاولات متكررة لتنزيل البيانات نفسها. #3194 - تم إصلاح الحساب غير الصحيح لإجمالي استهلاك الذاكرة بواسطة الاستعلامات (وبسبب هذا الحساب غير الصحيح، كان الإعداد
max_memory_usage_for_all_queriesيعمل بشكل غير صحيح، وكانت قيمة الـ Metric MemoryTrackingغير صحيحة). ظهر هذا الخطأ في الإصدار 18.12.13. Marek Vavruša - تم إصلاح وظيفة
CREATE TABLE ... ON CLUSTER ... AS SELECT .... ظهر هذا الخطأ في الإصدار 18.12.13. #3247 - تم إصلاح التحضير غير الضروري لهياكل البيانات الخاصة بـ
JOINعلى الخادم الذي يبدأ الاستعلام، إذا كان تنفيذJOINيتم فقط على الخوادم البعيدة. #3340 - تم إصلاح أخطاء في محرك
Kafka: حالات deadlocks بعد الاستثناءات عند بدء قراءة البيانات، وحالات القفل عند الاكتمال Marek Vavruša. - بالنسبة إلى جداول
Kafka، لم يكن يتم تمرير الـ parameter الاختياريschema(مخطط format Cap'n'Proto). Vojtech Splichal - إذا كانت مجموعة خوادم ZooKeeper تضم خوادم تقبل connection ثم تغلقه فورًا بدلًا من الاستجابة لـ handshake، فإن ClickHouse يختار الاتصال بخادم آخر. سابقًا، كان هذا يؤدي إلى الخطأ
Cannot read all data. Bytes read: 0. Bytes expected: 4.ولم يكن الخادم قادرًا على البدء. 8218cf3a - إذا كانت مجموعة خوادم ZooKeeper تتضمن خوادم يُرجع استعلام DNS لها خطأ، فسيتم تجاهل هذه الخوادم. 17b8e209
- تم إصلاح تحويل النوع بين
DateوDateTimeعند insert البيانات بتنسيقVALUES(إذا كانinput_format_values_interpret_expressions = 1). سابقًا، كان التحويل يُنفَّذ بين القيمة العددية لعدد الأيام في Unix epoch وUnix timestamp، مما أدى إلى نتائج غير متوقعة. #3229 - تم تصحيح تحويل النوع بين
Decimalوالأعداد الصحيحة. #3211 - تم إصلاح أخطاء في الإعداد
enable_optimize_predicate_expression. Winter Zhang - تم إصلاح parsing error في CSV format مع floating-point numbers عند استخدام فاصل CSV غير default، مثل
;#3155 - تم إصلاح الدالة
arrayCumSumNonNegative(فهي لا تراكم القيم السالبة إذا كانت قيمة المُراكِم أقل من الصفر). Aleksey Studnev - تم إصلاح طريقة عمل جداول
Mergeفوق جداولDistributedعند استخدامPREWHERE. #3165 - إصلاحات للأخطاء في استعلام
ALTER UPDATE. - تم إصلاح الأخطاء في table function
odbcالتي ظهرت في الإصدار 18.12. #3197 - تم إصلاح عمل aggregate functions مع combinators
StateArray. #3188 - تم إصلاح تعطل كان يحدث عند قسمة قيمة
Decimalعلى الصفر. 69dd6609 - تم إصلاح إخراج الأنواع للعمليات التي تستخدم
Decimalووسائط عددية صحيحة. #3224 - تم إصلاح خطأ segfault أثناء
GROUP BYعلىDecimal128. 3359ba06 - أصبح الإعداد
log_query_threads(تسجيل معلومات عن كل thread في تنفيذ query) يسري الآن فقط إذا كان الخيارlog_queries(تسجيل معلومات عن queries) مضبوطًا على 1. ونظرًا إلى أن الخيارlog_query_threadsمفعّل افتراضيًا، فقد كانت معلومات threads تُسجَّل سابقًا حتى عند تعطيل تسجيل queries. #3241 - تم إصلاح خطأ في التشغيل الموزّع للدالة التجميعية quantiles (رسالة الخطأ
Not found column quantile...). 292a8855 - تم إصلاح مشكلة التوافق عند العمل على cluster يضم servers بالإصدار 18.12.17 وservers أقدم في الوقت نفسه. بالنسبة إلى distributed queries التي تحتوي على مفاتيح GROUP BY ذات أطوال ثابتة وغير ثابتة معًا، إذا كانت هناك كمية كبيرة من data المطلوب تجميعها، فلم تكن data المعادة دائمًا مجمّعة بالكامل (إذ كان صفّان مختلفان يحتويان على مفاتيح aggregation نفسها). #3254
- تم إصلاح التعامل مع substitutions في
clickhouse-performance-testإذا كان query يحتوي فقط على جزء من substitutions المعلنة في الاختبار. #3263 - تم إصلاح خطأ عند استخدام
FINALمعPREWHERE. #3298 - تم إصلاح خطأ عند استخدام
PREWHEREعلى columns أُضيفت أثناءALTER. #3298 - أُضيف check للتحقق من عدم وجود
arrayJoinفي التعبيرينDEFAULTوMATERIALIZED. في السابق، كانarrayJoinيؤدي إلى خطأ عند insert data. #3337 - أُضيف check للتحقق من عدم وجود
arrayJoinفي clause PREWHERE. في السابق، كان هذا يؤدي إلى رسائل مثلSize ... does not matchأوUnknown compression methodعند تنفيذ queries. #3357 - تم إصلاح segfault كان قد يحدث في حالات نادرة بعد التحسين الذي استبدل سلاسل AND الناتجة عن تقييمات المساواة بتعبير IN المقابل. liuyimin-bytedance
- تصحيحات طفيفة في
clickhouse-benchmark: في السابق، لم تكن معلومات client تُرسل إلى server؛ أما الآن فأصبح عدد queries المنفَّذة يُحتسب بدقة أكبر عند الإيقاف وعند تقييد عدد التكرارات. #3351 #3352
التغييرات غير المتوافقة مع الإصدارات السابقة:
- أُزيل الخيار
allow_experimental_decimal_type. وأصبح نوع البياناتDecimalمتاحًا للاستخدام بشكل افتراضي. #3329
إصدار ClickHouse 18.12
إصدار ClickHouse 18.12.17، 2018-09-16
الميزات الجديدة:
- تم تنفيذ
invalidate_query(إمكانية تحديد استعلام للتحقق مما إذا كان القاموس الخارجي يحتاج إلى التحديث) لمصدرclickhouse. #3126 - أُضيفت إمكانية استخدام أنواع البيانات
UInt*وInt*وDateTime(إلى جانب النوعDate) كمفتاح لقاموس خارجيrange_hashedيحدد حدود النطاقات. ويمكن الآن استخدامNULLللدلالة على نطاق مفتوح. Vasily Nemkov - يدعم النوع
Decimalالآن الدوال التجميعيةvar*وstddev*. #3129 - يدعم النوع
Decimalالآن الدوال الرياضية (expوsinوما إلى ذلك). #3129 - يحتوي الجدول
system.part_logالآن على العمودpartition_id. #3089
إصلاحات الأخطاء:
- يعمل
Mergeالآن بشكل صحيح على الجداولDistributed. Winter Zhang - أُصلح عدم التوافق (الاعتماد غير الضروري على إصدار
glibc) الذي جعل من المستحيل تشغيل ClickHouse علىUbuntu Preciseوالإصدارات الأقدم. وقد ظهر هذا عدم التوافق في الإصدار 18.12.13. #3130 - أُصلحت الأخطاء في الإعداد
enable_optimize_predicate_expression. Winter Zhang - أُصلحت مشكلة طفيفة في التوافق مع الإصدارات السابقة ظهرت عند العمل مع عنقود من النسخ المتماثلة على إصدارات أقدم من 18.12.13، وبالتزامن مع إنشاء نسخة متماثلة جديدة لجدول على خادم بإصدار أحدث (كما هو موضح في الرسالة
Can not clone replica, because the ... updated to new ClickHouse version، وهو أمر منطقي، لكن لا ينبغي أن يحدث). #3122
التغييرات غير المتوافقة مع الإصدارات السابقة:
- الخيار
enable_optimize_predicate_expressionمفعّل افتراضيًا (وذلك يُعدّ تفاؤلًا إلى حدّ ما). إذا ظهرت أخطاء في تحليل الاستعلام مرتبطة بالبحث عن أسماء الأعمدة، فاضبطenable_optimize_predicate_expressionعلى 0. Winter Zhang
إصدار ClickHouse 18.12.14، 2018-09-13
الميزات الجديدة:
- أُضيف دعم لاستعلامات
ALTER UPDATE. #3035 - أُضيف الخيار
allow_ddl، الذي يقيّد وصول المستخدم إلى استعلامات DDL. #3104 - أُضيف الخيار
min_merge_bytes_to_use_direct_ioلمحركاتMergeTree، ويتيح لك تعيين عتبة للحجم الإجمالي لعملية الدمج (وعند تجاوز هذه العتبة، ستُعالَج ملفات أجزاء البيانات باستخدام O_DIRECT). #3117 - يتضمن جدول النظام
system.mergesالآن العمودpartition_id. #3099
تحسينات
- إذا بقي جزء البيانات دون تغيير أثناء الـ mutation، فلن تُنزِّله النسخ المتماثلة. #3103
- تتوفر ميزة الإكمال التلقائي لأسماء الإعدادات عند العمل باستخدام
clickhouse-client. #3106
إصلاحات الأخطاء:
- أُضيف تحقّق من أحجام المصفوفات التي تُعد عناصر في حقول من النوع
Nestedعند الإدراج. #3118 - أُصلح خطأ عند تحديث القواميس الخارجية باستخدام المصدر
ODBCوالتخزينhashed. كان هذا الخطأ يحدث في الإصدار 18.12.13. - أُصلح تعطل عند إنشاء جدول مؤقت من استعلام يتضمن شرط
IN. Winter Zhang - أُصلح خطأ في الدوال التجميعية للمصفوفات التي قد تحتوي على عناصر
NULL. Winter Zhang
إصدار ClickHouse 18.12.13، 2018-09-10
الميزات الجديدة:
- تمت إضافة نوع البيانات
DECIMAL(digits, scale)(Decimal32(scale),Decimal64(scale),Decimal128(scale)). لتمكينه، استخدم الإعدادallow_experimental_decimal_type. #2846 #2970 #3008 #3047 - تمت إضافة المُعدِّل
WITH ROLLUPلـGROUP BY(صياغة بديلة:GROUP BY ROLLUP(...)). #2948 - في الاستعلامات التي تتضمن JOIN، يتم توسيع رمز النجمة إلى قائمة بالأعمدة من جميع الجداول، بما يتوافق مع معيار SQL. ويمكنك استعادة السلوك السابق بضبط
asterisk_left_columns_onlyعلى 1 على مستوى إعدادات المستخدم. Winter Zhang - تمت إضافة دعم JOIN مع دوال الجداول. Winter Zhang
- الإكمال التلقائي عند الضغط على Tab في clickhouse-client. Sergey Shcherbin
- يؤدي Ctrl+C في clickhouse-client إلى مسح الاستعلام المُدخل. #2877
- تمت إضافة الإعداد
join_default_strictness(القيم:",'any','all'). يتيح لك هذا عدم الحاجة إلى تحديدANYأوALLفيJOIN. #2982 - يعرض كل سطر في سجل الخادم المرتبط بمعالجة الاستعلام معرّف الاستعلام. #2482
- يمكنك الآن الحصول على سجلات تنفيذ الاستعلام في clickhouse-client (باستخدام الإعداد
send_logs_level). ومع معالجة الاستعلامات الموزعة، تتدرج السجلات من جميع الخوادم. #2482 - تحتوي الجداول
system.query_logوsystem.processes(SHOW PROCESSLIST) الآن على معلومات عن جميع الإعدادات التي تغيّرت عند تشغيل استعلام (البنية المتداخلة لبياناتSettings). وتمت إضافة الإعدادlog_query_settings. #2482 - تعرض الجداول
system.query_logوsystem.processesالآن معلومات عن عدد الخيوط المشاركة في تنفيذ الاستعلام (راجع العمودthread_numbers). #2482 - تمت إضافة عدادات
ProfileEventsالتي تقيس الوقت المستغرَق في القراءة والكتابة عبر الشبكة، والقراءة والكتابة على القرص، وعدد أخطاء الشبكة، والوقت المستغرَق في الانتظار عند تقييد عرض نطاق الشبكة. #2482 - تمت إضافة عدادات
ProfileEventsالتي تتضمن مقاييس النظام من rusage (يمكنك استخدامها للحصول على معلومات عن استخدام CPU في userspace وkernel، وأخطاء الصفحات، وتبديل السياقات)، بالإضافة إلى مقاييس taskstats (لاستخراج معلومات عن وقت انتظار I/O، ووقت انتظار CPU، وحجم البيانات المقروءة والمكتوبة، سواء مع page cache أو بدونها). #2482 - تُطبَّق عدادات
ProfileEventsعلى المستوى العام ولكل استعلام، وكذلك لكل خيط تنفيذ استعلام، ما يتيح لك توصيف استهلاك الموارد لكل استعلام بالتفصيل. #2482 - تمت إضافة الجدول
system.query_thread_log، الذي يحتوي على معلومات عن كل خيط تنفيذ استعلام. وتمت إضافة الإعدادlog_query_threads. #2482 - تحتوي الجداول
system.metricsوsystem.eventsالآن على توثيق مدمج. #3016 - تمت إضافة الدالة
arrayEnumerateDense. Amos Bird - تمت إضافة الدالتين
arrayCumSumNonNegativeوarrayDifference. Aleksey Studnev - تمت إضافة دالة التجميع
retention. Sundy Li - يمكنك الآن جمع حالات دوال التجميع (دمجها) باستخدام عامل الجمع، وضرب حالات دوال التجميع في ثابت غير سالب. #3062 #3034
- تحتوي الجداول في عائلة MergeTree الآن على العمود الافتراضي
_partition_id. #3089
الميزات التجريبية:
- تمت إضافة نوع البيانات
LowCardinality(T). ينشئ نوع البيانات هذا تلقائيًا قاموسًا محليًا للقيم ويتيح معالجة البيانات دون فكّ القاموس. #2830 - تمت إضافة ذاكرة cache مؤقتة للدوال المجمّعة باستخدام التجميع الفوري، بالإضافة إلى عدّاد لعدد مرات الاستخدام قبل التجميع. لتجميع expressions باستخدام التجميع الفوري، فعِّل الإعداد
compile_expressions. #2990 #3077
تحسينات:
- تم إصلاح مشكلة التراكم غير المحدود لسجل النسخ المتماثلة عند وجود replicas مهجورة. وأُضيف وضع استرداد فعّال للـ replicas المتأخرة لفترة طويلة.
- تم تحسين أداء
GROUP BYمع حقول aggregation متعددة عندما يكون أحدها من نوع String وتكون الحقول الأخرى ثابتة الطول. - تم تحسين الأداء عند استخدام
PREWHEREومع النقل الضمني للتعبيرات إلىPREWHERE. - تم تحسين أداء التحليل اللغوي للتنسيقات النصية (
CSV,TSV). Amos Bird #2980 - تم تحسين أداء قراءة السلاسل النصية والمصفوفات في التنسيقات الثنائية. Amos Bird
- تمت زيادة الأداء وتقليل استهلاك الذاكرة للاستعلامات على
system.tablesوsystem.columnsعندما يكون هناك عدد كبير جدًا من الجداول على server واحد. #2953 - تم إصلاح مشكلة أداء عند وجود تدفق كبير من queries التي تنتهي بخطأ (تظهر الدالة
_dl_addrفيperf top، لكن server لا يستهلك قدرًا كبيرًا من وحدة المعالجة المركزية). #2938 - تُدفَع الشروط إلى الـ View (عند تمكين
enable_optimize_predicate_expression). Winter Zhang - تحسينات على وظائف Data type
UUID. #3074 #2985 - أصبحت Data type
UUIDمدعومة في قواميس The-Alchemist. #2822 - تعمل الدالة
visitParamExtractRawبشكل صحيح مع البُنى المتداخلة. Winter Zhang - عند تمكين الإعداد
input_format_skip_unknown_fields، يتم تخطي حقول الكائنات في format JSONEachRowبشكل صحيح. BlahGeek - بالنسبة إلى expression
CASEالتي تتضمن شروطًا، يمكنك الآن حذفELSE، وهو ما يعادلELSE NULL. #2920 - أصبح بالإمكان الآن ضبط مهلة العملية عند العمل مع ZooKeeper. urykhy
- يمكنك تحديد إزاحة لـ
LIMIT n, mبصيغةLIMIT n OFFSET m. #2840 - يمكنك استخدام الصيغة
SELECT TOP nكبديل لـLIMIT. #2840 - تمت زيادة حجم queue الخاصة بالكتابة إلى جداول النظام، بحيث لا يعود الخطأ
SystemLog parameter queue is fullيحدث بالقدر نفسه من التكرار. - تدعم الآن الدالة التجميعية
windowFunnelالأحداث التي تستوفي شروطًا متعددة. Amos Bird - يمكن استخدام أعمدة مكررة في عبارة
USINGضمنJOIN. #3006 - أصبح لدى تنسيقات
Prettyالآن حدّ لمحاذاة الأعمدة بحسب العرض. استخدم الإعدادoutput_format_pretty_max_column_pad_width. وإذا كانت القيمة أعرض من ذلك، فستظل تُعرض بالكامل، لكن الخلايا الأخرى في الجدول لن تصبح عريضة أكثر من اللازم. #3003 - تتيح الآن table function
odbcتحديد اسم database/schema. Amos Bird - أُضيفت إمكانية استخدام username المحدد في config file الخاص بـ
clickhouse-client. Vladimir Kozbin - تم تقسيم العداد
ZooKeeperExceptionsإلى ثلاثة عدادات:ZooKeeperUserExceptionsوZooKeeperHardwareExceptionsوZooKeeperOtherExceptions. - تعمل queries
ALTER DELETEمع materialized views. - أُضيفت عشوائية عند تشغيل خيط التنظيف دوريًا لجداول
ReplicatedMergeTreeلتجنب طفرات الحمل الدورية عندما يكون هناك عدد كبير جدًا من جداولReplicatedMergeTree. - دعم لاستعلامات
ATTACH TABLE ... ON CLUSTER. #3025
إصلاحات الأخطاء:
- تم إصلاح مشكلة في جداول
Dictionary(تؤدي إلى ظهور الاستثناءSize of offsets does not match size of columnأوUnknown compression method). ظهر هذا الخلل في الإصدار 18.10.3. #2913 - تم إصلاح خطأ عند دمج جداول
CollapsingMergeTreeإذا كان أحد أجزاء البيانات فارغًا (تتكوّن هذه الأجزاء أثناء الدمج أو عند تنفيذALTER DELETEإذا حُذفت جميع البيانات)، وكانت الخوارزميةverticalمستخدمةً في الدمج. #3049 - تم إصلاح حالة سباق أثناء تنفيذ
DROPأوTRUNCATEعلى جداولMemoryبالتزامن معSELECT، ما قد يؤدي إلى تعطل الخادم. ظهر هذا الخلل في الإصدار 1.1.54388. #3038 - تم إصلاح احتمال فقدان البيانات عند الإدراج في جداول
Replicatedإذا أُعيد الخطأSession is expired(ويمكن اكتشاف فقدان البيانات عبر المقياسReplicatedDataLoss). حدث هذا الخطأ في الإصدار 1.1.54378. #2939 #2949 #2964 - تم إصلاح حدوث
segfaultأثناءJOIN ... ON. #3000 - تم إصلاح الخطأ في البحث عن أسماء الأعمدة عندما يتكوّن تعبير
WHEREبالكامل من اسم عمود مؤهل، مثلWHERE table.column. #2994 - تم إصلاح الخطأ "Not found column" الذي كان يحدث عند تنفيذ الاستعلامات الموزعة إذا طُلب من خادم بعيد عمود واحد يتكوّن من تعبير IN مع استعلام فرعي. #3087
- تم إصلاح الخطأ
Block structure mismatch in UNION stream: different number of columnsالذي كان يحدث في الاستعلامات الموزعة إذا كانت إحدى الشظايا محلية والأخرى غير محلية، وتم تفعيل تحسين النقل إلىPREWHERE. #2226 #3037 #3055 #3065 #3073 #3090 #3093 - تم إصلاح الدالة
pointInPolygonفي بعض حالات المضلعات غير المحدبة. #2910 - تم إصلاح النتيجة غير الصحيحة عند مقارنة
nanبالأعداد الصحيحة. #3024 - تم إصلاح خطأ في مكتبة
zlib-ngكان قد يؤدي إلىsegfaultفي حالات نادرة. #2854 - تم إصلاح تسرّب في الذاكرة عند الإدراج في جدول يحتوي على أعمدة
AggregateFunction، إذا لم تكن حالة الدالة التجميعية بسيطة (أي تخصّص الذاكرة بشكل منفصل)، وإذا أدى طلب إدراج واحد إلى عدة كتل صغيرة. #3084 - تم إصلاح حالة سباق عند إنشاء جدول
BufferأوMergeTreeنفسه وحذفه بالتزامن. - تم إصلاح احتمال حدوث
segfaultعند مقارنة قيم tuple مكوّنة من أنواع غير بسيطة معينة، مثل tuple داخل tuple. #2989 - تم إصلاح احتمال حدوث
segfaultعند تشغيل بعض استعلاماتON CLUSTER. Winter Zhang - تم إصلاح خطأ في الدالة
arrayDistinctلعناصر المصفوفة من النوعNullable. #2845 #2937 - يدعم الخيار
enable_optimize_predicate_expressionالآن بشكل صحيح الحالات التي تتضمنSELECT *. Winter Zhang - تم إصلاح خطأ segfault عند إعادة تهيئة جلسة ZooKeeper. #2917
- تم إصلاح احتمال حدوث توقف عند العمل مع ZooKeeper.
- تم إصلاح الشيفرة غير الصحيحة الخاصة بإضافة هياكل البيانات المتداخلة في
SummingMergeTree. - عند تخصيص الذاكرة لحالات الدوال التجميعية، تُراعى المحاذاة الآن بشكل صحيح، مما يتيح استخدام العمليات التي تتطلب محاذاة عند تنفيذ حالات الدوال التجميعية. chenxing-xc
إصلاح أمني:
- الاستخدام الآمن لمصادر بيانات ODBC. يتم التفاعل مع برامج تشغيل ODBC عبر عملية
clickhouse-odbc-bridgeمنفصلة. لم تعد الأخطاء في برامج تشغيل ODBC التابعة لجهات خارجية تؤثر في استقرار الخادم أو تتسبب في ثغرات أمنية. #2828 #2879 #2886 #2893 #2921 - تم إصلاح التحقق الخاطئ من مسار الملف في دالة الجدول
catBoostPool. #2894 - تُفلتر محتويات جداول النظام (
tables,databases,parts,columns,parts_columns,merges,mutations,replicas, وreplication_queue) وفقًا لصلاحيات وصول المستخدم المُعَدّة إلى قواعد البيانات (allow_databases). Winter Zhang
التغييرات غير المتوافقة مع الإصدارات السابقة:
- في الاستعلامات التي تتضمن JOIN، يُوسَّع رمز النجمة إلى قائمة بالأعمدة في جميع الجداول، توافقًا مع معيار SQL. يمكنك استعادة السلوك السابق بتعيين
asterisk_left_columns_onlyإلى 1 على مستوى إعدادات المستخدم.
تغييرات البناء:
- يمكن الآن تشغيل معظم اختبارات التكامل مع كل commit.
- يمكن أيضًا تشغيل فحوصات نمط الشيفرة مع كل commit.
- يُختار تنفيذ
memcpyبشكل صحيح عند البناء على CentOS7/Fedora. Etienne Champetier - عند استخدام clang للبناء، أُضيفت بعض التحذيرات من
-Weverything، بالإضافة إلى التحذيرات المعتادة-Wall-Wextra -Werror. #2957 - يستخدم تصحيح أخطاء البناء خيار
debugالخاص بـjemalloc. - أُعلنت واجهة المكتبة الخاصة بالتعامل مع ZooKeeper كواجهة مجردة. #2950
إصدار ClickHouse 18.10
إصدار ClickHouse 18.10.3، 2018-08-13
الميزات الجديدة:
- يمكن استخدام HTTPS في النسخ المتماثل. #2760
- أُضيفت الدوال
murmurHash2_64وmurmurHash3_32وmurmurHash3_64وmurmurHash3_128بالإضافة إلى الدالة الحاليةmurmurHash2_32. #2791 - دعم الأنواع Nullable في برنامج تشغيل ClickHouse ODBC (تنسيق الإخراج
ODBCDriver2). #2834 - دعم
UUIDفي الأعمدة المفتاحية.
التحسينات:
- يمكن إزالة المجموعات العنقودية دون إعادة تشغيل الخادم عند حذفها من ملفات الإعداد. #2777
- يمكن إزالة القواميس الخارجية دون إعادة تشغيل الخادم عند حذفها من ملفات الإعداد. #2779
- أُضيف دعم
SETTINGSلمحرك الجدولKafka. Alexander Marshalov - أُدخلت تحسينات على نوع البيانات
UUID(لم تكتمل بعد). #2618 - دعم الأجزاء الفارغة بعد عمليات الدمج في المحركات
SummingMergeTreeوCollapsingMergeTreeوVersionedCollapsingMergeTree. #2815 - تُحذف السجلات القديمة لعمليات التعديل المكتملة (
ALTER DELETE). #2784 - أُضيف الجدول
system.merge_tree_settings. Kirill Shvakov - يحتوي الجدول
system.tablesالآن على أعمدة تبعيات:dependencies_databaseوdependencies_table. Winter Zhang - أُضيف خيار الإعداد
max_partition_size_to_drop. #2782 - أُضيف الخيار
output_format_json_escape_forward_slashes. Alexander Bocharov - أُضيف الإعداد
max_fetch_partition_retries_count. #2831 - أُضيف الإعداد
prefer_localhost_replicaلإلغاء تفضيل النسخة المتماثلة المحلية، وللوصول إلى نسخة متماثلة محلية دون تفاعل بين العمليات. #2832 - تُرجع الدالة التجميعية
quantileExactالقيمةnanعند التجميع على مجموعةFloat32أوFloat64فارغة. Sundy Li
إصلاحات الأخطاء:
- أُزيلت إضافة محارف الهروب غير الضرورية إلى معاملات سلسلة الاتصال الخاصة بـ ODBC، والتي كانت تجعل إنشاء الاتصال مستحيلاً. ظهر هذا الخطأ في الإصدار 18.6.0.
- أُصلح منطق معالجة أوامر
REPLACE PARTITIONفي قائمة انتظار النسخ المتماثل. إذا وُجد أمرانREPLACEللقسم نفسه، فقد يتسبب المنطق الخاطئ في بقاء أحدهما في قائمة انتظار النسخ المتماثل دون تنفيذه. #2814 - أُصلح خطأ في الدمج عندما كانت جميع أجزاء البيانات فارغة (أي الأجزاء الناتجة عن عملية دمج أو عن
ALTER DELETEإذا كانت جميع البيانات قد حُذفت). ظهر هذا الخطأ في الإصدار 18.1.0. #2930 - أُصلح خطأ كان يحدث عند التنفيذ المتزامن لـ
SetأوJoin. Amos Bird - أُصلح الخطأ
Block structure mismatch in UNION stream: different number of columnsالذي كان يحدث في استعلاماتUNION ALLداخل استعلام فرعي إذا كان أحد استعلاماتSELECTيحتوي على أسماء أعمدة مكررة. Winter Zhang - أُصلح تسرّب في الذاكرة إذا وقع استثناء عند الاتصال بخادم MySQL.
- أُصلح رمز الاستجابة غير الصحيح في clickhouse-client عند حدوث خطأ في الاستعلام.
- أُصلح السلوك غير الصحيح للعروض المادية التي تحتوي على DISTINCT. #2795
التغييرات غير المتوافقة مع الإصدارات السابقة
- أُلغي دعم استعلامات CHECK TABLE للجداول الموزعة.
تغييرات البناء:
- تم استبدال allocator: يُستخدم
jemallocالآن بدلًا منtcmalloc. في بعض السيناريوهات، يؤدي ذلك إلى زيادة السرعة بنسبة تصل إلى 20%. ومع ذلك، هناك queries تباطأت بنسبة تصل إلى 20%. كما انخفض استهلاك الذاكرة بنحو 10% في بعض السيناريوهات، مع تحسّن في الاستقرار. ومع الأحمال شديدة التنافس، لا يسجّل CPU usage في userspace وفي النظام سوى زيادة طفيفة. #2773 - استخدام libressl من submodule. #1983 #2807
- استخدام unixodbc من submodule. #2789
- استخدام mariadb-connector-c من submodule. #2785
- أُضيفت ملفات الاختبارات الوظيفية إلى repository، وهي تعتمد على توافر بيانات الاختبار (حتى الآن، من دون بيانات الاختبار نفسها).
إصدار ClickHouse 18.6
إصدار ClickHouse 18.6.0، 2018-08-02
الميزات الجديدة:
- أُضيف دعم لعبارات ON في صيغة JOIN ON:
JOIN ON Expr([table.]column ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...]يجب أن يكون التعبير سلسلة من علاقات المساواة المربوطة بالعامل AND. ويمكن أن يكون كل طرف من طرفَي المساواة أي تعبير يعتمد على أعمدة أحد الجدولين. كما يُدعَم استخدام أسماء الأعمدة المؤهلة بالكامل (table.name,database.table.name,table_alias.name,subquery_alias.name) للجدول الأيمن. #2742 - يمكن تمكين HTTPS للنسخ المتماثل. #2760
تحسينات:
- يمرّر الخادم رقم التصحيح من إصداره إلى العميل. وتتوفر بيانات عن مكوّن رقم التصحيح في
system.processesوquery_log. #2646
إصدار ClickHouse 18.5
إصدار ClickHouse 18.5.1، 2018-07-31
الميزات الجديدة:
- أُضيفت دالة التجزئة
murmurHash2_32#2756.
التحسينات:
- يمكنك الآن استخدام السمة
from_env#2741 لتعيين القيم في ملفات التهيئة انطلاقًا من متغيرات البيئة. - أُضيفت نسخ غير حساسة لحالة الأحرف من
coalesceوifNullوnullIf functions#2752.
إصلاحات الأخطاء:
- تم إصلاح خلل محتمل عند تشغيل نسخة متماثلة #2759.
إصدار ClickHouse 18.4
إصدار ClickHouse 18.4.0 بتاريخ 2018-07-28
الميزات الجديدة:
- تمت إضافة جداول النظام:
formats,data_type_families,aggregate_function_combinators,table_functions,table_engines,collations#2721. - تمت إضافة إمكانية استخدام دالة جدول بدلًا من جدول كوسيط في دالة الجدول
remoteأو دالة الجدولcluster#2708. - دعم مصادقة
HTTP Basicفي بروتوكول النسخ المتماثل #2727. - تتيح الدالة
hasالآن البحث عن قيمة رقمية ضمن مصفوفة من قيمEnumMaxim Khrisanfov. - دعم إضافة فواصل مخصصة للرسائل عند القراءة من
KafkaAmos Bird.
تحسينات:
- لا يعيد الاستعلام
ALTER TABLE t DELETE WHEREكتابة أجزاء البيانات غير المتأثرة بشرطWHERE#2694. - خيار
use_minimalistic_checksums_in_zookeeperلجداولReplicatedMergeTreeمفعَّل افتراضيًا. أُضيف هذا الإعداد في الإصدار 1.1.54378 بتاريخ 2018-04-16. ولم يعد بالإمكان تثبيت الإصدارات الأقدم من 1.1.54378. - دعم تشغيل الاستعلامين
KILLوOPTIMIZEمع تحديدON CLUSTERWinter Zhang.
إصلاحات الأخطاء:
- تم إصلاح الخطأ
Column ... is not under an aggregate function and not in GROUP BYعند إجراء التجميع باستخدام تعبير IN. ظهر هذا الخطأ في الإصدار 18.1.0. (bbdd780b) - تم إصلاح خطأ في
windowFunnel دالة تجميعيةWinter Zhang. - تم إصلاح خطأ في الدالة التجميعية
anyHeavy(a2101df2) - تم إصلاح تعطل الخادم عند استخدام الدالة التجميعية
countArray().
التغييرات غير المتوافقة مع الإصدارات السابقة:
- تغيّرت معلمات محرك
KafkaمنKafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers])إلىKafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_row_delimiter, kafka_schema, kafka_num_consumers]). إذا كانت جداولك تستخدم المعلمتينkafka_schemaأوkafka_num_consumers، فعليك تعديل ملفات البيانات الوصفيةpath/metadata/database/table.sqlيدويًا وإضافة المعلمةkafka_row_delimiterبالقيمة''.
إصدار ClickHouse 18.1
إصدار ClickHouse 18.1.0، 2018-07-23
الميزات الجديدة:
- دعم الاستعلام
ALTER TABLE t DELETE WHEREلجداول MergeTree غير المكررة (#2634). - دعم الأنواع الاعتباطية لعائلة الدوال التجميعية
uniq*(#2010). - دعم الأنواع الاعتباطية في معاملات المقارنة (#2026).
- يتيح ملف
users.xmlتعيين قناع شبكة فرعية بالتنسيق10.0.0.1/255.255.255.0. وهذا ضروري لاستخدام الأقنعة مع شبكات IPv6 التي تحتوي على أصفار في الوسط (#2637). - تمت إضافة الدالة
arrayDistinct(#2670). - يمكن الآن لمحرك SummingMergeTree العمل مع أعمدة من النوع AggregateFunction (Constantin S. Pan).
التحسينات:
- تم تغيير مخطط ترقيم الإصدارات. يحتوي الجزء الأول الآن على سنة الإصدار (ميلادي، وفق توقيت موسكو، مطروحًا منها 2000)، ويحتوي الجزء الثاني على رقم التغييرات الرئيسية (ويزداد في معظم الإصدارات)، أما الجزء الثالث فهو إصدار التصحيح. وتظل الإصدارات متوافقة مع الإصدارات السابقة، ما لم يُذكر خلاف ذلك في سجل التغييرات.
- تحويل الأعداد ذات الفاصلة العائمة إلى سلسلة نصية أصبح أسرع (Amos Bird).
- إذا تم تخطي بعض الصفوف أثناء عملية الإدراج بسبب أخطاء التحليل (وهذا ممكن عند تفعيل الإعدادين
input_allow_errors_numوinput_allow_errors_ratio)، فإن عدد الصفوف التي تم تخطيها يُكتب الآن في سجل الخادم (Leonardo Cecchi).
إصلاحات الأخطاء:
- تم إصلاح الأمر TRUNCATE للجداول المؤقتة (Amos Bird).
- تم إصلاح حالة توقف متبادل نادرة في مكتبة عميل ZooKeeper كانت تحدث عند وقوع خطأ في الشبكة أثناء قراءة الاستجابة (c315200).
- تم إصلاح خطأ أثناء التحويل باستخدام CAST إلى الأنواع Nullable (#1322).
- تم إصلاح النتيجة غير الصحيحة للدالة
maxIntersection()عندما كانت حدود الفترات متطابقة (Michael Furmur). - تم إصلاح التحويل غير الصحيح لسلسلة تعبيرات OR في وسيطة دالة (chenxing-xc).
- تم إصلاح تراجع الأداء في الاستعلامات التي تحتوي على تعبيرات
IN (subquery)داخل استعلام فرعي آخر (#2571). - تم إصلاح عدم التوافق بين الخوادم ذات الإصدارات المختلفة في الاستعلامات الموزعة التي تستخدم دالة
CASTغير المكتوبة بأحرف كبيرة (fe8c4d6). - أُضيفت علامات الاقتباس المفقودة حول المعرّفات في الاستعلامات المرسلة إلى نظام إدارة قواعد بيانات خارجي (#2635).
التغييرات غير المتوافقة مع الإصدارات السابقة:
- لا ينجح تحويل سلسلة نصية تحتوي على الرقم صفر إلى DateTime. مثال:
SELECT toDateTime('0'). وهذا أيضًا هو سبب عدم عملDateTime DEFAULT '0'في الجداول، وكذلك<null_value>0</null_value>في القواميس. الحل: استبدل0بـ0000-00-00 00:00:00.
إصدار ClickHouse 1.1
إصدار ClickHouse 1.1.54394، 2018-07-12
الميزات الجديدة:
- تمت إضافة الدالة التجميعية
histogram(Mikhail Surin). - يمكن الآن استخدام
OPTIMIZE TABLE ... FINALبدون تحديد الأقسام فيReplicatedMergeTree(Amos Bird).
إصلاحات الأخطاء:
- تم إصلاح مشكلة تتعلق بمهلة
timeoutقصيرة جدًا للمقابسsockets(ثانية واحدة) عند القراءة والكتابة أثناء إرسال البيانات المكررة وتنزيلها، مما كان يجعل تنزيل الأجزاء الكبيرة مستحيلاً عند وجود حمل على الشبكة أو القرص (وكان يؤدي إلى محاولات متكررة لتنزيل الأجزاء). ظهر هذا الخطأ في الإصدار 1.1.54388. - تم إصلاح مشكلات كانت تحدث عند استخدام chroot في ZooKeeper إذا أدرجت كتل بيانات مكررة في الجدول.
- أصبحت الدالة
hasتعمل الآن بشكل صحيح مع مصفوفة تحتوي على عناصر Nullable (#2115). - أصبح الجدول
system.tablesيعمل الآن بشكل صحيح عند استخدامه في الاستعلامات الموزعة. كما أصبح العمودانmetadata_modification_timeوengine_fullغير افتراضيين. وتم أيضًا إصلاح خطأ كان يحدث عند طلب هذين العمودين فقط من الجدول. - تم إصلاح عمل جدول
TinyLogالفارغ بعد إدراج كتلة بيانات فارغة (#2563). - أصبح الجدول
system.zookeeperيعمل حتى إذا كانت قيمة العقدة في ZooKeeper هي NULL.
إصدار ClickHouse 1.1.54390، 2018-07-06
الميزات الجديدة:
- يمكن إرسال الاستعلامات بتنسيق
multipart/form-data(ضمن الحقلquery)، وهو أمر مفيد إذا كانت هناك أيضًا بيانات خارجية تُرسَل لمعالجة الاستعلام (Olga Hvostikova). - أُضيفت إمكانية تمكين أو تعطيل معالجة علامات الاقتباس المفردة والمزدوجة عند قراءة البيانات بتنسيق CSV. يمكنك ضبط ذلك من خلال الإعدادين
format_csv_allow_single_quotesوformat_csv_allow_double_quotes(Amos Bird). - يمكن الآن استخدام
OPTIMIZE TABLE ... FINALمن دون تحديد القسم في الإصدارات غير المكررة منMergeTree(Amos Bird).
تحسينات:
- تحسين الأداء، وتقليل استهلاك الذاكرة، والتتبّع الصحيح لاستهلاك الذاكرة عند استخدام المعامل IN عندما يمكن استخدام فهرس للجدول (#2584).
- أُزيل التحقق المتكرر من checksums عند إضافة جزء بيانات. وهذا مهم عند وجود عدد كبير من replicas، لأن العدد الإجمالي لعمليات التحقق في هذه الحالات كان يساوي N^2.
- أُضيف دعم الوسيطات
Array(Tuple(...))للدالةarrayEnumerateUniq(#2573). - أُضيف دعم
NullableللدالةrunningDifference(#2594). - تحسّن أداء تحليل query عند وجود عدد كبير جدًا من expressions (#2572).
- تسريع اختيار أجزاء بيانات لعمليات merging في جداول
ReplicatedMergeTree. وتسريع استعادة session الخاصة بـ ZooKeeper (#2597). - يُعاد إنشاء الملف
format_version.txtلجداولMergeTreeإذا كان مفقودًا، وهذا منطقي إذا شُغِّل ClickHouse بعد نسخ بنية directory من دون الملفات (Ciprian Hacman).
إصلاحات الأخطاء:
- تم إصلاح خطأ عند العمل مع ZooKeeper كان قد يجعل استعادة حالتي الجلسة والقراءة فقط للجداول قبل إعادة تشغيل الخادم أمراً غير ممكن.
- تم إصلاح خطأ عند العمل مع ZooKeeper كان قد يؤدي إلى عدم حذف العُقد القديمة إذا انقطعت الجلسة.
- تم إصلاح خطأ في الدالة
quantileTDigestلوسيطات Float (ظهر هذا الخطأ لأول مرة في الإصدار 1.1.54388) (Mikhail Surin). - تم إصلاح خطأ في الفهرس لجداول MergeTree إذا كان عمود المفتاح الأساسي موجوداً داخل دالة تحويل الأنواع بين الأعداد الصحيحة الموقعة وغير الموقعة من الحجم نفسه (#2603).
- تم إصلاح segfault عند استخدام
macrosمن دون وجودها في ملف الإعدادات (#2570). - تم إصلاح التبديل إلى قاعدة البيانات
defaultعند إعادة اتصال العميل (#2583). - تم إصلاح خطأ كان يحدث عند تعطيل الإعداد
use_index_for_in_with_subqueries.
إصلاح أمني:
- لم يعد بالإمكان إرسال الملفات عند الاتصال بـ MySQL (
LOAD DATA LOCAL INFILE).
إصدار ClickHouse 1.1.54388، 2018-06-28
الميزات الجديدة:
- دعم الاستعلام
ALTER TABLE t DELETE WHEREللجداول المكررة. تمت إضافة الجدولsystem.mutationsلتتبّع تقدّم هذا النوع من الاستعلامات. - دعم الاستعلام
ALTER TABLE t [REPLACE|ATTACH] PARTITIONلجداول *MergeTree. - دعم الاستعلام
TRUNCATE TABLE(Winter Zhang) - عدة استعلامات
SYSTEMجديدة للجداول المكررة (RESTART REPLICAS,SYNC REPLICA,[STOP|START] [MERGES|FETCHES|SENDS REPLICATED|REPLICATION QUEUES]). - أُضيفت إمكانية الكتابة إلى جدول يستخدم محرك MySQL، بالإضافة إلى دالة الجدول المقابلة (sundy-li).
- أُضيفت دالة الجدول
url()ومحرك الجدولURL(Alexander Sapin). - أُضيفت الدالة التجميعية
windowFunnel(sundy-li). - أُضيفت الدالتان
startsWithوendsWithللسلاسل النصية (Vadim Plakhtinsky). - تتيح دالة الجدول
numbers()الآن تحديد الإزاحة (Winter Zhang). - يمكن الآن إدخال كلمة مرور
clickhouse-clientبشكل تفاعلي. - يمكن الآن إرسال سجلات الخادم إلى syslog (Alexander Krasheninnikov).
- دعم التسجيل في القواميس التي تستخدم مصدر مكتبة مشتركة (Alexander Sapin).
- دعم محددات CSV مخصصة (Ivan Zhukov)
- أُضيف الإعداد
date_time_input_format. إذا غيّرت هذا الإعداد إلى'best_effort'، فستُقرأ قيم DateTime بمجموعة واسعة من التنسيقات. - أُضيفت الأداة
clickhouse-obfuscatorلتشويش البيانات. مثال على الاستخدام: نشر البيانات المستخدمة في اختبارات الأداء.
الميزات التجريبية:
- أُضيفت إمكانية حساب وسيطات
andفقط عند الحاجة إليها (Anastasia Tsarkova) - أصبح التحويل البرمجي الفوري (JIT) إلى الشفرة الأصلية متاحًا الآن لبعض التعبيرات (pyos).
إصلاحات الأخطاء:
- لم تعد التكرارات تظهر في استعلام يحتوي على
DISTINCTوORDER BY. - لم تعد الاستعلامات التي تحتوي على
ARRAY JOINوarrayFilterتُرجع نتائج غير صحيحة. - تم إصلاح خطأ عند قراءة عمود مصفوفة من بنية Nested (#2066).
- تم إصلاح خطأ عند تحليل الاستعلامات التي تحتوي على عبارة HAVING مثل
HAVING tuple IN (...). - تم إصلاح خطأ عند تحليل الاستعلامات التي تحتوي على أسماء مستعارة تكرارية.
- تم إصلاح خطأ عند القراءة من ReplacingMergeTree مع شرط في PREWHERE يستبعد جميع الصفوف (#2525).
- لم تكن إعدادات ملف تعريف المستخدم تُطبَّق عند استخدام الجلسات في واجهة HTTP.
- تم إصلاح طريقة تطبيق الإعدادات من معاملات سطر الأوامر في clickhouse-local.
- تستخدم مكتبة عميل ZooKeeper الآن مهلة الجلسة الواردة من الخادم.
- تم إصلاح خلل في مكتبة عميل ZooKeeper عندما كان العميل ينتظر استجابة الخادم مدة أطول من المهلة.
- تم إصلاح استبعاد الأجزاء في الاستعلامات التي تحتوي على شروط على أعمدة مفتاح التقسيم (#2342).
- أصبحت عمليات الدمج ممكنة الآن بعد
CLEAR COLUMN IN PARTITION(#2315). - تم إصلاح تعيين الأنواع في دالة الجدول ODBC (sundy-li).
- تم إصلاح مقارنات الأنواع لـ
DateTimeمع المنطقة الزمنية وبدونها (Alexander Bocharov). - تم إصلاح التحليل النحوي وتنسيق المعامل
CAST. - تم إصلاح الإدراج في العرض المادي لمحرك الجداول Distributed (Babacar Diassé).
- تم إصلاح حالة تسابق عند كتابة البيانات من المحرك
Kafkaإلى العروض المادية (Yangkuan Liu). - تم إصلاح SSRF في دالة الجدول remote().
- تم إصلاح سلوك الخروج في
clickhouse-clientفي وضع الأسطر المتعددة (#2510).
تحسينات:
- أصبحت المهام الخلفية في الجداول المكررة تُنفَّذ الآن ضمن مجمع مؤشرات ترابط بدلًا من مؤشرات ترابط منفصلة (Silviu Caragea).
- تم تحسين أداء ضغط LZ4.
- أصبح تحليل الاستعلامات التي تحتوي على عدد كبير من عمليات JOIN والاستعلامات الفرعية أسرع.
- أصبحت ذاكرة DNS المؤقتة تُحدَّث تلقائيًا عند وجود عدد كبير جدًا من أخطاء الشبكة.
- لم تعد عمليات الإدراج في الجداول تتم إذا تعذّر الإدراج في أحد العروض المادية بسبب وجود عدد كبير جدًا من الأجزاء فيه.
- تم تصحيح التفاوت في عدادات الأحداث
QueryوSelectQueryوInsertQuery. - يُسمح بتعبيرات مثل
tuple IN (SELECT tuple)إذا كانت أنواع tuple متطابقة. - يمكن لخادم يحتوي على جداول مكررة أن يبدأ التشغيل حتى إذا لم تكن قد أعددت ZooKeeper.
- عند حساب عدد أنوية CPU المتاحة، أصبحت القيود المفروضة عبر cgroups تؤخذ في الحسبان (Atri Sharma).
- أُضيف chown لأدلة config في ملف config الخاص بـ systemd (Mikhail Shiryaev).
تغييرات البناء:
- يمكن استخدام المصرّف gcc8 لعمليات البناء.
- أُضيفت إمكانية بناء llvm من submodule.
- جرى تحديث إصدار مكتبة librdkafka إلى v0.11.4.
- أُضيفت إمكانية استخدام مكتبة النظام libcpuid. كما جرى تحديث إصدار المكتبة إلى 0.4.0.
- أُصلحت عملية البناء باستخدام مكتبة vectorclass (Babacar Diassé).
- يُنشئ CMake الآن ملفات لـ ninja افتراضيًا (كما عند استخدام
-G Ninja). - أُضيفت إمكانية استخدام مكتبة libtinfo بدلًا من libtermcap (Georgy Kondratiev).
- أُصلح تعارض في ملف ترويسة في Fedora Rawhide (#2520).
تغييرات غير متوافقة مع الإصدارات السابقة:
- أُزيل الإفلات في التنسيقين
VerticalوPretty*، وحُذف التنسيقVerticalRaw. - إذا استُخدمت خوادم بالإصدار 1.1.54388 (أو أحدث) وخوادم بإصدار أقدم في الوقت نفسه ضمن استعلام موزّع، وكان الاستعلام يحتوي على التعبير
cast(x, 'Type')من دون الكلمة المفتاحيةAS، وكانت الكلمةcastغير مكتوبة بأحرف كبيرة، فسيظهر استثناء برسالة مثلNot found column cast(0, 'UInt8') in block. الحل: حدّث الخوادم على مستوى المجموعة بأكملها.
إصدار ClickHouse 1.1.54385، 2018-06-01
إصلاحات الأخطاء:
- تم إصلاح خطأ كان يتسبب، في بعض الحالات، في توقف عمليات ZooKeeper.
إصدار ClickHouse 1.1.54383، 2018-05-22
إصلاحات الأخطاء:
- تم إصلاح تباطؤ في قائمة انتظار النسخ المتماثل إذا كان للجدول عدد كبير من النُسخ المتماثلة.
إصدار ClickHouse 1.1.54381، 2018-05-14
إصلاحات الأخطاء:
- تم إصلاح تسرّب في العُقد داخل ZooKeeper عند فقدان ClickHouse الاتصال بخادم ZooKeeper.
إصدار ClickHouse 1.1.54380، 2018-04-21
الميزات الجديدة:
- تمت إضافة دالة الجدول
file(path, format, structure). مثال يوضح قراءة البايتات من/dev/urandom:ln -s /dev/urandom /var/lib/clickhouse/user_files/random``clickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10".
تحسينات:
- يمكن وضع الاستعلامات الفرعية بين قوسين
()لتحسين وضوح الاستعلام وسهولة قراءته. على سبيل المثال:(SELECT 1) UNION ALL (SELECT 1). - لا تدخل استعلامات
SELECTالبسيطة من جدولsystem.processesضمن حدmax_concurrent_queries.
إصلاحات الأخطاء:
- تم إصلاح السلوك غير الصحيح للمُعامل
INعند إجراء select منMATERIALIZED VIEW. - تم إصلاح التصفية غير الصحيحة حسب فهرس التقسيم في تعبيرات مثل
partition_key_column IN (...). - تم إصلاح عدم القدرة على تنفيذ استعلام
OPTIMIZEعلى نسخة متماثلة غير قائدة إذا تم تنفيذREANAMEعلى الجدول. - تم إصلاح خطأ التخويل عند تنفيذ استعلامات
OPTIMIZEأوALTERعلى نسخة متماثلة غير قائدة. - تم إصلاح تجمّد
KILL QUERY. - تم إصلاح خطأ في مكتبة عميل ZooKeeper أدى إلى فقدان عمليات watch، وتجمّد طابور DDL موزع، وحدوث تباطؤ في قائمة انتظار النسخ المتماثل إذا استُخدمت بادئة
chrootغير فارغة في تهيئة ZooKeeper.
التغييرات غير المتوافقة مع الإصدارات السابقة:
- أُزيل دعم التعبيرات مثل
(a, b) IN (SELECT (a, b))(يمكنك استخدام التعبير المكافئ(a, b) IN (SELECT a, b)). في الإصدارات السابقة، كانت هذه التعبيرات تؤدي إلى سلوك تصفيةWHEREغير محدد أو تتسبب في أخطاء.
إصدار ClickHouse 1.1.54378، 2018-04-16
الميزات الجديدة:
- يمكن تغيير مستوى التسجيل دون إعادة تشغيل الخادم.
- أُضيف استعلام
SHOW CREATE DATABASE. - يمكن تمرير
query_idإلىclickhouse-client(elBroom). - إعداد جديد:
max_network_bandwidth_for_all_users. - أُضيف دعم
ALTER TABLE ... PARTITION ...لـMATERIALIZED VIEW. - أُضيفت معلومات عن حجم أجزاء البيانات بصورتها غير المضغوطة في جدول النظام.
- دعم التشفير بين الخوادم للجداول الموزعة (
<secure>1</secure>في إعدادات النسخة المتماثلة ضمن<remote_servers>). - تهيئة على مستوى الجدول لعائلة
ReplicatedMergeTreeلتقليل كمية البيانات المخزنة في ZooKeeper إلى الحد الأدنى:use_minimalistic_checksums_in_zookeeper = 1 - إعداد الموجّه في
clickhouse-client. افتراضيًا، تُعرَض الآن أسماء الخوادم في الموجّه. ويمكن تغيير الاسم المعروض للخادم. كما يُرسَل هذا الاسم أيضًا في ترويسة HTTP X-ClickHouse-Display-Name(Kirill Shvakov). - يمكن تحديد عدة
topicsمفصولة بفواصل لمحركKafka(Tobias Adamson) - عند إيقاف استعلام بواسطة
KILL QUERYأوreplace_running_query، يتلقى العميل الاستثناءQuery was canceledبدلًا من نتيجة غير مكتملة.
التحسينات:
- تُنفَّذ استعلامات
ALTER TABLE ... DROP/DETACH PARTITIONفي مقدمة قائمة انتظار النسخ المتماثل. - يمكن استخدام
SELECT ... FINALوOPTIMIZE ... FINALحتى عندما يحتوي الجدول على جزء بيانات واحد فقط. - يُعاد إنشاء جدول
query_logتلقائيًا إذا حُذف يدويًا (Kirill Shvakov). - تعمل الدالة
lengthUTF8بسرعة أكبر (zhang2014). - تحسَّن أداء عمليات الإدراج المتزامنة في جداول
Distributed(insert_distributed_sync = 1) عند وجود عدد كبير جدًا من shards. - يقبل الخادم إعدادَي
send_timeoutوreceive_timeoutمن العميل ويطبّقهما عند الاتصال بالعميل (ويُطبَّقان بترتيب عكسي: إذ يُضبطsend_timeoutالخاص بمقبس الخادم على قيمةreceive_timeoutالمستلمة من العميل، والعكس صحيح). - أصبحت آلية الاسترداد بعد التعطل أكثر متانة لعمليات الإدراج غير المتزامنة في جداول
Distributed. - تغيّر نوع الإرجاع للدالة
countEqualمنUInt32إلىUInt64(谢磊).
إصلاحات الأخطاء:
- تم إصلاح خطأ في
INعندما يكون الطرف الأيسر من التعبير من النوعNullable. - تُعاد الآن نتائج صحيحة عند استخدام tuples مع
INعندما تكون بعض مكوّنات الـ tuple موجودة في فهرس الجدول. - يعمل الآن الحد
max_execution_timeبشكل صحيح مع الاستعلامات الموزعة. - تم إصلاح أخطاء عند حساب حجم الأعمدة المركبة في جدول
system.columns. - تم إصلاح خطأ عند إنشاء جدول مؤقت باستخدام
CREATE TEMPORARY TABLE IF NOT EXISTS. - تم إصلاح أخطاء في
StorageKafka(##2075) - تم إصلاح أعطال الخادم الناتجة عن وسيطات غير صالحة لبعض الدوال التجميعية.
- تم إصلاح الخطأ الذي كان يمنع الاستعلام
DETACH DATABASEمن إيقاف المهام الخلفية لجداولReplicatedMergeTree. - أصبحت حالة
Too many partsأقل احتمالًا عند الإدراج في العروض المادية المجمّعة (##2084). - تم تصحيح المعالجة التكرارية لعمليات الاستبدال في التهيئة إذا كان أحدها يتطلب أن يتبعه استبدال آخر على المستوى نفسه.
- تم تصحيح الصياغة في ملف البيانات الوصفية عند إنشاء
VIEWيستخدم استعلامًا معUNION ALL. - يعمل
SummingMergeTreeالآن بشكل صحيح عند جمع هياكل البيانات المتداخلة ذات المفتاح المركب. - تم إصلاح احتمال حدوث حالة تسابق عند اختيار القائد لجداول
ReplicatedMergeTree.
تغييرات البناء:
- يدعم البناء
ninjaبدلًا منmake، ويستخدمninjaافتراضيًا عند إنشاء الإصدارات. - أُعيدت تسمية الحزم على النحو التالي:
clickhouse-server-baseإلىclickhouse-common-static؛ وclickhouse-server-commonإلىclickhouse-server؛ وclickhouse-common-dbgإلىclickhouse-common-static-dbg. للتثبيت، استخدمclickhouse-server clickhouse-client. ستظل الحزم ذات الأسماء القديمة متوفرة في المستودعات للحفاظ على التوافق مع الإصدارات السابقة.
التغييرات غير المتوافقة مع الإصدارات السابقة:
- أُزيل التفسير الخاص لتعبير
INعند تحديد مصفوفة في الطرف الأيسر. سابقًا، كان التعبيرarr IN (set)يُفسَّر على أنه "يوجد عنصر واحد على الأقل منarrينتمي إلىset". للحصول على السلوك نفسه في الإصدار الجديد، اكتبarrayExists(x -> x IN (set), arr). - عُطِّل الاستخدام غير الصحيح لخيار المقبس
SO_REUSEPORT، الذي كان مُفعّلًا افتراضيًا بشكل غير صحيح في مكتبة Poco. لاحظ أنه في Linux لم يعد هناك أي داعٍ لتحديد العنوانين::و0.0.0.0معًا للاستماع — استخدم::فقط، لأنه يتيح الاستماع إلى الاتصالات عبر كلٍّ من IPv4 وIPv6 (باستخدام إعدادات نواة النظام الافتراضية). ويمكنك أيضًا الرجوع إلى سلوك الإصدارات السابقة بتحديد<listen_reuse_port>1</listen_reuse_port>في config.
إصدار ClickHouse 1.1.54370، 2018-03-16
الميزات الجديدة:
- تمت إضافة جدول
system.macrosوالتحديث التلقائي للماكروهات عند تغيير ملف الإعدادات. - تمت إضافة الاستعلام
SYSTEM RELOAD CONFIG. - تمت إضافة الدالة التجميعية
maxIntersections(left_col, right_col)، التي تُرجع الحد الأقصى لعدد الفترات المتداخلة[left; right]في الوقت نفسه. وتُرجع الدالةmaxIntersectionsPosition(left, right)بداية الفترة التي تحقق هذا الحد الأقصى. (Michael Furmur).
تحسينات:
- عند إدراج البيانات في جدول
Replicated، يُرسَل عدد أقل من الطلبات إلىZooKeeper(كما اختفت معظم الأخطاء على مستوى المستخدم من سجلZooKeeper). - أُضيفت إمكانية إنشاء أسماء مستعارة لمجموعات البيانات. مثال:
WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.
إصلاحات الأخطاء:
- تم إصلاح الخطأ
Illegal PREWHEREعند القراءة من جداول Merge الخاصة بجداولDistributed. - أُضيفت إصلاحات تتيح لك تشغيل clickhouse-server في حاويات Docker التي تعمل بـ IPv4 فقط.
- تم إصلاح حالة تسابق عند القراءة من جدول النظام
system.parts_columns. - أُزيل التخزين المؤقت المزدوج أثناء عملية insert متزامنة إلى جدول
Distributed، وهو ما كان قد يتسبب في انتهاء مهلة الاتصال. - تم إصلاح خلل كان يتسبب في فترات انتظار طويلة جدًا لنسخة replica غير متاحة قبل بدء استعلام
SELECT. - تم إصلاح التواريخ غير الصحيحة في جدول
system.parts. - تم إصلاح خلل كان يجعل من المستحيل insert البيانات في جدول
Replicatedإذا كانت قيمةchrootغير فارغة في إعدادات عنقودZooKeeper. - تم إصلاح خوارزمية الدمج العمودي لجدول ذي
ORDER BYفارغ. - تمت استعادة إمكانية استخدام القواميس في الاستعلامات على الجداول البعيدة، حتى إذا لم تكن هذه القواميس موجودة على الخادم الطالب. فُقدت هذه الوظيفة في الإصدار 1.1.54362.
- تمت استعادة السلوك الخاص بالاستعلامات مثل
SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table)عندما كان ينبغي أن يستخدم الطرف الأيمن منINالجدول البعيدdefault.tableبدلًا من الجدول المحلي. كان هذا السلوك معطّلًا في الإصدار 1.1.54358. - أُزيل تسجيل السجلات الزائد على مستوى الخطأ للرسالة
Not found column ... in block.
إصدار ClickHouse 1.1.54362، 2018-03-11
الميزات الجديدة:
- أصبح التجميع بدون
GROUP BYلمجموعة فارغة (مثلSELECT count(*) FROM table WHERE 0) يعيد الآن نتيجةً تحتوي على صف واحد بقيم null لدوال التجميع، امتثالًا لمعيار SQL. لاستعادة السلوك السابق (إرجاع نتيجة فارغة)، اضبطempty_result_for_aggregation_by_empty_setعلى 1. - أُضيف تحويل للأنواع في
UNION ALL. كما أصبح مسموحًا باستخدام أسماء alias مختلفة في مواضعSELECTداخلUNION ALL، امتثالًا لمعيار SQL. - أصبح دعم التعبيرات العشوائية متاحًا في عبارات
LIMIT BY. سابقًا، كان يمكن استخدام الأعمدة الناتجة عنSELECTفقط. - يُستخدم فهرس جداول
MergeTreeعند تطبيقINعلى tuple من التعبيرات المأخوذة من أعمدة المفتاح الأساسي. مثال:WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...)(Anastasiya Tsarkova). - أُضيفت الأداة
clickhouse-copierللنسخ بين المجموعات وإعادة توزيع البيانات (beta). - أُضيفت دوال consistent hash التالية:
yandexConsistentHash,jumpConsistentHash,sumburConsistentHash. ويمكن استخدامها كمفتاح sharding لتقليل حجم Network traffic أثناء عمليات إعادة التوزيع اللاحقة. - أُضيفت الدوال:
arrayAny,arrayAll,hasAny,hasAll,arrayIntersect,arrayResize. - أُضيفت الدالة
arrayCumSum(Javi Santana). - أُضيفت الدوال
parseDateTimeBestEffort,parseDateTimeBestEffortOrZero، وparseDateTimeBestEffortOrNullلقراءة قيمة DateTime من سلسلة نصية تحتوي على نص بتنسيقات محتملة ومتنوعة جدًا. - يمكن إعادة تحميل البيانات جزئيًا من external dictionaries أثناء التحديث (أي تحميل السجلات التي تكون فيها قيمة الحقل المحدد أكبر من قيمتها في التنزيل السابق فقط) (Arsen Hakobyan).
- أُضيفت table function
cluster. مثال:cluster(cluster_name, db, table). ويمكن لـ table function remoteقبول اسم cluster كوسيط أول إذا كان محددًا كـ Identifier. - يمكن استخدام table functions
remoteوclusterفي استعلاماتINSERT. - أُضيفت الأعمدة الافتراضية
create_table_queryوengine_fullإلى table system.tables. والعمودmetadata_modification_timeافتراضي. - أُضيف العمودان
data_pathوmetadata_pathإلى جدوليsystem.tablesوsystem.databases، وأُضيف العمودpathإلى جدوليsystem.partsوsystem.parts_columns. - أُضيفت معلومات إضافية عن عمليات merge في table
system.part_log. - يمكن استخدام مفتاح partitioning عشوائي لجدول
system.query_log(Kirill Shvakov). - أصبح الاستعلام
SHOW TABLESيعرض الآن أيضًا temporary tables. كما أُضيفت temporary tables والعمودis_temporaryإلىsystem.tables(zhang2014). - أُضيف استعلاما
DROP TEMPORARY TABLEوEXISTS TEMPORARY TABLE(zhang2014). - تمت إضافة دعم
SHOW CREATE TABLEللجداول المؤقتة (zhang2014). - أُضيف parameter الإعداد
system_profileللإعدادات التي تستخدمها العمليات الداخلية. - تمت إضافة دعم تحميل
object_idبوصفه attribute في Dictionaries MongoDB(Pavel Litvinenko). - تتم قراءة
nullعلى أنه default value عند تحميل البيانات لـ external Dictionary من مصدرMongoDB(Pavel Litvinenko). - أصبحت قراءة قيم
DateTimeبتنسيقValuesمن Unix timestamp ممكنة من دون single quotes. - أصبح failover مدعومًا في table functions
remoteفي الحالات التي تفتقد فيها بعض النسخ المتماثلة إلى الجدول المطلوب. - يمكن تجاوز إعدادات configuration من سطر الأوامر عند تشغيل
clickhouse-server. مثال:clickhouse-server -- --logger.level=information. - تم تنفيذ الدالة
emptyلوسيط من النوعFixedString: تُرجع الدالة القيمة 1 إذا كانت السلسلة تتكوّن بالكامل من بايتات صفرية (zhang2014). - تمت إضافة المعلَمة
listen_tryconfiguration للاستماع إلى عنوان استماع واحد على الأقل دون إنهاء التشغيل، إذا تعذّر الاستماع إلى بعض العناوين (وهذا مفيد للأنظمة التي يكون فيها دعم IPv4 أو IPv6 معطّلًا). - تمت إضافة محرك الجدول
VersionedCollapsingMergeTree. - دعم الصفوف وأي أنواع رقمية لمصدر القاموس
library. - يمكن استخدام جداول
MergeTreeبدون مفتاح أساسي (يلزم تحديدORDER BY tuple()). - يمكن إجراء
CASTمن نوعNullableإلى نوع غيرNullableإذا لم تكن الوسيطةNULL. - يمكن تنفيذ
RENAME TABLEعلىVIEW. - تمت إضافة الدالة
throwIf. - تمت إضافة الخيار
odbc_default_field_size، الذي يتيح توسيع الحجم الأقصى للقيمة المحمّلة من مصدر ODBC (ويبلغ افتراضيًا 1024). - يحتوي الآن الجدول
system.processesوالأمرSHOW PROCESSLISTعلى العمودينis_cancelledوpeak_memory_usage.
التحسينات:
- لم تعد الحدود والحصص المفروضة على النتيجة تُطبَّق على البيانات الوسيطة في استعلامات
INSERT SELECTأو في الاستعلامات الفرعيةSELECT. - تقليل حالات التفعيل الخاطئ لـ
force_restore_dataعند التحقق من حالة جداولReplicatedعند بدء تشغيل الخادم. - تمت إضافة الخيار
allow_distributed_ddl. - لا يُسمح بالدوال غير الحتمية في التعبيرات الخاصة بمفاتيح جداول
MergeTree. - تُحمَّل الملفات التي تحتوي على استبدالات من أدلة
config.dبترتيب أبجدي. - تحسين أداء الدالة
arrayElementفي حالة وجود مصفوفة متعددة الأبعاد ثابتة تحتوي على مصفوفة فارغة كأحد العناصر. مثال:[[1], []][x]. - أصبح الخادم يبدأ بشكل أسرع عند استخدام ملفات تكوين تحتوي على استبدالات كبيرة جدًا (على سبيل المثال، قوائم كبيرة جدًا لشبكات IP).
- عند تشغيل استعلام، تُنفَّذ الدوال ذات القيم الجدولية مرة واحدة. في السابق، كانت الدالتان الجدوليتان
remoteوmysqlتنفذان الاستعلام نفسه مرتين لاسترداد بنية الجدول من خادم بعيد. - يُستخدم مولِّد التوثيق
MkDocs. - عند محاولة حذف عمود في جدول تعتمد عليه تعبيرات
DEFAULT/MATERIALIZEDالخاصة بأعمدة أخرى، يُطرَح استثناء (zhang2014). - تمت إضافة إمكانية تفسير السطر الفارغ في التنسيقات النصية على أنه الرقم 0 لأنواع بيانات
Float. كانت هذه الميزة متاحة سابقًا، لكنها فُقدت في الإصدار 1.1.54342. - يمكن استخدام قيم
Enumفي الدوالminوmaxوsumوبعض الدوال الأخرى. في هذه الحالات، تُستخدم القيم الرقمية المقابلة. كانت هذه الميزة متاحة سابقًا، لكنها فُقدت في الإصدار 1.1.54337. - تمت إضافة
max_expanded_ast_elementsلتقييد حجم AST بعد توسيع الأسماء المستعارة بشكل متكرر.
إصلاحات الأخطاء:
- أُصلحت الحالات التي أُزيلت فيها الأعمدة غير الضرورية من الاستعلامات الفرعية عن طريق الخطأ، أو لم تُزل من الاستعلامات الفرعية التي تحتوي على
UNION ALL. - أُصلح خلل في عمليات الدمج لجداول
ReplacingMergeTree. - أُصلحت عمليات الإدراج المتزامنة في جداول
Distributed(insert_distributed_sync = 1). - أُصلح خطأ segfault في بعض استخدامات
FULLوRIGHT JOINمع أعمدة مكررة في الاستعلامات الفرعية. - أُصلح خطأ segfault في بعض استخدامات
replace_running_queryوKILL QUERY. - أُصلح ترتيب العمودين
sourceوlast_exceptionفي جدولsystem.dictionaries. - أُصلح خلل كان يحدث عندما لا يحذف استعلام
DROP DATABASEالملف الذي يحتوي على البيانات الوصفية. - أُصلح استعلام
DROP DATABASEلقواعد بياناتDictionary. - أُصلحت مشكلة انخفاض الدقة في الدالتين
uniqHLL12وuniqCombinedعند الكاردينالية التي تتجاوز 100 مليون عنصر (Alex Bocharov). - أُصلح احتساب القيم الافتراضية الضمنية عند الحاجة إلى احتساب التعبيرات الصريحة الافتراضية في الوقت نفسه ضمن استعلامات
INSERT(zhang2014). - أُصلحت حالة نادرة كان يتعذر فيها اكتمال استعلام على جدول
MergeTree(chenxing-xc). - أُصلح انهيار كان يحدث عند تشغيل استعلام
CHECKعلى جداولDistributedإذا كانت جميع الشظايا محلية (chenxing.xc). - أُصلح تراجع طفيف في الأداء في الدوال التي تستخدم التعبيرات النمطية.
- أُصلح تراجع في الأداء عند إنشاء مصفوفات متعددة الأبعاد من تعبيرات معقدة.
- أُصلح خلل كان قد يؤدي إلى ظهور قسم
FORMATإضافي في ملف.sqlيحتوي على بيانات وصفية. - أُصلح خلل كان يتسبب في تطبيق الحد
max_table_size_to_dropعند محاولة حذفMATERIALIZED VIEWتشير إلى جدول محدد صراحةً. - أُصلح عدم التوافق مع العملاء القدامى (إذ كانت تُرسل إليهم أحيانًا بيانات من النوع
DateTime('timezone')، وهو ما لا يفهمونه). - أُصلح خلل عند قراءة عناصر العمود
Nestedفي البُنى التي أُضيفت باستخدامALTERلكنها فارغة في الأقسام القديمة، عندما كانت الشروط الخاصة بهذه الأعمدة قد نُقلت إلىPREWHERE. - أُصلح خلل عند تصفية الجداول باستخدام الأعمدة الافتراضية
_tableفي الاستعلامات على جداولMerge. - أُصلح خلل عند استخدام أعمدة
ALIASفي جداولDistributed. - أُصلح خلل كان يجعل الترجمة البرمجية الديناميكية مستحيلة للاستعلامات التي تحتوي على دوال تجميع من عائلة
quantile. - أُصلح حالة تسابق في مسار تنفيذ الاستعلام كان يحدث في حالات نادرة جدًا عند استخدام جداول
Mergeمع عدد كبير من الجداول، وعند استخدام استعلامات فرعية من نوعGLOBAL. - أُصلح انهيار عند تمرير مصفوفات بأحجام مختلفة إلى الدالة
arrayReduceعند استخدام دوال تجميع متعددة الوسائط. - مُنع استخدام الاستعلامات التي تحتوي على
UNION ALLفيMATERIALIZED VIEW. - أُصلح خطأ أثناء تهيئة جدول النظام
part_logعند بدء تشغيل الخادم (يكونpart_logمعطّلًا افتراضيًا).
التغييرات غير المتوافقة مع الإصدارات السابقة:
- أُزيل الخيار
distributed_ddl_allow_replicated_alter. هذا السلوك مفعَّل افتراضيًا. - أُزيل الإعداد
strict_insert_defaults. إذا كنت تستخدم هذه الميزة، فراسلfeedback@clickhouse.com. - أُزيل المحرك
UnsortedMergeTree.
إصدار ClickHouse 1.1.54343، 2018-02-05
- تمت إضافة دعم ماكرو لتعريف أسماء المجموعات في استعلامات DDL الموزعة ومُنشئات جداول Distributed:
CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table'). - تُعالَج الآن الاستعلامات مثل
SELECT ... FROM table WHERE expr IN (subquery)باستخدام فهرسtable. - تم تحسين معالجة التكرارات عند الإدراج في جداول Replicated، بحيث لم تعد تُبطئ تنفيذ قائمة انتظار النسخ المتماثل.
إصدار ClickHouse 1.1.54342، 2018-01-22
يتضمن هذا الإصدار إصلاحات لأخطاء الإصدار السابق 1.1.54337:
- أُصلِح خلل تراجعي في 1.1.54337: إذا كان المستخدم
defaultيملك صلاحية قراءة فقط، فإن الخادم يرفض بدء التشغيل مع الرسالةCannot create database in readonly mode. - أُصلِح خلل تراجعي في 1.1.54337: على الأنظمة التي تستخدم systemd، تُكتب السجلات دائمًا إلى syslog بغضّ النظر عن التهيئة؛ ولا يزال سكربت watchdog يستخدم init.d.
- أُصلِح خلل تراجعي في 1.1.54337: كانت التهيئة الافتراضية في صورة Docker غير صحيحة.
- أُصلِح سلوك غير حتمي في GraphiteMergeTree (يمكنك ملاحظته في رسائل السجل
Data after merge is not byte-identical to the data on another replicas). - أُصلِح خطأ قد يؤدي إلى عمليات دمج غير متسقة بعد تنفيذ استعلام OPTIMIZE على جداول Replicated (قد تراه في رسائل السجل
Part ... intersects the previous part). - تعمل جداول Buffer الآن بشكل صحيح عند وجود أعمدة MATERIALIZED في الجدول الوجهة (بواسطة zhang2014).
- أُصلِح خطأ في تنفيذ NULL.
إصدار ClickHouse 1.1.54337، 2018-01-18
الميزات الجديدة:
- أُضيف دعم لتخزين المصفوفات متعددة الأبعاد وtuple (
Tupleنوع البيانات) في الجداول. - أُضيف دعم دوال الجدول لاستعلامات
DESCRIBEوINSERT. كما أُضيف دعم الاستعلامات الفرعية فيDESCRIBE. أمثلة:DESC TABLE remote('host', default.hits);DESC TABLE (SELECT 1);INSERT INTO TABLE FUNCTION remote('host', default.hits). وأُضيف أيضًا دعمINSERT INTO TABLEبالإضافة إلىINSERT INTO. - جرى تحسين دعم المناطق الزمنية. يمكن إرفاق نوع البيانات
DateTimeبالمنطقة الزمنية المستخدمة في التحليل والتنسيق ضمن التنسيقات النصية. مثال:DateTime('Asia/Istanbul'). وعند تحديد المناطق الزمنية في الدوال الخاصة بوسائطDateTime، سيتتبع نوع الإرجاع المنطقة الزمنية، وستُعرض القيمة كما هو متوقع. - أُضيفت الدوال
toTimeZoneوtimeDiffوtoQuarterوtoRelativeQuarterNum. ويمكن لدوالtoRelativeHour/Minute/Secondأخذ قيمة من النوعDateكوسيط. واسم الدالةnowحساس لحالة الأحرف. - أُضيفت الدالة
toStartOfFifteenMinutes(Kirill Shvakov). - أُضيفت أداة
clickhouse formatلتنسيق الاستعلامات. - أُضيفت معلمة الإعداد
format_schema_path(Marek Vavruša). وتُستخدم لتحديد مخطط بصيغةCap'n Proto. ولا يمكن أن توجد ملفات المخطط إلا في الدليل المحدد. - أُضيف دعم لاستبدالات
config(inclوconf.d) في إعداد external dictionaries والنماذج (Pavel Yakunin). - أُضيف عمود يحتوي على توثيق للجدول
system.settings(Kirill Shvakov). - أُضيف الجدول
system.parts_columnsمع معلومات عن أحجام الأعمدة في كل جزء بيانات من جداولMergeTree. - أُضيف الجدول
system.modelsمع معلومات عن نماذج التعلّم الآليCatBoostالمحمّلة. - أُضيفت دالتا الجدول
mysqlوodbc، وكذلك محركا الجدول المقابلانMySQLوODBC، للوصول إلى قواعد البيانات البعيدة. وهذه الوظيفة ما تزال في المرحلة التجريبية beta. - أُضيفت إمكانية تمرير وسيط من النوع
AggregateFunctionإلى الدالة التجميعيةgroupArray(بحيث يمكنك إنشاء مصفوفة من حالات بعض الدوال التجميعية). - أُزيلت القيود المفروضة على تركيبات متعددة من combinators الدوال التجميعية. على سبيل المثال، يمكنك استخدام الدالتين التجميعيتين
avgForEachIfوavgIfForEach، ولكل منهما سلوك مختلف. - جرى توسيع combinator الدالة التجميعية
-ForEachليشمل حالة الدوال التجميعية متعددة الوسائط. - أُضيف دعم للدوال التجميعية ذات الوسائط من نوع
Nullableحتى في الحالات التي تُرجع فيها الدالة نتيجة غيرNullable(أُضيف بمساهمة من Silviu Caragea). مثال:groupArrayوgroupUniqArrayوtopK. - أُضيف الإعداد
max_client_network_bandwidthإلىclickhouse-client(Kirill Shvakov). - يُسمح للمستخدمين الذين لديهم الإعداد
readonly = 2بالعمل مع الجداول TEMPORARY (CREATE وDROP وINSERT…) (Kirill Shvakov). - أُضيف دعم لاستخدام عدة consumers مع محرك
Kafka. كما وُسِّعت خيارات إعدادKafka(Marek Vavruša). - أُضيفت الدالتان
intExp3وintExp4. - أُضيفت الدالة التجميعية
sumKahan. - أُضيفت دوال to * Number* OrNull، حيث إن * Number* نوع رقمي.
- أُضيف دعم لعبارات
WITHفي استعلامINSERT SELECT(المؤلف: zhang2014). - أُضيفت الإعدادات:
http_connection_timeoutوhttp_send_timeoutوhttp_receive_timeout. وتُستخدم هذه الإعدادات خصوصًا لتنزيل أجزاء بيانات لأغراض replication. ويتيح تغيير هذه الإعدادات تنفيذ failover بسرعة أكبر إذا كانت الشبكة مثقلة. - أُضيف دعم
ALTERللجداول من النوعNull(Anastasiya Tsarkova). - جرى توسيع الدالة
reinterpretAsStringلتشمل جميع data types المخزنة بشكل متجاور في الذاكرة. - أُضيف الخيار
--silentإلى أداةclickhouse-local. وهو يمنع طباعة معلومات تنفيذ الاستعلام إلى stderr. - أُضيف دعم لقراءة القيم من النوع
Dateمن النص بصيغة يُحدَّد فيها الشهر و/أو يوم الشهر باستخدام رقم واحد بدلًا من رقمين (Amos Bird).
تحسينات الأداء:
- تحسين أداء الدوال التجميعية
minوmaxوanyوanyLastوanyHeavyوargMinوargMaxعند استخدام وسائطString. - تحسين أداء الدوال
isInfiniteوisFiniteوisNaNوroundToExp2. - تحسين أداء تحليل قيم النوعين
DateوDateTimeوتنسيقها بتنسيق نصي. - تحسين أداء ودقة تحليل الأعداد العائمة.
- تقليل استخدام الذاكرة في
JOINعندما يحتوي الطرفان الأيسر والأيمن على أعمدة بأسماء متطابقة غير موجودة فيUSING. - تحسين أداء الدوال التجميعية
varSampوvarPopوstddevSampوstddevPopوcovarSampوcovarPopوcorrعلى حساب الاستقرار الحسابي. لا تزال الدوال القديمة متاحة بالأسماءvarSampStableوvarPopStableوstddevSampStableوstddevPopStableوcovarSampStableوcovarPopStableوcorrStable.
إصلاحات الأخطاء:
- تم إصلاح إزالة تكرار البيانات بعد تنفيذ استعلام
DROPأوDETACH PARTITION. في الإصدار السابق، لم يكن حذف partition ثم إدراج البيانات نفسها مرة أخرى يعمل، لأن الكتل المُدرجة كانت تُعتبر مكررة. - تم إصلاح خطأ كان قد يؤدي إلى تفسير غير صحيح لعبارة
WHEREفي استعلاماتCREATE MATERIALIZED VIEWمعPOPULATE. - تم إصلاح خطأ في استخدام المعلمة
root_pathفي إعدادzookeeper_servers. - تم إصلاح النتائج غير المتوقعة عند تمرير الوسيط
DateإلىtoStartOfDay. - تم إصلاح الدالتين
addMonthsوsubtractMonthsوالحساب الخاص بـINTERVAL n MONTHفي الحالات التي تكون فيها النتيجة في السنة السابقة. - أُضيف الدعم المفقود لنوع البيانات
UUIDفيDISTINCTوJOINودوال التجميعuniqوالقواميس الخارجية (Evgeniy Ivanov). ولا يزال دعمUUIDغير مكتمل. - تم إصلاح سلوك
SummingMergeTreeفي الحالات التي يكون فيها مجموع الصفوف صفراً. - إصلاحات متنوعة لمحرك
Kafka(Marek Vavruša). - تم إصلاح السلوك غير الصحيح لمحرك الجدول
Join(Amos Bird). - تم إصلاح السلوك غير الصحيح لـ allocator على FreeBSD وOS X.
- أصبحت الدالة
extractAllتدعم الآن المطابقات الفارغة. - تم إصلاح خطأ كان يمنع استخدام
libresslبدلاً منopenssl. - تم إصلاح استعلام
CREATE TABLE AS SELECTعند استخدامه مع الجداول المؤقتة. - تم إصلاح غياب atomicity عند تحديث قائمة انتظار النسخ المتماثل. وكان هذا قد يؤدي إلى خروج replicas عن التزامن إلى أن يُعاد تشغيل الخادم.
- تم إصلاح overflow محتمل في
gcdوlcmوmodulo(المعامل%) (Maks Skorokhod). - أصبحت ملفات
-preprocessedتُنشأ الآن بعد تغييرumask(يمكن تغييرumaskفي config). - تم إصلاح خطأ في الفحص الخلفي للأجزاء (
MergeTreePartChecker) عند استخدام partition key مخصص. - تم إصلاح تحليل tuples (قيم نوع البيانات
Tuple) في text formats. - تم تحسين رسائل الخطأ المتعلقة بالأنواع غير المتوافقة التي يتم تمريرها إلى
multiIfوarrayوبعض الدوال الأخرى. - أُعيد تصميم دعم الأنواع
Nullable. وتم إصلاح أخطاء قد تؤدي إلى تعطل الخادم. كما تم إصلاح معظم الأخطاء الأخرى المتعلقة بدعمNULL، مثل: تحويلات الأنواع غير الصحيحة في INSERT SELECT، والدعم غير الكافي لـ Nullable في HAVING وPREWHERE، ووضعjoin_use_nulls، وأنواع Nullable كوسائط للمعاملOR، وغير ذلك. - تم إصلاح أخطاء متنوعة مرتبطة بالدلالات الداخلية لأنواع البيانات. ومن الأمثلة على ذلك: الجمع غير الضروري لحقول النوع
EnumفيSummingMergeTree؛ ومحاذاة أنواعEnumفي تنسيقاتPretty، وغير ذلك. - تم تشديد التحقق من التركيبات المسموح بها للأعمدة المركبة.
- تم إصلاح overflow عند تحديد معلمة كبيرة جداً لنوع البيانات
FixedString. - تم إصلاح خطأ في دالة التجميع
topKفي الحالة العامة. - أُضيف التحقق المفقود من تساوي أحجام المصفوفات في وسائط المتغيرات n-ary لدوال التجميع ذات combinator
-Array. - تم إصلاح خطأ في
--pagerلـclickhouse-client(المؤلف: ks1322). - تم إصلاح precision للدالة
exp10. - تم إصلاح سلوك الدالة
visitParamExtractبما يحقق توافقاً أفضل مع الوثائق. - تم إصلاح التعطل عند تحديد أنواع بيانات غير صحيحة.
- تم إصلاح سلوك
DISTINCTفي الحالة التي تكون فيها جميع الأعمدة ثوابت. - تم إصلاح formatting للاستعلام في حالة استخدام الدالة
tupleElementمع expression ثابتة معقدة كفهرس لعنصر الـ tuple. - تم إصلاح خطأ في جداول
Dictionaryالخاصة بقواميسrange_hashed. - تم إصلاح خطأ يؤدي إلى زيادة مفرطة في rows ضمن نتيجة
FULLوRIGHT JOIN(Amos Bird). - تم إصلاح تعطل الخادم عند إنشاء وإزالة temporary files في أدلة
config.dأثناء إعادة تحميل config. - تم إصلاح استعلام
SYSTEM DROP DNS CACHE: تم تفريغ cache لكن عناوين عُقد cluster لم يتم تحديثها. - تم إصلاح سلوك
MATERIALIZED VIEWبعد تنفيذDETACH TABLEللجدول الواقع تحت view (Marek Vavruša).
تحسينات البناء:
- تُستخدم أداة
pbuilderفي عمليات البناء. وأصبحت عملية البناء مستقلة تقريبًا بالكامل عن بيئة مضيف البناء. - تُستخدم عملية بناء واحدة لإصدارات مختلفة من أنظمة التشغيل. وأصبحت الحزم والملفات الثنائية التنفيذية متوافقة مع نطاق واسع من أنظمة Linux.
- أُضيفت حزمة
clickhouse-test. ويمكن استخدامها لتشغيل الاختبارات الوظيفية. - أصبح من الممكن الآن نشر الأرشيف المصدري
tarballإلى المستودع. ويمكن استخدامه لإعادة إنتاج عملية البناء دون استخدام GitHub. - أُضيف تكامل محدود مع Travis CI. ونظرًا إلى القيود المفروضة على وقت البناء في Travis، لا يُختبَر إلا بناء التصحيح، ولا تُشغَّل إلا مجموعة فرعية محدودة من الاختبارات.
- أُضيف دعم
Cap'n'Protoفي البناء الافتراضي. - جرى تغيير تنسيق مصادر التوثيق من
Restricted TextإلىMarkdown. - أُضيف دعم
systemd(Vladimir Smirnov). وهو معطَّل افتراضيًا بسبب عدم التوافق مع بعض صور أنظمة التشغيل، ويمكن تفعيله يدويًا. - لأغراض التوليد الديناميكي للشيفرة، دُمج
clangوlldداخل الملف التنفيذي الثنائيclickhouse. ويمكن أيضًا استدعاؤهما على هيئةclickhouse clangوclickhouse lld. - أُزيل استخدام امتدادات GNU من الشيفرة. وفُعِّل الخيار
-Wextra. وعند البناء باستخدامclangيكون الافتراضي هوlibc++بدلًا منlibstdc++. - استُخرجت مكتبـتا
clickhouse_parsersوclickhouse_common_ioلتسريع عمليات بناء أدوات متعددة.
التغييرات غير المتوافقة مع الإصدارات السابقة:
- تغيّر تنسيق العلامات في الجداول من النوع
Logالتي تحتوي على أعمدةNullableبشكل غير متوافق مع الإصدارات السابقة. إذا كانت لديك مثل هذه الجداول، فيجب تحويلها إلى النوعTinyLogقبل تشغيل إصدار الخادم الجديد. للقيام بذلك، استبدلENGINE = LogبـENGINE = TinyLogفي ملف.sqlالمقابل داخل دليلmetadata. وإذا كان جدولك لا يحتوي على أعمدةNullableأو لم يكن من النوعLog، فلا يلزمك اتخاذ أي إجراء. - تمت إزالة الإعداد
experimental_allow_extended_storage_definition_syntax. وهذه الميزة مفعّلة الآن افتراضيًا. - أُعيدت تسمية الدالة
runningIncomeإلىrunningDifferenceStartingWithFirstvalueلتجنّب الالتباس. - أُزيلت الصياغة
FROM ARRAY JOIN arrعندما يُستخدم ARRAY JOIN مباشرةً بعد FROM من دون جدول (Amos Bird). - أُزيل التنسيق
BlockTabSeparatedالذي كان يُستخدم لأغراض العرض التوضيحي فقط. - تغيّر تنسيق الحالة للدوال التجميعية
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. إذا كانت لديك حالات مخزّنة لهذه الدوال التجميعية في جداول (باستخدام نوع البياناتAggregateFunctionأو العروض المادية ذات الحالات المقابلة)، فيُرجى مراسلتنا على feedback@clickhouse.com. - في إصدارات الخادم السابقة، كانت هناك ميزة غير موثقة: إذا كانت الدالة التجميعية تعتمد على معلمات، فكان لا يزال بإمكانك تحديدها بدون معلمات في نوع البيانات
AggregateFunction. مثال:AggregateFunction(quantiles, UInt64)بدلًا منAggregateFunction(quantiles(0.5, 0.9), UInt64). لقد فُقدت هذه الميزة. ومع أنها كانت غير موثقة، فإننا نخطط لدعمها مجددًا في الإصدارات المستقبلية. - لا يمكن استخدام أنواع البيانات
Enumفي دوالmin/maxالتجميعية. وستعود هذه الإمكانية في الإصدار التالي.
يُرجى الانتباه عند الترقية:
- عند إجراء تحديث متدرّج لعنقود، ففي المرحلة التي تعمل فيها بعض النسخ المتماثلة بإصدار ClickHouse القديم بينما تعمل نسخ أخرى بالإصدار الجديد، تتوقف عملية النسخ المتماثل مؤقتًا وتظهر الرسالة
unknown parameter 'shard'في السجل. وتُستأنف عملية النسخ المتماثل بعد تحديث جميع النسخ المتماثلة في العنقود. - إذا كانت خوادم العنقود تشغّل إصدارات مختلفة من ClickHouse، فقد تُرجع الاستعلامات الموزعة التي تستخدم الدوال التالية نتائج غير صحيحة:
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. ينبغي تحديث جميع عُقد العنقود.