On 8/26/15, Igor Tandetnik <igor at tandetnik.org> wrote:
>>
>> <http://www.sqlite.org/releaselog/3_8_1.html> says:
>> | the current time (ex: julianday('now')) is always the same for multiple
>> | function invocations within the same sqlite3_step() call.
>
> This only says that the time "stands still" for all the calculations
> necessary to produce a single row - not for the whole SELECT statement,
> as you seem to have previously implied.
Time stands still for multiple rows, as long as they are within the
same sqlite3_step() call. For example, if you run:
CREATE TABLE t1(a DATETIME);
WITH RECURSIVE
c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<1000000000)
INSERT INTO t1(a) SELECT datetime('now') FROM c;
The entire INSERT statement will be a single sqlite3_step() call, and
so all billion rows of t1 will get set to the same time.
--
D. Richard Hipp
drh at sqlite.org