DoorKar Server v1.7.1.1 - Installer PDO 2014 Hotfix

خطای اصلاح‌شده:
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active

علت:
- dk_table_exists() و dk_column_metadata() در صورت پیدا کردن نتیجه زود return می‌کردند و PDO cursor باز می‌ماند.
- Installer در runSqlFile() بعضی statementهای migration مثل EXECUTE را با PDO::exec اجرا می‌کرد؛ در حالتی که EXECUTE یک SELECT تولید کند rowset مصرف نمی‌شد.
- روی بعضی shared hostingها PDO MySQL به صورت unbuffered رفتار می‌کند و Query بعدی با Error 2014 شکست می‌خورد.

اصلاح:
1) PDO::MYSQL_ATTR_USE_BUFFERED_QUERY = true در runtime و installer.
2) closeCursor() اجباری در metadata helpers حتی هنگام return زودهنگام.
3) runSqlFile() تمام rowsetهای هر statement را consume و cursor را close می‌کند.
4) cursorهای migration lookup و admin lookup نیز بسته می‌شوند.

فایل‌هایی که باید جایگزین شوند:
- includes/bootstrap.php
- install/index.php

Migration 010_stage6_action_integrity.sql تغییر نکرده است، پس checksum آن ثابت می‌ماند.

روش اجرا:
1) از دو فایل فعلی Backup بگیر.
2) فایل‌های Patch را روی هاست جایگزین کن.
3) Installer را دوباره باز کن و Upgrade/Install را اجرا کن.
4) اگر اجرای قبلی migration نصفه مانده باشد، Installer باید ادامه دهد؛ نیازی به حذف دستی indexها نیست.
