Показать сообщение отдельно
Старый 05.03.2011, 11:52   #1
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию [11284]Prepared statements for MySQL [part 1]

Всем трямс

Вобщем, как и обещалось некоторое время назад, поддержка для prepared statements в мангосе таки появится

Для тех, кто незнает, что сие такое и зачем оно вообще надо, могут погуглить - многа букаф писать на выходных я не осилю ))

На данном этапе реализована поддержка для INSERT+DELETE+UPDATE запросов. SELECTы будут реализованы позднее, дабы не коммитить патчи монструозного размера.

Важный момент: нативные prepared statements реализованы только для MySQL. Пользователи PostgreSQL будут пользоваться эмуляцией этой функциональности, которая будет сводится к отправке обычных строковых запросов к БД.

На данный момент переписаны все запросы, которые используются во время сохранения игрока, e.g. вызова функции Player::SaveToDB().

WARNING: СДЕЛАЙТЕ БЕКАП БАЗЫ ДО НАЧАЛА ТЕСТОВ!!!

Ссылка на тему на офф форуме: http://getmangos.com/community/post/132464/

репозиторий: prepared_statements

update #1: добавлена поддержка PostgreSQL. Финальная версия патча.
update #2: ODBC-похожий АПИ для передачи параметров процедурам.
update #3: правка ошибок компиляции под *nix
update #4: правка синтаксиса некоторых запросов.
update #5: переписан код всвязи с найденными критическими нюансами инициализации статических переменных функций в многопоточной среде. Спасибо Vinolentus. Ожидайте незначительного увеличения потребления CPU из-за постоянного поиска в реесте нужных хранимых процедур по строке запроса.
update #6: переписан код, теперь мы корректно используем статические локальные переменные для хранения информации по процедурам. Должно вернуть потребление ЦП к норме.

Последний раз редактировалось Ambal; 19.03.2011 в 22:48.
Ambal вне форума  
7 пользователя(ей) сказали cпасибо:
ANTOMA (18.03.2011), Den (05.03.2011), Feel the Power (12.03.2011), Mayss (26.03.2011), PSZ (05.03.2011), sven (21.03.2011)