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

# حزم العميل في البروتوكول الأصلي

> عميل البروتوكول الأصلي

| القيمة | الاسم             | الوصف               |
| ------ | ----------------- | ------------------- |
| 0      | [Hello](#hello)   | بداية مصافحة العميل |
| 1      | [Query](#query)   | طلب استعلام         |
| 2      | [Data](#data)     | كتلة بيانات         |
| 3      | [Cancel](#cancel) | إلغاء الاستعلام     |
| 4      | [Ping](#ping)     | طلب Ping            |
| 5      | TableStatus       | طلب حالة الجدول     |

يمكن أن تكون `Data` مضغوطة.

<div id="hello">
  ## Hello
</div>

على سبيل المثال، نستخدم `Go Client` بالإصدار v1.10 الذي يدعم إصدار البروتوكول `54451`، ونريد
الاتصال بقاعدة البيانات `default` باستخدام اسم المستخدم `default` وكلمة المرور `secret`.

| الحقل             | النوع   | القيمة        | الوصف                  |
| ----------------- | ------- | ------------- | ---------------------- |
| client\_name      | String  | `"Go Client"` | اسم تنفيذ العميل       |
| version\_major    | UVarInt | `1`           | الإصدار الرئيسي للعميل |
| version\_minor    | UVarInt | `10`          | الإصدار الثانوي للعميل |
| protocol\_version | UVarInt | `54451`       | إصدار بروتوكول TCP     |
| database          | String  | `"default"`   | اسم قاعدة البيانات     |
| username          | String  | `"default"`   | اسم المستخدم           |
| password          | String  | `"secret"`    | كلمة المرور            |

<div id="protocol-version">
  ### إصدار البروتوكول
</div>

إصدار البروتوكول هو إصدار بروتوكول TCP لدى العميل.

وعادةً ما يساوي أحدث مراجعة متوافقة للخادم، لكن
لا ينبغي الخلط بينهما.

<div id="defaults">
  ### الإعدادات الافتراضية
</div>

يجب **تحديد جميع القيم صراحةً**، إذ لا توجد أي قيم افتراضية على جانب الخادم.
على جانب العميل، استخدم قاعدة البيانات `"default"`، واسم المستخدم `"default"`، وكلمة المرور `""` (سلسلة فارغة)
بوصفها القيم الافتراضية.

<div id="query">
  ## الاستعلام
</div>

| الحقل           | النوع                      | القيمة     | الوصف                                 |
| --------------- | -------------------------- | ---------- | ------------------------------------- |
| query\_id       | String                     | `1ff-a123` | معرّف الاستعلام، ويمكن أن يكون UUIDv4 |
| client\_info    | [ClientInfo](#client-info) | انظر النوع | بيانات العميل                         |
| settings        | [الإعدادات](#settings)     | انظر النوع | قائمة الإعدادات                       |
| secret          | String                     | `secret`   | سرّ بين الخوادم                       |
| [stage](#stage) | UVarInt                    | `2`        | التنفيذ حتى مرحلة الاستعلام           |
| compression     | UVarInt                    | `0`        | معطّل=0، مفعّل=1                      |
| body            | String                     | `SELECT 1` | نص الاستعلام                          |

<div id="client-info">
  ### معلومات العميل
</div>

| الحقل              | النوع           | الوصف                          |
| ------------------ | --------------- | ------------------------------ |
| query\_kind        | byte            | None=0, Initial=1, Secondary=2 |
| initial\_user      | String          | المستخدم الأصلي                |
| initial\_query\_id | String          | معرّف الاستعلام الأصلي         |
| initial\_address   | String          | العنوان الأصلي                 |
| initial\_time      | Int64           | الوقت الأصلي                   |
| interface          | byte            | TCP=1, HTTP=2                  |
| os\_user           | String          | مستخدم نظام التشغيل            |
| client\_hostname   | String          | اسم مضيف العميل                |
| client\_name       | String          | اسم العميل                     |
| version\_major     | UVarInt         | الإصدار الرئيسي للعميل         |
| version\_minor     | UVarInt         | الإصدار الثانوي للعميل         |
| protocol\_version  | UVarInt         | إصدار البروتوكول للعميل        |
| quota\_key         | String          | مفتاح الحصة                    |
| distributed\_depth | UVarInt         | عمق Distributed                |
| version\_patch     | UVarInt         | إصدار التصحيح للعميل           |
| otel               | Bool            | حقول التتبّع موجودة            |
| trace\_id          | FixedString(16) | معرّف التتبّع                  |
| span\_id           | FixedString(8)  | معرّف span                     |
| trace\_state       | String          | حالة التتبّع                   |
| trace\_flags       | Byte            | علامات التتبّع                 |

<div id="settings">
  ### الإعدادات
</div>

| الحقل   | النوع  | القيمة            | الوصف             |
| ------- | ------ | ----------------- | ----------------- |
| المفتاح | String | `send_logs_level` | مفتاح الإعداد     |
| القيمة  | String | `trace`           | قيمة الإعداد      |
| مهم     | Bool   | `true`            | يمكن تجاهله أم لا |

مُرمَّزة على شكل قائمة، ويشير خلوّ المفتاح والقيمة إلى نهاية القائمة.

<div id="stage">
  ### المرحلة
</div>

| القيمة | الاسم              | الوصف                                           |
| ------ | ------------------ | ----------------------------------------------- |
| 0      | FetchColumns       | يجلب أنواع الأعمدة فقط                          |
| 1      | WithMergeableState | حتى الحالة القابلة للدمج                        |
| 2      | Complete           | حتى الاكتمال التام (من المفترض أن يكون default) |

<div id="data">
  ## البيانات
</div>

| الحقل   | النوع               | الوصف                     |
| ------- | ------------------- | ------------------------- |
| info    | BlockInfo           | معلومات الكتلة المُرمَّزة |
| columns | UVarInt             | عدد الأعمدة               |
| rows    | UVarInt             | عدد الصفوف                |
| columns | [\[\]عمود](#column) | أعمدة تحتوي على بيانات    |

<div id="column">
  ### العمود
</div>

| الحقل | النوع  | القيمة          | الوصف         |
| ----- | ------ | --------------- | ------------- |
| name  | String | `foo`           | اسم العمود    |
| type  | String | `DateTime64(9)` | نوع العمود    |
| data  | bytes  | \~              | بيانات العمود |

<div id="cancel">
  ## Cancel
</div>

لا تحتوي الحزمة على حمولة. يجب أن يلغي الخادم الاستعلام.

<div id="ping">
  ## Ping
</div>

لا تحتوي الحزمة على حمولة. ينبغي أن [يردّ الخادم بـ pong](/ar/resources/develop-contribute/native-protocol/server#pong).
