<?php # Drizzle PHP Extension # # Copyright (C) 2008 Eric Day (eday@oddments.org) # James M. Luedke (contact@jluedke.com) # All rights reserved. # # Use and distribution licensed under the PHP license. See # the LICENSE file in this directory for full text. $db= 'INFORMATION_SCHEMA'; $query= 'SELECT * FROM COLUMNS LIMIT 3'; $options = DRIZZLE_CON_NONE; # To test against MySQL uncomment # $options = DRIZZLE_CON_MYSQL; $concurrent_queries= 5; print "<html><body><pre>\n"; $begin= gettimeofday(true); print 'Version: ' . drizzle_version() . "\n\n"; print "##########################\n"; print "Testing function interface\n"; print "##########################\n"; $drizzle= drizzle_create(); if (!$drizzle) exit(0); $con= drizzle_con_add_tcp($drizzle, NULL, 0, "root", NULL, $db, $options); if (!$con) exit(0); print "\nResult Buffering\n"; $result= drizzle_query($con, $query); if (!$result) exit(0); if (! drizzle_result_buffer($result)) exit(0); while (($column= drizzle_column_next($result)) != NULL) print drizzle_column_name($column) . ':'; print "\n"; while (($row= drizzle_row_next($result)) != NULL) print implode(':', $row) . "\n"; print "\nRow Buffering\n"; $result= drizzle_query($con, $query); if (!$result) exit(0); while (($column= drizzle_column_read($result)) != NULL) print drizzle_column_name($column) . ':'; print "\n"; while (($row= drizzle_row_buffer($result)) != NULL) print implode(':', $row) . "\n"; print "\nField Buffering\n"; $result= drizzle_query($con, $query); if (!$result) exit(0); if (! drizzle_column_skip($result)) exit(0); while (($row= drizzle_row_read($result)) != 0) { while (1) { $field= drizzle_field_buffer($result); $ret= drizzle_result_return_code($result); if ($ret == DRIZZLE_RETURN_ROW_END) break; else if ($ret != DRIZZLE_RETURN_OK) exit(0); print $field . ':'; } print "\n"; } print "\nNo Buffering\n"; $result= drizzle_query($con, $query); if (!$result) exit(0); if (! drizzle_column_skip($result)) exit(0); while (($row= drizzle_row_read($result)) != 0) { while (1) { list($field, $offset, $total)= drizzle_field_read($result); $ret= drizzle_result_return_code($result); if ($ret == DRIZZLE_RETURN_ROW_END) break; else if ($ret != DRIZZLE_RETURN_OK) exit(0); print $field; if ($offset + strlen($field) == $total) print ':'; } print "\n"; } print "\n\n"; print "########################\n"; print "Testing method interface\n"; print "########################\n"; $drizzle= new Drizzle(); if (!$drizzle) exit(0); $con= $drizzle->addTcp(NULL, 0, "root", NULL, $db, $options); if (!$con) exit(0); print "\nResult Buffering\n"; $result= $con->query($query); if (!$result) exit(0); if (! $result->buffer()) exit(0); while (($column= $result->columnNext()) != NULL) print $column->name() . ':'; print "\n"; while (($row= $result->rowNext()) != NULL) print implode(':', $row) . "\n"; print "\nRow Buffering\n"; $result= $con->query($query); if (!$result) exit(0); while (($column= $result->columnRead()) != NULL) print $column->name() . ':'; print "\n"; while (($row= $result->rowBuffer()) != NULL) print implode(':', $row) . "\n"; print "\nField Buffering\n"; $result= $con->query($query); if (!$result) exit(0); if (! $result->columnSkip()) exit(0); while (($row= $result->rowRead()) != 0) { while (1) { $field= $result->fieldBuffer(); $ret= $result->returnCode(); if ($ret == DRIZZLE_RETURN_ROW_END) break; else if ($ret != DRIZZLE_RETURN_OK) exit(0); print $field . ':'; } print "\n"; } print "\nNo Buffering\n"; $result= $con->query($query); if (!$result) exit(0); if (! $result->columnSkip()) exit(0); while (($row= $result->rowRead()) != 0) { while (1) { list($field, $offset, $total)= $result->fieldRead(); $ret = $result->returnCode(); if ($ret == DRIZZLE_RETURN_ROW_END) break; else if ($ret != DRIZZLE_RETURN_OK) exit(0); print $field; if ($offset + strlen($field) == $total) print ':'; } print "\n"; } print "\n\n"; print "##########################\n"; print "Concurrent query interface\n"; print "##########################\n"; $drizzle= new Drizzle(); if (!$drizzle) exit(0); for ($x= 0; $x < $concurrent_queries; $x++) { $con= $drizzle->addTcp(NULL, 0, "root", NULL, $db, $options); if (!$con) exit(0); if (!$drizzle->queryAdd($con, $query, 0, $x)) exit(0); } while ($q = $drizzle->run()) { $data= $q->data(); $result= $q->result(); if ($result->errorCode()) { print "$data " . $result->error() . "\n"; continue; } while (($column= $result->columnNext()) != NULL) print $column->name() . ':'; print "\n"; while (($row= $result->rowNext()) != NULL) print "$data " . implode(':', $row) . "\n"; print "\n"; } if ($drizzle->returnCode() != DRIZZLE_RETURN_OK) exit(0); printf("\nPage Loaded in %.6f seconds.", gettimeofday(true) - $begin); print "</pre></body></html>\n";