> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# إعدادات الجلسة allow_*

> إعدادات الجلسة في ClickHouse ضمن المجموعة المُولَّدة باسم allow_*.

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>ميزة Beta</span>
        </a>;
};

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            ميزة تجريبية
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["الإصدار", "القيمة الافتراضية", "التعليق"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        سجل الإصدارات
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>النوع</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>القيمة الافتراضية</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          يمكن تغييره دون إعادة التشغيل
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

هذه الإعدادات متاحة في [system.settings](/ar/reference/system-tables/settings)، وهي مُولَّدة تلقائيًا من [الشيفرة المصدرية](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="allow_aggregate_partitions_independently">
  ## allow\_aggregate\_partitions\_independently
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "تمكين التجميع المستقل لكل partition افتراضيًا عندما يكون مفتاح partition مناسبًا لمفتاح `GROUP BY`. تقوم آليات الاستدلال الحالية في بيئة التشغيل ضمن `ReadFromMergeTree::requestOutputEachPartitionThroughSeparatePortForAggregation` بالفعل بتخطي هذا التحسين عندما يكون تخطيط partition غير ملائم (عدد قليل جدًا من partitions، أو عدد كبير جدًا منها، أو أحجام partitions غير متوازنة بشكل ملحوظ)، لذا فإن تمكين هذا الإعداد آمن في الحالات التي كان سيكون فيها بخلاف ذلك no-op."}]}]} />

تمكين التجميع المستقل لـ partitions على threads منفصلة عندما يكون مفتاح partition مناسبًا لمفتاح `GROUP BY`. يكون ذلك مفيدًا عندما يكون عدد partitions قريبًا من عدد الأنوية وتكون أحجام partitions متقاربة إلى حدٍّ ما. تقوم الآليات الاستدلالية في `ReadFromMergeTree` تلقائيًا بتعطيل هذا التحسين في التخطيطات غير الملائمة (عدد قليل جدًا من partitions، أو عدد كبير جدًا منها، أو أحجام partitions غير متوازنة بشكل ملحوظ)؛ راجع `force_aggregate_partitions_independently` لتجاوز هذه الفحوصات.

<div id="allow_archive_path_syntax">
  ## allow\_archive\_path\_syntax
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "أُضيف إعداد جديد للسماح بتعطيل بنية مسار الأرشيف."}]}, {"id": "row-2","items": [{"label": "24.5"},{"label": "1"},{"label": "أُضيف إعداد جديد للسماح بتعطيل بنية مسار الأرشيف."}]}]} />

ستفسّر محركات File/S3/دالة الجدول المسارات التي تحتوي على '::' على أنها `<archive> :: <file>` إذا كان للأرشيف امتداد صحيح.

<div id="allow_asynchronous_read_from_io_pool_for_merge_tree">
  ## allow\_asynchronous\_read\_from\_io\_pool\_for\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

استخدم مجموعة I/O في الخلفية للقراءة من جداول MergeTree. قد يؤدي هذا الإعداد إلى تحسين الأداء للاستعلامات المقيّدة بعمليات I/O

<div id="allow_calculating_subcolumns_sizes_for_merge_tree_reading">
  ## allow\_calculating\_subcolumns\_sizes\_for\_merge\_tree\_reading
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "السماح بحساب أحجام الأعمدة الفرعية لقراءة MergeTree لتحسين تقسيم مهام القراءة"}]}]} />

عند التمكين، سيحسب ClickHouse أحجام الملفات المطلوبة لقراءة كل عمود فرعي، لتحسين حساب أحجام المهام والكتل.

<div id="allow_changing_replica_until_first_data_packet">
  ## allow\_changing\_replica\_until\_first\_data\_packet
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

إذا كان هذا الإعداد مُمكّنًا، ففي الطلبات المتحوّطة يمكننا بدء connection جديد حتى استلام أول packet بيانات، حتى لو كنّا قد أحرزنا بعض التقدّم بالفعل
(لكن لم يتم تحديث التقدّم خلال مهلة `receive_data_timeout`)؛ وإلا فسنُعطّل تغيير الـ replica بعد أول مرة نُحرز فيها تقدّمًا.

