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

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

?? postgres.pm

?? 重新包裝過的lxr
?? PM
字號:
# -*- tab-width: 4 -*- ################################################# $Id: Postgres.pm,v 1.1.1.1 2006/04/26 07:48:23 hellwolf Exp $# This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.package LXR::Index::Postgres;$CVSID = '$Id: Postgres.pm,v 1.1.1.1 2006/04/26 07:48:23 hellwolf Exp $ ';use strict;use DBI;use LXR::Common;use vars qw($dbh $transactions %files %symcache $commitlimit  $files_select $filenum_nextval $files_insert  $symbols_byname $symbols_byid $symnum_nextval  $symbols_remove $symbols_insert $indexes_select $indexes_insert  $releases_select $releases_insert $status_insert  $status_update $usage_insert $usage_select $decl_select  $declid_nextnum $decl_insert $delete_indexes $delete_usage  $delete_status $delete_releases $delete_files $prefix);sub new {	my ($self, $dbname) = @_;	$self = bless({}, $self);	$dbh ||= DBI->connect($dbname, $config->{'dbuser'}, $config->{'dbpass'});	die($DBI::errstr) unless $dbh;	$$dbh{'AutoCommit'} = 0;	#	$dbh->trace(1);	if (defined($config->{'dbprefix'})) {		$prefix = $config->{'dbprefix'};	} else {		$prefix = "lxr_";	}	$commitlimit  = 100;	$transactions = 0;	%files        = ();	%symcache     = ();	$files_select =	  $dbh->prepare("select fileid from ${prefix}files where filename = ? and revision = ?");	$filenum_nextval = $dbh->prepare("select nextval('${prefix}filenum')");	$files_insert    = $dbh->prepare("insert into ${prefix}files values (?, ?, ?)");	$symbols_byname = $dbh->prepare("select symid from ${prefix}symbols where symname = ?");	$symbols_byid   = $dbh->prepare("select symname from ${prefix}symbols where symid = ?");	$symnum_nextval = $dbh->prepare("select nextval('${prefix}symnum')");	$symbols_insert = $dbh->prepare("insert into ${prefix}symbols values (?, ?)");	$symbols_remove = $dbh->prepare("delete from ${prefix}symbols where symname = ?");	$indexes_select =	  $dbh->prepare("select f.filename, i.line, d.declaration, i.relsym "		  . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d "		  . "where s.symid = i.symid and i.fileid = f.fileid "		  . "and f.fileid = r.fileid "		  . "and i.langid = d.langid and i.type = d.declid "		  . "and s.symname = ? and r.release = ?");	$indexes_insert =	  $dbh->prepare("insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) "		  . "values (?, ?, ?, ?, ?, ?)");	$releases_select =	  $dbh->prepare("select * from ${prefix}releases where fileid = ? and release = ?");	$releases_insert = $dbh->prepare("insert into ${prefix}releases values (?, ?)");	$status_insert = $dbh->prepare	  #		("insert into status select ?, 0 except select fileid, 0 from status");	  (     "insert into ${prefix}status select ?, 0 where not exists "		  . "(select * from ${prefix}status where fileid = ?)");	$status_update =	  $dbh->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?");	$usage_insert = $dbh->prepare("insert into ${prefix}usage values (?, ?, ?)");	$usage_select =	  $dbh->prepare("select f.filename, u.line "		  . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u "		  . "where s.symid = u.symid "		  . "and f.fileid = u.fileid "		  . "and f.fileid = r.fileid and "		  . "s.symname = ? and r.release = ?");	$declid_nextnum = $dbh->prepare("select nextval('${prefix}declnum')");	$decl_select =	  $dbh->prepare(		"select declid from ${prefix}declarations where langid = ? and " . "declaration = ?");	$decl_insert =	  $dbh->prepare(		"insert into ${prefix}declarations (declid, langid, declaration) values (?, ?, ?)");	$delete_indexes =	  $dbh->prepare("delete from ${prefix}indexes "		  . "where fileid in "		  . "  (select fileid from ${prefix}releases where release = ?)");	$delete_usage =	  $dbh->prepare("delete from ${prefix}usage "		  . "where fileid in "		  . "  (select fileid from ${prefix}releases where release = ?)");	$delete_status =	  $dbh->prepare("delete from ${prefix}status "		  . "where fileid in "		  . "  (select fileid from ${prefix}releases where release = ?)");	$delete_releases = $dbh->prepare("delete from ${prefix}releases " . "where release = ?");	$delete_files    =	  $dbh->prepare("delete from ${prefix}files "		  . "where fileid in "		  . "  (select fileid from ${prefix}releases where release = ?)");	return $self;}sub empty_cache {	%symcache = ();}sub commit_if_limit {	unless (++$transactions % $commitlimit) {		$dbh->commit();	}}sub index {	my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_;	$indexes_insert->execute($self->symid($symname),		$fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef);	commit_if_limit();}sub reference {	my ($self, $symname, $fileid, $line) = @_;	$usage_insert->execute($fileid, $line, $self->symid($symname));	commit_if_limit();}sub getindex {	my ($self, $symname, $release) = @_;	my ($rows, @ret);	$rows = $indexes_select->execute("$symname", "$release");	while ($rows-- > 0) {		push(@ret, [ $indexes_select->fetchrow_array ]);	}	$indexes_select->finish();	map { $$_[3] &&= $self->symname($$_[3]) } @ret;	return @ret;}sub getreference {	my ($self, $symname, $release) = @_;	my ($rows, @ret);	$rows = $usage_select->execute("$symname", "$release");	while ($rows-- > 0) {		push(@ret, [ $usage_select->fetchrow_array ]);	}	$usage_select->finish();	return @ret;}sub relate {	my ($self, $symname, $release, $rsymname, $reltype) = @_;	#	$relation{$self->symid($symname, $release)} .=	#		join("\t", $self->symid($rsymname, $release), $reltype, '');}sub getrelations {	my ($self, $symname, $release) = @_;}sub fileid {	my ($self, $filename, $revision) = @_;	my ($fileid);	# CAUTION: $revision is not $release!	unless (defined($fileid = $files{"$filename\t$revision"})) {		$files_select->execute($filename, $revision);		($fileid) = $files_select->fetchrow_array();		unless ($fileid) {			$filenum_nextval->execute();			($fileid) = $filenum_nextval->fetchrow_array();			$files_insert->execute($filename, $revision, $fileid);		}		$files{"$filename\t$revision"} = $fileid;	}	commit_if_limit();	return $fileid;}# Indicate that this filerevision is part of this releasesub release {	my ($self, $fileid, $release) = @_;	$releases_select->execute($fileid + 0, $release);	my $firstrow = $releases_select->fetchrow_array();	#	$releases_select->finish();	unless ($firstrow) {		$releases_insert->execute($fileid + 0, $release);	}	commit_if_limit();}sub symid {	my ($self, $symname) = @_;	my ($symid);	unless (defined($symid = $symcache{$symname})) {		$symbols_byname->execute($symname);		($symid) = $symbols_byname->fetchrow_array();		unless ($symid) {			$symnum_nextval->execute();			($symid) = $symnum_nextval->fetchrow_array();			$symbols_insert->execute($symname, $symid);		}		$symcache{$symname} = $symid;	}	commit_if_limit();	return $symid;}sub symname {	my ($self, $symid) = @_;	my ($symname);	$symbols_byid->execute($symid + 0);	($symname) = $symbols_byid->fetchrow_array();	return $symname;}sub issymbol {	my ($self, $symname) = @_;	unless (exists($symcache{$symname})) {		$symbols_byname->execute($symname);		($symcache{$symname}) = $symbols_byname->fetchrow_array();	}	return $symcache{$symname};}# If this file has not been indexed earlier, mark it as being indexed# now and return true.  Return false if already indexed.sub toindex {	my ($self, $fileid) = @_;	$status_insert->execute($fileid + 0, $fileid + 0);	commit_if_limit();	return $status_update->execute(1, $fileid + 0, 0) > 0;}sub toreference {	my ($self, $fileid) = @_;	return $status_update->execute(2, $fileid, 1) > 0;}sub getdecid {	my ($self, $lang, $string) = @_;	my $rows = $decl_select->execute($lang, $string);	$decl_select->finish();	unless ($rows > 0) {		$declid_nextnum->execute();		my ($declid) = $declid_nextnum->fetchrow_array();		$decl_insert->execute($declid, $lang, $string);	}	$decl_select->execute($lang, $string);	my $id = $decl_select->fetchrow_array();	$decl_select->finish();	commit_if_limit();	return $id;}sub purge {	my ($self, $version) = @_;	# we don't delete symbols, because they might be used by other versions	# so we can end up with unused symbols, but that doesn't cause any problems	$delete_indexes->execute($version);	$delete_usage->execute($version);	$delete_status->execute($version);	$delete_releases->execute($version);	$delete_files->execute($version);	commit_if_limit();}sub setindexed {	my ($self, $fileid) = @_;	$status_update->execute(1, $fileid, 0);}sub setreferenced {	my ($self, $fileid) = @_;	$status_update->execute(2, $fileid, 1);}sub END {	$files_select    = undef;	$filenum_nextval = undef;	$files_insert    = undef;	$symbols_byname  = undef;	$symbols_byid    = undef;	$symnum_nextval  = undef;	$symbols_remove  = undef;	$symbols_insert  = undef;	$indexes_select  = undef;	$indexes_insert  = undef;	$releases_select = undef;	$releases_insert = undef;	$status_insert   = undef;	$status_update   = undef;	$usage_insert    = undef;	$usage_select    = undef;	$decl_select     = undef;	$declid_nextnum  = undef;	$decl_insert     = undef;	$delete_indexes  = undef;	$delete_usage    = undef;	$delete_status   = undef;	$delete_releases = undef;	$delete_files    = undef;	$dbh->commit();	$dbh->disconnect();	$dbh = undef;}1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站免费| 久久99精品久久久久久| 欧美精彩视频一区二区三区| 中文字幕中文在线不卡住| 日韩午夜电影av| 日韩一二三区不卡| 欧美电影免费观看高清完整版| 国产成人小视频| 豆国产96在线|亚洲| 国产精品自拍网站| 不卡免费追剧大全电视剧网站| 亚洲精品欧美激情| 亚洲丶国产丶欧美一区二区三区| 日韩一区二区在线看片| 精品福利二区三区| 欧美国产精品劲爆| 一区二区三区国产精华| 亚洲h精品动漫在线观看| 视频一区欧美精品| 国产精品99久久久久久久vr| 97se亚洲国产综合自在线不卡| 日本不卡视频在线| 国产成+人+日韩+欧美+亚洲| 91欧美一区二区| 国产一区二区三区免费观看| 国产91丝袜在线18| 色综合久久99| 精品国产乱码久久久久久久| 欧美天堂一区二区三区| 3d成人h动漫网站入口| 色呦呦一区二区三区| 91精品国产一区二区人妖| 国产婷婷色一区二区三区四区 | 亚洲国产一区视频| 美女视频网站黄色亚洲| 国产传媒一区在线| 欧美精品一卡二卡| 日本韩国欧美三级| 欧美v日韩v国产v| 一区二区三区四区蜜桃| 国产一区二区美女| 欧美日韩黄视频| 亚洲欧洲成人自拍| 久久综合综合久久综合| 在线观看中文字幕不卡| 精品国产免费人成在线观看| 7777精品伊人久久久大香线蕉的| 在线观看区一区二| 日本一区二区三区国色天香| 亚洲第一在线综合网站| 成人高清在线视频| 精品久久一区二区三区| 午夜欧美2019年伦理| 成人欧美一区二区三区| 国产精品白丝av| 欧美一级国产精品| 亚洲成在人线在线播放| 色妞www精品视频| 国产精品久久久久7777按摩| 国内精品视频666| 日韩精品一区在线观看| 亚洲综合色婷婷| 91国产成人在线| 日韩毛片视频在线看| 国产精品99久久久| 成人av电影免费在线播放| 91热门视频在线观看| 国产精品久久久久久久蜜臀 | 亚洲综合男人的天堂| 成人午夜激情视频| 国产欧美日本一区视频| 一区二区三区蜜桃| 日本三级韩国三级欧美三级| 在线亚洲一区观看| 亚洲免费观看高清| 91女厕偷拍女厕偷拍高清| 中文字幕一区二区三区蜜月| 成人a免费在线看| 中文字幕日韩一区| 在线欧美日韩精品| 亚洲一区二区美女| 国产一区二区免费在线| 久久久综合网站| 福利91精品一区二区三区| 国产精品人妖ts系列视频| 99免费精品视频| 一区二区三区四区在线免费观看| 久久成人av少妇免费| 久久伊人蜜桃av一区二区| 国产呦精品一区二区三区网站| 国产乱理伦片在线观看夜一区| 一本一道久久a久久精品| 精品欧美一区二区久久 | 天堂成人国产精品一区| 欧美肥妇bbw| 狠狠狠色丁香婷婷综合久久五月| av影院午夜一区| 一区二区三区在线视频免费观看| 国产一区91精品张津瑜| 国产精品看片你懂得| 日本高清不卡在线观看| 日韩高清欧美激情| 国产日产精品1区| 91麻豆精品视频| 蜜臀精品久久久久久蜜臀| 国产三级精品三级在线专区| 国产精品996| 亚洲一区二区三区在线看| 国产91对白在线观看九色| 一区二区三区中文在线观看| 国产资源在线一区| 国产欧美日本一区二区三区| 欧美成人一区二区三区片免费| 亚洲国产一区二区三区青草影视| av网站免费线看精品| 久久久久久久精| 欧美日韩国产大片| 亚洲高清中文字幕| 国产农村妇女精品| 日韩午夜在线观看| 99久久国产综合精品麻豆| 蜜臀av性久久久久蜜臀aⅴ| 国产精品沙发午睡系列990531| 国产精品资源网| 日本不卡一二三| 亚洲一区在线观看网站| 亚洲国产激情av| 欧美本精品男人aⅴ天堂| 97久久精品人人澡人人爽| 国产精品 日产精品 欧美精品| 欧美成人a视频| 91九色最新地址| 成人激情视频网站| 国产一区二区三区在线观看精品| 精品久久久三级丝袜| 欧美日韩午夜在线| 免费成人av在线播放| 一区二区三区四区乱视频| 中文字幕精品综合| 国产亚洲欧美色| 懂色av一区二区三区免费观看| 国产精品美女久久久久久久网站| 91在线视频观看| 成人av在线观| 国产suv一区二区三区88区| 亚洲欧美激情小说另类| 国产精品视频yy9299一区| 精品免费日韩av| 色综合天天综合网天天狠天天| 亚洲一区二区三区在线看| 一区二区三区在线观看动漫 | 日韩精品一二三四| 亚洲国产裸拍裸体视频在线观看乱了| 宅男噜噜噜66一区二区66| 欧美精品久久99| 国产麻豆视频精品| 国产综合色在线| 国产盗摄女厕一区二区三区| 国产一区二区剧情av在线| 韩国成人在线视频| 国产麻豆精品在线| 成人小视频在线| 石原莉奈在线亚洲二区| 亚洲国产日韩av| 人人爽香蕉精品| 国内精品在线播放| 成人精品电影在线观看| 99久久综合国产精品| 91成人国产精品| 欧美疯狂性受xxxxx喷水图片| 不卡一区二区在线| 在线免费观看视频一区| 91精品婷婷国产综合久久竹菊| 国模无码大尺度一区二区三区| 亚洲影院在线观看| 久久精品999| 亚洲国产美女搞黄色| 国产精品乱码久久久久久| 亚洲女同女同女同女同女同69| 欧美一区国产二区| 中文字幕巨乱亚洲| 视频在线观看一区二区三区| 日韩av午夜在线观看| 国产成人99久久亚洲综合精品| 亚洲va欧美va天堂v国产综合| 久久你懂得1024| 国产精品国产三级国产普通话三级 | 4438x亚洲最大成人网| 99久久精品国产一区二区三区| 久久99精品久久久| a在线播放不卡| 日韩视频在线你懂得| 亚洲欧洲av一区二区三区久久| 久久久91精品国产一区二区精品 | 亚洲精品ww久久久久久p站| 午夜精品久久久久久久久| 国产一区二区三区不卡在线观看| 奇米亚洲午夜久久精品| av不卡免费电影| 日韩精品一区二区三区在线|