analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested
SELECT a.b.c FROM table ARRAY JOIN a، ولا يضمّن SELECT a FROM table العمود a.b.c ضمن نتيجة Nested a.
analyzer_compatibility_allow_non_aggregate_in_having
HAVING إلى WHERE بدلًا من إصدار NOT_AN_AGGREGATE. ويكون الرفض المتوافق مع المعيار هو السلوك الافتراضي؛ وهذا الإعداد وسيلة مساعدة في الترحيل للاستعلامات التي كان المحلّل القديم يقبلها بصمت (enable_analyzer = 0). وتبقى الأجزاء المرتبطة التي تحتوي على دوال aggregate أو grouping أو دوال غير حتمية في HAVING. وإذا احتوى أي جزء مرتبط على دالة window function أو دالة ذات حالة (مثل rowNumberInBlock)، تُعطَّل إعادة الكتابة لكامل HAVING، بما يطابق سلوك PredicateExpressionsOptimizer القديم. كما يتم تجاهل هذا الإعداد عندما يستخدم GROUP BY WITH CUBE أو WITH ROLLUP أو WITH TOTALS أو GROUPING SETS.
analyzer_compatibility_apply_final_to_all_joined_tables
FINAL المحدد على الجدول الموجود أقصى اليسار في JOIN يُطبَّق خطأً أيضًا على جميع الجداول الأخرى المنضمة (للمحركات التي تدعم FINAL، مثل ReplacingMergeTree). افتراضيًا، لا يُطبَّق FINAL إلا على الجدول المكتوب عليه. فعِّل هذا الإعداد للتوافق مع الاستعلامات التي تعتمد على السلوك القديم؛ أما الإصلاح الموصى به فهو كتابة FINAL صراحةً على كل جدول يحتاج إليه.
القيم الممكنة:
- 0 - يُطبَّق
FINALعلى الجدول المحدد عليه فقط. - 1 - يُطبَّق
FINALالموجود على الجدول أقصى اليسار في JOIN على جميع الجداول المنضمة.
analyzer_compatibility_join_using_top_level_identifier
SELECT a + 1 AS b FROM t1 JOIN t2 USING (b) سيُجرى join باستخدام t1.a + 1 = t2.b بدلًا من t1.b = t2.b). وتُؤخذ أيضًا الأسماء المستعارة المعرّفة في التعبيرات الفرعية ضمن قائمة SELECT في الاعتبار (على سبيل المثال، في SELECT uniqExact(a + 1 AS b) FROM t1 JOIN t2 USING (b) يُجرى join باستخدام t1.a + 1 = t2.b). عندما يُعرَّف الاسم المستعار المطابق في تعبير فرعي ضمن قائمة SELECT بدلًا من تعريفه كاسم مستعار على المستوى الأعلى، تُعطَّل النسخ المتماثلة المتوازية لهذا الاستعلام. بالنسبة إلى الاستعلامات المُرسلة إلى الخوادم البعيدة (جداول Distributed، ودالة الجدول remote)، لا يُرفض هذا الاستعلام مع استثناء إلا إذا تعذر حلّ المعرّف على الخادم البعيد تمامًا؛ وإذا كان الاسم المستعار يحجب عمودًا حقيقيًا في الجدول الأيسر، فإن الخادم البعيد يجري join باستخدام ذلك العمود بدلًا منه، لذا قد تختلف النتائج عن التنفيذ المحلي.
analyzer_compatibility_multiple_joins_qualify_column_names
FROM في الاستعلام تحتوي على عمليتي JOIN أو أكثر (تُحتسب الجداول المفصولة بفواصل، بينما لا يُحتسب ARRAY JOIN)، يسمّي المحلّل أعمدة النتائج بالطريقة التي كانت تستخدمها إعادة كتابة عمليات الربط المتعددة في المحلّل القديم:
- تُسمّى الأعمدة الناتجة عن توسيع
*أو<table>.*أوCOLUMNS('<regexp>')بالشكل<alias-or-table>.<column>(يكون المؤهِّل هو الاسم المستعار لتعبير الجدول إن وُجد، وإلا فاسم الجدول من دون اسم قاعدة البيانات، وإلا فاسم تعبير الجدول الشائع؛ أما أعمدة الاستعلام الفرعي المربوط الذي لا يحمل اسماً مستعاراً فتظل غير مؤهَّلة). ويحتفظ نوعان من الأعمدة باسميهما غير المؤهَّلين لأنهما ينتميان إلى عملية الربط لا إلى تعبير جدول واحد: عمود ناتج عنARRAY JOIN، ومفتاح مدمج بواسطةJOIN ... USING. لذلك، لا تُحلّ المراجع الخارجية مثلSELECT ll.arrأوSELECT ll.kفي هاتين الحالتين؛ - صيغة قائمة المعرّفات
COLUMNS(col1, col2)ليست توسيعاً لمطابقة: إذ يحتفظ كل عمود بالاسم تماماً كما كُتب معرّفه، لذا ينتجCOLUMNS(x)الاسمxوينتجCOLUMNS(a.x)الاسمa.x؛ - يحتفظ مرجع عمود بلا اسم مستعار في قائمة
SELECTبالاسم تماماً كما كُتب (مثلاً، ينتجSELECT a.xعموداً باسمa.xحتى عندما يكونxغير ملتبس).
enable_analyzer = 1).
analyzer_compatibility_prefer_alias_over_subcolumn
b.id إما إلى العمود id في جدول ذي الاسم المستعار b أو إلى عمود فرعي من نوع Tuple هو b.id لعمود آخر، فامنح الأفضلية لتفسير بادئة الاسم المستعار (أي العمود id في b). افتراضيًا، يفضّل المُحلِّل العمود الفرعي. فعِّل هذا الخيار لمطابقة آلية التحليل في المُحلِّل القديم.