<div id="allow_create_index_without_type">
  ## allow\_create\_index\_without\_type
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح بتنفيذ استعلام CREATE INDEX بدون TYPE. سيتم تجاهل الاستعلام. وُضع هذا لأغراض اختبار التوافق مع SQL.

<div id="allow_custom_error_code_in_throwif">
  ## allow\_custom\_error\_code\_in\_throwif
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يتيح استخدام رمز خطأ مخصص في الدالة throwIf(). إذا كانت القيمة true، فقد تحمل الاستثناءات المُطلَقة رموز خطأ غير متوقعة.

<div id="allow_ddl">
  ## allow\_ddl
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

إذا ضُبطت القيمة على true، فسيُسمح للمستخدم بتنفيذ استعلامات DDL.

<div id="allow_delta_kernel_rs">
  ## allow\_delta\_kernel\_rs
</div>

<BetaBadge />

**الأسماء المستعارة**: `allow_experimental_delta_kernel_rs`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "الاسم الجديد لـ `allow_experimental_delta_kernel_rs`، الذي لم يعد تجريبيًا ويُحتفَظ به كاسم مستعار. لم تتغير القيمة الافتراضية."}]}, {"id": "row-2","items": [{"label": "25.5"},{"label": "1"},{"label": "إعداد جديد. قُدِّم في البداية باسم `allow_experimental_delta_kernel_rs`، وهو الآن اسم مستعار له؛ ويُدرج هذا الصف تحت الاسم المعياري للحفاظ على السجل الكامل."}]}]} />

يسمح باستخدام تنفيذ `delta-kernel-rs` لقراءة جداول Delta Lake.

<div id="allow_distinct_partitions_independently">
  ## allow\_distinct\_partitions\_independently
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "إعداد جديد يتيح تقييم `DISTINCT` بشكل مستقل لكل partition عندما يكون تعبير partition دالة حتمية لأعمدة `DISTINCT`."}]}]} />

فعّل التقييم المستقل لـ `DISTINCT` لكل partition على خيوط تنفيذ منفصلة عندما يكون تعبير partition دالة حتمية لأعمدة `DISTINCT`، مع تجاوز الدمج بين التدفقات. يفيد ذلك عندما يكون عدد partitionات قريبًا من عدد الأنوية وتكون partitionات متقاربة الحجم؛ وإلا، تتجاوزه آلية استدلالية للتكلفة. راجع [max\_number\_of\_partitions\_for\_independent\_distinct](/ar/reference/settings/session-settings/max-number#max_number_of_partitions_for_independent_distinct) و[force\_distinct\_partitions\_independently](/ar/reference/settings/session-settings/force#force_distinct_partitions_independently). لا يُطبَّق مع `FINAL` أو النسخ المتماثلة المتوازية.

لا يُطبَّق عند تعيين [max\_rows\_in\_distinct](/ar/reference/settings/session-settings/max-rows#max_rows_in_distinct) أو [max\_bytes\_in\_distinct](/ar/reference/settings/session-settings/max-bytes#max_bytes_in_distinct): إذ تُفرض هذه الحدود بواسطة تحويل `DISTINCT` الواحد الذي يعالج النتيجة المدمجة بالكامل، لذلك يُحتفظ بالدمج بين التدفقات للحفاظ على دلالتها الشاملة.

<div id="allow_distributed_ddl">
  ## allow\_distributed\_ddl
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

إذا ضُبطت هذه القيمة على true، فسيُسمح للمستخدم بتنفيذ استعلامات DDL الموزعة.

<div id="allow_drop_detached">
  ## allow\_drop\_detached
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح بتنفيذ استعلامات ALTER TABLE ... DROP DETACHED PART\[ITION] ...

<div id="allow_dynamic_type_in_join_keys">
  ## allow\_dynamic\_type\_in\_join\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "عدم السماح باستخدام نوع Dynamic في مفاتيح JOIN افتراضيًا"}]}]} />

يسمح باستخدام نوع Dynamic في مفاتيح JOIN. أُضيف لأغراض التوافق. لا يُنصح باستخدام نوع Dynamic في مفاتيح JOIN لأن المقارنة مع الأنواع الأخرى قد تؤدي إلى نتائج غير متوقعة.

<div id="allow_execute_multiif_columnar">
  ## allow\_execute\_multiif\_columnar
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

السماح بتنفيذ الدالة multiIf بشكل عمودي

<div id="allow_fuzz_query_functions">
  ## allow\_fuzz\_query\_functions
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "إعداد جديد لتمكين الدالة fuzzQuery."}]}]} />

