datadict-sqlite.inc.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. @version v5.20.17 31-Mar-2020
  4. @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved.
  5. @copyright (c) 2014 Damien Regad, Mark Newnham and the ADOdb community
  6. Released under both BSD license and Lesser GPL library license.
  7. Whenever there is any discrepancy between the two licenses,
  8. the BSD license will take precedence.
  9. Set tabs to 4 for best viewing.
  10. SQLite datadict Andrei Besleaga
  11. */
  12. // security - hide paths
  13. if (!defined('ADODB_DIR')) die();
  14. class ADODB2_sqlite extends ADODB_DataDict {
  15. var $databaseType = 'sqlite';
  16. var $seqField = false;
  17. var $addCol=' ADD COLUMN';
  18. var $dropTable = 'DROP TABLE IF EXISTS %s';
  19. var $dropIndex = 'DROP INDEX IF EXISTS %s';
  20. var $renameTable = 'ALTER TABLE %s RENAME TO %s';
  21. function ActualType($meta)
  22. {
  23. switch(strtoupper($meta)) {
  24. case 'C': return 'VARCHAR'; // TEXT , TEXT affinity
  25. case 'XL':return 'LONGTEXT'; // TEXT , TEXT affinity
  26. case 'X': return 'TEXT'; // TEXT , TEXT affinity
  27. case 'C2': return 'VARCHAR'; // TEXT , TEXT affinity
  28. case 'X2': return 'LONGTEXT'; // TEXT , TEXT affinity
  29. case 'B': return 'LONGBLOB'; // TEXT , NONE affinity , BLOB
  30. case 'D': return 'DATE'; // NUMERIC , NUMERIC affinity
  31. case 'T': return 'DATETIME'; // NUMERIC , NUMERIC affinity
  32. case 'L': return 'TINYINT'; // NUMERIC , INTEGER affinity
  33. case 'R':
  34. case 'I4':
  35. case 'I': return 'INTEGER'; // NUMERIC , INTEGER affinity
  36. case 'I1': return 'TINYINT'; // NUMERIC , INTEGER affinity
  37. case 'I2': return 'SMALLINT'; // NUMERIC , INTEGER affinity
  38. case 'I8': return 'BIGINT'; // NUMERIC , INTEGER affinity
  39. case 'F': return 'DOUBLE'; // NUMERIC , REAL affinity
  40. case 'N': return 'NUMERIC'; // NUMERIC , NUMERIC affinity
  41. default:
  42. return $meta;
  43. }
  44. }
  45. // return string must begin with space
  46. function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)
  47. {
  48. $suffix = '';
  49. if ($funsigned) $suffix .= ' UNSIGNED';
  50. if ($fnotnull) $suffix .= ' NOT NULL';
  51. if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
  52. if ($fautoinc) $suffix .= ' AUTOINCREMENT';
  53. if ($fconstraint) $suffix .= ' '.$fconstraint;
  54. return $suffix;
  55. }
  56. function AlterColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
  57. {
  58. if ($this->debug) ADOConnection::outp("AlterColumnSQL not supported natively by SQLite");
  59. return array();
  60. }
  61. function DropColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
  62. {
  63. if ($this->debug) ADOConnection::outp("DropColumnSQL not supported natively by SQLite");
  64. return array();
  65. }
  66. function RenameColumnSQL($tabname,$oldcolumn,$newcolumn,$flds='')
  67. {
  68. if ($this->debug) ADOConnection::outp("RenameColumnSQL not supported natively by SQLite");
  69. return array();
  70. }
  71. }