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

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

> إعدادات جلسة ClickHouse ضمن المجموعة المُنشأة s3_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).

<div id="s3_validate_etag_on_read">
  ## s3\_validate\_etag\_on\_read
</div>

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

عند قراءة كائن من S3 (أو من مخزن متوافق مع S3 مثل GCS)، تحقّق من أن كل طلب GET يعيد قيمة ETag نفسها التي رُصدت عند إدراج الكائن. تتطلب قراءة ملف واحد إرسال العديد من طلبات GET النطاقية؛ وإذا أُعيدت الكتابة فوق الكائن في موضعه بين هذه الطلبات (على سبيل المثال، بواسطة جهة خارجية تعيد كتابة مفتاح ثابت)، فقد تُركَّب القراءات من جيلين مختلفين للكائن، مما قد يظهر على شكل checksum تالف أو خطأ في التحليل. وعند اكتشاف عدم تطابق، تفشل القراءة مع `S3_OBJECT_CHANGED_DURING_READ` بدلًا من إرجاع بيانات غير متسقة. عطّل هذا الخيار فقط لأحمال العمل التي تقرأ عمدًا كائنات يُعاد الكتابة فوقها ويمكنها تحمّل القراءات غير المتسقة.

<div id="s3_validate_request_settings">
  ## s3\_validate\_request\_settings
</div>

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

يُفعّل التحقق من إعدادات طلبات S3.
القيم الممكنة:

* 1 — التحقق من الإعدادات.
* 0 — عدم التحقق من الإعدادات.
