Hello everybody,
for the Selenium Framework I have a very specific database related issue which is hard for
me to decide. This is the problem:
In order to have a fresh state for every test, we agreed to have a test database (and
image folder, but this is a sidetrack now) for every test suite run. The fresh database is
created from a SQL file which can be attached to a test as a resource. Now, to make the
creation of such SQL files as easy as possible, I wanted to be able to simply use SQL
dumps created with mysqldump. The import of the data is done via the existing databse
abstraction layer. I use the method DatabaseBase::sourceFile which in turn calls
DatabaseBase::sourceStream. The problem is now, that some of the SQL INSERT statements
seem to be too long for this method.
Platonides pointed me to the source of the problem (thanks!). It lies currently in line
2506 (Database.php) : $line = trim( fgets( $fp, 1024 ) ); So the lines read are limited to
1024 characters. If I remove this limitation, everything works fine. PHP manual tells me
that the length parameter is optional as of PHP version 4.2.0. Since I don't know
enough about how fgets works and what its security issues are, I wonder, is there a reason
not to remove the parameter?
Cheers,
Markus (mglaser)