يُمكِّن الدالة `fuzzQuery` التي تُجري تعديلات عشوائية على AST لاستعلامٍ ما.

<div id="allow_general_join_planning">
  ## allow\_general\_join\_planning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "السماح باستخدام خوارزمية أكثر عمومية لتخطيط JOIN عند تمكين خوارزمية hash join."}]}]} />

يتيح هذا استخدام خوارزمية أكثر عمومية لتخطيط JOIN يمكنها التعامل مع شروط أكثر تعقيدًا، لكنها لا تعمل إلا مع hash join. وإذا لم يكن hash join مُمكّنًا، فستُستخدم خوارزمية تخطيط JOIN المعتادة بغض النظر عن قيمة هذا الإعداد.

<div id="allow_get_client_http_header">
  ## allow\_get\_client\_http\_header
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "أُضيفت دالة جديدة."}]}]} />

يسمح هذا الإعداد باستخدام الدالة `getClientHTTPHeader` التي تتيح الحصول على قيمة ترويسة طلب HTTP الحالي. وهي غير مُمكّنة افتراضيًا لأسباب أمنية، لأن بعض الترويسات، مثل `Cookie`، قد تحتوي على معلومات حساسة. لاحظ أن ترويسات `X-ClickHouse-*` و`Authentication` و`Authorization` تكون مقيّدة دائمًا، ولا يمكن الحصول عليها باستخدام هذه الدالة.

<div id="allow_hyperscan">
  ## allow\_hyperscan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يسمح بالدوال التي تستخدم مكتبة Hyperscan. عطّل هذا الخيار لتجنّب أوقات تجميع طويلة محتملة والاستهلاك المفرط للموارد.

<div id="allow_iceberg_remove_orphan_files">
  ## allow\_iceberg\_remove\_orphan\_files
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إعداد جديد للتحكم في السماح بإزالة الملفات اليتيمة في Iceberg"}]}]} />

يسمح باستخدام 'ALTER TABLE ... EXECUTE remove\_orphan\_files()' لجداول Iceberg.

<div id="allow_insert_into_iceberg">
  ## allow\_insert\_into\_iceberg
</div>

<BetaBadge />

**الأسماء البديلة**: `allow_experimental_insert_into_iceberg`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "تم نقل الإدراج في Iceberg إلى مرحلة Beta"}]}, {"id": "row-2","items": [{"label": "25.7"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

يسمح بتنفيذ استعلامات `insert` في Iceberg.

<div id="allow_introspection_functions">
  ## allow\_introspection\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يؤدي إلى تمكين [دوال فحص المكونات الداخلية](/ar/reference/functions/regular-functions/introspection) أو تعطيلها لتنميط الاستعلامات.

القيم الممكنة:

* 1 — دوال فحص المكونات الداخلية مُمكّنة.
* 0 — دوال فحص المكونات الداخلية مُعطّلة.

**انظر أيضًا**

* [Sampling Query Profiler](/ar/concepts/features/performance/troubleshoot/sampling-query-profiler)
* جدول النظام [trace\_log](/ar/reference/system-tables/trace_log)

<div id="allow_key_condition_coalesce_rewrite">
  ## allow\_key\_condition\_coalesce\_rewrite
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "إعداد جديد لإعادة كتابة الشروط من الشكل `coalesce(a_1, ..., a_N) <op> const` (وكذلك `ifNull` بصورة مكافئة، أو عندما يكون الثابت على اليسار) إلى فصل منطقي قبل تحليل الفهارس، بحيث يمكن استخدام المفتاح الأساسي وفهارس التخطي الخاصة بكل عمود على كل `a_i`. كما تُعالَج أيضًا الأشكال ذات الثوابت الجزئية مثل `coalesce(a, 42, b)` و`coalesce(a, b, 42)`."}]}]} />

