> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

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

> إعدادات جلسة ClickHouse في مجموعة apply_* المُنشأة.

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](/docs/ar/reference/system-tables/settings)، ويجري توليدها تلقائيًا من [المصدر](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="apply_deleted_mask">
  ## apply\_deleted\_mask
</div>

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

يُفعّل تصفية الصفوف المحذوفة باستخدام DELETE الخفيف. وإذا كان معطّلًا، فسيتمكّن الاستعلام من قراءة تلك الصفوف. ويكون ذلك مفيدًا في سيناريوهات تصحيح الأخطاء و"إلغاء الحذف"

<div id="apply_mutations_on_fly">
  ## apply\_mutations\_on\_fly
</div>

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

إذا كانت القيمة true، فستُطبَّق عمليات mutations ‏(UPDATEs وDELETEs) التي لم تُطبَّق فعليًا بعد في data part عند تنفيذ استعلامات SELECT.

<div id="apply_prewhere_after_final">
  ## apply\_prewhere\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "إعداد جديد. عند التمكين، تُطبَّق شروط PREWHERE بعد معالجة FINAL."}]}]} />

عند التمكين، تُطبَّق شروط PREWHERE بعد معالجة FINAL في ReplacingMergeTree والمحركات المشابهة.
وقد يكون ذلك مفيدًا عندما يشير PREWHERE إلى أعمدة قد تختلف قيمها بين الصفوف المكررة،
وتريد أن يحدِّد FINAL الصف المعتمد قبل التصفية. وعند التعطيل، يُطبَّق PREWHERE أثناء القراءة.
ملاحظة: إذا كان apply\_row\_level\_security\_after\_final ممكّنًا وكانت سياسة الصف تستخدم أعمدة ليست ضمن مفتاح الفرز، فسيُؤجَّل أيضًا
تطبيق PREWHERE للحفاظ على ترتيب التنفيذ الصحيح (يجب تطبيق سياسة الصف قبل PREWHERE).

<div id="apply_row_policy_after_final">
  ## apply\_row\_policy\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "أُضيف هذا الإعداد كإصلاح للتراجع الذي أعقب #87303، حيث كانت سياسات الصف وPREWHERE تُطبَّق قبل FINAL. قدّم PR #91065 هذا الإعداد، وجعل PR #97279 القيمة true الآمنة من حيث صحة النتائج هي القيمة الافتراضية. وسُجِّل كـ {true, true} حتى لا تعيد compatibility السلوك السابق للإصلاح، وهو false."}]}]} />

عند التمكين، تُطبَّق سياسات الصف وPREWHERE بعد معالجة FINAL في جداول \*MergeTree. (وخاصة ReplacingMergeTree)
عند التعطيل، تُطبَّق سياسات الصف قبل FINAL، مما قد يؤدي إلى نتائج مختلفة عندما تقوم السياسة
بتصفية صفوف يُفترض استخدامها لإزالة التكرار في ReplacingMergeTree أو محركات مشابهة.

إذا كان تعبير سياسة الصف يعتمد فقط على الأعمدة الموجودة في ORDER BY، فسيظل يُطبَّق قبل FINAL كتحسين،
لأن هذا النوع من التصفية لا يمكن أن يؤثر في نتيجة إزالة التكرار.

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

* 0 — تُطبَّق سياسة الصف وPREWHERE قبل FINAL (افتراضيًا).
* 1 — تُطبَّق سياسة الصف وPREWHERE بعد FINAL.

<div id="apply_settings_from_server">
  ## apply\_settings\_from\_server
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "ستستخدم الشيفرة على جهة العميل (مثل parsing لبيانات إدخال INSERT وformatting لنتيجة الاستعلام) الإعدادات نفسها التي يستخدمها الخادم، بما في ذلك الإعدادات من config الخادم."}]}]} />

ما إذا كان ينبغي للعميل قبول الإعدادات من الخادم.

لا يؤثر هذا إلا في العمليات التي تُنفَّذ على جهة العميل، وخصوصًا parsing لبيانات إدخال INSERT وformatting لنتيجة الاستعلام. يحدث معظم query execution على الخادم، ولا يتأثر بهذا الإعداد.

عادةً، ينبغي تعيين هذا الإعداد في profile المستخدم (users.xml أو استعلامات مثل `ALTER USER`)، وليس عبر العميل (وسائط سطر أوامر العميل، أو استعلام `SET`، أو قسم `SETTINGS` في استعلام `SELECT`). ويمكن تغييره عبر العميل إلى false، لكن لا يمكن تغييره إلى true (لأن الخادم لن يرسل الإعدادات إذا كان profile المستخدم يحتوي على `apply_settings_from_server = false`).

لاحظ أنه في البداية (24.12) كان هناك server setting (`send_settings_to_client`)، ولكن استُبدل لاحقًا بهذا client setting لتحسين سهولة الاستخدام.
