asterixdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eldon Carman <ecarm...@ucr.edu>
Subject Re: Round Tripping ADM Interval Data
Date Tue, 26 Jan 2016 19:46:52 GMT
I found that the lossless-JSON and clean-JSON printers were not being used.
After connecting them to the respective JSON printer, I ran the query again.

lossless-JSON result:
{ "orderedlist": [ { "date-interval": { "interval": { "start": { "date":
"2012-01-01" }, "end": { "date": "2013-04-01" }}} }, { "time-interval": {
"interval": { "start": { "time": "12:23:34.456Z" }, "end": { "time":
"15:34:45.567Z" }}} }, { "datetime-interval": { "interval": { "start": {
"datetime": "2012-01-01T04:23:34.456Z" }, "end": { "datetime":
"2013-04-01T15:34:45.567Z" }}} } ] }


clean-JSON result:
[ { "date-interval": { "interval": { "start": "2012-01-01", "end":
"2013-04-01"}} }, { "time-interval": { "interval": { "start":
"12:23:34.456Z", "end": "15:34:45.567Z"}} }, { "datetime-interval": {
"interval": { "start": "2012-01-01T04:23:34.456Z", "end":
"2013-04-01T15:34:45.567Z"}} } ]

Is this what you would have expected?

On Mon, Jan 25, 2016 at 7:07 PM, Eldon Carman <ecarm002@ucr.edu> wrote:
>
> Thanks Chris for adding a fourth option. This option would focus our
updates to only the ADM output.
>
> Yes, both lossless-JSON and clean-JSON outputs would need to be check
also.
>
> On Mon, Jan 25, 2016 at 5:58 PM, Chris Hillery <chillery@hillery.land>
wrote:
>>
>> I would vote for:
>>
>> d. Update the serialized format to output "interval-from-date" and put
both
>> dates in quotes.
>>
>> I like the function name interval-from-date() better, and I don't think
>> there's any need to maintain backwards compatibility with the old name
>> which clearly never worked.
>>
>> Couple thoughts, though: The serialized format really should be "ADM",
not
>> "AQL". As such I don't think it should reference functions at all. We
>> already do this for many datatypes, such as uuid("...") and
>> datetime("..."). Are those truly "Functions"? Are they "constructors",
and
>> is that different? In any case, the answer for interval types should be
>> consistent with that.
>>
>> Final note: quite possibly the lossless-JSON and clean-JSON outputs for
>> intervals are broken as well, and should be fixed.
>>
>> Ceej
>> aka Chris Hillery
>>
>> On Mon, Jan 25, 2016 at 5:36 PM, Till Westmann <tillw@apache.org> wrote:
>>
>> > Voting for a. Seems to be the least redundant option.
>> >
>> > Cheers,
>> > Till
>> >
>> >
>> > On 25 Jan 2016, at 16:47, Eldon Carman wrote:
>> >
>> > The interval field value printed in the ADM results can not be used to
>> >> create an interval.
>> >>
>> >> Intervals have several functions that are used to construct an
interval:
>> >> interval-from-date/time/datetime
>> >> and interval-start-from-date/time/datetime. It appears that this is
the
>> >> only way to create an interval. Thus, a user must use one of these
>> >> function
>> >> to create an interval.
>> >>
>> >> The following query shows how to create three intervals.
>> >>
>> >> Query:
>> >> let $di := {"date-interval": interval-from-date("2012-01-01",
>> >> "2013-04-01")}
>> >> let $ti := {"time-interval": interval-from-time("12:23:34.456Z",
>> >> "233445567+0800")}
>> >> let $dti := {"datetime-interval":
>> >> interval-from-datetime("2012-01-01T12:23:34.456+08:00",
>> >> "20130401T153445567Z")}
>> >> return [$di, $ti, $dti];
>> >>
>> >> Result:
>> >> { "date-interval": interval-date("2012-01-01, 2013-04-01") }, {
>> >> "time-interval": interval-time("12:23:34.456Z, 15:34:45.567Z") }, {
>> >> "datetime-interval": interval-datetime("2012-01-01T04:23:34.456Z,
>> >> 2013-04-01T15:34:45.567Z") } ]
>> >>
>> >> Notice the results show interval-date("date, date") which is different
>> >> than
>> >> the functions that are used to create a date interval. Notice that
>> >> interval-date does not exists in AsterixDB and that the input is a
single
>> >> string of dates separated by a comma. Below are some ideas on how to
>> >> create
>> >> a round-trip for intervals.
>> >>
>> >> Options for round tripping:
>> >> a: Rename "interval-from-date" to "interval-date" and update the
output to
>> >> put both dates in quotes.
>> >> b: Add alias for "interval-from-date" to "interval-date" and update
the
>> >> output to put both dates in quotes.
>> >> c: Create an interval date constructor (called interval-date) that can
>> >> parse the string "date, date".
>> >>
>> >> The same process should be used for intervals with time and datetime.
>> >>
>> >> Thoughts?
>> >>
>> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message