Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Вложенные транзакции и savepoint'ы #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AlexeyDsov
Copy link
Owner

Issue, что бы видеть полный diff изменений и ссылаться на него.

Задачи:

  • Исследовать возможность в различных базах использовать savepoint'ы
  • Реализовать на savepoint'ах, там где они работают, возможность делать вложенные транзакции

Докиментация по savepoint'ам:

http://www.postgresql.org/docs/8.4/static/sql-savepoint.html
http://dev.mysql.com/doc/refman/5.0/en/savepoint.html
http://www.sqlite.org/lang_savepoint.html (судя по всему только в sqlite3)

Исследовано:

  • При генерации mysql базы данных нужно каким-то образом генерить innodb базу, а не myisam как это происходит сейчас - иначе транзакции в mysql вообще ни в каком виде не поддерживаются.
  • Текущая версия sqlite используемая в onPHP не понимает savepoint'ы. Видимо нужно сделать для этого отдельный адаптер
  • В postgres все работает как надо

Что надо сделать:

  • Возможно вынести как-то работу с транзакциями в отдельный класс, что бы упростить код класса DB
  • DB надо добавить свойства - поддерживает она транзакции или нет
  • DB надо добавить свойства - поддерживает она savepoint'ы или нет
  • Необходимо добавить настройка для DB - поддерживать или механизм вложенных транзакций на savepoint'ах

Что сейчас сделано:

  • Модифицирован класс DB для работы в savepoint'ами и вложенными транзакциями
  • Изменен класс CreateTableQuery hack'ом что бы при генерации mysql баз создавал их на движке innodb вместо дефолтного
  • Написаны тесты для тестирвания обычных и вложенных транзакций.

@AlexeyDsov
Copy link
Owner Author

Приостановлено до реализации #3, т.к. текущий SQLite адаптер использует sqlite-2, а savepoint'ы по документации реализованы в sqlite-3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant