#!/usr/bin/php -q
<?php
$conn = pg_connect("dbname=smarlowe");
$ddlstatements = array (
	"drop table test;"
	,"create table test (id1 int, id2 int, id3 int, id4 int, val1 float);"
	,"create index test_all on test (id1, id3, id4, val1);"
	);
foreach ($ddlstatements as $d){
	pg_query($d);
}
$cnt=1000000;
print "Creating initial pre-loaded table of $cnt size\n";
pg_query("begin");
for ($i=0;$i<$cnt;$i++){
	$i1=rand(1,100);
	$i2=rand(1,100);
	$i3=rand(1,100);
	$i4=rand(1,100);
	$v1=rand(1,10000000)/1000000;
	$stmt = sprintf ("insert into test (id1, id2, id3, id4, val1) values (%d, %d, %d, %d, %f)", $i1, $i2, $i3, $i4, $v1).";\n";
	pg_query($stmt);
#	echo $stmt;
}
pg_query("commit");

pg_query("analyze test;");
$cnt = 10000;
// test with a transaction
$time=microtime(TRUE);
pg_query("begin");
for ($i=0;$i<$cnt;$i++){
	$i1=rand(1,100);
	$i2=rand(1,100);
	$i3=rand(1,100);
	$i4=rand(1,100);
	$v1=rand(1,10000000)/1000000;
	$stmt = sprintf ("insert into test (id1, id2, id3, id4, val1) values (%d, %d, %d, %d, %f)", $i1, $i2, $i3, $i4, $v1).";\n";
	pg_query($stmt);
#	echo $stmt;
}
pg_query("commit");
$total=microtime(TRUE)-$time;
print "With transaction: total time to insert $cnt rows was $total, or ";
print ($total/$cnt)*1000;
#print ($total/$cnt);
print " milliseconds per insert\n";
//test without a transaction
$time=microtime(TRUE);
#pg_query("begin");
for ($i=0;$i<$cnt;$i++){
	$i1=rand(1,100);
	$i2=rand(1,100);
	$i3=rand(1,100);
	$i4=rand(1,100);
	$v1=rand(1,10000000)/1000000;
	$stmt = sprintf ("insert into test (id1, id2, id3, id4, val1) values (%d, %d, %d, %d, %f)", $i1, $i2, $i3, $i4, $v1).";\n";
	pg_query($stmt);
#	echo $stmt;
}
#pg_query("commit");
$total=microtime(TRUE)-$time;
print "Without transaction: total time to insert $cnt rows was $total, or ";
print ($total/$cnt);
print " seconds per insert\n";

?>

