Actually, i think the result of the sqlite3_column_type call is correct!
Numeric Value is 3, which is acc. to SQLite3-Source SQLITE3_TEXT, which translates to stText from TStorageType.
This actually looks correct.
True. sqlite3_column_type only has a few types and all string types are TEXT according to SQLite.
A VARCHAR(25) will probably
also have sqlite3_column_type as TEXT.
But because if VARCHAR(25) is declared/stored, the sqlite3_column_type is never queried and just the sqlite3_column_decltype is used which was never a problem.
For CAST/FUNCTION etc (non declared types) the sqlite3_column_decltype is "" and the fallback is to sqlite3_column_type which gives TEXT.
The issue is that TEXT is seen as ftMemo in FPC. Not only with this change but also for TEXT and VARCHAR without length.
So the change is accordance with the complete handling of TEXT.
(And because you can't get to the wanted declaration for CAST it results in the (MEMO) )
But ok. I think we need to live with the fact TEXT fields and non-declared (calculated and cast) are translated to ftMemo.
Only problem was that for dynamic created fields where you set the OnGetText after opening, this could be too late for some components (like the TDBLookupComboBox).
For TDBGrid it is not too late because it just retrieves the text after viewing and not during creation (as TDBLookupComboBox does).
For users who use the Object inspector to create fields and set the OnGetText there, this isn't a problem.
(Although I still don't like the stText -> ftMemo bit

)