drizzle
Profile
Search
 
Hosted by The Rackspace Cloud
Calpont InfiniDB in Drizzle

All work referenced below was performed on Ubuntu 9.04 with gcc version 4.3.3

There are a few pre-requisities necessary before the software can be built:

In this, we assume the following variables (these will vary depending on your environment):

DRIZZLE_SRCDIR = location of your source tree
CALPONT_SRCDIR = $DRIZZLE_SRCDIR/plugin/calpont

First thing we need to do is obtain the source and build it. That is simply done as follows:

$ bzr branch lp:~posulliv/drizzle/calpont $DRIZZLE_SRCDIR
$ cd $DRIZZLE_SRCDIR
$ ./config/autorun.sh && ./configure && make

Next, we need to create some directories that the InfiniDB engine needs right now. This is just because I have not modified the source around this area. If I can find another day for hacking, I can remove the need for the next few commands:

$ sudo mkdir -p /usr/local/Calpont/etc
$ sudo mkdir -p /usr/local/Calpont/data
$ sudo mkdir -p /usr/local/Calpont/data1
$ sudo mkdir -p /usr/local/Calpont/dbrm
$ sudo chown -R yourusername:yourusername /usr/local/Calpont
$ cp $CALPONT_SRCDIR/oam/etc/Calpont.xml /usr/local/Calpont/.
$ cp $CALPONT_SRCDIR/oam/etc/Calpont.xml /usr/local/Calpont/etc/.

Now, we can start up the InfiniDB related server processes. You should see output similar to that shown below:

$ cd $CALPONT_SRCDIR
$ ./workernode DBRM_Worker1 
$ ./controllernode
$ ./PrimProc &
[1] 21921
posulliv@aghadoe:~/repos/drizzle/infinidb/plugin/calpont$ Starting PrimitiveServer: st = 1, sq = 10, pt = 4, pw = 128, pq = 10240, nb = 317724, nt = 4, nc = 1, ra = 512, db = 128, mb = 512, rd = 0, tr = 0, mc = false, ml = false, ss = 67108864, bp = 4

$ /ExeMgr &
[2] 21930

Starting ExeMgr: st = 50, sq = 100, qs = 20, cf = /usr/local/Calpont/etc/Calpont.xml

$ ./DDLProc &
[3] 21946
$ ./DMLProc &
[4] 22003
$ ./dbbuilder 7

Creating System Catalog...

Creating SYSTABLE
---------------------------------------
  Creating TableName column OID: 1001
  Creating TableName column dictionary
  Creating Schema column OID: 1002
  Creating Schema column dictionary
  Creating ObjectId column OID: 1003
  Creating CreateDate column OID: 1004
  Creating LastUpdate column OID: 1005
  Creating INIT column OID: 1006
  Creating NEXT column OID: 1007
  Creating NUMOFROWS column OID: 1008
  Creating AVGROWLEN column OID: 1009
  Creating NUMOFBLOCKS column OID: 1010

Creating SYSCOLUMN
---------------------------------------
  Creating Schema column OID: 1021
  Creating Schema column dictionary...
  Creating TableName column OID: 1022
  Creating TableName column dictionary...
  Creating ColumnName column OID: 1023
  Creating ColumnName column dictionary...
  Creating ObjectID column OID: 1024
  Creating DictOID column OID: 1025
  Creating ListOID column OID: 1026
  Creating TreeOID column OID: 1027
  Creating DataType column OID: 1028
  Creating ColumnLength column OID: 1029
  Creating ColumnPos column OID: 1030
  Creating LastUpdate column OID: 1031
  Creating DefaultValue column OID: 1032
  Creating DefaultValue column dictionary...
  Creating Nullable column OID: 1033
  Creating Scale column OID: 1034
  Creating Precision column OID: 1035
  Creating AutoInc column OID: 1036
  Creating DISTCOUNT column OID: 1037
  Creating NULLCOUNT column OID: 1038
---------------------------------------
  Creating MINVALUE column OID: 1039
  Creating MINVALUE column dictionary...
---------------------------------------
  Creating MAXVALUE column OID: 1040
  Creating MAXVALUE column dictionary...

