PageRenderTime 74ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/slow/ext_sqlite3/ext_sqlite3.php

http://github.com/facebook/hiphop-php
PHP | 100 lines | 92 code | 7 blank | 1 comment | 2 complexity | e986f7a8d94d6c965020b53e4dbfed81 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?hh
  2. function VS($x, $y) {
  3. var_dump($x === $y);
  4. if ($x !== $y) { echo "Failed: $y\n"; echo "Got: $x\n";
  5. var_dump(debug_backtrace()); }
  6. }
  7. function VERIFY($x) { VS($x != false, true); }
  8. //////////////////////////////////////////////////////////////////////
  9. function lower($a) {
  10. return strtolower($a);
  11. }
  12. function sumlen_step($a,$b,$c) {
  13. return (int)$a + strlen($c);
  14. }
  15. function sumlen_fini($a) {
  16. return (int)$a;
  17. }
  18. <<__EntryPoint>>
  19. function main_ext_sqlite3() {
  20. $db = new SQLite3(':memory:test');
  21. $db->exec("DROP TABLE IF EXISTS foo");
  22. $db->exec("CREATE TABLE foo (bar STRING)");
  23. $db->exec("INSERT INTO foo VALUES ('ABC')");
  24. $db->exec("INSERT INTO foo VALUES ('DEF')");
  25. VS($db->lastinsertrowid(), 2);
  26. VS($db->changes(), 1);
  27. VS($db->lasterrorcode(), 0);
  28. VS($db->lasterrormsg(), "not an error");
  29. VS(SQLite3::escapestring("'\""), "''\"");
  30. VS($db->querysingle("SELECT * FROM foo"), "ABC");
  31. VS($db->querysingle("SELECT * FROM foo", true), darray["bar" => "ABC"]);
  32. // testing query() and SQLite3Result
  33. {
  34. $res = $db->query("SELECT * FROM foo");
  35. VS($res->fetcharray(), darray[0 => "ABC", "bar" => "ABC"]);
  36. VS($res->numcolumns(), 1);
  37. VS($res->columnname(0), "bar");
  38. VS($res->columntype(0), SQLITE3_TEXT);
  39. VS($res->fetcharray(SQLITE3_NUM), varray["DEF"]);
  40. $res->finalize();
  41. }
  42. // testing prepare() and sqlite3stmt
  43. {
  44. $stmt = $db->prepare("SELECT * FROM foo WHERE bar = :id");
  45. VS($stmt->paramcount(), 1);
  46. $id = "DEF";
  47. VERIFY($stmt->bindvalue(":id", $id, SQLITE3_TEXT));
  48. $id = "ABC";
  49. {
  50. $res = $stmt->execute();
  51. VS($res->fetcharray(SQLITE3_NUM), varray["DEF"]);
  52. $res->finalize();
  53. }
  54. VERIFY($stmt->clear());
  55. VERIFY($stmt->reset());
  56. }
  57. // testing UDF
  58. {
  59. VERIFY($db->createfunction("tolower", "lower", 1));
  60. $res = $db->query("SELECT tolower(bar) FROM foo");
  61. VS($res->fetcharray(SQLITE3_NUM), varray["abc"]);
  62. $res->finalize();
  63. }
  64. {
  65. VERIFY($db->createaggregate("sumlen", "sumlen_step", "sumlen_fini", 1));
  66. $res = $db->query("SELECT sumlen(bar) FROM foo");
  67. VS($res->fetcharray(SQLITE3_NUM), varray[6]);
  68. $res->finalize();
  69. }
  70. $stmt->close();
  71. // Since minor version can change frequently, just test the major version
  72. VS(SQLite3::version()['versionString'][0], "3");
  73. VERIFY((int)SQLite3::version()['versionNumber'] > (int)3000000);
  74. $db->close();
  75. unlink(":memory:test");
  76. // Check that a PHP Exception is thrown for nonexistant databases
  77. try {
  78. new SQLite3('/'.uniqid('random', true).'/db');
  79. } catch (Exception $e) {
  80. var_dump(true);
  81. }
  82. }