> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

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).

## validate\_enum\_literals\_in\_operators

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

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

عند تمكين هذا الإعداد، يتم التحقق من القيم الحرفية للتعداد في عوامل التشغيل مثل `IN` و`NOT IN` و`==` و`!=` مقابل نوع التعداد، ويتم طرح استثناء إذا لم تكن القيمة الحرفية إحدى قيم التعداد الصالحة.

## validate\_group\_by\_all\_key\_types

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "يبقى التحقق من أنواع المفاتيح التي يوسّع إليها `GROUP BY ALL` تعبيرات `SELECT` خاضعًا لإعداد `compatibility` مع الإصدارين 26.7 و26.8: تتساوى القيمة السابقة مع القيمة الجديدة عمدًا، لأن هذين الإصدارين كانا يرفضان هذا النوع من المفاتيح بالفعل، ولا يُستعاد القبول السابق إلا عند التوافق مع إصدار أقدم من 26.7."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "1"},{"label": "إعداد جديد يضبط التحقق من أنواع المفاتيح التي يوسّع إليها `GROUP BY ALL` تعبيرات `SELECT`. بدأ الإصدار 26.7 برفض مفتاح من النوع `Variant`\/`Dynamic` في هذه الحالة، بينما كانت الإصدارات السابقة تقبله عند تمكين المحلّل (`enable_analyzer = 1`، وهو الإعداد الافتراضي؛ وكان المحلّل القديم يرفض هذا النوع من المفاتيح قبل 26.7 أيضًا)، لذا تكون القيمة السابقة `false`، ويؤدي `compatibility` مع إصدار أقدم من 26.7 إلى استعادة القبول السابق."}]}]} />

يتحكم في التحقق من مفاتيح التجميع التي يوسّع إليها `GROUP BY ALL` تعبيرات `SELECT` وفقًا لإعداد [allow\_suspicious\_types\_in\_group\_by](/ar/reference/settings/session-settings/allow-suspicious#allow_suspicious_types_in_group_by). عطّله لاستعادة سلوك الإصدارات السابقة لـ 26.7، التي كانت تقبل مفتاحًا من النوع [Variant](/ar/reference/data-types/variant) أو [Dynamic](/ar/reference/data-types/dynamic) مكتوبًا ضمن `GROUP BY ALL`، مثل مفتاح تجميع يمثل مسارًا فرعيًا غير محدد النوع في JSON. لا يسري هذا الإعداد إلا عند تمكين المحلّل (`enable_analyzer = 1`، وهو الإعداد الافتراضي)؛ أما مع المحلّل القديم، فكان هذا النوع من المفاتيح يُرفض قبل 26.7 أيضًا، لذا لا يوجد ما يمكن استعادته. لا يتأثر `GROUP BY` الصريح، ويستمر في رفض هذا النوع من المفاتيح في كلتا الحالتين، لذا فإن هذا الإعداد أضيق نطاقًا من `allow_suspicious_types_in_group_by`، الذي يسمح بها أيضًا في `GROUP BY` صريح.

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

* 0 - لا يتم التحقق من أنواع المفاتيح التي يوسّع إليها `GROUP BY ALL`.
* 1 - يتم التحقق منها، كما يتحقق `GROUP BY` الصريح من مفاتيحه.

## validate\_mutation\_query

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "إعداد جديد للتحقق من استعلامات التعديل افتراضيًا."}]}]} />

تحقّق من استعلامات التعديل قبل قبولها. تُنفَّذ عمليات التعديل في الخلفية، وقد يتسبب تشغيل استعلام غير صالح في تعلّق عمليات التعديل، مما يستلزم تدخّلًا يدويًا.

لا تغيّر هذا الإعداد إلا إذا واجهت خللًا يسبّب عدم توافق مع الإصدارات السابقة.

## validate\_polygons

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.4"},{"label": "1"},{"label": "إلقاء استثناء إذا كان المضلع غير صالح في الدالة pointInPolygon افتراضيًا بدلًا من إرجاع نتائج قد تكون غير صحيحة"}]}]} />

يُفعِّل أو يعطِّل إلقاء استثناء في الدالة [pointInPolygon](/ar/reference/functions/regular-functions/geo/coordinates#pointinpolygon) إذا كان المضلع متقاطعًا مع نفسه أو مماسًا لنفسه.

Possible values:

* 0 — إلقاء استثناء معطّل. تقبل `pointInPolygon` المضلعات غير الصالحة وقد تُرجع لها نتائج غير صحيحة.
* 1 — إلقاء استثناء مفعّل.