Creating SYSCONSTRAINT
---------------------------------------
  Creating ConstraintName column OID: 1051
  Creating ConstraintName column dictionary...
  Creating Schema column OID: 1052
  Creating Schema column dictionary...
  Creating TableName column OID: 1053
  Creating TableName column dictionary...
  Creating ConstraintType column OID: 1054
  Creating ContraintPrim column OID: 1055
  Creating ContraintPrim column dictionary...
  Creating ConstraintText column OID: 1056
  Creating ConstraintText column dictionary...
  Creating ConstraintStatus column OID: 1057
  Creating ConstraintStatus column dictionary...
  Creating IndexName column OID: 1058
  Creating IndexName column dictionary...
  Creating ReferencedTableName column OID: 1059
  Creating ReferencedTableName column dictionary...
  Creating ReferencedSchema column OID: 1060
  Creating ReferencedSchema column dictionary...
  Creating ReferencedConstraintName column OID: 1061
  Creating ReferencedConstraintName column dictionary...

Creating SYSCONSTRAINTCOL
---------------------------------------
  Creating Schema column OID: 1071
  Creating Schema column dictionary...
  Creating TableName column OID: 1072
  Creating TableName column dictionary...
  Creating ColumnName column OID: 1073
  Creating ColumnName column dictionary...
  Creating ConstraintName column OID: 1074
  Creating ConstraintName column dictionary...

Creating SYSINDEX
---------------------------------------
  Creating Schema column OID: 1081
  Creating Schema column dictionary...
  Creating TableName column OID: 1082
  Creating TableName column dictionary...
  Creating IndexName column OID: 1083
  Creating IndexName column dictionary...
  Creating ListOID column OID: 1084
  Creating TreeOID column OID: 1085
  Creating IndexType column OID: 1086
  Creating multicolflag column OID: 1087
  Creating CreateDate column OID: 1088
  Creating LastUpdateDate column OID: 1089
  Creating RecordCount column OID: 1090
  Creating TreeLevel column OID: 1091

  Creating LeafCount column OID: 1092
  Creating DistinctKeys column OID: 1093
  Creating LeafBlocks column OID: 1094

  Creating AvgLeafCount column OID: 1095
  Creating AvgDataBlock column OID: 1096
  Creating SampleSize column OID: 1097
  Creating ClusterFactor column OID: 1098
  Creating LastAnalysisDate column OID: 1099

Creating SYSINDEXCOL
---------------------------------------
  Creating Schema column OID: 1101
  Creating Schema column dictionary...
  Creating TableName column OID: 1102
  Creating TableName column dictionary...
  Creating ColumnName column OID: 1103
  Creating ColumnName column dictionary...
  Creating IndexName column OID: 1104
  Creating IndexName column dictionary...
  Creating ColumnPos column OID: 1105
System Catalog creation took: 181.784 seconds to complete.

System Catalog created

$

Now, we can start drizzle and utilize the InfiniDB storage engine:

drizzle> select plugin_name, plugin_author, plugin_description
    -> from information_schema.plugins
    -> where plugin_name = 'InfiniDB';
+-------------+---------------+---------------------------------+
| plugin_name | plugin_author | plugin_description              |
+-------------+---------------+---------------------------------+
| InfiniDB    | Calpont Corp. | Calpont InfiniDB storage engine | 
+-------------+---------------+---------------------------------+
1 row in set (0 sec)

drizzle> 

drizzle> create table t1(a int, b int) engine=infinidb;

Query OK, 0 rows affected (5.4 sec)

drizzle> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             | 
+----------------+
1 row in set (0 sec)

drizzle> show create table t1;
+-------+--------------------------------------------------------------------------------------+
| Table | Create Table                                                                         |
+-------+--------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `a` int DEFAULT NULL,
  `b` int DEFAULT NULL
) ENGINE=InfiniDB | 
+-------+--------------------------------------------------------------------------------------+
1 row in set (0 sec)

drizzle> 

Right now, insertion into tables is not working. Again, when I find time to work on this, I should able to resolve that issue.