أعِد كتابة الشروط من الشكل `coalesce(a_1, ..., a_N) <op> const` (وكذلك `ifNull` بصورة مكافئة، أو عندما يكون الثابت على اليسار) إلى الفصل المنطقي `(a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const)` قبل تحليل الفهارس، بحيث يمكن استخدام المفتاح الأساسي وفهارس التخطي الخاصة بكل عمود على كل `a_i`. تُعالَج الأشكال ذات الثوابت الجزئية مثل `coalesce(a, 42, b)` و`coalesce(a, b, 42)`: إذ تُطبَّع قائمة الوسائط كما يفعل `coalesce` نفسه (تُحذف القيم الحرفية `NULL`، وتُحذف الوسائط التي تلي أول وسيطة غير `Nullable`)، ويُضاف الثابت غير `NULL` الختامي، إن وُجد، باعتباره الفرع الأخير. تُستخدم إعادة الكتابة فقط كإضافة لتحسين استبعاد البيانات عبر الفهارس؛ ويستمر الترشيح وقت التشغيل في استخدام الشرط الأصلي.
بالإضافة إلى ذلك، يُعاد كتابة شروط المساواة الدقيقة من الشكل `nullIf(key, sentinel) = const` (حيث `sentinel != const` وتتطابق الأنواع تمامًا) إلى `key = const`، بحيث يتمكن المفتاح الأساسي وpartition وفهارس التخطي على `key` من استبعاد الحبيبات مباشرةً. لا يُدعم استبعاد البيانات عبر `nullIf` للنطاقات أو الشروط الفصلية.

<div id="allow_limit_by_partitions_independently">
  ## allow\_limit\_by\_partitions\_independently
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "إعداد جديد لتمكين التقييم المستقل لـ `LIMIT BY` لكل partition عندما يكون تعبير partition دالة حتمية لأعمدة `LIMIT BY`."}]}]} />

يُمكّن التقييم المستقل لـ `LIMIT BY` لكل partition على خيوط تنفيذ منفصلة عندما يكون تعبير partition دالة حتمية لأعمدة `LIMIT BY`.

<div id="allow_lossy_numeric_supertype">
  ## allow\_lossy\_numeric\_supertype
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد يتيح لـ if\/multiIf\/coalesce\/ifNull\/array\/map توحيد جميع الفروع الرقمية التي لا نوعًا مشتركًا بينها دون فقدان (مثل Decimal + Float64) إلى نوع فائق رقمي (Float64، مع احتمال فقدان الدقة)، بحيث يمكن تجميع النتيجة. وهو مستقل عن use_variant_as_common_type: إذ كانت هذه الفروع تُصدر سابقًا NO_COMMON_TYPE عند إيقافه، وتصبح Variant عند تشغيله؛ أما الآن فتُوحَّد إلى Float64 في كلتا الحالتين."}]}]} />

عند التمكين، تُوحِّد `if`/`multiIf`/`coalesce`/`ifNull`/`array`/`map` مجموعةً من الوسائط الرقمية التي لا نوعًا مشتركًا بينها دون فقدان (مثل `Decimal` و`Float64`، أو `Int64` و`Float64`) إلى نوع فائق رقمي (`Float64`) بدلًا من أن تفشل، مع احتمال فقدان الدقة. يتيح ذلك استخدام النتيجة مباشرةً مع دوال التجميع التي تدمج القيم، مثل `sum` و`avg` و`min` و`max`. وهذا مستقل عن `use_variant_as_common_type`: إذ يُنتَج النوع الفائق الرقمي سواء أكان `use_variant_as_common_type` مُمكّنًا أم لا. عند التعطيل (الإعداد الافتراضي)، لا يكون لهذه المجموعات من الوسائط نوع مشترك، لذا فإنها إما تصبح `Variant` (إذا كان `use_variant_as_common_type` مُمكّنًا) أو تُصدر `NO_COMMON_TYPE`.

