亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datadict-postgres.inc.php

?? asterisk用 的voip記費軟件
?? PHP
字號:
<?php/**  V4.94 23 Jan 2007  (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.  Released under both BSD license and Lesser GPL library license.   Whenever there is any discrepancy between the two licenses,   the BSD license will take precedence.	  Set tabs to 4 for best viewing. */// security - hide pathsif (!defined('ADODB_DIR')) die();class ADODB2_postgres extends ADODB_DataDict {		var $databaseType = 'postgres';	var $seqField = false;	var $seqPrefix = 'SEQ_';	var $addCol = ' ADD COLUMN';	var $quote = '"';	var $renameTable = 'ALTER TABLE %s RENAME TO %s'; // at least since 7.1	var $dropTable = 'DROP TABLE %s CASCADE';		function MetaType($t,$len=-1,$fieldobj=false)	{		if (is_object($t)) {			$fieldobj = $t;			$t = $fieldobj->type;			$len = $fieldobj->max_length;		}		$is_serial = is_object($fieldobj) && $fieldobj->primary_key && $fieldobj->unique && 			$fieldobj->has_default && substr($fieldobj->default_value,0,8) == 'nextval(';				switch (strtoupper($t)) {			case 'INTERVAL':			case 'CHAR':			case 'CHARACTER':			case 'VARCHAR':			case 'NAME':	   		case 'BPCHAR':				if ($len <= $this->blobSize) return 'C';						case 'TEXT':				return 'X';				case 'IMAGE': // user defined type			case 'BLOB': // user defined type			case 'BIT':	// This is a bit string, not a single bit, so don't return 'L'			case 'VARBIT':			case 'BYTEA':				return 'B';						case 'BOOL':			case 'BOOLEAN':				return 'L';						case 'DATE':				return 'D';						case 'TIME':			case 'DATETIME':			case 'TIMESTAMP':			case 'TIMESTAMPTZ':				return 'T';						case 'INTEGER': return !$is_serial ? 'I' : 'R';			case 'SMALLINT': 			case 'INT2': return !$is_serial ? 'I2' : 'R';			case 'INT4': return !$is_serial ? 'I4' : 'R';			case 'BIGINT': 			case 'INT8': return !$is_serial ? 'I8' : 'R';							case 'OID':			case 'SERIAL':				return 'R';						case 'FLOAT4':			case 'FLOAT8':			case 'DOUBLE PRECISION':			case 'REAL':				return 'F';							 default:			 	return 'N';		}	} 	 	function ActualType($meta)	{		switch($meta) {		case 'C': return 'VARCHAR';		case 'XL':		case 'X': return 'TEXT';				case 'C2': return 'VARCHAR';		case 'X2': return 'TEXT';				case 'B': return 'BYTEA';					case 'D': return 'DATE';		case 'T': return 'TIMESTAMP';				case 'L': return 'BOOLEAN';		case 'I': return 'INTEGER';		case 'I1': return 'SMALLINT';		case 'I2': return 'INT2';		case 'I4': return 'INT4';		case 'I8': return 'INT8';				case 'F': return 'FLOAT8';		case 'N': return 'NUMERIC';		default:			return $meta;		}	}		/**	 * Adding a new Column 	 *	 * reimplementation of the default function as postgres does NOT allow to set the default in the same statement	 *	 * @param string $tabname table-name	 * @param string $flds column-names and types for the changed columns	 * @return array with SQL strings	 */	function AddColumnSQL($tabname, $flds)	{		$tabname = $this->TableName ($tabname);		$sql = array();		list($lines,$pkey) = $this->_GenFields($flds);		$alter = 'ALTER TABLE ' . $tabname . $this->addCol . ' ';		foreach($lines as $v) {			if (($not_null = preg_match('/NOT NULL/i',$v))) {				$v = preg_replace('/NOT NULL/i','',$v);			}			if (preg_match('/^([^ ]+) .*DEFAULT ([^ ]+)/',$v,$matches)) {				list(,$colname,$default) = $matches;				$sql[] = $alter . str_replace('DEFAULT '.$default,'',$v);				$sql[] = 'UPDATE '.$tabname.' SET '.$colname.'='.$default;				$sql[] = 'ALTER TABLE '.$tabname.' ALTER COLUMN '.$colname.' SET DEFAULT ' . $default;			} else {								$sql[] = $alter . $v;			}			if ($not_null) {				list($colname) = explode(' ',$v);				$sql[] = 'ALTER TABLE '.$tabname.' ALTER COLUMN '.$colname.' SET NOT NULL';			}		}		return $sql;	}		/**	 * Change the definition of one column	 *	 * Postgres can't do that on it's own, you need to supply the complete defintion of the new table,	 * to allow, recreating the table and copying the content over to the new table	 * @param string $tabname table-name	 * @param string $flds column-name and type for the changed column	 * @param string $tableflds complete defintion of the new table, eg. for postgres, default ''	 * @param array/ $tableoptions options for the new table see CreateTableSQL, default ''	 * @return array with SQL strings	 */	function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')	{		if (!$tableflds) {			if ($this->debug) ADOConnection::outp("AlterColumnSQL needs a complete table-definiton for PostgreSQL");			return array();		}		return $this->_recreate_copy_table($tabname,False,$tableflds,$tableoptions);	}		/**	 * Drop one column	 *	 * Postgres < 7.3 can't do that on it's own, you need to supply the complete defintion of the new table,	 * to allow, recreating the table and copying the content over to the new table	 * @param string $tabname table-name	 * @param string $flds column-name and type for the changed column	 * @param string $tableflds complete defintion of the new table, eg. for postgres, default ''	 * @param array/ $tableoptions options for the new table see CreateTableSQL, default ''	 * @return array with SQL strings	 */	function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='')	{		$has_drop_column = 7.3 <= (float) @$this->serverInfo['version'];		if (!$has_drop_column && !$tableflds) {			if ($this->debug) ADOConnection::outp("DropColumnSQL needs complete table-definiton for PostgreSQL < 7.3");		return array();	}		if ($has_drop_column) {			return ADODB_DataDict::DropColumnSQL($tabname, $flds);		}		return $this->_recreate_copy_table($tabname,$flds,$tableflds,$tableoptions);	}		/**	 * Save the content into a temp. table, drop and recreate the original table and copy the content back in	 *	 * We also take care to set the values of the sequenz and recreate the indexes.	 * All this is done in a transaction, to not loose the content of the table, if something went wrong!	 * @internal	 * @param string $tabname table-name	 * @param string $dropflds column-names to drop	 * @param string $tableflds complete defintion of the new table, eg. for postgres	 * @param array/string $tableoptions options for the new table see CreateTableSQL, default ''	 * @return array with SQL strings	 */	function _recreate_copy_table($tabname,$dropflds,$tableflds,$tableoptions='')	{		if ($dropflds && !is_array($dropflds)) $dropflds = explode(',',$dropflds);		$copyflds = array();		foreach($this->MetaColumns($tabname) as $fld) {			if (!$dropflds || !in_array($fld->name,$dropflds)) {				// we need to explicit convert varchar to a number to be able to do an AlterColumn of a char column to a nummeric one				if (preg_match('/'.$fld->name.' (I|I2|I4|I8|N|F)/i',$tableflds,$matches) && 					in_array($fld->type,array('varchar','char','text','bytea'))) {					$copyflds[] = "to_number($fld->name,'S9999999999999D99')";				} else {					$copyflds[] = $fld->name;				}				// identify the sequence name and the fld its on				if ($fld->primary_key && $fld->has_default && 					preg_match("/nextval\('([^']+)'::text\)/",$fld->default_value,$matches)) {					$seq_name = $matches[1];					$seq_fld = $fld->name;				}			}		}		$copyflds = implode(', ',$copyflds);				$tempname = $tabname.'_tmp';		$aSql[] = 'BEGIN';		// we use a transaction, to make sure not to loose the content of the table		$aSql[] = "SELECT * INTO TEMPORARY TABLE $tempname FROM $tabname";		$aSql = array_merge($aSql,$this->DropTableSQL($tabname));		$aSql = array_merge($aSql,$this->CreateTableSQL($tabname,$tableflds,$tableoptions));		$aSql[] = "INSERT INTO $tabname SELECT $copyflds FROM $tempname";		if ($seq_name && $seq_fld) {	// if we have a sequence we need to set it again			$seq_name = $tabname.'_'.$seq_fld.'_seq';	// has to be the name of the new implicit sequence			$aSql[] = "SELECT setval('$seq_name',MAX($seq_fld)) FROM $tabname";		}		$aSql[] = "DROP TABLE $tempname";		// recreate the indexes, if they not contain one of the droped columns		foreach($this->MetaIndexes($tabname) as $idx_name => $idx_data)		{			if (substr($idx_name,-5) != '_pkey' && (!$dropflds || !count(array_intersect($dropflds,$idx_data['columns'])))) {				$aSql = array_merge($aSql,$this->CreateIndexSQL($idx_name,$tabname,$idx_data['columns'],					$idx_data['unique'] ? array('UNIQUE') : False));			}		}		$aSql[] = 'COMMIT';		return $aSql;	}		function DropTableSQL($tabname)	{		$sql = ADODB_DataDict::DropTableSQL($tabname);				$drop_seq = $this->_DropAutoIncrement($tabname);		if ($drop_seq) $sql[] = $drop_seq;				return $sql;	}	// return string must begin with space	function _CreateSuffix($fname, &$ftype, $fnotnull,$fdefault,$fautoinc,$fconstraint)	{		if ($fautoinc) {			$ftype = 'SERIAL';			return '';		}		$suffix = '';		if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";		if ($fnotnull) $suffix .= ' NOT NULL';		if ($fconstraint) $suffix .= ' '.$fconstraint;		return $suffix;	}		// search for a sequece for the given table (asumes the seqence-name contains the table-name!)	// if yes return sql to drop it	// this is still necessary if postgres < 7.3 or the SERIAL was created on an earlier version!!!	function _DropAutoIncrement($tabname)	{		$tabname = $this->connection->quote('%'.$tabname.'%');		$seq = $this->connection->GetOne("SELECT relname FROM pg_class WHERE NOT relname ~ 'pg_.*' AND relname LIKE $tabname AND relkind='S'");		// check if a tables depends on the sequenz and it therefor cant and dont need to be droped separatly		if (!$seq || $this->connection->GetOne("SELECT relname FROM pg_class JOIN pg_depend ON pg_class.relfilenode=pg_depend.objid WHERE relname='$seq' AND relkind='S' AND deptype='i'")) {			return False;		}		return "DROP SEQUENCE ".$seq;	}		/*	CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (	{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]	| table_constraint } [, ... ]	)	[ INHERITS ( parent_table [, ... ] ) ]	[ WITH OIDS | WITHOUT OIDS ]	where column_constraint is:	[ CONSTRAINT constraint_name ]	{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |	CHECK (expression) |	REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL ]	[ ON DELETE action ] [ ON UPDATE action ] }	[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]	and table_constraint is:	[ CONSTRAINT constraint_name ]	{ UNIQUE ( column_name [, ... ] ) |	PRIMARY KEY ( column_name [, ... ] ) |	CHECK ( expression ) |	FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]	[ MATCH FULL | MATCH PARTIAL ] [ ON DELETE action ] [ ON UPDATE action ] }	[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]	*/			/*	CREATE [ UNIQUE ] INDEX index_name ON table[ USING acc_method ] ( column [ ops_name ] [, ...] )[ WHERE predicate ]CREATE [ UNIQUE ] INDEX index_name ON table[ USING acc_method ] ( func_name( column [, ... ]) [ ops_name ] )[ WHERE predicate ]	*/	function _IndexSQL($idxname, $tabname, $flds, $idxoptions)	{		$sql = array();				if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) {			$sql[] = sprintf ($this->dropIndex, $idxname, $tabname);			if ( isset($idxoptions['DROP']) )				return $sql;		}				if ( empty ($flds) ) {			return $sql;		}				$unique = isset($idxoptions['UNIQUE']) ? ' UNIQUE' : '';				$s = 'CREATE' . $unique . ' INDEX ' . $idxname . ' ON ' . $tabname . ' ';				if (isset($idxoptions['HASH']))			$s .= 'USING HASH ';				if ( isset($idxoptions[$this->upperName]) )			$s .= $idxoptions[$this->upperName];				if ( is_array($flds) )			$flds = implode(', ',$flds);		$s .= '(' . $flds . ')';		$sql[] = $s;				return $sql;	}		function _GetSize($ftype, $ty, $fsize, $fprec)	{		if (strlen($fsize) && $ty != 'X' && $ty != 'B' && $ty  != 'I' && strpos($ftype,'(') === false) {			$ftype .= "(".$fsize;			if (strlen($fprec)) $ftype .= ",".$fprec;			$ftype .= ')';		}		return $ftype;	}}?>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久99久精品视频免费观看| 欧美色电影在线| 欧美亚洲综合在线| 久久精品人人做人人爽人人| 亚洲美女视频在线观看| 国产成人精品免费网站| 欧美喷水一区二区| 亚洲伦在线观看| 成人免费电影视频| 精品久久久网站| 日韩在线观看一区二区| 99久久精品99国产精品| 2023国产精品自拍| 日韩福利视频网| 91国产免费看| 亚洲免费av观看| 成人精品在线视频观看| 精品国产自在久精品国产| 日韩不卡一区二区| 欧美日本在线一区| 亚洲综合一区二区三区| eeuss鲁一区二区三区| 久久精品夜色噜噜亚洲a∨| 喷水一区二区三区| 3atv在线一区二区三区| 午夜视频一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲国产人成综合网站| caoporm超碰国产精品| 欧美激情一区二区三区蜜桃视频| 国产一区二区三区在线观看精品| 在线播放国产精品二区一二区四区| 亚洲人成人一区二区在线观看| 99麻豆久久久国产精品免费| 中文字幕在线不卡国产视频| 成人福利视频网站| 中文字幕一区二区三区在线观看| 大白屁股一区二区视频| 国产精品网友自拍| 成人小视频免费在线观看| 亚洲国产精品ⅴa在线观看| 大胆欧美人体老妇| 亚洲美女屁股眼交3| 97精品久久久午夜一区二区三区| 国产精品女同互慰在线看| 成年人国产精品| 亚洲综合久久av| 欧美三级韩国三级日本三斤 | 日日摸夜夜添夜夜添国产精品| 欧美视频精品在线| 日韩不卡在线观看日韩不卡视频| 日韩精品中文字幕一区二区三区| 极品销魂美女一区二区三区| 久久这里只有精品首页| 成人午夜视频免费看| 亚洲精品视频免费看| 欧美年轻男男videosbes| 久久精品噜噜噜成人88aⅴ| 久久日韩精品一区二区五区| 成人av资源网站| 亚洲观看高清完整版在线观看| 91麻豆精品91久久久久久清纯| 精东粉嫩av免费一区二区三区| 中文字幕免费观看一区| 欧美日韩精品一区二区三区蜜桃 | 欧美日本一区二区| 久久不见久久见免费视频1| 国产精品免费视频网站| 欧美怡红院视频| 国产精品18久久久久久vr| 亚洲男人的天堂av| 欧美成人a∨高清免费观看| 99久久精品国产观看| 欧美96一区二区免费视频| 国产精品日韩精品欧美在线| 91成人免费网站| 国产一区二区中文字幕| 一区二区三区精品视频| 久久久青草青青国产亚洲免观| 不卡的av电影| 麻豆精品久久久| 一级中文字幕一区二区| xnxx国产精品| 欧美麻豆精品久久久久久| 不卡的电影网站| 国产一区 二区 三区一级| 亚洲国产日日夜夜| 综合自拍亚洲综合图不卡区| 精品久久人人做人人爱| 欧美人牲a欧美精品| 91丨porny丨最新| 国产精品88888| 久久99精品国产.久久久久| 亚洲电影一级片| 亚洲私人黄色宅男| 国产偷国产偷亚洲高清人白洁| 在线成人免费观看| 色妹子一区二区| 国产精品18久久久| 国产乱码精品一品二品| 天堂av在线一区| 亚洲高清视频在线| 亚洲亚洲人成综合网络| 中文字幕一区日韩精品欧美| 国产欧美一区二区三区网站| 精品国产123| 日韩欧美精品三级| 欧美大白屁股肥臀xxxxxx| 欧美精品aⅴ在线视频| 91成人网在线| 在线看国产一区二区| 色噜噜夜夜夜综合网| 99精品国产一区二区三区不卡| 国产河南妇女毛片精品久久久| 精品一二三四区| 国产一区二区伦理| 国产在线精品不卡| 国产毛片精品视频| 国产一区二区三区在线观看免费视频 | 国产精品18久久久久久久久| 精品一区二区三区不卡| 久久er99热精品一区二区| 轻轻草成人在线| 免费成人av在线| 久久国产剧场电影| 国产在线视频精品一区| 国产精品资源网站| 成人app网站| 91福利社在线观看| 欧美美女激情18p| 欧美成人a在线| 国产午夜亚洲精品午夜鲁丝片| 久久精品视频免费观看| 亚洲欧洲一区二区三区| 亚洲国产成人av好男人在线观看| 婷婷国产在线综合| 韩国欧美一区二区| a在线播放不卡| 欧美羞羞免费网站| 日韩精品专区在线影院重磅| 久久久久久久久久久久久久久99 | 国产不卡免费视频| 99热99精品| 欧美日韩在线播| 精品久久五月天| 中文字幕电影一区| 性感美女久久精品| 极品美女销魂一区二区三区免费| 国产精品1024久久| 欧美色倩网站大全免费| 精品国产欧美一区二区| 综合色中文字幕| 久久精品国产久精国产| 91一区一区三区| 欧美一区二区三区日韩| 国产精品麻豆视频| 婷婷一区二区三区| 不卡视频一二三| 日韩午夜av一区| 亚洲欧美日韩在线播放| 久久er精品视频| 在线观看日韩高清av| 欧美成人猛片aaaaaaa| 夜色激情一区二区| 国产很黄免费观看久久| 91精品国产综合久久蜜臀| 中文字幕一区日韩精品欧美| 美女久久久精品| 日本大香伊一区二区三区| 久久久99久久精品欧美| 午夜日韩在线电影| 色狠狠色噜噜噜综合网| 26uuu国产日韩综合| 日韩国产欧美一区二区三区| 91色在线porny| 国产精品―色哟哟| 国产精品一区二区久久精品爱涩| 欧美精品乱人伦久久久久久| 日韩一区中文字幕| 成人免费看片app下载| 久久亚洲综合色| 久久精工是国产品牌吗| 欧美日韩免费高清一区色橹橹| 国产精品久久久久aaaa| 国产精品2024| 久久久精品人体av艺术| 精品制服美女久久| 精品国产污网站| 精品一区二区三区免费播放| 欧美老女人第四色| 亚洲一区在线播放| 色成年激情久久综合| 亚洲色图欧美激情| 一本大道久久精品懂色aⅴ | 成人精品一区二区三区中文字幕| 久久综合九色综合欧美就去吻| 麻豆精品精品国产自在97香蕉| 5566中文字幕一区二区电影| 亚洲愉拍自拍另类高清精品| 色88888久久久久久影院野外|