Skip to main content
هذه الإعدادات متاحة في system.settings، وهي مُولَّدة تلقائيًا من ملف المصدر.

external_table_functions_use_nulls

يحدّد كيفية استخدام دوال الجداول mysql وpostgresql وodbc للأعمدة من النوع Nullable. القيم الممكنة:
  • 0 — تستخدم دالة الجدول أعمدة Nullable بشكل صريح.
  • 1 — تستخدم دالة الجدول أعمدة Nullable بشكل ضمني.
الاستخدام إذا ضُبط الإعداد على 0، فلن تُنشئ دالة الجدول أعمدة Nullable، وستُدرج القيم الافتراضية بدلًا من NULL. وينطبق ذلك أيضًا على قيم NULL داخل المصفوفات.

external_table_strict_query

إذا تم تعيينه إلى true، فإن أي filter على أعمدة external table (MySQL، PostgreSQL، SQLite، ODBC، JDBC) لا يمكن دفعه (pushed down) إلى قاعدة البيانات الخارجية يُرفض مع إطلاق Exception بدلاً من تطبيقه محلياً بعد fetch البيانات. يشمل الفحص predicate الخاص بـ WHERE في المستوى الأعلى وكل عامل من عوامل AND في المستوى الأعلى. أما PREWHERE على أعمدة external table فلا يخضع لهذا الإعداد: فمحركات الجداول هذه لا تدعم PREWHERE، ويُرفض مثل هذا الـ query بالخطأ ILLEGAL_PREWHERE بغض النظر عن الإعداد. لا يجري الفحص إلا في الحالات التي يمكن فيها دفع filter أصلاً: عندما يكون external table هو الجدول الوحيد في الـ query، أو على أي من طرفي INNER JOIN، أو على الطرف المحفوظ من outer join (الطرف الأيسر في LEFT JOIN، والطرف الأيمن في RIGHT JOIN). أما على الطرف غير المحفوظ من LEFT/RIGHT JOIN وعلى أي من طرفي FULL JOIN فلا يُدفع أي شيء ولا يُفحص أي شيء، ولذلك يُطبَّق filter أعمدة external table محلياً بعد الـ join حتى في الوضع الصارم. وحيث يجري الفحص، فإن أي predicate يشير إلى جداول أخرى مضمومة في الـ query المحيط لا يُدفع ويُستثنى من الفحص، سواء كان يشير إلى الطرف المضموم فقط (مثل WHERE r.flag) أو يخلطه مع external table داخل تعبير واحد ليس AND (مثل WHERE l.id = 1 OR r.flag)؛ ويحتفظ مثل هذا الـ predicate بنقطة تقييمه المعتادة في ClickHouse (WHERE بعد الـ join، وPREWHERE قبله) ولا يُرفض.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