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.