@@ -183,20 +183,21 @@ def sql_setPkey(self):
183
183
self .schematable , self .origPkeyName , self .colPkey )
184
184
185
185
def sql_currentView (self ):
186
- cols = "," .join (self .columns )
186
+ cols = self . colPkey + "," + "," .join (self .columns )
187
187
188
188
return u"CREATE VIEW %(view)s AS SELECT %(cols)s FROM %(schematable)s WHERE %(end)s IS NULL;" % \
189
189
{'view' : self .view , 'cols' : cols , 'schematable' : self .schematable , 'end' : self .colEnd }
190
190
191
191
def sql_functions (self ):
192
192
cols = "," .join (self .columns )
193
+ all_cols = self .colPkey + "," + "," .join (self .columns )
193
194
old_cols = "," .join ([u"OLD." + x for x in self .columns ])
194
195
195
196
sql = u"""
196
197
CREATE OR REPLACE FUNCTION %(func_at_time)s(timestamp)
197
198
RETURNS SETOF %(view)s AS
198
199
$$
199
- SELECT %(cols )s FROM %(schematable)s WHERE
200
+ SELECT %(all_cols )s FROM %(schematable)s WHERE
200
201
( SELECT CASE WHEN %(end)s IS NULL THEN (%(start)s <= $1) ELSE (%(start)s <= $1 AND %(end)s > $1) END );
201
202
$$
202
203
LANGUAGE 'sql';
@@ -232,7 +233,7 @@ def sql_functions(self):
232
233
$$
233
234
LANGUAGE 'plpgsql';""" % {'view' : self .view , 'schematable' : self .schematable , 'cols' : cols , 'oldcols' : old_cols ,
234
235
'start' : self .colStart , 'end' : self .colEnd , 'user' : self .colUser , 'func_at_time' : self .func_at_time ,
235
- 'func_update' : self .func_update , 'func_insert' : self .func_insert }
236
+ 'all_cols' : all_cols , ' func_update' : self .func_update , 'func_insert' : self .func_insert }
236
237
return sql
237
238
238
239
def sql_triggers (self ):
@@ -251,18 +252,20 @@ def sql_triggers(self):
251
252
252
253
def sql_updatesView (self ):
253
254
cols = "," .join (self .columns )
255
+ return_cols = self .colPkey + "," + "," .join (self .columns )
254
256
new_cols = "," .join ([u"NEW." + x for x in self .columns ])
255
257
assign_cols = "," .join ([u"%s = NEW.%s" % (x , x ) for x in self .columns ])
256
258
257
259
return u"""
258
260
CREATE OR REPLACE RULE "_DELETE" AS ON DELETE TO %(view)s DO INSTEAD
259
261
DELETE FROM %(schematable)s WHERE %(origpkey)s = old.%(origpkey)s;
260
262
CREATE OR REPLACE RULE "_INSERT" AS ON INSERT TO %(view)s DO INSTEAD
261
- INSERT INTO %(schematable)s (%(cols)s) VALUES (%(newcols)s) RETURNING %(cols )s;
263
+ INSERT INTO %(schematable)s (%(cols)s) VALUES (%(newcols)s) RETURNING %(return_cols )s;
262
264
CREATE OR REPLACE RULE "_UPDATE" AS ON UPDATE TO %(view)s DO INSTEAD
263
265
UPDATE %(schematable)s SET %(assign)s WHERE %(origpkey)s = NEW.%(origpkey)s;""" % {'view' : self .view ,
264
266
'schematable' : self .schematable ,
265
267
'cols' : cols , 'newcols' : new_cols ,
268
+ 'return_cols' : return_cols ,
266
269
'assign' : assign_cols ,
267
270
'origpkey' : self .colOrigPkey }
268
271
0 commit comments