<div id="allow_materialized_view_with_bad_select">
  ## allow\_materialized\_view\_with\_bad\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "عدم السماح بإنشاء MVs تشير إلى أعمدة أو جداول غير موجودة"}]}, {"id": "row-2","items": [{"label": "24.9"},{"label": "1"},{"label": "دعم تحقق أكثر صرامة في CREATE MATERIALIZED VIEW (لكن من دون تفعيله بعد)"}]}]} />

يسمح باستخدام CREATE MATERIALIZED VIEW مع استعلام SELECT يشير إلى جداول أو أعمدة غير موجودة. ويجب أن يظل صحيحًا من حيث الصياغة النحوية. لا ينطبق ذلك على MVs القابلة للتحديث. كما لا ينطبق إذا كان يجب استنتاج مخطط MV من استعلام SELECT (أي إذا كان CREATE لا يتضمن قائمة أعمدة ولا TO table). ويمكن استخدامه لإنشاء MV قبل الجدول المصدر الخاص بها.

<div id="allow_metadata_only_named_tuple_alter">
  ## allow\_metadata\_only\_named\_tuple\_alter
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "إعداد جديد للتحكم في عمليات ALTER التي تقتصر على البيانات الوصفية عند إضافة حقول فرعية إلى Tuple مُسمّى."}]}]} />

إذا كانت القيمة true، فإن عملية ALTER MODIFY COLUMN على Tuple مُسمّى تضيف حقولًا فرعية جديدة فقط تكون مقتصرة على البيانات الوصفية (من دون mutation للبيانات).
اضبطها على false لفرض السلوك القديم الذي يتضمن mutation كاملًا.

<div id="allow_minmax_index_for_json">
  ## allow\_minmax\_index\_for\_json
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "يُمنع افتراضيًا إنشاء فهرس minmax للتخطي على أعمدة JSON لأن تسلسل الفهرس لا يمكنه التعامل مع قيم Field غير المتجانسة"}]}]} />

السماح بإنشاء فهارس minmax للتخطي على أعمدة JSON ‏(Object). يكون هذا الخيار معطّلًا افتراضيًا لأن مسار
تسلسل فهرس minmax لا يمكنه التعامل مع قيم Field غير المتجانسة التي قد تحتويها أعمدة JSON.

<div id="allow_named_collection_override_by_default">
  ## allow\_named\_collection\_override\_by\_default
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

السماح افتراضيًا بتجاوز حقول المجموعات المسماة.

<div id="allow_non_metadata_alters">
  ## allow\_non\_metadata\_alters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

السماح بتنفيذ عمليات ALTER التي لا تؤثر فقط في البيانات الوصفية للجداول، بل أيضًا في البيانات المخزنة على القرص

<div id="allow_nonconst_timezone_arguments">
  ## allow\_nonconst\_timezone\_arguments
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "السماح بوسائط timezone غير الثابتة في بعض الدوال المرتبطة بالوقت مثل toTimeZone() و fromUnixTimestamp*() و snowflakeToDateTime*()."}]}]} />

يسمح بوسائط timezone غير الثابتة في بعض الدوال المرتبطة بالوقت مثل toTimeZone() و fromUnixTimestamp\*() و snowflakeIDToDateTime\*().
يوجد هذا الإعداد لأسباب التوافق فقط. في ClickHouse، تُعد timezone خاصيةً لنوع البيانات، وبالتالي للعمود أيضًا.
يُوحي تمكين هذا الإعداد خطأً بأن القيم المختلفة داخل العمود يمكن أن تكون لها timezones مختلفة.
لذلك، يُرجى عدم تمكين هذا الإعداد.

