Merge lp:~paul-lucas/zorba/bug-1108546 into lp:zorba

Proposed by Paul J. Lucas
Status: Merged
Approved by: Matthias Brantner
Approved revision: 11203
Merged at revision: 11205
Proposed branch: lp:~paul-lucas/zorba/bug-1108546
Merge into: lp:zorba
Diff against target: 343 lines (+177/-0)
15 files modified
ChangeLog (+1/-0)
modules/com/zorba-xquery/www/modules/datetime.xq (+11/-0)
src/functions/pregenerated/func_datetime.cpp (+22/-0)
src/functions/pregenerated/func_datetime.h (+15/-0)
src/functions/pregenerated/function_enum.h (+1/-0)
src/runtime/datetime/datetime_impl.cpp (+28/-0)
src/runtime/datetime/pregenerated/datetime.cpp (+28/-0)
src/runtime/datetime/pregenerated/datetime.h (+32/-0)
src/runtime/pregenerated/iterator_enum.h (+1/-0)
src/runtime/spec/datetime/datetime.xml (+12/-0)
src/runtime/visitors/pregenerated/planiter_visitor.h (+5/-0)
src/runtime/visitors/pregenerated/printer_visitor.cpp (+14/-0)
src/runtime/visitors/pregenerated/printer_visitor.h (+3/-0)
test/rbkt/ExpQueryResults/zorba/datetime/datetime-millis-to-dateTime-1.xml.res (+1/-0)
test/rbkt/Queries/zorba/datetime/datetime-millis-to-dateTime-1.xq (+3/-0)
To merge this branch: bzr merge lp:~paul-lucas/zorba/bug-1108546
Reviewer Review Type Date Requested Status
Matthias Brantner Approve
Paul J. Lucas Approve
Review via email: mp+145396@code.launchpad.net

Commit message

Added millis-to-dateTime().

Description of the change

Added millis-to-dateTime().

To post a comment you must log in.
Revision history for this message
Paul J. Lucas (paul-lucas) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug-1108546-2013-01-29T15-21-47.074Z is finished. The final status was:

All tests succeeded!

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Voting does not meet specified criteria. Required: Approve > 1, Disapprove < 1, Needs Fixing < 1, Pending < 1. Got: 1 Approve.

