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

إصدار 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 من type Join. Amos Bird
  • تمت إضافة الدالة joinGet التي تتيح لك استخدام table من type Join مثل Dictionary. Amos Bird
  • تمت إضافة الأعمدة partition_key وsorting_key وprimary_key وsampling_key إلى table system.tables لتوفير معلومات حول مفاتيح الجدول. #3609
  • تمت إضافة الأعمدة is_in_partition_key وis_in_sorting_key وis_in_primary_key وis_in_sampling_key إلى table system.columns. #3609
  • تمت إضافة العمودين min_time وmax_time إلى table system.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 مع structure destination 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

تحسينات البناء:

  • تحسينات على عملية بناء Arcadia لتبسيطها. #3475, #3535

إصدار 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 الآن البحث عن قيمة رقمية ضمن مصفوفة من قيم Enum Maxim Khrisanfov.
  • دعم إضافة فواصل مخصصة للرسائل عند القراءة من Kafka Amos 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 CLUSTER Winter 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. ينبغي تحديث جميع عُقد العنقود.
آخر تعديل في ٢٩ يونيو ٢٠٢٦