See Release Notes
Long Term Support Release
<?php< /* < @version v5.21.0 2021-02-27 < @copyright (c) 2000-2013 John Lim (jlim#natsoft.com). All rights reserved. < @copyright (c) 2014 Damien Regad, Mark Newnham and the ADOdb community < < First cut at the Netezza Driver by Josh Eldridge joshuae74#hotmail.com < Based on the previous postgres drivers. < http://www.netezza.com/ < Major Additions/Changes: < MetaDatabasesSQL, MetaTablesSQL, MetaColumnsSQL < Note: You have to have admin privileges to access the system tables < Removed non-working keys code (Netezza has no concept of keys) < Fixed the way data types and lengths are returned in MetaColumns() < as well as added the default lengths for certain types < Updated public variables for Netezza < Still need to remove blob functions, as Netezza doesn't support blob> /** > * Netezza Driver > * > * @link https://www.ibm.com/products/netezza > * Based on the previous postgres drivers. Major Additions/Changes: > * - MetaDatabasesSQL, MetaTablesSQL, MetaColumnsSQL > * Note: You have to have admin privileges to access the system tables > * - Removed non-working keys code (Netezza has no concept of keys) > * - Fixed the way data types and lengths are returned in MetaColumns() > * as well as added the default lengths for certain types > * - Updated public variables for Netezza > * TODO: Still need to remove blob functions, as Netezza doesn't support blob > * > * This file is part of ADOdb, a Database Abstraction Layer library for PHP. > * > * @package ADOdb > * @link https://adodb.org Project's web site and documentation > * @link https://github.com/ADOdb/ADOdb Source code and issue tracker > * > * The ADOdb Library is dual-licensed, released under both the BSD 3-Clause > * and the GNU Lesser General Public Licence (LGPL) v2.1 or, at your option, > * any later version. This means you can use it in proprietary products. > * See the LICENSE.md file distributed with this source code for details. > * @license BSD-3-Clause > * @license LGPL-2.1-or-later > * > * @copyright 2000-2013 John Lim > * @copyright 2014 Damien Regad, Mark Newnham and the ADOdb community > * @author Josh Eldridge <joshuae74@hotmail.com>*/>// security - hide paths if (!defined('ADODB_DIR')) die(); include_once(ADODB_DIR.'/drivers/adodb-postgres64.inc.php'); class ADODB_netezza extends ADODB_postgres64 { var $databaseType = 'netezza'; var $dataProvider = 'netezza'; var $hasInsertID = false; var $_resultid = false; var $concat_operator='||'; var $random = 'random'; var $metaDatabasesSQL = "select objname from _v_object_data where objtype='database' order by 1"; var $metaTablesSQL = "select objname from _v_object_data where objtype='table' order by 1"; var $isoDates = true; // accepts dates in ISO format var $sysDate = "CURRENT_DATE"; var $sysTimeStamp = "CURRENT_TIMESTAMP"; var $blobEncodeType = 'C'; var $metaColumnsSQL = "SELECT attname, atttype FROM _v_relation_column_def WHERE name = '%s' AND attnum > 0 ORDER BY attnum"; var $metaColumnsSQL1 = "SELECT attname, atttype FROM _v_relation_column_def WHERE name = '%s' AND attnum > 0 ORDER BY attnum"; // netezza doesn't have keys. it does have distributions, so maybe this is // something that can be pulled from the system tables var $metaKeySQL = ""; var $hasAffectedRows = true; var $hasLimit = true; var $true = 't'; // string that represents TRUE for a database var $false = 'f'; // string that represents FALSE for a database var $fmtDate = "'Y-m-d'"; // used by DBDate() as the default date format used by the database var $fmtTimeStamp = "'Y-m-d G:i:s'"; // used by DBTimeStamp as the default timestamp fmt. var $ansiOuter = true; var $autoRollback = true; // apparently pgsql does not autorollback properly before 4.3.4 // http://bugs.php.net/bug.php?id=25404 function MetaColumns($table,$upper=true) { // Changed this function to support Netezza which has no concept of keys // could posisbly work on other things from the system table later. global $ADODB_FETCH_MODE; $table = strtolower($table); $save = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table,$table)); if (isset($savem)) $this->SetFetchMode($savem); $ADODB_FETCH_MODE = $save; if ($rs === false) return false; $retarr = array(); while (!$rs->EOF) { $fld = new ADOFieldObject(); $fld->name = $rs->fields[0]; // since we're returning type and length as one string, // split them out here. if ($first = strstr($rs->fields[1], "(")) { $fld->max_length = trim($first, "()"); } else { $fld->max_length = -1; } if ($first = strpos($rs->fields[1], "(")) { $fld->type = substr($rs->fields[1], 0, $first); } else { $fld->type = $rs->fields[1]; } switch ($fld->type) { case "byteint": case "boolean": $fld->max_length = 1; break; case "smallint": $fld->max_length = 2; break; case "integer": case "numeric": case "date": $fld->max_length = 4; break; case "bigint": case "time": case "timestamp": $fld->max_length = 8; break; case "timetz": case "time with time zone": $fld->max_length = 12; break; } if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld; else $retarr[($upper) ? strtoupper($fld->name) : $fld->name] = $fld; $rs->MoveNext(); } $rs->Close(); return $retarr; } } /*-------------------------------------------------------------------------------------- Class Name: Recordset --------------------------------------------------------------------------------------*/ class ADORecordSet_netezza extends ADORecordSet_postgres64 { var $databaseType = "netezza"; var $canSeek = true; // _initrs modified to disable blob handling function _initrs() { global $ADODB_COUNTRECS; $this->_numOfRows = ($ADODB_COUNTRECS)? @pg_num_rows($this->_queryID):-1; $this->_numOfFields = @pg_num_fields($this->_queryID); } }