With recent versions of sqlite3 (not seen with OSX Mojave 10.14.6 stock SQLite version 3.16.2 or before), a convenient function edit() was introduced. However it is not disabled for batch mode where it is never intended.
For batch mode it is preferable to keep backward compatible behavior to ease script maintenance. Pre-existence behavior $ sqlite3 testdb SQLite version 3.16.2 2017-01-06 16:32:41 Enter ".help" for usage hints. sqlite> UPDATE docs SET body=edit(body) WHERE name='report-15'; Error: no such function: edit sqlite> ^D $ sqlite3 -batch testdb UPDATE docs SET body=edit(body) WHERE name='report-15'; Error: near line 1: no such function: edit $ Current behavior: $ sqlite3 SQLite version 3.28.0 2019-04-16 19:49:53 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> create table docs(name, body); sqlite> UPDATE docs SET body=edit(body) WHERE name='report-15'; sqlite> ^C sqlite> $ sqlite3 -batch create table docs(name, body); .tables docs UPDATE docs SET body=edit(body) WHERE name='report-15'; (hang again and has to be killed by ^C) This issue also impact certain ssh/telnet sessions. -Liyu PS: a minor and separate issue is there's no way to reset line number for error reporting. As a result one has to keep track of all the sql text lines in the session to pinpoint error. It is better to allow reset between queries. For example $ sqlite3 -batch testdb UPDATE docs SET body=edit(body) WHERE name='report-15'; Error: near line 1: no such function: edit UPDATE docs SET body=edit(body) WHERE name='report-15'; Error: near line 2: no such function: edit UPDATE docs SET body=edit(body) WHERE name='report-15'; Error: near line 3: no such function: edit _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users