From 55163615c758a8b74d24127d644e6107ff90b4c1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Wed, 17 Feb 2021 15:53:27 +0100 Subject: [PATCH] Add the patch that will need to be applied to datanommer Signed-off-by: Pierre-Yves Chibon --- .../datanommer_datagrepper/pg_timescaledb.rst | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/datanommer_datagrepper/pg_timescaledb.rst b/docs/datanommer_datagrepper/pg_timescaledb.rst index e89e4a9..2d59680 100644 --- a/docs/datanommer_datagrepper/pg_timescaledb.rst +++ b/docs/datanommer_datagrepper/pg_timescaledb.rst @@ -121,3 +121,48 @@ Open questions It looks like the timescaledb folks are involved enough in postgresql itself that we think things will work, but we have not had on-hands experience with it. + + +Patch +----- + +Here is the patch that needs to be applied to ``datanommer/models/__init__.py`` +to get it working with timescaledb's adjusted postgresql model. + +:: + + diff --git a/datanommer.models/datanommer/models/__init__.py b/datanommer.models/datanommer/models/__init__.py + index ada58fa..7780433 100644 + --- a/datanommer.models/datanommer/models/__init__.py + +++ b/datanommer.models/datanommer/models/__init__.py + @@ -192,11 +192,11 @@ def add(envelope): + # These two blocks would normally be a simple "obj.users.append(user)" kind + # of statement, but here we drop down out of sqlalchemy's ORM and into the + # sql abstraction in order to gain a little performance boost. + - values = [{'username': username, 'msg': obj.id} for username in usernames] + + values = [{'username': username, 'msg': obj.id, 'timestamp': timestamp} for username in usernames] + if values: + session.execute(user_assoc_table.insert(), values) + + - values = [{'package': package, 'msg': obj.id} for package in packages] + + values = [{'package': package, 'msg': obj.id, 'timestamp': timestamp} for package in packages] + if values: + session.execute(pack_assoc_table.insert(), values) + + @@ -279,14 +279,17 @@ class BaseMessage(object): + source_version=self.source_version, + ) + + + + user_assoc_table = Table('user_messages', DeclarativeBase.metadata, + Column('username', UnicodeText, ForeignKey('user.name')), + - Column('msg', Integer, ForeignKey('messages.id')) + + Column('msg', Integer, ForeignKey('messages.id')), + + Column('timestamp', Integer, ForeignKey('messages.timestamp')), + ) + + pack_assoc_table = Table('package_messages', DeclarativeBase.metadata, + Column('package', UnicodeText, ForeignKey('package.name')), + Column('msg', Integer, ForeignKey('messages.id')) + + Column('timestamp', Integer, ForeignKey('messages.timestamp')), + )