Home | History | Annotate | Line # | Download | only in rdbms_depend
      1 Author: Pierangelo Masarati <ando (a] OpenLDAP.org>
      2 
      3 Back-sql can be tested with sql-test000-read; it requires a bit of work 
      4 to get everything up and running appropriately.
      5 
      6 This document briefly describes the steps that are required to prepare
      7 a quick'n'dirty installation of back-sql and of the related RDBMS
      8 and ODBC; Examples are provided, but by no means they pretent
      9 to represent an exhaustive source of info about how to setup the ODBC;
     10 refer to the docs for any problem or detail.
     11 
     12 Currently, the system has been tested with IBM db2, PostgreSQL and MySQL;
     13 basic support and test data for other RDBMSes is in place, but as of
     14 today (November 2004) it's totally untested.  If you succeed in running
     15 any of the other RDBMSes, please provide feedback about any required
     16 change either in the code or in the test scripts by means of OpenLDAP's
     17 Issue Tracking System (http://www.openldap.org/its/).
     18 
     19 1) slapd must be compiled with back-sql support, i.e. configure 
     20 with --enable-sql switch.  This requires an implementation of the ODBC
     21 to be installed.
     22 
     23 2) The ODBC must be set up appropriately, by editing the odbc.ini file
     24 in /etc/ (or wherever your installation puts it) and, if appropriate,
     25 the odbcinst.ini file.  Note: you can also use custom odbc.ini and
     26 odbcinst.ini files, provided you export in ODBCINI the full path to the
     27 odbc.ini file, and in ODBCSYSINI the directory where the odbcinst.ini
     28 file resides.
     29 Relevant info for our test setup is highlighted with '<===' on the right.
     30 
     31 2.1) PostgreSQL
     32 
     33 2.1.1) Add to the odbc.ini file a block of the form
     34 
     35 [example]                        <===
     36 Description         = Example for OpenLDAP's back-sql
     37 Driver              = PostgreSQL
     38 Trace               = No
     39 Database            = example    <===
     40 Servername          = localhost
     41 UserName            = manager    <===
     42 Password            = secret     <===
     43 Port                = 5432
     44 ;Protocol            = 6.4
     45 ReadOnly            = No
     46 RowVersioning       = No
     47 ShowSystemTables    = No
     48 ShowOidColumn       = No
     49 FakeOidIndex        = No
     50 ConnSettings        =
     51 
     52 2.1.2) Add to the odbcinst.ini file a block of the form
     53 
     54 [PostgreSQL]
     55 Description     = ODBC for PostgreSQL
     56 Driver          = /usr/lib/libodbcpsql.so
     57 Setup           = /usr/lib/libodbcpsqlS.so
     58 FileUsage       = 1
     59 
     60 2.2) MySQL
     61 
     62 2.2.1) Add to the odbc.ini file a block of the form
     63 
     64 [example]                        <===
     65 Description         = Example for OpenLDAP's back-sql
     66 Driver              = MySQL
     67 Trace               = No
     68 Database            = example    <===
     69 Servername          = localhost
     70 UserName            = manager    <===
     71 Password            = secret     <===
     72 ReadOnly            = No
     73 RowVersioning       = No
     74 ShowSystemTables    = No
     75 ShowOidColumn       = No
     76 FakeOidIndex        = No
     77 ConnSettings        =
     78 SOCKET              = /var/lib/mysql/mysql.sock
     79 
     80 2.2.2) Add to the odbcinst.ini file a block of the form
     81 
     82 [MySQL]
     83 Description     = ODBC for MySQL
     84 Driver          = /usr/lib/libmyodbc.so
     85 FileUsage       = 1
     86 
     87 2.3) IBM db2
     88 [n.a.]
     89 
     90 3) The RDBMS must be setup; examples are provided for my installations 
     91 of PostgreSQL and MySQL, but details may change; other RDBMSes should
     92 be configured in a similar manner, you need to find out the details by
     93 reading their documentation.
     94 
     95 3.1) PostgreSQL
     96 
     97 3.1.1) Start the server
     98 on RedHat:
     99 [root@localhost]# service postgresql start
    100 on other systems: read the docs...
    101 
    102 3.1.2) Create the database:
    103 [root@localhost]# su - postgres
    104 [postgres@localhost]$ createdb example
    105 
    106 3.1.3) Create the user:
    107 [root@localhost]# su - postgres
    108 [postgres@localhost]$ psql example
    109 example=> create user manager with password 'secret';
    110 example=> <control-D>
    111 
    112 3.1.4) Populate the database:
    113 [root@localhost]# cd $SOURCES/servers/slapd/back-sql/rdbms_depend/pgsql/
    114 [root@localhost]# psql -U manager -W example
    115 example=> <control-D>
    116 [root@localhost]# psql -U manager example < backsql_create.sql
    117 [root@localhost]# psql -U manager example < testdb_create.sql
    118 [root@localhost]# psql -U manager example < testdb_data.sql
    119 [root@localhost]# psql -U manager example < testdb_metadata.sql
    120 
    121 3.1.5) Run the test:
    122 [root@localhost]# cd $SOURCES/tests
    123 [root@localhost]# SLAPD_USE_SQL=pgsql ./run sql-test000
    124 
    125 3.2) MySQL
    126 
    127 3.2.1) Start the server
    128 on RedHat:
    129 [root@localhost]# service mysqld start
    130 on other systems: read the docs...
    131 
    132 3.2.2) Create the database:
    133 [root@localhost]# mysqladmin -u root -p create example
    134 (hit <return> for the empty password).
    135 
    136 3.2.3) Create the user:
    137 [root@localhost]# mysql -u root -p example
    138 (hit <return> for the empty password)
    139 mysql> grant all privileges on *.* \
    140   to 'manager'@'localhost' identified by 'secret' with grant option;
    141 mysql> exit;
    142 
    143 3.2.4) Populate the database:
    144 [root@localhost]# cd $SOURCES/servers/slapd/back-sql/rdbms_depend/mysql/
    145 [root@localhost]# mysql -u manager -p example < backsql_create.sql
    146 [root@localhost]# mysql -u manager -p example < testdb_create.sql
    147 [root@localhost]# mysql -u manager -p example < testdb_data.sql
    148 [root@localhost]# mysql -u manager -p example < testdb_metadata.sql
    149 
    150 3.2.5) Run the test:
    151 [root@localhost]# cd $SOURCES/tests
    152 [root@localhost]# SLAPD_USE_SQL=mysql ./run sql-test000
    153 
    154 3.3) IBM db2
    155 [n.a.]
    156 
    157 3.3.1) Start the server:
    158 
    159 3.3.2) Create the database:
    160 
    161 3.3.3) Create the user:
    162 
    163 3.3.4) Populate the database:
    164 connect to the database as user manager, and execute the test files
    165 in auto-commit mode (-c)
    166 [root@localhost]# su - manager
    167 [manager@localhost]$ db2 "connect to example user manager using secret"
    168 [manager@localhost]$ db2 -ctvf backsql_create.sql
    169 [manager@localhost]$ db2 -ctvf testdb_create.sql
    170 [manager@localhost]$ db2 -ctvf testdb_data.sql
    171 [manager@localhost]$ db2 -ctvf testdb_metadata.sql
    172 [manager@localhost]$ db2 "connect reset"
    173 
    174 3.3.5) Run the test:
    175 [root@localhost]# cd $SOURCES/tests
    176 [root@localhost]# SLAPD_USE_SQL=ibmdb2 ./run sql-test000
    177 
    178 4) Cleanup:
    179 The test is basically readonly; this can be performed by all RDBMSes 
    180 (listed above).
    181 
    182 There is another test, sql-test900-write, which is currently enabled
    183 only for PostgreSQL and IBM db2.  Note that after a successful run 
    184 of the write test, the database is no longer in the correct state 
    185 to restart either of the tests, and step 3.X.4 needs to be re-run first.
    186 
    187 More tests are to come; PostgreSQL is known to allow a full reload 
    188 of the test database starting from an empty database.
    189 
    190