Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2005-11

MySQL v4.0 v4.1 and v5.0

9 messages · 6 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Joost van der Sluis

Hi all,

atm I have a nearly finished mysql.inc file that can be used with MySQL v4.0 v4.1 and v5.0. Loaded dynamically and static.

It uses several defines to set the right MySQL version and to turn the dynamically linking on or off.

Nog my question is: what is the best way to use this?

Create 6 different units in packages/base/mysql - for each combination one? (thus mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50 and mysql51dyn?)

And then remove the existing mysql4 unit? This one is useless anyway because someone tried to update to MySQL 4.1, which wasn't done completely so now it's useless with 4.0 and 4.1. (At least with sqldb, too bad I didn't discovered that, so that mysql-support in 2.0.2 is very bad)

But then, what to do with the MySQL-connection for sqldb? In principle the only thing that has to be changes to use another MySQL-version is to change the used unit. So, always use the TMysqlConn-component, but changes the usage-clausule.

But how can this be handled by Lazarus? With the SQLDB-package only one unit can be used. (Or else multiple types with the same name are defined) Let the users manually change the usage-line if they want to use a different MySQL-library-version?

Or create a TMysqlConn40, TMysqlconn41 and TMyslqconn50 wich are effectively the same, only with another usage-line? (Using the ifdef's again?)

Is the problem clear and does someone have any ideas on this?

Met vriendelijke groeten, Joost van der Sluis CNOC Informatiesystemen en Netwerken http://www.cnoc.nl

Reply by email

Vincent Snijders
to Joost van der Sluis
Joost van der Sluis wrote 21 lines
Hi all, atm I have a nearly finished mysql.inc file that can be used with MySQL v4.0 v4.1 and v5.0. Loaded dynamically and static. It uses several defines to set the right MySQL version and to turn the dynamically linking on or off. Create 6 different units in packages/base/mysql - for each combination one? (thus mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50 and mysql51dyn?) But then, what to do with the MySQL-connection for sqldb? In principle the only thing that has to be changes to use another MySQL-version is to change the used unit. So, always use the TMysqlConn-component, but changes the usage-clausule. But how can this be handled by Lazarus? With the SQLDB-package only one unit can be used. (Or else multiple types with the same name are defined) Let the users manually change the usage-line if they want to use a different MySQL-library-version?

FOr the sqldb package, let them add a define to the compiler options: -dMYSQL40
or
-dMYSQL41
or
-dMYSQL50

That seems more user friendly than editing the uses clause.

In the source, change the uses clause, depending on the defines.

Vincent.

Reply by email

Michael Van Canneyt
to Vincent Snijders
Vincent Snijders wrote 33 lines
Joost van der Sluis wrote: > Hi all, > > atm I have a nearly finished mysql.inc file that can be used with MySQL > v4.0 v4.1 and v5.0. Loaded dynamically and static. > > It uses several defines to set the right MySQL version and to turn the > dynamically linking on or off. > > Create 6 different units in packages/base/mysql - for each combination > one? (thus mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50 and > mysql51dyn?) > > But then, what to do with the MySQL-connection for sqldb? In principle > the only thing that has to be changes to use another MySQL-version is to > change the used unit. So, always use the TMysqlConn-component, but > changes the usage-clausule. > > But how can this be handled by Lazarus? With the SQLDB-package only one > unit can be used. (Or else multiple types with the same name are > defined) Let the users manually change the usage-line if they want to > use a different MySQL-library-version? FOr the sqldb package, let them add a define to the compiler options: -dMYSQL40 or -dMYSQL41 or -dMYSQL50 That seems more user friendly than editing the uses clause. In the source, change the uses clause, depending on the defines.

The problem with this approach is that you can never distribute compiled MySQL support in this way. The only way to do that is to do the mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50, mysql51dyn stuff.

So for FPC, I'm for that approach.

Michael.

Reply by email

Jesus Reyes
to Vincent Snijders: FOr the sqldb package, let them add a define to the compiler options: -dMYSQL40 or…
--- Vincent Snijders wrote 44 lines
Joost van der Sluis wrote: > Hi all, > > atm I have a nearly finished mysql.inc file that can be used with MySQL > v4.0 v4.1 and v5.0. Loaded dynamically and static. > > It uses several defines to set the right MySQL version and to turn the > dynamically linking on or off. > > Create 6 different units in packages/base/mysql - for each combination > one? (thus mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50 and > mysql51dyn?) > > But then, what to do with the MySQL-connection for sqldb? In principle > the only thing that has to be changes to use another MySQL-version is to > change the used unit. So, always use the TMysqlConn-component, but > changes the usage-clausule. > > But how can this be handled by Lazarus? With the SQLDB-package only one > unit can be used. (Or else multiple types with the same name are > defined) Let the users manually change the usage-line if they want to > use a different MySQL-library-version? FOr the sqldb package, let them add a define to the compiler options: -dMYSQL40 or -dMYSQL41 or -dMYSQL50 That seems more user friendly than editing the uses clause. In the source, change the uses clause, depending on the defines. Vincent.

For mysql connection I would prefer an component for each version so users have it clear from begining, and not need to change anything.

Jesus Reyes A.

___________________________________________________________ Do You Yahoo!?
La mejor conexión a Internet y <b >2GB</b> extra a tu correo por $100 al mes. http://net.yahoo.com.mx

Reply by email

Joost van der Sluis
to Jesus Reyes
Show quoted text 44 lines
> > Hi all, > > > > atm I have a nearly finished mysql.inc file that can be used with > MySQL > > v4.0 v4.1 and v5.0. Loaded dynamically and static. > > > > It uses several defines to set the right MySQL version and to > turn the > > dynamically linking on or off. > > > > Create 6 different units in packages/base/mysql - for each > combination > > one? (thus mysql40, mysql40dyn, mysql41, mysql41dyn, mysql50 and > > mysql51dyn?) > > > > But then, what to do with the MySQL-connection for sqldb? In > principle > > the only thing that has to be changes to use another > MySQL-version is to > > change the used unit. So, always use the TMysqlConn-component, > but > > changes the usage-clausule. > > > > But how can this be handled by Lazarus? With the SQLDB-package > only one > > unit can be used. (Or else multiple types with the same name are > > defined) Let the users manually change the usage-line if they > want to > > use a different MySQL-library-version? > > FOr the sqldb package, let them add a define to the compiler > options: > -dMYSQL40 > or > -dMYSQL41 > or > -dMYSQL50 > > That seems more user friendly than editing the uses clause. > > In the source, change the uses clause, depending on the defines. For mysql connection I would prefer an component for each version so users have it clear from begining, and not need to change anything.

The problem is that those different components coud not be installed at the same time.

Met vriendelijke groeten, Joost van der Sluis CNOC Informatiesystemen en Netwerken http://www.cnoc.nl

Reply by email

Vincent Snijders
to Joost van der Sluis
Joost van der Sluis wrote 7 lines
>For mysql connection I would prefer an component for each version so >users have it clear from begining, and not need to change anything. The problem is that those different components coud not be installed at the same time.

Why is it impossible to have a mysql40connection, mysql41connection and mysql50connection in one application? In what way is this different from having mysqlconnection and ibconnection in one application?

Vincent.

Reply by email

Joost van der Sluis
to Vincent Snijders
Show quoted text 9 lines
>>For mysql connection I would prefer an component for each version so >>users have it clear from begining, and not need to change anything. > > The problem is that those different components coud not be installed at > the same time. Why is it impossible to have a mysql40connection, mysql41connection and mysql50connection in one application? In what way is this different from having mysqlconnection and ibconnection in one application?

If we implement that, and sqldb is installed

Laz --> mysql40conn (tmysql40conn) --> mysql40 (pmysql, mysql_init()) mysql41conn (tmysql41conn) --> mysql41 (pmysql, mysql_init()) mysql50conn (tmysql50conn) --> mysql50 (pmysql, mysql_init())

Lazarus uses the mysql40conn,mysql41conn and mysql50conn units, they all use a different mysql-unit, but all those units implement functions and procedures with the same name, but with other arguments.

I'm not sure it the compiler will allow that?

Met vriendelijke groeten, Joost van der Sluis CNOC Informatiesystemen en Netwerken http://www.cnoc.nl

Reply by email

Jonas Maebe
to Joost van der Sluis
Joost van der Sluis wrote 19 lines
> Why is it impossible to have a mysql40connection, > mysql41connection and > mysql50connection in one application? In what way is this > different from > having mysqlconnection and ibconnection in one application? If we implement that, and sqldb is installed Laz --> mysql40conn (tmysql40conn) --> mysql40 (pmysql, mysql_init()) mysql41conn (tmysql41conn) --> mysql41 (pmysql, mysql_init()) mysql50conn (tmysql50conn) --> mysql50 (pmysql, mysql_init()) Lazarus uses the mysql40conn,mysql41conn and mysql50conn units, they all use a different mysql-unit, but all those units implement functions and procedures with the same name, but with other arguments. I'm not sure it the compiler will allow that?

As long as you use fully qualified identifiers for all types, global variables, functions and procedures you use from those units, it shouldn't be a problem. If you don't use a fully qualified identifier, the one from the last unit in the uses clause which contains that identifier will be used.

Jonas

Reply by email

Daniël Mantione
to Joost van der Sluis: If we implement that, and sqldb is installed Laz --> mysql40conn (tmysql40conn) -->…

Op Fri, 18 Nov 2005, schreef Joost van der Sluis:

Show quoted text 21 lines
> >>For mysql connection I would prefer an component for each version so > >>users have it clear from begining, and not need to change anything. > > > > The problem is that those different components coud not be installed at > > the same time. > Why is it impossible to have a mysql40connection, mysql41connection and > mysql50connection in one application? In what way is this different from > having mysqlconnection and ibconnection in one application? If we implement that, and sqldb is installed Laz --> mysql40conn (tmysql40conn) --> mysql40 (pmysql, mysql_init()) mysql41conn (tmysql41conn) --> mysql41 (pmysql, mysql_init()) mysql50conn (tmysql50conn) --> mysql50 (pmysql, mysql_init()) Lazarus uses the mysql40conn,mysql41conn and mysql50conn units, they all use a different mysql-unit, but all those units implement functions and procedures with the same name, but with other arguments. I'm not sure it the compiler will allow that?

Should not be a problem.

Daniël

Reply by email