C:/lib/adodb/drivers/adodb-netezza.inc.php Quellcode

adodb-netezza.inc.php
gehe zur Dokumentation dieser Datei
1 <?php
2 /*
3  V5.19dev ??-???-2014 (c) 2000-2014 John Lim (jlim#natsoft.com). All rights reserved.
4 
5  First cut at the Netezza Driver by Josh Eldridge joshuae74#hotmail.com
6  Based on the previous postgres drivers.
7  http://www.netezza.com/
8  Major Additions/Changes:
9  MetaDatabasesSQL, MetaTablesSQL, MetaColumnsSQL
10  Note: You have to have admin privileges to access the system tables
11  Removed non-working keys code (Netezza has no concept of keys)
12  Fixed the way data types and lengths are returned in MetaColumns()
13  as well as added the default lengths for certain types
14  Updated public variables for Netezza
15  Still need to remove blob functions, as Netezza doesn't suppport blob
16 */
17 // security - hide paths
18 if (!defined('ADODB_DIR')) die();
19 
20 include_once(ADODB_DIR.'/drivers/adodb-postgres64.inc.php');
21 
23  var $databaseType = 'netezza';
24  var $dataProvider = 'netezza';
25  var $hasInsertID = false;
26  var $_resultid = false;
27  var $concat_operator='||';
28  var $random = 'random';
29  var $metaDatabasesSQL = "select objname from _v_object_data where objtype='database' order by 1";
30  var $metaTablesSQL = "select objname from _v_object_data where objtype='table' order by 1";
31  var $isoDates = true; // accepts dates in ISO format
32  var $sysDate = "CURRENT_DATE";
33  var $sysTimeStamp = "CURRENT_TIMESTAMP";
34  var $blobEncodeType = 'C';
35  var $metaColumnsSQL = "SELECT attname, atttype FROM _v_relation_column_def WHERE name = '%s' AND attnum > 0 ORDER BY attnum";
36  var $metaColumnsSQL1 = "SELECT attname, atttype FROM _v_relation_column_def WHERE name = '%s' AND attnum > 0 ORDER BY attnum";
37  // netezza doesn't have keys. it does have distributions, so maybe this is
38  // something that can be pulled from the system tables
39  var $metaKeySQL = "";
40  var $hasAffectedRows = true;
41  var $hasLimit = true;
42  var $true = 't'; // string that represents TRUE for a database
43  var $false = 'f'; // string that represents FALSE for a database
44  var $fmtDate = "'Y-m-d'"; // used by DBDate() as the default date format used by the database
45  var $fmtTimeStamp = "'Y-m-d G:i:s'"; // used by DBTimeStamp as the default timestamp fmt.
46  var $ansiOuter = true;
47  var $autoRollback = true; // apparently pgsql does not autorollback properly before 4.3.4
48  // http://bugs.php.net/bug.php?id=25404
49 
50 
51  function ADODB_netezza()
52  {
53 
54  }
55 
56  function MetaColumns($table,$upper=true)
57  {
58 
59  // Changed this function to support Netezza which has no concept of keys
60  // could posisbly work on other things from the system table later.
61 
62  global $ADODB_FETCH_MODE;
63 
64  $table = strtolower($table);
65 
66  $save = $ADODB_FETCH_MODE;
67  $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
68  if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false);
69 
70  $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table,$table));
71  if (isset($savem)) $this->SetFetchMode($savem);
72  $ADODB_FETCH_MODE = $save;
73 
74  if ($rs === false) return false;
75 
76  $retarr = array();
77  while (!$rs->EOF) {
78  $fld = new ADOFieldObject();
79  $fld->name = $rs->fields[0];
80 
81  // since we're returning type and length as one string,
82  // split them out here.
83 
84  if ($first = strstr($rs->fields[1], "(")) {
85  $fld->max_length = trim($first, "()");
86  } else {
87  $fld->max_length = -1;
88  }
89 
90  if ($first = strpos($rs->fields[1], "(")) {
91  $fld->type = substr($rs->fields[1], 0, $first);
92  } else {
93  $fld->type = $rs->fields[1];
94  }
95 
96  switch ($fld->type) {
97  case "byteint":
98  case "boolean":
99  $fld->max_length = 1;
100  break;
101  case "smallint":
102  $fld->max_length = 2;
103  break;
104  case "integer":
105  case "numeric":
106  case "date":
107  $fld->max_length = 4;
108  break;
109  case "bigint":
110  case "time":
111  case "timestamp":
112  $fld->max_length = 8;
113  break;
114  case "timetz":
115  case "time with time zone":
116  $fld->max_length = 12;
117  break;
118  }
119 
120  if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;
121  else $retarr[($upper) ? strtoupper($fld->name) : $fld->name] = $fld;
122 
123  $rs->MoveNext();
124  }
125  $rs->Close();
126  return $retarr;
127 
128  }
129 
130 
131 }
132 
133 /*--------------------------------------------------------------------------------------
134  Class Name: Recordset
135 --------------------------------------------------------------------------------------*/
136 
138 {
139  var $databaseType = "netezza";
140  var $canSeek = true;
141 
142  function ADORecordSet_netezza($queryID,$mode=false)
143  {
144  if ($mode === false) {
145  global $ADODB_FETCH_MODE;
146  $mode = $ADODB_FETCH_MODE;
147  }
148  switch ($mode)
149  {
150  case ADODB_FETCH_NUM: $this->fetchMode = PGSQL_NUM; break;
151  case ADODB_FETCH_ASSOC:$this->fetchMode = PGSQL_ASSOC; break;
152 
153  case ADODB_FETCH_DEFAULT:
154  case ADODB_FETCH_BOTH:
155  default: $this->fetchMode = PGSQL_BOTH; break;
156  }
157  $this->adodbFetchMode = $mode;
158  $this->ADORecordSet($queryID);
159  }
160 
161  // _initrs modified to disable blob handling
162  function _initrs()
163  {
164  global $ADODB_COUNTRECS;
165  $this->_numOfRows = ($ADODB_COUNTRECS)? @pg_numrows($this->_queryID):-1;
166  $this->_numOfFields = @pg_numfields($this->_queryID);
167  }
168 
169 }
170 ?>




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.