On 07/01/2013 17:23, Michael Van Canneyt wrote:
On Mon, 7 Jan 2013, Ludo Brands wrote:
On 07/01/2013 16:01, Michael Van Canneyt wrote:
On Mon, 7 Jan 2013, Krzysztof wrote:
2013/1/7 Michael Van Canneyt <[email protected]>
Maybe we should make a method for this in TSQLite3Connection ?
It would be great. Because without this we can't use all
opportunities of SQLite, like attaching databases or also VACUUM
(trim and pack database)
I meant a method Procedure AttachDatabase(Const AFileName, AnAlias :
String);
?
Other methods can also be added, of course.
A method to execute a statement outside a transaction would also be
useful for the following reasons:
That will have to be database-specific.
For example Firebird does not allow you to execute statements "outside
a transaction".
Firebird starts the transaction implicitly when the transaction hasn't
started. So a user that uses this new method has to manually commit or
rollback.
Firebird has virtually no sql commands for maintenance or system
administration which explains why all SQL statements are running inside
a transaction.
- Some statements end implicitly a transaction. Ex:
http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html or all
oracle DDL statements. sqldb is not aware that the transaction is
terminated and its state doesn't match the db state.
- You can't make a method for every database command that has to run
outside a transaction.
Why not ?
Of course you can when you have all the time of the world. A method that
bypasses sql transaction control covers all cases once it is released.
Any custom connector method is trunk first and then wait for next
release to get it "production ready".
If they are implemented in the specific connections, I do not see what
problem there could be with that. Such methods already exist. People
relying on such constructs should be aware that they are
database-specific.
Problems arise only if you try to elevate some methods to
TSQLConnection for something that is not supported by all databases...
Yep. That is exactly what is happening now with the statements that
implicitly terminate transactions without sqldb knowing about it.
Firebird behavior has been elevated to TSQLConnection and it is not
working correctly for all databases.
Ludo
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus