Bug #4367 » 0001-Fixed-enumeration-precalculation-for-non-arrays.patch
lib/mentat/services/eventstorage.py | ||
---|---|---|
748 | 748 |
for column_name in ENUM_TABLES: |
749 | 749 |
create_table_sqls.append( |
750 | 750 |
psycopg2.sql.SQL( |
751 |
"CREATE TABLE IF NOT EXISTS {}(data text UNIQUE, last_seen TIMESTAMP WITHOUT TIME ZONE)"
|
|
751 |
"CREATE TABLE IF NOT EXISTS {} (data text UNIQUE NOT NULL, last_seen TIMESTAMP WITHOUT TIME ZONE NOT NULL)"
|
|
752 | 752 |
).format( |
753 | 753 |
psycopg2.sql.Identifier( |
754 | 754 |
"enum_{}".format(column_name) |
... | ... | |
1056 | 1056 |
enum_table = "enum_{}".format(column) |
1057 | 1057 |
try: |
1058 | 1058 |
# Build and execute query for updating enumeration table. |
1059 |
enum_query = psycopg2.sql.SQL("INSERT INTO {} (").format(psycopg2.sql.Identifier(enum_table)) |
|
1059 |
enum_query = psycopg2.sql.SQL("INSERT INTO {} (SELECT * FROM (").format(psycopg2.sql.Identifier(enum_table))
|
|
1060 | 1060 |
if column not in ('cesnet_eventclass', 'cesnet_eventseverity'): |
1061 | 1061 |
enum_query += psycopg2.sql.SQL("SELECT unnest({})").format(psycopg2.sql.Identifier(column)) |
1062 | 1062 |
else: |
1063 | 1063 |
enum_query += psycopg2.sql.SQL("SELECT {}").format(psycopg2.sql.Identifier(column)) |
1064 |
enum_query += psycopg2.sql.SQL(' AS data, max(cesnet_storagetime) AS last_seen FROM events WHERE cesnet_storagetime >= COALESCE((SELECT max(last_seen) FROM {}), (SELECT min(cesnet_storagetime) FROM events)) GROUP BY data) ON CONFLICT (data) DO UPDATE SET last_seen = excluded.last_seen').format(psycopg2.sql.Identifier(enum_table)) |
|
1064 |
enum_query += psycopg2.sql.SQL(' AS data, max(cesnet_storagetime) AS last_seen FROM events WHERE cesnet_storagetime >= COALESCE((SELECT max(last_seen) FROM {}), (SELECT min(cesnet_storagetime) FROM events)) GROUP BY data) AS enum WHERE data IS NOT NULL) ON CONFLICT (data) DO UPDATE SET last_seen = excluded.last_seen').format(psycopg2.sql.Identifier(enum_table))
|
|
1065 | 1065 |
self.cursor.execute(enum_query) |
1066 | 1066 |
self.commit() |
1067 | 1067 |