purview 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +6 -4
- data/TODO +12 -55
- data/lib/purview/databases/base.rb +2 -2
- data/lib/purview/databases/mssql.rb +18 -6
- data/lib/purview/databases/mysql.rb +19 -7
- data/lib/purview/databases/postgresql.rb +18 -6
- data/lib/purview/databases/sqlite.rb +18 -6
- data/lib/purview/mixins/helpers.rb +1 -1
- data/lib/purview/pullers/base_sql.rb +1 -1
- data/lib/purview/tables/table_metadata.rb +5 -0
- data/lib/purview/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 10737dc7946dc6ed6233299ef4cc18042ed7ab1f5175478ae4a954f8e4c611a0
|
4
|
+
data.tar.gz: 5330e8e05814176ec27c623f5d98ec5af6186df0f2b8f4a8c702774874043fd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7444fe8eafec51555096fe3c2f03551bf98d135173610c7c48161927f12c4229db29a2b762ad63e4e81f06cbf10263793c1cf025d83452812147dd8cd0eb0500
|
7
|
+
data.tar.gz: ea70373933da78d6e634baf8942765bb82597558561f2397e723e08ca9e0a7068dbfaf59c876d51ba56f39116a974af1f61d37a8bfb291f8a1c34c7bc204efe1
|
data/.gitignore
CHANGED
@@ -13,23 +13,25 @@
|
|
13
13
|
tags
|
14
14
|
tags.*
|
15
15
|
|
16
|
-
## Specific to RubyMotion
|
16
|
+
## Specific to RubyMotion
|
17
17
|
.dat*
|
18
18
|
.repl_history
|
19
19
|
build/
|
20
20
|
|
21
|
-
## Documentation cache and generated files
|
21
|
+
## Documentation cache and generated files
|
22
22
|
/.yardoc/
|
23
23
|
/_yardoc/
|
24
24
|
/doc/
|
25
25
|
/rdoc/
|
26
26
|
|
27
|
-
## Environment normalisation
|
27
|
+
## Environment normalisation
|
28
28
|
/.bundle/
|
29
29
|
/lib/bundler/man/
|
30
30
|
|
31
|
-
## Ruby artifacts
|
31
|
+
## Ruby artifacts
|
32
32
|
.ruby-gemset
|
33
33
|
.ruby-version
|
34
34
|
.rvmrc
|
35
35
|
Gemfile.lock
|
36
|
+
|
37
|
+
test.rb
|
data/TODO
CHANGED
@@ -1,55 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
d 1494850714 1495046648 Finish SQLite3 raw-connections
|
14
|
-
d 1495046665 1495046689 Fix JDBC driver configuration
|
15
|
-
d 1495051831 1495070248 Code-review recent changes and merge
|
16
|
-
d 1450000000 1450000000 Handle blank values a bit more intelligently (all blanks -> nil)
|
17
|
-
d 1450000000 1450000000 Deal w/ NULL values
|
18
|
-
d 1450000000 1450000000 Deal w/ BOOL values
|
19
|
-
d 1450000000 1450000000 Build out MVP for PostgreSQL loader
|
20
|
-
d 1450000000 1450000000 Add windowing to pulls (simulate w/ 2 different data-files if necessary)
|
21
|
-
d 1450000000 1450000000 Include [window] timestamps in query-string for pull[er]
|
22
|
-
d 1450000000 1450000000 Figure out an intelligent way to solve the chicken <-> egg problem for `table_metadata`
|
23
|
-
d 1450000000 1450000000 Fail fast if there are no candidate tables (`next_table`)
|
24
|
-
d 1450000000 1450000000 Ensure that the puller does not try to go into the future (`next_window`)
|
25
|
-
d 1450000000 1450000000 Add in a primitive logging facility (can be temporary)
|
26
|
-
d 1450000000 1450000000 Enhance `next_table_sql`
|
27
|
-
d 1450000000 1450000000 Lock tables (feeds) during pull, parse and load
|
28
|
-
d 1450000000 1450000000 Verify table-locking mechanism behaves as expected
|
29
|
-
d 1450000000 1450000000 Ability to drop a table
|
30
|
-
d 1450000000 1450000000 Reorder args: "table, table_name" to: "table_name, table"
|
31
|
-
d 1450000000 1450000000 Reorder args: "table, index_name, *columns" to "index_name, table, *columns"
|
32
|
-
d 1450000000 1450000000 Ability to create an index
|
33
|
-
d 1450000000 1450000000 Ability to drop an index
|
34
|
-
d 1450000000 1450000000 Indices on `created_at` and `updated_at` columns
|
35
|
-
d 1450000000 1450000000 Gracefully handle table {,un}locking in case of error
|
36
|
-
d 1450000000 1450000000 Add debugging code
|
37
|
-
d 1450000000 1450000000 Raise no-window & no-table exceptions (making them catchable upstream)
|
38
|
-
d 1450000000 1450000000 Minimize race-condition around table-locking (use where on UPDATE, raise if zero rows are updated)
|
39
|
-
d 1450000000 1450000000 Log number of delete, inserts and updates in `loader`
|
40
|
-
d 1450000000 1450000000 `load_temporary_table` should bomb if there is data outside the window
|
41
|
-
d 1450000000 1450000000 Delete from outside window where id in temporary table
|
42
|
-
d 1450000000 1450000000 Rename `data` to `rows` in `execute`
|
43
|
-
d 1450000000 1450000000 Rename `Postgres` to `PostgreSQL`
|
44
|
-
d 1450000000 1450000000 Finish PostgreSQL support (requires `pg` gem)
|
45
|
-
d 1450000000 1450000000 Finish MySQL support (requires `mysql2` gem)
|
46
|
-
d 1450000000 1450000000 Usage/configuration examples in README.md
|
47
|
-
d 1450000000 1450000000 Create SQL-puller(s)
|
48
|
-
d 1450000000 1450000000 Introduce [SQL] dialect(s)
|
49
|
-
d 1450000000 1450000000 Fix JRuby bundle/build
|
50
|
-
d 1450000000 1450000000 Fall back to logged in user if no [database-]username is provided
|
51
|
-
d 1450000000 1450000000 Create class to encapulate `table_metadata` (in order to clean up the logic in the `Database` class(es))
|
52
|
-
d 1450000000 1450000000 Rename columns during pull/parse `source_name` & `target_name` perhaps? Maybe create a new type of column?
|
53
|
-
d 1450000000 1495070826 Add support for SQLite3
|
54
|
-
d 1494850696 1495070857 Add TODOs from $HOME\purview-TODO
|
55
|
-
d 1495070065 1495072292 Finish MSSQL built-out
|
1
|
+
f510dd97-ffd2-11e8-9c7a-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544814215 1544814215 a Add `create` functionality to `Database(s)`
|
2
|
+
af4b8882-ffd8-11e8-8ecb-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816675 1544816675 a Add COPY `def copy(sql)` support to PostgreSQL connection
|
3
|
+
b30f4757-ffd8-11e8-afb9-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816681 1544816681 a Leverage COPY support for PostgreSQL pulls
|
4
|
+
b9fec1b8-ffd8-11e8-973b-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816693 1544816693 a Build out change-log, canonical, fact and aggregate tables (and related transforms)
|
5
|
+
bef458cc-ffd8-11e8-88b6-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816701 1544816701 a Make re-pull window configurable (do this automatically once up to current?)
|
6
|
+
c2c85f85-ffd8-11e8-b2c3-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816708 1544816708 a Add schema management capabilities (detect schema-deltas and suggestion modifications)
|
7
|
+
c70ab22b-ffd8-11e8-8c9a-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816715 1544816715 a Refactor mutator methods to be globally available (e.g. quoted -> Quote, etc.)
|
8
|
+
cc6c3091-ffd8-11e8-b484-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816724 1544816724 a Add parallel pull(s) support
|
9
|
+
d1ecf75e-ffd8-11e8-87cf-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544816733 1544816733 a Add support for `Consumers`
|
10
|
+
683a87f8-ffe3-11e8-8e33-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544821280 1544821280 a Fix SQLite3 (it doesn't appear to work)
|
11
|
+
0aae0fab-ffe4-11e8-ae70-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544821553 1544821553 a Fix PostgreSQL, it doesn't appear to work
|
12
|
+
c3b21ac5-ffe6-11e8-802b-8c8590c6ab8c 00000000-0000-0000-0000-000000000000 jzaleski jzaleski 1544822722 1544822722 a Need to add time-zone support to adjust SQL puller results
|
@@ -395,7 +395,7 @@ module Purview
|
|
395
395
|
|
396
396
|
def get_table_metadata_value(connection, table, column)
|
397
397
|
row = connection.execute(get_table_metadata_value_sql(table, column)).rows[0]
|
398
|
-
raise CouldNotFindMetadataForTable.new(table) \
|
398
|
+
raise Purview::Exceptions::CouldNotFindMetadataForTable.new(table) \
|
399
399
|
unless row
|
400
400
|
value = row[column.name]
|
401
401
|
value && column.type.parse(value)
|
@@ -463,7 +463,7 @@ module Purview
|
|
463
463
|
def set_table_metadata_value(connection, table, column, value)
|
464
464
|
rows_affected = \
|
465
465
|
connection.execute(set_table_metadata_value_sql(table, column, value)).rows_affected
|
466
|
-
raise CouldNotUpdateMetadataForTable.new(table) \
|
466
|
+
raise Purview::Exceptions::CouldNotUpdateMetadataForTable.new(table) \
|
467
467
|
if zero?(rows_affected)
|
468
468
|
end
|
469
469
|
|
@@ -35,10 +35,12 @@ module Purview
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def disable_table_sql(table)
|
38
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
38
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
39
39
|
table_metadata_table.name,
|
40
40
|
table_metadata_table.enabled_at_column.name,
|
41
41
|
null_value,
|
42
|
+
table_metadata_table.last_updated_at_column.name,
|
43
|
+
quoted(Time.now.utc),
|
42
44
|
table_metadata_table.table_name_column.name,
|
43
45
|
quoted(table.name),
|
44
46
|
table_metadata_table.enabled_at_column.name,
|
@@ -58,10 +60,12 @@ module Purview
|
|
58
60
|
end
|
59
61
|
|
60
62
|
def enable_table_sql(table, timestamp)
|
61
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
63
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
62
64
|
table_metadata_table.name,
|
63
65
|
table_metadata_table.enabled_at_column.name,
|
64
66
|
quoted(timestamp),
|
67
|
+
table_metadata_table.last_updated_at_column.name,
|
68
|
+
quoted(Time.now.utc),
|
65
69
|
table_metadata_table.table_name_column.name,
|
66
70
|
quoted(table.name),
|
67
71
|
table_metadata_table.enabled_at_column.name,
|
@@ -95,10 +99,12 @@ module Purview
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def initialize_table_sql(table, timestamp)
|
98
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
102
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
99
103
|
table_metadata_table.name,
|
100
104
|
table_metadata_table.max_timestamp_pulled_column.name,
|
101
105
|
quoted(timestamp),
|
106
|
+
table_metadata_table.last_updated_at_column.name,
|
107
|
+
quoted(Time.now.utc),
|
102
108
|
table_metadata_table.table_name_column.name,
|
103
109
|
quoted(table.name),
|
104
110
|
table_metadata_table.max_timestamp_pulled_column.name,
|
@@ -126,10 +132,12 @@ module Purview
|
|
126
132
|
end
|
127
133
|
|
128
134
|
def lock_table_sql(table, timestamp)
|
129
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
135
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
130
136
|
table_metadata_table.name,
|
131
137
|
table_metadata_table.locked_at_column.name,
|
132
138
|
quoted(timestamp),
|
139
|
+
table_metadata_table.last_updated_at_column.name,
|
140
|
+
quoted(Time.now.utc),
|
133
141
|
table_metadata_table.table_name_column.name,
|
134
142
|
quoted(table.name),
|
135
143
|
table_metadata_table.locked_at_column.name,
|
@@ -149,10 +157,12 @@ module Purview
|
|
149
157
|
end
|
150
158
|
|
151
159
|
def set_table_metadata_value_sql(table, column, value)
|
152
|
-
'UPDATE %s SET %s = %s WHERE %s = %s' % [
|
160
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s' % [
|
153
161
|
table_metadata_table.name,
|
154
162
|
column.name,
|
155
163
|
quoted(value),
|
164
|
+
table_metadata_table.last_updated_at_column.name,
|
165
|
+
quoted(Time.now.utc),
|
156
166
|
table_metadata_table.table_name_column.name,
|
157
167
|
quoted(table.name),
|
158
168
|
]
|
@@ -166,10 +176,12 @@ module Purview
|
|
166
176
|
end
|
167
177
|
|
168
178
|
def unlock_table_sql(table)
|
169
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
179
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
170
180
|
table_metadata_table.name,
|
171
181
|
table_metadata_table.locked_at_column.name,
|
172
182
|
null_value,
|
183
|
+
table_metadata_table.last_updated_at_column.name,
|
184
|
+
quoted(Time.now.utc),
|
173
185
|
table_metadata_table.table_name_column.name,
|
174
186
|
quoted(table.name),
|
175
187
|
table_metadata_table.locked_at_column.name,
|
@@ -39,10 +39,12 @@ module Purview
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def disable_table_sql(table)
|
42
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
42
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
43
43
|
table_metadata_table.name,
|
44
44
|
table_metadata_table.enabled_at_column.name,
|
45
45
|
null_value,
|
46
|
+
table_metadata_table.last_updated_at_column.name,
|
47
|
+
quoted(Time.now.utc),
|
46
48
|
table_metadata_table.table_name_column.name,
|
47
49
|
quoted(table.name),
|
48
50
|
table_metadata_table.enabled_at_column.name,
|
@@ -62,10 +64,12 @@ module Purview
|
|
62
64
|
end
|
63
65
|
|
64
66
|
def enable_table_sql(table, timestamp)
|
65
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
67
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
66
68
|
table_metadata_table.name,
|
67
69
|
table_metadata_table.enabled_at_column.name,
|
68
70
|
quoted(timestamp),
|
71
|
+
table_metadata_table.last_updated_at_column.name,
|
72
|
+
quoted(Time.now.utc),
|
69
73
|
table_metadata_table.table_name_column.name,
|
70
74
|
quoted(table.name),
|
71
75
|
table_metadata_table.enabled_at_column.name,
|
@@ -81,7 +85,7 @@ module Purview
|
|
81
85
|
end
|
82
86
|
|
83
87
|
def ensure_table_metadata_exists_for_table_sql(table)
|
84
|
-
'INSERT IGNORE INTO %s VALUES (%s, NULL, NULL, NULL, NULL)' % [
|
88
|
+
'INSERT IGNORE INTO %s VALUES (%s, NULL, NULL, NULL, NULL, NULL)' % [
|
85
89
|
table_metadata_table.name,
|
86
90
|
quoted(table.name),
|
87
91
|
]
|
@@ -95,10 +99,12 @@ module Purview
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def initialize_table_sql(table, timestamp)
|
98
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
102
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
99
103
|
table_metadata_table.name,
|
100
104
|
table_metadata_table.max_timestamp_pulled_column.name,
|
101
105
|
quoted(timestamp),
|
106
|
+
table_metadata_table.last_updated_at_column.name,
|
107
|
+
quoted(Time.now.utc),
|
102
108
|
table_metadata_table.table_name_column.name,
|
103
109
|
quoted(table.name),
|
104
110
|
table_metadata_table.max_timestamp_pulled_column.name,
|
@@ -119,10 +125,12 @@ module Purview
|
|
119
125
|
end
|
120
126
|
|
121
127
|
def lock_table_sql(table, timestamp)
|
122
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
128
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
123
129
|
table_metadata_table.name,
|
124
130
|
table_metadata_table.locked_at_column.name,
|
125
131
|
quoted(timestamp),
|
132
|
+
table_metadata_table.last_updated_at_column.name,
|
133
|
+
quoted(Time.now.utc),
|
126
134
|
table_metadata_table.table_name_column.name,
|
127
135
|
quoted(table.name),
|
128
136
|
table_metadata_table.locked_at_column.name,
|
@@ -142,10 +150,12 @@ module Purview
|
|
142
150
|
end
|
143
151
|
|
144
152
|
def set_table_metadata_value_sql(table, column, value)
|
145
|
-
'UPDATE %s SET %s = %s WHERE %s = %s' % [
|
153
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s' % [
|
146
154
|
table_metadata_table.name,
|
147
155
|
column.name,
|
148
156
|
quoted(value),
|
157
|
+
table_metadata_table.last_updated_at_column.name,
|
158
|
+
quoted(Time.now.utc),
|
149
159
|
table_metadata_table.table_name_column.name,
|
150
160
|
quoted(table.name),
|
151
161
|
]
|
@@ -159,10 +169,12 @@ module Purview
|
|
159
169
|
end
|
160
170
|
|
161
171
|
def unlock_table_sql(table)
|
162
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
172
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
163
173
|
table_metadata_table.name,
|
164
174
|
table_metadata_table.locked_at_column.name,
|
165
175
|
null_value,
|
176
|
+
table_metadata_table.last_updated_at_column.name,
|
177
|
+
quoted(Time.now.utc),
|
166
178
|
table_metadata_table.table_name_column.name,
|
167
179
|
quoted(table.name),
|
168
180
|
table_metadata_table.locked_at_column.name,
|
@@ -35,10 +35,12 @@ module Purview
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def disable_table_sql(table)
|
38
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
38
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
39
39
|
table_metadata_table.name,
|
40
40
|
table_metadata_table.enabled_at_column.name,
|
41
41
|
null_value,
|
42
|
+
table_metadata_table.last_updated_at_column.name,
|
43
|
+
quoted(Time.now.utc),
|
42
44
|
table_metadata_table.table_name_column.name,
|
43
45
|
quoted(table.name),
|
44
46
|
table_metadata_table.enabled_at_column.name,
|
@@ -58,10 +60,12 @@ module Purview
|
|
58
60
|
end
|
59
61
|
|
60
62
|
def enable_table_sql(table, timestamp)
|
61
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
63
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
62
64
|
table_metadata_table.name,
|
63
65
|
table_metadata_table.enabled_at_column.name,
|
64
66
|
quoted(timestamp),
|
67
|
+
table_metadata_table.last_updated_at_column.name,
|
68
|
+
quoted(Time.now.utc),
|
65
69
|
table_metadata_table.table_name_column.name,
|
66
70
|
quoted(table.name),
|
67
71
|
table_metadata_table.enabled_at_column.name,
|
@@ -95,10 +99,12 @@ module Purview
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def initialize_table_sql(table, timestamp)
|
98
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
102
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
99
103
|
table_metadata_table.name,
|
100
104
|
table_metadata_table.max_timestamp_pulled_column.name,
|
101
105
|
quoted(timestamp),
|
106
|
+
table_metadata_table.last_updated_at_column.name,
|
107
|
+
quoted(Time.now.utc),
|
102
108
|
table_metadata_table.table_name_column.name,
|
103
109
|
quoted(table.name),
|
104
110
|
table_metadata_table.max_timestamp_pulled_column.name,
|
@@ -126,10 +132,12 @@ module Purview
|
|
126
132
|
end
|
127
133
|
|
128
134
|
def lock_table_sql(table, timestamp)
|
129
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
135
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
130
136
|
table_metadata_table.name,
|
131
137
|
table_metadata_table.locked_at_column.name,
|
132
138
|
quoted(timestamp),
|
139
|
+
table_metadata_table.last_updated_at_column.name,
|
140
|
+
quoted(Time.now.utc),
|
133
141
|
table_metadata_table.table_name_column.name,
|
134
142
|
quoted(table.name),
|
135
143
|
table_metadata_table.locked_at_column.name,
|
@@ -149,10 +157,12 @@ module Purview
|
|
149
157
|
end
|
150
158
|
|
151
159
|
def set_table_metadata_value_sql(table, column, value)
|
152
|
-
'UPDATE %s SET %s = %s WHERE %s = %s' % [
|
160
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s' % [
|
153
161
|
table_metadata_table.name,
|
154
162
|
column.name,
|
155
163
|
quoted(value),
|
164
|
+
table_metadata_table.last_updated_at_column.name,
|
165
|
+
quoted(Time.now.utc),
|
156
166
|
table_metadata_table.table_name_column.name,
|
157
167
|
quoted(table.name),
|
158
168
|
]
|
@@ -166,10 +176,12 @@ module Purview
|
|
166
176
|
end
|
167
177
|
|
168
178
|
def unlock_table_sql(table)
|
169
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
179
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
170
180
|
table_metadata_table.name,
|
171
181
|
table_metadata_table.locked_at_column.name,
|
172
182
|
null_value,
|
183
|
+
table_metadata_table.last_updated_at_column.name,
|
184
|
+
quoted(Time.now.utc),
|
173
185
|
table_metadata_table.table_name_column.name,
|
174
186
|
quoted(table.name),
|
175
187
|
table_metadata_table.locked_at_column.name,
|
@@ -35,10 +35,12 @@ module Purview
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def disable_table_sql(table)
|
38
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
38
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
39
39
|
table_metadata_table.name,
|
40
40
|
table_metadata_table.enabled_at_column.name,
|
41
41
|
null_value,
|
42
|
+
table_metadata_table.last_updated_at_column.name,
|
43
|
+
quoted(Time.now.utc),
|
42
44
|
table_metadata_table.table_name_column.name,
|
43
45
|
quoted(table.name),
|
44
46
|
table_metadata_table.enabled_at_column.name,
|
@@ -58,10 +60,12 @@ module Purview
|
|
58
60
|
end
|
59
61
|
|
60
62
|
def enable_table_sql(table, timestamp)
|
61
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
63
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
62
64
|
table_metadata_table.name,
|
63
65
|
table_metadata_table.enabled_at_column.name,
|
64
66
|
quoted(timestamp),
|
67
|
+
table_metadata_table.last_updated_at_column.name,
|
68
|
+
quoted(Time.now.utc),
|
65
69
|
table_metadata_table.table_name_column.name,
|
66
70
|
quoted(table.name),
|
67
71
|
table_metadata_table.enabled_at_column.name,
|
@@ -95,10 +99,12 @@ module Purview
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def initialize_table_sql(table, timestamp)
|
98
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
102
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
99
103
|
table_metadata_table.name,
|
100
104
|
table_metadata_table.max_timestamp_pulled_column.name,
|
101
105
|
quoted(timestamp),
|
106
|
+
table_metadata_table.last_updated_at_column.name,
|
107
|
+
quoted(Time.now.utc),
|
102
108
|
table_metadata_table.table_name_column.name,
|
103
109
|
quoted(table.name),
|
104
110
|
table_metadata_table.max_timestamp_pulled_column.name,
|
@@ -119,10 +125,12 @@ module Purview
|
|
119
125
|
end
|
120
126
|
|
121
127
|
def lock_table_sql(table, timestamp)
|
122
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NULL' % [
|
128
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NULL' % [
|
123
129
|
table_metadata_table.name,
|
124
130
|
table_metadata_table.locked_at_column.name,
|
125
131
|
quoted(timestamp),
|
132
|
+
table_metadata_table.last_updated_at_column.name,
|
133
|
+
quoted(Time.now.utc),
|
126
134
|
table_metadata_table.table_name_column.name,
|
127
135
|
quoted(table.name),
|
128
136
|
table_metadata_table.locked_at_column.name,
|
@@ -142,10 +150,12 @@ module Purview
|
|
142
150
|
end
|
143
151
|
|
144
152
|
def set_table_metadata_value_sql(table, column, value)
|
145
|
-
'UPDATE %s SET %s = %s WHERE %s = %s' % [
|
153
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s' % [
|
146
154
|
table_metadata_table.name,
|
147
155
|
column.name,
|
148
156
|
quoted(value),
|
157
|
+
table_metadata_table.last_updated_at_column.name,
|
158
|
+
quoted(Time.now.utc),
|
149
159
|
table_metadata_table.table_name_column.name,
|
150
160
|
quoted(table.name),
|
151
161
|
]
|
@@ -159,10 +169,12 @@ module Purview
|
|
159
169
|
end
|
160
170
|
|
161
171
|
def unlock_table_sql(table)
|
162
|
-
'UPDATE %s SET %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
172
|
+
'UPDATE %s SET %s = %s, %s = %s WHERE %s = %s AND %s IS NOT NULL' % [
|
163
173
|
table_metadata_table.name,
|
164
174
|
table_metadata_table.locked_at_column.name,
|
165
175
|
null_value,
|
176
|
+
table_metadata_table.last_updated_at_column.name,
|
177
|
+
quoted(Time.now.utc),
|
166
178
|
table_metadata_table.table_name_column.name,
|
167
179
|
quoted(table.name),
|
168
180
|
table_metadata_table.locked_at_column.name,
|
@@ -8,6 +8,7 @@ module Purview
|
|
8
8
|
table_name_column,
|
9
9
|
enabled_at_column,
|
10
10
|
last_pulled_at_column,
|
11
|
+
last_updated_at_column,
|
11
12
|
locked_at_column,
|
12
13
|
max_timestamp_pulled_column,
|
13
14
|
],
|
@@ -23,6 +24,10 @@ module Purview
|
|
23
24
|
Purview::Columns::Timestamp.new(:last_pulled_at)
|
24
25
|
end
|
25
26
|
|
27
|
+
def last_updated_at_column
|
28
|
+
Purview::Columns::Timestamp.new(:last_updated_at)
|
29
|
+
end
|
30
|
+
|
26
31
|
def locked_at_column
|
27
32
|
Purview::Columns::Timestamp.new(:locked_at)
|
28
33
|
end
|
data/lib/purview/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: purview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan W. Zaleski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -243,7 +243,7 @@ requirements:
|
|
243
243
|
- "`bunny` or `march_hare` gem (if consuming from RabbitMQ)"
|
244
244
|
- "`ruby-kafka` or `jruby-kafka` gem (if consuming from Kafka)"
|
245
245
|
rubyforge_project:
|
246
|
-
rubygems_version: 2.6
|
246
|
+
rubygems_version: 2.7.6
|
247
247
|
signing_key:
|
248
248
|
specification_version: 4
|
249
249
|
summary: A framework created to simplify data-warehousing
|