[fpc-devel] SQlite dataset small fix
Luiz Américo
pascalive at bol.com.br
Mon Oct 31 02:56:27 CET 2005
Bogusław Brandys wrote:
> Hello,
>
> Attached diff for sqliteds.pas and sqlite3ds.pas allow to properly
> recognize CHAR(X) and VARCHAR(X) types for sqlite dataset.
> It is really small fix done because I have such sqlite database with
> defined VARCHAR fields (although sqlite is typeless)
> It is using Pos function to find if CHAR is somewhere inside field type
> and to find () and get X value .Maybe not too clever but I could'nt find
> any better/simpler way.
>
A better/simpler way would be to treat any field declaration that
doesn't fit in the hardcoded ones as a String (VARCHAR) field.
Until fpc 2.0.0 version, TSqliteDataset used this aproach. This allowed
to use sqlite databases created outside TSqliteDataset. The drawback is
that the user would expect that a "NUM" field be treated as a Integer or
a Float when it would not. So, to avoid this situation, if a field type
declaration is not recognized an error is throw and the dataset is not
opened.
The solution is to migrate the datafile to the table layout used by
TSqliteDataset programatically. I'll do routine/program that does it, if
you want please give a week. I'll post the code in the fpc list.
As the TSqliteDataset maintainer i'm against this change, but the final
decision is to the RTL developers, most notable Michael Van Canneyt
PS:
- FieldSize in String fields should always be 0 - I will fix it later
- Also note that sqlite treats CHAR()/VARCHAR[()]/Whatever the same way.
Luiz
More information about the fpc-devel
mailing list