Skip to content

Commit c924858

Browse files
authored
Merge pull request #351 from CourseOrchestra/fix-timestamp-view
fix code generation for views with timestamp-with-timezone columns
2 parents bca6727 + 10edacd commit c924858

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

celesta-maven-plugin/src/test/resources/gen-cursors/expectedGenerationResults/data/view/TestTableVCursor.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import java.lang.reflect.Field;
44
import java.sql.ResultSet;
55
import java.sql.SQLException;
6+
import java.sql.Timestamp;
7+
import java.time.ZoneOffset;
8+
import java.time.ZonedDateTime;
9+
import java.util.Calendar;
610
import java.util.Iterator;
711
import java.util.LinkedHashSet;
812
import java.util.List;
913
import java.util.Objects;
1014
import java.util.Set;
15+
import java.util.TimeZone;
1116
import javax.annotation.Generated;
1217
import ru.curs.celesta.CallContext;
1318
import ru.curs.celesta.ICelesta;
@@ -32,6 +37,8 @@ public final class TestTableVCursor extends ViewCursor implements Iterable<TestT
3237

3338
private Integer id;
3439

40+
private ZonedDateTime toDelete;
41+
3542
{
3643
this.COLUMNS = new TestTableVCursor.Columns(callContext().getCelesta());
3744
}
@@ -57,6 +64,13 @@ public void setId(Integer id) {
5764
this.id = id;
5865
}
5966

67+
public ZonedDateTime getToDelete() {
68+
return this.toDelete;
69+
}
70+
public void setToDelete(ZonedDateTime toDelete) {
71+
this.toDelete = toDelete;
72+
}
73+
6074
@Override
6175
protected Object _getFieldValue(String name) {
6276
try {
@@ -89,16 +103,26 @@ protected void _parseResult(ResultSet rs) throws SQLException {
89103
this.id = null;
90104
}
91105
}
106+
107+
if (this.inRec("toDelete")) {
108+
Timestamp ts = rs.getTimestamp("toDelete", Calendar.getInstance(TimeZone.getTimeZone("UTC")));
109+
if (ts != null) {
110+
this.toDelete = ZonedDateTime.of(ts.toLocalDateTime(), ZoneOffset.systemDefault());
111+
} else {
112+
this.toDelete = null;
113+
}
114+
}
92115
}
93116

94117
@Override
95118
public void _clearBuffer(boolean withKeys) {
96119
this.id = null;
120+
this.toDelete = null;
97121
}
98122

99123
@Override
100124
public Object[] _currentValues() {
101-
return new Object[] {id};
125+
return new Object[] {id, toDelete};
102126
}
103127

104128
@Override
@@ -118,6 +142,7 @@ public TestTableVCursor _getBufferCopy(CallContext context, List<String> fields)
118142
public void copyFieldsFrom(BasicCursor c) {
119143
TestTableVCursor from = (TestTableVCursor)c;
120144
this.id = from.id;
145+
this.toDelete = from.toDelete;
121146
}
122147

123148
@Override
@@ -151,5 +176,9 @@ public Columns(ICelesta celesta) {
151176
public ColumnMeta<Integer> id() {
152177
return (ColumnMeta<Integer>) this.element.getColumns().get("id");
153178
}
179+
180+
public ColumnMeta<ZonedDateTime> toDelete() {
181+
return (ColumnMeta<ZonedDateTime>) this.element.getColumns().get("toDelete");
182+
}
154183
}
155184
}

celesta-maven-plugin/src/test/resources/score/scorePart2/data/view/views.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set schema test;
44
{implements: [java.io.Serializable, java.lang.Cloneable]}
55
*/
66
create view testTableV AS
7-
SELECT id from testTable;
7+
SELECT id, toDelete from testTable;
88

99
/*
1010
{implements: [java.io.Serializable, java.lang.Cloneable]}

celesta-sql/src/main/java/ru/curs/celesta/score/ViewColumnType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public Class<?> getJavaClass() {
129129
DATE_WITH_TIME_ZONE {
130130
@Override
131131
public String jdbcGetterName() {
132-
return "getString";
132+
return "getTimestamp";
133133
}
134134

135135
@Override

0 commit comments

Comments
 (0)