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

# دعم نقل تغييرات المخطط

> صفحة تصف أنواع تغييرات المخطط التي يمكن لـ ClickPipes اكتشافها في الجداول المصدر

يمكن لـ ClickPipes for MySQL اكتشاف تغييرات المخطط في الجداول المصدر، وفي بعض الحالات، نقل هذه التغييرات تلقائيًا إلى الجداول الوجهة. آلية التعامل مع كل عملية DDL موثقة أدناه:

[//]: # "TODO وسّع هذه الصفحة لتشمل السلوك عند إعادة التسمية، وتغييرات نوع البيانات، و TRUNCATE، بالإضافة إلى إرشادات حول كيفية التعامل مع تغييرات المخطط غير المتوافقة."

| نوع تغيير المخطط                                                          | السلوك                                                                                                                                                                                                               |
| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| إضافة عمود جديد (`ALTER TABLE ADD COLUMN ...`)                            | يتم نقلها تلقائيًا. ستتم تعبئة الأعمدة الجديدة لجميع الصفوف التي جرى نسخها بعد تغيير المخطط                                                                                                                          |
| إضافة عمود جديد بقيمة افتراضية (`ALTER TABLE ADD COLUMN ... DEFAULT ...`) | يتم نقلها تلقائيًا. تُضاف أيضًا [القيم الافتراضية المدعومة](#default-values-for-added-columns) إلى عمود ClickHouse، لذا تنطبق على الصفوف الموجودة بالفعل في ClickHouse وكذلك الصفوف التي جرى نسخها بعد تغيير المخطط. |
| حذف عمود موجود (`ALTER TABLE DROP COLUMN ...`)                            | يُكتشف، ولكن **لا** يتم نقلها. ستُملأ الأعمدة المحذوفة بالقيمة `NULL` لجميع الصفوف التي جرى نسخها بعد تغيير المخطط                                                                                                   |

<Note>
  إضافة أعمدة أثناء اللقطة غير مدعومة حاليًا. والحل البديل المقترح هو تنفيذ اللقطات قبل تغييرات المخطط المخطط لها أو بعدها، أو، إذا كان ClickPipe يتعطل بالفعل، إضافة عمود يدويًا من النوع المناسب إلى الجدول الوجهة.
</Note>

<div id="default-values-for-added-columns">
  ## القيم الافتراضية للأعمدة المضافة
</div>

بالنسبة إلى العمود المضاف، ينقل ClickPipes القيمة الافتراضية فقط عندما يتمكن من تحويلها بأمان إلى ClickHouse. وعند نقل قيمة افتراضية، يستخدمها ClickHouse عند قراءة أجزاء البيانات الأسبق من العمود الجديد. ونتيجةً لذلك، تحصل الصفوف الموجودة مسبقًا في ClickHouse على القيمة الافتراضية للمصدر دون إعادة تحديث الجدول بالكامل.

ينقل ClickPipes القيم الحرفية للأعداد الصحيحة والعشرية وذات الفاصلة العائمة، والقيم المنطقية، وقيم السلاسل النصية والتواريخ البسيطة، وقيم enum أو set عندما يوفر خادم MySQL البيانات الوصفية الكاملة للصفوف في binlog. ويعيد كتابة القيم الحرفية للسلاسل النصية باستخدام اقتباس متوافق مع ClickHouse.

يتعمد ClickPipes استبعاد القيم الافتراضية التي ليست قيمًا حرفية قابلة للنقل، بما في ذلك `NULL`، والقيم الحرفية للبتات، واستدعاءات الدوال مثل `CURRENT_TIMESTAMP` و`NOW()` و`UUID()`، وقيم السلاسل النصية التي تحتوي على شرطات مائلة عكسية أو محارف تحكم. يُضاف العمود مع ذلك، لكن ClickHouse يستخدم القيمة الافتراضية المعتادة لنوع البيانات في الأجزاء الأسبق من العمود. يلزم إجراء تحديث كامل للجدول إذا كان ينبغي أن تحتوي تلك الصفوف الموجودة على القيمة الافتراضية للمصدر.

ينقل ClickPipes القيم الافتراضية فقط ضمن `ALTER TABLE ADD COLUMN`. ولا ينقل إلى ClickHouse العمليات اللاحقة التي تغيّر القيمة الافتراضية للعمود أو تزيلها.

<div id="mysql-5-limitations">
  ### قيود MySQL 5.x
</div>

إصدارات MySQL الأقدم من [8.0.1](https://dev.mysql.com/blog-archive/more-metadata-is-written-into-binary-log/) لا تتضمن بيانات وصفية كاملة للأعمدة في `binlog` (`binlog_row_metadata=FULL`)، لذا تتعقّب ClickPipes الأعمدة بحسب ترتيبها. وهذا يعني ما يلي:

* **إضافة عمود في النهاية** (`ALTER TABLE ADD COLUMN ...`) مدعومة.
* **أي DDL يغيّر ترتيب الأعمدة** سيؤدي إلى ظهور خطأ في المسار، لأنه لن يعود بالإمكان بعد ذلك مطابقة المواضع الترتيبية بشكل موثوق. ويشمل ذلك:
  * `ALTER TABLE DROP COLUMN ...`
  * `ALTER TABLE ADD COLUMN ... AFTER ...` / `FIRST`
  * `ALTER TABLE MODIFY COLUMN ... AFTER ...` / `FIRST`
  * `ALTER TABLE CHANGE COLUMN ... AFTER ...` / `FIRST`

إذا واجهت هذا الخطأ، فستحتاج إلى إعادة مزامنة المسار.
