<div dir="ltr"><span style="color:rgb(48,51,60);font-size:13px">Hi Stefan,</span><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">note that the use of generate_series() in the SELECT clause is deprecated by the PostgreSQL folks. That functionality may go away in future releases.</div><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">An alternative formulation of your segment expansion query would be the following (I assume that your input table is segments(meter, distance, speed)):</div><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">SELECT t.meter, s.distance, s.speed</div><div style="color:rgb(48,51,60);font-size:13px">FROM    segments AS s, LATERAL generate_series(s.meter, s.meter+s.distance+1) AS t(meter);</div><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">Note the use of LATERAL such that in the invocation of generate_series() we may refer to row variable s.</div><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">Now, as I understand it, this query should work in MonetDB. LATERAL support is in MonetDB and has received recent bug fixes. The query work does<span class="inbox-inbox-Apple-converted-space"> </span><i>not</i><span class="inbox-inbox-Apple-converted-space"> </span>work, though: MonetDB 5 server v11.27.13 "Jul2017-SP4" (on macOS Sierra 10.12.6) goes into an infinite loop already when I try to plan the query.  Which turns this reply into a bug report, I guess.  ¯\_(ツ)_/¯</div><div style="color:rgb(48,51,60);font-size:13px"><br></div><div style="color:rgb(48,51,60);font-size:13px">Best wishes,  </div><div style="color:rgb(48,51,60);font-size:13px">   —Torsten</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 12, 2018 at 9:33 AM Stefan de Konink <<a href="mailto:stefan@konink.de">stefan@konink.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Goodmorning,<br>
<br>
<br>
At this moment there is no functional compatibility between the PostgreSQL <br>
and MonetDB with respect to the generate_series function. The range in <br>
PostgreSQL is inclusive, in MonetDB exclusive. More importantly <br>
generate_series can't be used with argument that is joined from a different <br>
table, MonetDB just seems to support a subquery, hence joining that back <br>
without a primary is impossible.<br>
<br>
PostgreSQL;<br>
select generate_series(a, b), a from (select 1 as a, 2 as b) as a;<br>
 generate_series | a <br>
-----------------+---<br>
               1 | 1<br>
               2 | 1<br>
(2 rows)<br>
<br>
MonetDB;<br>
select * from generate_series((select 1 as a, 2 as b));<br>
+-------+<br>
| value |<br>
+=======+<br>
|     1 |<br>
+-------+<br>
<br>
<br>
If I would like to functionally achieve the following;<br>
<br>
I have list that states the speeds over partial segments, identified by <br>
linear referencing. From 10 meter to 12 meter, the distance was 2 meter and <br>
speed was 2s.<br>
<br>
10  2  2<br>
<br>
I would like to expand these values to segments of one meter, hence end up <br>
with a table that would state:<br>
<br>
10  2  2<br>
11  2  2<br>
12  2  2<br>
<br>
<br>
<br>
Now I am aware of the Python bindings and I could achieve what I wanted by <br>
the function below, but I would find generate_series still very practical.<br>
<br>
DROP FUNCTION expand_per_meter;<br>
CREATE FUNCTION expand_per_meter(trip_hash BIGINT, userstopcode STRING, <br>
distancesincelastuserstop INTEGER, s INTEGER, t INTEGER)<br>
RETURNS TABLE(trip_hash BIGINT, userstopcode STRING, <br>
distancesincelastuserstop INTEGER, s INTEGER, t INTEGER)<br>
LANGUAGE PYTHON {<br>
    result = dict()<br>
    result['trip_hash'] = []<br>
    result['userstopcode'] = []<br>
    result['distancesincelastuserstop'] = []<br>
    result['s'] = []<br>
    result['t'] = []<br>
    for i in range(0, len(trip_hash)):<br>
        expanded = range(distancesincelastuserstop[i], <br>
distancesincelastuserstop[i] + s[i] + 1)<br>
        expand = len(expanded)<br>
        result['trip_hash'] += [trip_hash[i]] * expand<br>
        result['userstopcode'] += [userstopcode[i]] * expand<br>
        result['distancesincelastuserstop'] += expanded<br>
        result['s'] += [s[i]] * expand<br>
        result['t'] += [t[i]] * expand<br>
    return result<br>
};<br>
<br>
<br>
-- <br>
Stefan<br>
_______________________________________________<br>
users-list mailing list<br>
<a href="mailto:users-list@monetdb.org" target="_blank">users-list@monetdb.org</a><br>
<a href="https://www.monetdb.org/mailman/listinfo/users-list" rel="noreferrer" target="_blank">https://www.monetdb.org/mailman/listinfo/users-list</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>| Prof. Dr. Torsten Grust<br></div><div>| Database Systems — Universität Tübingen (Germany)</div><div>| ✉︎ <a href="mailto:torsten.grust@uni-tuebingen.de">torsten.grust@uni-tuebingen.de</a></div><div>| <a href="http://db.inf.uni-tuebingen.de">db.inf.uni-tuebingen.de</a></div></div></div>