<div id="allow_nullable_tuple_in_extracted_subcolumns">
  ## allow\_nullable\_tuple\_in\_extracted\_subcolumns
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد يتحكم في ما إذا كان يمكن أن تكون الأعمدة الفرعية المستخرجة من النوع Tuple قابلة للإسناد إلى nullable."}]}]} />

يتحكم هذا الإعداد في ما إذا كان يمكن إسناد النوع `Nullable(Tuple(...))` إلى الأعمدة الفرعية المستخرجة من النوع `Tuple(...)`.

* `false`: أعد `Tuple(...)` واستخدم قيم tuple الافتراضية للصفوف التي يكون فيها العمود الفرعي مفقودًا.
* `true`: أعد `Nullable(Tuple(...))` واستخدم `NULL` للصفوف التي يكون فيها العمود الفرعي مفقودًا.

يتحكم هذا الإعداد في سلوك الأعمدة الفرعية المستخرجة فقط.
ولا يتحكم في ما إذا كان يمكن إنشاء أعمدة `Nullable(Tuple(...))` في الجداول؛ فهذا يتحكم فيه `enable_nullable_tuple_type`.

يستخدم ClickHouse القيمة المحمّلة لهذا الإعداد عند بدء تشغيل الخادم.
ولا تؤدي التغييرات التي تُجرى باستخدام `SET` أو `SETTINGS` على مستوى الاستعلام إلى تغيير سلوك الأعمدة الفرعية المستخرجة.
ولتغيير سلوك الأعمدة الفرعية المستخرجة، حدّث `allow_nullable_tuple_in_extracted_subcolumns` في تهيئة ملف التعريف عند بدء التشغيل (على سبيل المثال، users.xml) ثم أعد تشغيل الخادم.

<div id="allow_rank_dense_rank_arguments">
  ## allow\_rank\_dense\_rank\_arguments
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "إعداد جديد. قبل الإصدار 26.5، كانت دالتا النافذة `RANK` و`DENSE_RANK` تتجاهلان بصمت أي وسائط مُمرَّرة (وهو ما يعادل `allow_rank_dense_rank_arguments = 1`). واعتبارًا من 26.5، ترفضان الوسائط افتراضيًا مع `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` لأن هاتين الدالتين، وفقًا لمعيار SQL، لا تقبلان أي وسائط. اضبط هذا على `1` لاستعادة السلوك القديم."}]}]} />

السماح بتمرير وسائط إلى دالتي النافذة `RANK` و`DENSE_RANK` للحفاظ على التوافق مع الإصدارات السابقة.

وفقًا لمعيار SQL، لا تقبل `RANK` و`DENSE_RANK` أي وسائط — إذ ترتبان الصفوف استنادًا فقط إلى
النافذة `OVER (ORDER BY ...)`. في إصدارات ClickHouse السابقة لـ 26.5، كانت الاستعلامات مثل
`RANK(x) OVER (...)` تُقبل بصمت مع تجاهل الوسيطة، مما سبّب إرباكًا للمستخدمين
(إذ توحي الوسيطة الظاهرة بأنها تؤثر في الترتيب، لكنها في الواقع لا تفعل ذلك).

عندما يكون هذا الإعداد `false` (وهو الخيار الافتراضي)، ترفض `RANK` و`DENSE_RANK` أي وسائط وتُطلق
الاستثناء `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`. وعند ضبطه على `true`، يُستعاد السلوك القديم المتساهل
— إذ تُتجاهل الوسائط بصمت، بما يطابق السلوك السابق قبل الإصدار 26.5.

<div id="allow_reorder_prewhere_conditions">
  ## allow\_reorder\_prewhere\_conditions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "إعداد جديد"}]}]} />

يسمح بإعادة ترتيب الشروط عند نقلها من WHERE إلى PREWHERE لتحسين التصفية

