I believe that UpdateSQL/InsertSQL were created specifically for my case. And so it is written in the documentation.
Yes.
UpdateSQL/InsertSQL/DeleteSQL have been introduced specifically for the usecase of DB-Bound-Controls in conjunction with DBNavigator
The documentation even states, that if you do not specify those 3 Properties, Lazarus is trying to "guess" the Statements.
BUT: You still have the option to "ignore" them entirely, and execute your SQL-Statements directly.
And Insert/Update/Delete are the Statements that DON'T return a Recordset, which means they can be executed using the Connection-Object (which actually IS what happens under the hood)
You just have to refresh your SQLQuery-Object, which holds the SELECT-Statement.
Doesn't change the Fact, that those 3 Properties are not "usable" for (complex) "JOIN"-ed SELECT-Statements
EDIT: btw: I understand now your trouble with TEXT vs VARCHAR
Have you tried CASTING your TEXT-Column (DataType TEXT) to VARCHAR in your SELECT-Statement?