9
9
10
10
logger = singer .get_logger ()
11
11
12
- postgres_keywords = [k .lower () for k in [
13
- 'ALL' ,
14
- 'ANALYSE' ,
15
- 'ANALYZE' ,
16
- 'AND' ,
17
- 'ANY' ,
18
- 'ARRAY' ,
19
- 'AS' ,
20
- 'ASC' ,
21
- 'ASYMMETRIC' ,
22
- 'AUTHORIZATION' ,
23
- 'BETWEEN' ,
24
- 'BINARY' ,
25
- 'BOTH' ,
26
- 'CASE' ,
27
- 'CAST' ,
28
- 'CHECK' ,
29
- 'COLLATE' ,
30
- 'COLUMN' ,
31
- 'CONSTRAINT' ,
32
- 'CREATE' ,
33
- 'CROSS' ,
34
- 'CURRENT_DATE' ,
35
- 'CURRENT_ROLE' ,
36
- 'CURRENT_TIME' ,
37
- 'CURRENT_TIMESTAMP' ,
38
- 'CURRENT_USER' ,
39
- 'DEFAULT' ,
40
- 'DEFERRABLE' ,
41
- 'DESC' ,
42
- 'DISTINCT' ,
43
- 'DO' ,
44
- 'ELSE' ,
45
- 'END' ,
46
- 'EXCEPT' ,
47
- 'FALSE' ,
48
- 'FOR' ,
49
- 'FOREIGN' ,
50
- 'FREEZE' ,
51
- 'FROM' ,
52
- 'FULL' ,
53
- 'GRANT' ,
54
- 'GROUP' ,
55
- 'HAVING' ,
56
- 'ILIKE' ,
57
- 'IN' ,
58
- 'INITIALLY' ,
59
- 'INNER' ,
60
- 'INTERSECT' ,
61
- 'INTO' ,
62
- 'IS' ,
63
- 'ISNULL' ,
64
- 'JOIN' ,
65
- 'LEADING' ,
66
- 'LEFT' ,
67
- 'LIKE' ,
68
- 'LIMIT' ,
69
- 'LOCALTIME' ,
70
- 'LOCALTIMESTAMP' ,
71
- 'NATURAL' ,
72
- 'NEW' ,
73
- 'NOT' ,
74
- 'NOTNULL' ,
75
- 'NULL' ,
76
- 'OFF' ,
77
- 'OFFSET' ,
78
- 'OLD' ,
79
- 'ON' ,
80
- 'ONLY' ,
81
- 'OR' ,
82
- 'ORDER' ,
83
- 'OUTER' ,
84
- 'OVERLAPS' ,
85
- 'PLACING' ,
86
- 'PRIMARY' ,
87
- 'REFERENCES' ,
88
- 'RIGHT' ,
89
- 'SELECT' ,
90
- 'SESSION_USER' ,
91
- 'SIMILAR' ,
92
- 'SOME' ,
93
- 'SYMMETRIC' ,
94
- 'TABLE' ,
95
- 'THEN' ,
96
- 'TO' ,
97
- 'TRAILING' ,
98
- 'TRUE' ,
99
- 'UNION' ,
100
- 'UNIQUE' ,
101
- 'USER' ,
102
- 'USING' ,
103
- 'VERBOSE' ,
104
- 'WHEN' ,
105
- 'WHERE'
106
- ]]
107
-
108
12
109
13
def column_type (schema_property ):
110
14
property_type = schema_property ['type' ]
@@ -128,13 +32,11 @@ def inflect_column_name(name):
128
32
129
33
130
34
def safe_column_name (name ):
131
- if name .lower () in postgres_keywords :
132
- return '"{}"' .format (name )
133
- return name
35
+ return '"{}"' .format (name )
134
36
135
37
136
38
def column_clause (name , schema_property ):
137
- return '{} {}' .format (name , column_type (schema_property ))
39
+ return '{} {}' .format (safe_column_name ( name ) , column_type (schema_property ))
138
40
139
41
140
42
def flatten_key (k , parent_key , sep ):
@@ -147,7 +49,7 @@ def flatten_key(k, parent_key, sep):
147
49
(reduced_key if len (reduced_key ) > 1 else inflected_key [reducer_index ][0 :3 ]).lower ()
148
50
reducer_index += 1
149
51
150
- return safe_column_name ( sep .join (inflected_key ) )
52
+ return sep .join (inflected_key )
151
53
152
54
153
55
def flatten_schema (d , parent_key = [], sep = '__' ):
@@ -188,7 +90,7 @@ def flatten_record(d, parent_key=[], sep='__'):
188
90
189
91
190
92
def primary_column_names (stream_schema_message ):
191
- return [inflect_column_name (p ) for p in stream_schema_message ['key_properties' ]]
93
+ return [safe_column_name ( inflect_column_name (p ) ) for p in stream_schema_message ['key_properties' ]]
192
94
193
95
194
96
class DbSync :
@@ -312,7 +214,7 @@ def drop_temp_table(self):
312
214
return "DROP TABLE {}" .format (temp_table )
313
215
314
216
def column_names (self ):
315
- return [name for name in self .flatten_schema ]
217
+ return [safe_column_name ( name ) for name in self .flatten_schema ]
316
218
317
219
def create_table_query (self , is_temporary = False ):
318
220
stream_schema_message = self .stream_schema_message
0 commit comments