Revision history for this message
Matthias Brantner (matthias-brantner) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug-1108546-2013-01-29T19-05-53.172Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2013-01-22 11:07:53 +0000
3+++ ChangeLog 2013-01-29 15:18:26 +0000
4@@ -6,6 +6,7 @@
5 * Typeswitch expression extended to allow union of types in each case clause,
6 as specified by XQuery v3.0
7 * Extended sequence types to include unions, as specified by XQuery v3.0
8+ * Added millis-to-dateTime() function in datetime module.
9
10 Optimizations:
11
12
13=== modified file 'modules/com/zorba-xquery/www/modules/datetime.xq'
14--- modules/com/zorba-xquery/www/modules/datetime.xq 2013-01-08 01:45:26 +0000
15+++ modules/com/zorba-xquery/www/modules/datetime.xq 2013-01-29 15:18:26 +0000
16@@ -249,6 +249,17 @@
17 ) as xs:time external;
18
19 (:~
20+ : Converts the given number of milliseconds since epoch into its corresponding
21+ : xs:dateTime.
22+ :
23+ : @param $millis The number of milliseconds since epoch.
24+ : @return Returns an xs:dateTime.
25+ : @example test/rbkt/Queries/zorba/datetime/datetime-millis-to-dateTime-1.xq
26+ :)
27+declare function datetime:millis-to-dateTime( $millis as xs:long )
28+ as xs:dateTime external;
29+
30+(:~
31 : Gets the the number of milliseconds since epoch.
32 :
33 : @return the said number of milliseconds.
34
35=== modified file 'src/functions/pregenerated/func_datetime.cpp'
36--- src/functions/pregenerated/func_datetime.cpp 2013-01-04 16:08:03 +0000
37+++ src/functions/pregenerated/func_datetime.cpp 2013-01-29 15:18:26 +0000
38@@ -61,6 +61,16 @@
39 return new CurrentTime(sctx, loc, argv);
40 }
41
42+PlanIter_t fn_zorba_dateTime_millis_to_dateTime::codegen(
43+ CompilerCB*,
44+ static_context* sctx,
45+ const QueryLoc& loc,
46+ std::vector<PlanIter_t>& argv,
47+ expr& ann) const
48+{
49+ return new MillisToDateTime(sctx, loc, argv);
50+}
51+
52 PlanIter_t fn_zorba_dateTime_parse_date::codegen(
53 CompilerCB*,
54 static_context* sctx,
55@@ -149,6 +159,18 @@
56
57
58 {
59+ DECL_WITH_KIND(sctx, fn_zorba_dateTime_millis_to_dateTime,
60+ (createQName("http://www.zorba-xquery.com/modules/datetime","","millis-to-dateTime"),
61+ GENV_TYPESYSTEM.LONG_TYPE_ONE,
62+ GENV_TYPESYSTEM.DATETIME_TYPE_ONE),
63+ FunctionConsts::FN_ZORBA_DATETIME_MILLIS_TO_DATETIME_1);
64+
65+ }
66+
67+
68+
69+
70+ {
71 DECL_WITH_KIND(sctx, fn_zorba_dateTime_parse_date,
72 (createQName("http://www.zorba-xquery.com/modules/datetime","","parse-date"),
73 GENV_TYPESYSTEM.STRING_TYPE_ONE,
74
75=== modified file 'src/functions/pregenerated/func_datetime.h'
76--- src/functions/pregenerated/func_datetime.h 2012-12-21 21:19:25 +0000
77+++ src/functions/pregenerated/func_datetime.h 2013-01-29 15:18:26 +0000
78@@ -83,6 +83,21 @@
79 };
80
81
82+//fn-zorba-dateTime:millis-to-dateTime
83+class fn_zorba_dateTime_millis_to_dateTime : public function
84+{
85+public:
86+ fn_zorba_dateTime_millis_to_dateTime(const signature& sig, FunctionConsts::FunctionKind kind)
87+ :
88+ function(sig, kind)
89+ {
90+
91+ }
92+
93+ CODEGEN_DECL();
94+};
95+
96+
97 //fn-zorba-dateTime:parse-date
98 class fn_zorba_dateTime_parse_date : public function
99 {
100
101=== modified file 'src/functions/pregenerated/function_enum.h'
102--- src/functions/pregenerated/function_enum.h 2013-01-11 17:37:08 +0000
103+++ src/functions/pregenerated/function_enum.h 2013-01-29 15:18:26 +0000
104@@ -146,6 +146,7 @@
105 FN_ZORBA_DATETIME_CURRENT_DATE_0,
106 FN_ZORBA_DATETIME_CURRENT_DATETIME_0,
107 FN_ZORBA_DATETIME_CURRENT_TIME_0,
108+ FN_ZORBA_DATETIME_MILLIS_TO_DATETIME_1,
109 FN_ZORBA_DATETIME_PARSE_DATE_2,
110 FN_ZORBA_DATETIME_PARSE_DATE_3,
111 FN_ZORBA_DATETIME_PARSE_DATETIME_2,
112
113=== modified file 'src/runtime/datetime/datetime_impl.cpp'
114--- src/runtime/datetime/datetime_impl.cpp 2013-01-08 00:31:47 +0000
115+++ src/runtime/datetime/datetime_impl.cpp 2013-01-29 15:18:26 +0000
116@@ -222,6 +222,34 @@
117 STACK_END( state );
118 }
119
120+bool MillisToDateTime::nextImpl( store::Item_t& result,
121+ PlanState &plan_state ) const {
122+ store::Item_t item;
123+ xs_long millis;
124+ time::ztm tm;
125+
126+ PlanIteratorState *state;
127+ DEFAULT_STACK_INIT( PlanIteratorState, state, plan_state );
128+
129+ consumeNext( item, theChildren[0], plan_state );
130+ millis = item->getLongValue();
131+
132+ time::get_gmtime( &tm, static_cast<time_t>( millis / 1000 ) );
133+ GENV_ITEMFACTORY->createDateTime(
134+ result,
135+ static_cast<short>( tm.tm_year + TM_YEAR_BASE ),
136+ static_cast<short>( tm.tm_mon + 1 ),
137+ static_cast<short>( tm.tm_mday ),
138+ static_cast<short>( tm.tm_hour ),
139+ static_cast<short>( tm.tm_min ),
140+ tm.tm_sec + (millis % 1000) / 1000.0,
141+ static_cast<short>( tm.ZTM_GMTOFF / 3600 )
142+ );
143+
144+ STACK_PUSH( true, state );
145+ STACK_END( state );
146+}
147+
148 bool ParseDate::nextImpl( store::Item_t& result, PlanState &plan_state ) const {
149 store::Item_t item;
150 zstring buf, fmt;
151
152=== modified file 'src/runtime/datetime/pregenerated/datetime.cpp'
153--- src/runtime/datetime/pregenerated/datetime.cpp 2012-12-23 02:12:16 +0000
154+++ src/runtime/datetime/pregenerated/datetime.cpp 2013-01-29 15:18:26 +0000
155@@ -116,6 +116,34 @@
156 // </CurrentTime>
157
158
159+// <MillisToDateTime>
160+SERIALIZABLE_CLASS_VERSIONS(MillisToDateTime)
161+
162+void MillisToDateTime::serialize(::zorba::serialization::Archiver& ar)
163+{
164+ serialize_baseclass(ar,
165+ (NaryBaseIterator<MillisToDateTime, PlanIteratorState>*)this);
166+}
167+
168+
169+void MillisToDateTime::accept(PlanIterVisitor& v) const
170+{
171+ v.beginVisit(*this);
172+
173+ std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
174+ std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
175+ for ( ; lIter != lEnd; ++lIter ){
176+ (*lIter)->accept(v);
177+ }
178+
179+ v.endVisit(*this);
180+}
181+
182+MillisToDateTime::~MillisToDateTime() {}
183+
184+// </MillisToDateTime>
185+
186+
187 // <ParseDate>
188 SERIALIZABLE_CLASS_VERSIONS(ParseDate)
189
190
191=== modified file 'src/runtime/datetime/pregenerated/datetime.h'
192--- src/runtime/datetime/pregenerated/datetime.h 2012-12-23 02:12:16 +0000
193+++ src/runtime/datetime/pregenerated/datetime.h 2013-01-29 15:18:26 +0000
194@@ -132,6 +132,38 @@
195
196 /**
197 *
198+ * function for converting seconds since epoch to an xs:dateTime
199+ *
200+ * Author: Zorba Team
201+ */
202+class MillisToDateTime : public NaryBaseIterator<MillisToDateTime, PlanIteratorState>
203+{
204+public:
205+ SERIALIZABLE_CLASS(MillisToDateTime);
206+
207+ SERIALIZABLE_CLASS_CONSTRUCTOR2T(MillisToDateTime,
208+ NaryBaseIterator<MillisToDateTime, PlanIteratorState>);
209+
210+ void serialize( ::zorba::serialization::Archiver& ar);
211+
212+ MillisToDateTime(
213+ static_context* sctx,
214+ const QueryLoc& loc,
215+ std::vector<PlanIter_t>& children)
216+ :
217+ NaryBaseIterator<MillisToDateTime, PlanIteratorState>(sctx, loc, children)
218+ {}
219+
220+ virtual ~MillisToDateTime();
221+
222+ void accept(PlanIterVisitor& v) const;
223+
224+ bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
225+};
226+
227+
228+/**
229+ *
230 * function for parsing strings into a date
231 *
232 * Author: Zorba Team
233
234=== modified file 'src/runtime/pregenerated/iterator_enum.h'
235--- src/runtime/pregenerated/iterator_enum.h 2013-01-11 17:37:08 +0000
236+++ src/runtime/pregenerated/iterator_enum.h 2013-01-29 15:18:26 +0000
237@@ -75,6 +75,7 @@
238 TYPE_CurrentDate,
239 TYPE_CurrentDateTime,
240 TYPE_CurrentTime,
241+ TYPE_MillisToDateTime,
242 TYPE_ParseDate,
243 TYPE_ParseDateTime,
244 TYPE_ParseTime,
245
246=== modified file 'src/runtime/spec/datetime/datetime.xml'
247--- src/runtime/spec/datetime/datetime.xml 2013-01-04 16:08:03 +0000
248+++ src/runtime/spec/datetime/datetime.xml 2013-01-29 15:18:26 +0000
249@@ -44,6 +44,18 @@
250 </zorba:function>
251 </zorba:iterator>
252
253+<zorba:iterator name="MillisToDateTime">
254+ <zorba:description author="Zorba Team">
255+ function for converting seconds since epoch to an xs:dateTime
256+ </zorba:description>
257+ <zorba:function>
258+ <zorba:signature localname="millis-to-dateTime" prefix="fn-zorba-dateTime">
259+ <zorba:param>xs:long</zorba:param> <!-- millis -->
260+ <zorba:output>xs:dateTime</zorba:output>
261+ </zorba:signature>
262+ </zorba:function>
263+</zorba:iterator>
264+
265 <zorba:iterator name="ParseDate">
266 <zorba:description author="Zorba Team">
267 function for parsing strings into a date
268
269=== modified file 'src/runtime/visitors/pregenerated/planiter_visitor.h'
270--- src/runtime/visitors/pregenerated/planiter_visitor.h 2013-01-11 17:37:08 +0000
271+++ src/runtime/visitors/pregenerated/planiter_visitor.h 2013-01-29 15:18:26 +0000
272@@ -140,6 +140,8 @@
273
274 class CurrentTime;
275
276+ class MillisToDateTime;
277+
278 class ParseDate;
279
280 class ParseDateTime;
281@@ -933,6 +935,9 @@
282 virtual void beginVisit ( const CurrentTime& ) = 0;
283 virtual void endVisit ( const CurrentTime& ) = 0;
284
285+ virtual void beginVisit ( const MillisToDateTime& ) = 0;
286+ virtual void endVisit ( const MillisToDateTime& ) = 0;
287+
288 virtual void beginVisit ( const ParseDate& ) = 0;
289 virtual void endVisit ( const ParseDate& ) = 0;
290
291
292=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.cpp'
293--- src/runtime/visitors/pregenerated/printer_visitor.cpp 2013-01-11 17:37:08 +0000
294+++ src/runtime/visitors/pregenerated/printer_visitor.cpp 2013-01-29 15:18:26 +0000
295@@ -746,6 +746,20 @@
296 // </CurrentTime>
297
298
299+// <MillisToDateTime>
300+void PrinterVisitor::beginVisit ( const MillisToDateTime& a) {
301+ thePrinter.startBeginVisit("MillisToDateTime", ++theId);
302+ printCommons( &a, theId );
303+ thePrinter.endBeginVisit( theId );
304+}
305+
306+void PrinterVisitor::endVisit ( const MillisToDateTime& ) {
307+ thePrinter.startEndVisit();
308+ thePrinter.endEndVisit();
309+}
310+// </MillisToDateTime>
311+
312+
313 // <ParseDate>
314 void PrinterVisitor::beginVisit ( const ParseDate& a) {
315 thePrinter.startBeginVisit("ParseDate", ++theId);
316
317=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.h'
318--- src/runtime/visitors/pregenerated/printer_visitor.h 2013-01-11 17:37:08 +0000
319+++ src/runtime/visitors/pregenerated/printer_visitor.h 2013-01-29 15:18:26 +0000
320@@ -212,6 +212,9 @@
321 void beginVisit( const CurrentTime& );
322 void endVisit ( const CurrentTime& );
323
324+ void beginVisit( const MillisToDateTime& );
325+ void endVisit ( const MillisToDateTime& );
326+
327 void beginVisit( const ParseDate& );
328 void endVisit ( const ParseDate& );
329
330
331=== added file 'test/rbkt/ExpQueryResults/zorba/datetime/datetime-millis-to-dateTime-1.xml.res'
332--- test/rbkt/ExpQueryResults/zorba/datetime/datetime-millis-to-dateTime-1.xml.res 1970-01-01 00:00:00 +0000
333+++ test/rbkt/ExpQueryResults/zorba/datetime/datetime-millis-to-dateTime-1.xml.res 2013-01-29 15:18:26 +0000
334@@ -0,0 +1,1 @@
335+2013-01-29T05:56:53.001Z
336
337=== added file 'test/rbkt/Queries/zorba/datetime/datetime-millis-to-dateTime-1.xq'
338--- test/rbkt/Queries/zorba/datetime/datetime-millis-to-dateTime-1.xq 1970-01-01 00:00:00 +0000
339+++ test/rbkt/Queries/zorba/datetime/datetime-millis-to-dateTime-1.xq 2013-01-29 15:18:26 +0000
340@@ -0,0 +1,3 @@
341+import module namespace dt = "http://www.zorba-xquery.com/modules/datetime";
342+
343+dt:millis-to-dateTime( xs:long( 1359439013001 ) )

Subscribers

People subscribed via source and target branches