| القيمة | الاسم | الوصف |
|---|---|---|
| 0 | Hello | بداية مصافحة العميل |
| 1 | Query | طلب استعلام |
| 2 | Data | كتلة بيانات |
| 3 | Cancel | إلغاء الاستعلام |
| 4 | Ping | طلب Ping |
| 5 | TableStatus | طلب حالة الجدول |
يمكن أن تكون Data مضغوطة.
Hello
على سبيل المثال، نستخدم 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" |
كلمة المرور |
إصدار البروتوكول
إصدار البروتوكول هو إصدار بروتوكول TCP لدى العميل.
وعادةً ما يساوي أحدث مراجعة متوافقة للخادم، لكن لا ينبغي الخلط بينهما.
الإعدادات الافتراضية
يجب تحديد جميع القيم صراحةً، إذ لا توجد أي قيم افتراضية على جانب الخادم.
على جانب العميل، استخدم قاعدة البيانات "default"، واسم المستخدم "default"، وكلمة المرور "" (سلسلة فارغة)
بوصفها القيم الافتراضية.
الاستعلام
| الحقل | النوع | القيمة | الوصف |
|---|---|---|---|
| query_id | String | 1ff-a123 |
معرّف الاستعلام، ويمكن أن يكون UUIDv4 |
| client_info | ClientInfo | انظر النوع | بيانات العميل |
| settings | الإعدادات | انظر النوع | قائمة الإعدادات |
| secret | String | secret |
سرّ بين الخوادم |
| stage | UVarInt | 2 |
التنفيذ حتى مرحلة الاستعلام |
| compression | UVarInt | 0 |
معطّل=0، مفعّل=1 |
| body | String | SELECT 1 |
نص الاستعلام |
معلومات العميل
| الحقل | النوع | الوصف |
|---|---|---|
| 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 | علامات التتبّع |
الإعدادات
| الحقل | النوع | القيمة | الوصف |
|---|---|---|---|
| المفتاح | String | send_logs_level |
مفتاح الإعداد |
| القيمة | String | trace |
قيمة الإعداد |
| مهم | Bool | true |
يمكن تجاهله أم لا |
مُرمَّزة على شكل قائمة، ويشير خلوّ المفتاح والقيمة إلى نهاية القائمة.
المرحلة
| القيمة | الاسم | الوصف |
|---|---|---|
| 0 | FetchColumns | يجلب أنواع الأعمدة فقط |
| 1 | WithMergeableState | حتى الحالة القابلة للدمج |
| 2 | Complete | حتى الاكتمال التام (من المفترض أن يكون default) |
البيانات
| الحقل | النوع | الوصف |
|---|---|---|
| info | BlockInfo | معلومات الكتلة المُرمَّزة |
| columns | UVarInt | عدد الأعمدة |
| rows | UVarInt | عدد الصفوف |
| columns | []عمود | أعمدة تحتوي على بيانات |
العمود
| الحقل | النوع | القيمة | الوصف |
|---|---|---|---|
| name | String | foo |
اسم العمود |
| type | String | DateTime64(9) |
نوع العمود |
| data | bytes | ~ | بيانات العمود |
Cancel
لا تحتوي الحزمة على حمولة. يجب أن يلغي الخادم الاستعلام.
Ping
لا تحتوي الحزمة على حمولة. ينبغي أن يردّ الخادم بـ pong.