<div id="allow_replace_partition_from_empty_source">
  ## allow\_replace\_partition\_from\_empty\_source
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "فحص أمان جديد: أصبح `ALTER TABLE ... REPLACE PARTITION ... FROM ...` الآن يُطلق استثناءً عندما لا يحتوي الجدول المصدر على أي أجزاء في الـ partition المطلوب (يُصلح مشكلة فقدان البيانات الصامت في [#23727](https:\/\/github.com\/ClickHouse\/ClickHouse\/issues\/23727)). ويمكن الإبقاء على السلوك السابق، وهو حذف partition الوجهة بصمت، من خلال تعيين `allow_replace_partition_from_empty_source = 1`."}]}]} />

اسمح لـ `ALTER TABLE ... REPLACE PARTITION ... FROM ...` بحذف partition الوجهة بصمت عندما لا يحتوي المصدر على أي أجزاء في ذلك الـ partition.

بشكل افتراضي، هذا غير مسموح به: إذ إن `REPLACE PARTITION` من مصدر لا يحتوي على بيانات في الـ partition المطلوب يُطلق استثناءً، لأن العملية في هذه الحالة تصبح فعليًا `DROP PARTITION` صامتًا على الوجهة (تُزال بيانات الوجهة ولا يستبدلها شيء)، وهو سبب شائع لفقدان البيانات عن طريق الخطأ (راجع [#23727](https://github.com/ClickHouse/ClickHouse/issues/23727)).

فعّل هذا الإعداد لاستعادة السلوك السابق، على سبيل المثال عندما تستخدم عمدًا partition فارغًا في المصدر لمسح البيانات في الوجهة. وإذا أردت حذفًا غير مشروط، فالأفضل استخدام `ALTER TABLE ... DROP PARTITION ...` بدلًا من ذلك.

<div id="allow_settings_after_format_in_insert">
  ## allow\_settings\_after\_format\_in\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.4"},{"label": "0"},{"label": "عدم السماح بوضع SETTINGS بعد FORMAT في استعلامات `INSERT` لأن ClickHouse قد يفسّر SETTINGS على أنها قيم، وهذا قد يكون مضلّلًا"}]}]} />

تحكّم في السماح باستخدام `SETTINGS` بعد `FORMAT` في استعلامات `INSERT` من عدمه. لا يُنصح باستخدام هذا، لأن ذلك قد يؤدي إلى تفسير جزء من `SETTINGS` على أنه قيم.

مثال:

```sql theme={null}
INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');
```

لكن لن يعمل الاستعلام التالي إلا عند استخدام `allow_settings_after_format_in_insert`:

```sql theme={null}
SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;
```

القيم الممكنة:

* 0 — غير مسموح.
* 1 — مسموح.

<Note>
  استخدم هذا الإعداد فقط للحفاظ على التوافق مع الإصدارات السابقة إذا كانت حالات الاستخدام لديك تعتمد على الصياغة القديمة.
</Note>

<div id="allow_simdjson">
  ## allow\_simdjson
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

يسمح باستخدام مكتبة simdjson في دوال 'JSON\*' إذا كانت تعليمات AVX2 متوفرة. وإذا كان هذا الخيار معطّلًا، فستُستخدم rapidjson.

<div id="allow_special_serialization_kinds_in_output_formats">
  ## allow\_special\_serialization\_kinds\_in\_output\_formats
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "تمكين الإخراج المباشر لتمثيلات الأعمدة الخاصة مثل Sparse\/Replicated في بعض تنسيقات الإخراج"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "إضافة إعداد للسماح بإخراج تمثيلات الأعمدة الخاصة مثل Sparse\/Replicated دون تحويلها إلى تمثيل الأعمدة الكامل"}]}]} />

يسمح بإخراج الأعمدة ذات أنواع التسلسل الخاصة مثل Sparse وReplicated دون تحويلها إلى تمثيل الأعمدة الكامل.
ويساعد ذلك على تجنب نسخ البيانات غير الضروري عند التنسيق.

<div id="allow_unrestricted_reads_from_keeper">
  ## allow\_unrestricted\_reads\_from\_keeper
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

يسمح بعمليات قراءة غير مقيّدة (من دون شرط على مسار) من جدول system.zookeeper، وقد يكون ذلك مفيدًا، لكنه غير آمن لـ ZooKeeper
