summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-10 20:52:30 +0000
committerGerrit Code Review <review@openstack.org>2012-10-10 20:52:30 +0000
commite69d8b6570fe9db67f367af2834b7593ee5b0d37 (patch)
tree5bd4cf191aff43a30739c4d23afc8cd7726d4b0f
parent6c0af0b1a8cfa5fc81d0679400a7b6d945dcec25 (diff)
parent5b4b7e4083b85bd9c10792cf0adb11dc07e92333 (diff)
downloadnova-e69d8b6570fe9db67f367af2834b7593ee5b0d37.tar.gz
nova-e69d8b6570fe9db67f367af2834b7593ee5b0d37.tar.xz
nova-e69d8b6570fe9db67f367af2834b7593ee5b0d37.zip
Merge "Tell SQLite to enforce foreign keys."
-rw-r--r--nova/db/sqlalchemy/session.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py
index 6c349e0c2..a1257e151 100644
--- a/nova/db/sqlalchemy/session.py
+++ b/nova/db/sqlalchemy/session.py
@@ -67,6 +67,14 @@ def add_regexp_listener(dbapi_con, con_record):
dbapi_con.create_function('regexp', 2, regexp)
+def enforce_foreign_keys_listener(dbapi_conn, connection_rec):
+ """Tell SQLite to enforce foreign keys.
+
+ Requires SQLite version >= 3.6.19.
+ """
+ dbapi_conn.execute("PRAGMA foreign_keys = ON")
+
+
def greenthread_yield(dbapi_con, con_record):
"""
Ensure other greenthreads get a chance to execute by forcing a context
@@ -142,6 +150,8 @@ def get_engine():
sqlalchemy.event.listen(_ENGINE, 'connect',
synchronous_switch_listener)
sqlalchemy.event.listen(_ENGINE, 'connect', add_regexp_listener)
+ sqlalchemy.event.listen(_ENGINE, 'connect',
+ enforce_foreign_keys_listener)
if (FLAGS.sql_connection_trace and
_ENGINE.dialect.dbapi.__name__ == 'MySQLdb'):