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

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

?? mysql.pm

?? 重新包裝過的lxr
?? PM
字號:
# -*- tab-width: 4 perl-indent-level: 4-*- ################################# $Id: Mysql.pm,v 1.2 2006/04/26 10:53:17 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::Mysql;$CVSID = '$Id: Mysql.pm,v 1.2 2006/04/26 10:53:17 hellwolf Exp $ ';use strict;use DBI;use LXR::Common;use vars qw(%files %symcache @ISA $prefix);@ISA = ("LXR::Index");sub new {	my ($self, $dbname) = @_;	$self = bless({}, $self);	if (defined($config->{dbpass})) {		$self->{dbh} = DBI->connect($dbname, $config->{dbuser}, $config->{dbpass})		  || fatal "Can't open connection to database\n";	} else {		$self->{dbh} = DBI->connect($dbname, "lxr", $config->{dbpass})		  || fatal "Can't open connection to database\n";	}	if (defined($config->{'dbprefix'})) {		$prefix = $config->{'dbprefix'};	} else {		$prefix = "lxr_";	}	%files    = ();	%symcache = ();	$self->{files_select} =	  $self->{dbh}	  ->prepare("select fileid from ${prefix}files where  filename = ? and  revision = ?");	$self->{files_insert} =	  $self->{dbh}	  ->prepare("insert into ${prefix}files (filename, revision, fileid) values (?, ?, NULL)");	$self->{symbols_byname} =	  $self->{dbh}->prepare("select symid from ${prefix}symbols where  symname = ?");	$self->{symbols_byid} =	  $self->{dbh}->prepare("select symname from ${prefix}symbols where symid = ?");	$self->{symbols_insert} =	  $self->{dbh}->prepare("insert into ${prefix}symbols (symname, symid) values ( ?, NULL)");	$self->{symbols_remove} =	  $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?");	$self->{indexes_select} =	  $self->{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 = ?");	$self->{indexes_insert} =	  $self->{dbh}->prepare(		"insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) values (?, ?, ?, ?, ?, ?)"	  );	$self->{releases_select} =	  $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and  `release` = ?");	$self->{releases_insert} =	  $self->{dbh}->prepare("insert into ${prefix}releases (fileid, `release`) values (?, ?)");	$self->{status_get} =	  $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?");	$self->{status_insert} = $self->{dbh}->prepare	  #		("insert into status select ?, 0 except select fileid, 0 from status");	  ("insert into ${prefix}status (fileid, status) values (?, ?)");	$self->{status_update} =	  $self->{dbh}	  ->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?");	$self->{usage_insert} =	  $self->{dbh}->prepare("insert into ${prefix}useage (fileid, line, symid) values (?, ?, ?)");	$self->{usage_select} =	  $self->{dbh}->prepare("select f.filename, u.line "		  . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}useage u "		  . "where s.symid = u.symid "		  . "and f.fileid = u.fileid "		  . "and u.fileid = r.fileid "		  . "and s.symname = ? and  r.release = ? "		  . "order by f.filename");	$self->{decl_select} =	  $self->{dbh}->prepare(		"select declid from ${prefix}declarations where langid = ? and " . "declaration = ?");	$self->{decl_insert} =	  $self->{dbh}->prepare(		"insert into ${prefix}declarations (declid, langid, declaration) values (NULL, ?, ?)");	$self->{delete_indexes} =	  $self->{dbh}->prepare("delete from ${prefix}indexes "		  . "using ${prefix}indexes i, ${prefix}releases r "		  . "where i.fileid = r.fileid "		  . "and r.release = ?");	$self->{delete_useage} =	  $self->{dbh}->prepare("delete from ${prefix}useage "		  . "using ${prefix}useage u, ${prefix}releases r "		  . "where u.fileid = r.fileid "		  . "and r.release = ?");	$self->{delete_status} =	  $self->{dbh}->prepare("delete from ${prefix}status "		  . "using ${prefix}status s, ${prefix}releases r "		  . "where s.fileid = r.fileid "		  . "and r.release = ?");	$self->{delete_releases} =	  $self->{dbh}->prepare("delete from ${prefix}releases " . "where `release` = ?");	$self->{delete_files} =	  $self->{dbh}->prepare("delete from ${prefix}files "		  . "using ${prefix}files f, ${prefix}releases r "		  . "where f.fileid = r.fileid "		  . "and r.release = ?");	return $self;}sub index {	my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_;	$self->{indexes_insert}->execute($self->symid($symname),		$fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef);}sub reference {	my ($self, $symname, $fileid, $line) = @_;	$self->{usage_insert}->execute($fileid, $line, $self->symid($symname));}sub getindex {	my ($self, $symname, $release) = @_;	my ($rows, @ret);	$rows = $self->{indexes_select}->execute("$symname", "$release");	while ($rows-- > 0) {		push(@ret, [ $self->{indexes_select}->fetchrow_array ]);	}	$self->{indexes_select}->finish();	map { $$_[3] &&= $self->symname($$_[3]) } @ret;	return @ret;}sub getreference {	my ($self, $symname, $release) = @_;	my ($rows, @ret);	$rows = $self->{usage_select}->execute("$symname", "$release");	while ($rows-- > 0) {		push(@ret, [ $self->{usage_select}->fetchrow_array ]);	}	$self->{usage_select}->finish();	return @ret;}sub fileid {	my ($self, $filename, $revision) = @_;	my ($fileid);	# CAUTION: $revision is not $release!	unless (defined($fileid = $files{"$filename\t$revision"})) {		$self->{files_select}->execute($filename, $revision);		($fileid) = $self->{files_select}->fetchrow_array();		unless ($fileid) {			$self->{files_insert}->execute($filename, $revision);			$self->{files_select}->execute($filename, $revision);			($fileid) = $self->{files_select}->fetchrow_array();		}		$files{"$filename\t$revision"} = $fileid;		$self->{files_select}->finish();	}	return $fileid;}# Indicate that this filerevision is part of this releasesub release {	my ($self, $fileid, $release) = @_;	my $rows = $self->{releases_select}->execute($fileid + 0, $release);	$self->{releases_select}->finish();	unless ($rows > 0) {		$self->{releases_insert}->execute($fileid, $release);		$self->{releases_insert}->finish();	}}sub symid {	my ($self, $symname) = @_;	my ($symid);	$symid = $symcache{$symname};	unless (defined($symid)) {		$self->{symbols_byname}->execute($symname);		($symid) = $self->{symbols_byname}->fetchrow_array();		$self->{symbols_byname}->finish();		unless ($symid) {			$self->{symbols_insert}->execute($symname);			# Get the id of the new symbol			$self->{symbols_byname}->execute($symname);			($symid) = $self->{symbols_byname}->fetchrow_array();			$self->{symbols_byname}->finish();		}		$symcache{$symname} = $symid;	}	return $symid;}sub symname {	my ($self, $symid) = @_;	my ($symname);	$self->{symbols_byid}->execute($symid + 0);	($symname) = $self->{symbols_byid}->fetchrow_array();	$self->{symbols_byid}->finish();	return $symname;}sub issymbol {	my ($self, $symname) = @_;	my ($symid);	$symid = $symcache{$symname};	unless (defined($symid)) {		$self->{symbols_byname}->execute($symname);		($symid) = $self->{symbols_byname}->fetchrow_array();		$self->{symbols_byname}->finish();		$symcache{$symname} = $symid;	}	return $symid;}# If this file has not been indexed earlier return true.  Return false# if already indexed.sub toindex {	my ($self, $fileid) = @_;	my ($status);	$self->{status_get}->execute($fileid);	$status = $self->{status_get}->fetchrow_array();	$self->{status_get}->finish();	if (!defined($status)) {		$self->{status_insert}->execute($fileid + 0, 0);	}	return $status == 0;}sub setindexed {	my ($self, $fileid) = @_;	$self->{status_update}->execute(1, $fileid, 0);}sub toreference {	my ($self, $fileid) = @_;	my ($status);	$self->{status_get}->execute($fileid);	$status = $self->{status_get}->fetchrow_array();	$self->{status_get}->finish();	return $status < 2;}sub setreferenced {	my ($self, $fileid) = @_;	$self->{status_update}->execute(2, $fileid, 1);}# This function should be called before parsing each new file,# if this is not done the too much memory will be used and# tings will become very slow.sub empty_cache {	%symcache = ();}sub getdecid {	my ($self, $lang, $string) = @_;	my $rows = $self->{decl_select}->execute($lang, $string);	$self->{decl_select}->finish();	unless ($rows > 0) {		$self->{decl_insert}->execute($lang, $string);	}	$self->{decl_select}->execute($lang, $string);	my $id = $self->{decl_select}->fetchrow_array();	$self->{decl_select}->finish();	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	$self->{delete_indexes}->execute($version);	$self->{delete_useage}->execute($version);	$self->{delete_status}->execute($version);	$self->{delete_releases}->execute($version);	$self->{delete_files}->execute($version);}sub DESTROY {	my ($self) = @_;	$self->{files_select}    = undef;	$self->{files_insert}    = undef;	$self->{symbols_byname}  = undef;	$self->{symbols_byid}    = undef;	$self->{symbols_insert}  = undef;	$self->{indexes_insert}  = undef;	$self->{releases_insert} = undef;	$self->{status_insert}   = undef;	$self->{status_update}   = undef;	$self->{usage_insert}    = undef;	$self->{usage_select}    = undef;	$self->{decl_select}     = undef;	$self->{decl_insert}     = undef;	$self->{delete_indexes}  = undef;	$self->{delete_useage}   = undef;	$self->{delete_status}   = undef;	$self->{delete_releases} = undef;	$self->{delete_files}    = undef;	if ($self->{dbh}) {		$self->{dbh}->disconnect();		$self->{dbh} = undef;	}}1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久你懂得1024| 一区精品在线播放| 欧美性感一区二区三区| 国产99精品在线观看| 日本不卡1234视频| 日韩二区在线观看| 亚洲成在人线在线播放| 亚洲自拍偷拍九九九| 一区二区三区四区高清精品免费观看| 亚洲品质自拍视频网站| 亚洲精品你懂的| 亚洲综合视频在线观看| 亚洲午夜成aⅴ人片| 一区二区免费在线| 亚洲综合图片区| 日韩精品午夜视频| 久久精品国产一区二区三 | 国产成人亚洲精品青草天美| 日本中文在线一区| 久久精品国产久精国产爱| 久久99蜜桃精品| 精品一区精品二区高清| 日韩电影免费一区| 九九**精品视频免费播放| 国产一区三区三区| 处破女av一区二区| 99久久久国产精品免费蜜臀| 欧洲一区二区av| 国产一区二区三区香蕉| 成人一区在线观看| 日本韩国欧美在线| 欧美精品久久久久久久久老牛影院| 777欧美精品| 久久久久久久久99精品| 中文字幕在线免费不卡| 亚洲综合免费观看高清完整版在线| 五月激情丁香一区二区三区| 久88久久88久久久| 亚洲一二三专区| 久草在线在线精品观看| 9i在线看片成人免费| 欧美综合亚洲图片综合区| 欧美一区二区私人影院日本| 国产欧美综合色| 亚洲一区二区三区四区在线免费观看 | 国产女同性恋一区二区| 亚洲免费观看在线视频| 日本欧美加勒比视频| 国产精品一区二区91| 白白色 亚洲乱淫| 欧美电影在线免费观看| 久久久亚洲午夜电影| 中文字幕亚洲在| 日本欧美一区二区在线观看| 国产黄色精品网站| 秋霞午夜av一区二区三区| 国产成人99久久亚洲综合精品| 色欧美乱欧美15图片| 精品国免费一区二区三区| 亚洲免费观看高清完整版在线| 青青青爽久久午夜综合久久午夜| 福利电影一区二区| 欧美日韩国产bt| 中文字幕一区二区三区不卡| 免费成人在线网站| 91成人网在线| 欧洲亚洲精品在线| 国产婷婷色一区二区三区在线| 亚洲综合免费观看高清完整版| 国产一区二区h| 欧美高清视频在线高清观看mv色露露十八| 国产欧美日韩三级| 伦理电影国产精品| 在线观看91视频| 中文字幕一区二区三| 国产九色精品成人porny| 欧美人与性动xxxx| 亚洲欧美日韩在线| 一区二区三区电影在线播| 国产不卡在线播放| 日韩欧美精品三级| 中文字幕佐山爱一区二区免费| 久久99久国产精品黄毛片色诱| 欧美综合欧美视频| 亚洲欧美色一区| 国产91在线|亚洲| 精品裸体舞一区二区三区| 亚洲一二三四在线观看| 91麻豆免费观看| 亚洲欧洲日本在线| 国产成人av一区二区三区在线观看| 日韩亚洲欧美成人一区| 天堂一区二区在线免费观看| 色综合久久久久久久久| 国产精品三级av在线播放| 激情深爱一区二区| 日韩欧美一级二级| 日韩精品1区2区3区| 欧美精品乱码久久久久久| 亚洲成人第一页| 欧美亚洲动漫制服丝袜| 亚洲激情第一区| 日本电影亚洲天堂一区| 日韩毛片在线免费观看| www.色综合.com| 国产精品久久99| 99久久国产综合色|国产精品| 国产精品全国免费观看高清| 高清不卡在线观看av| 中文字幕第一页久久| 国产成人免费高清| 国产女同互慰高潮91漫画| 成人动漫中文字幕| 亚洲丝袜精品丝袜在线| 99久久国产综合精品色伊| 一区二区在线看| 欧美亚洲国产怡红院影院| 亚洲大片免费看| 日韩一区二区电影在线| 久久99精品视频| 久久精品男人天堂av| 精久久久久久久久久久| 欧美片在线播放| 日本一区二区动态图| 从欧美一区二区三区| 樱花草国产18久久久久| 欧美日韩国产123区| 美国一区二区三区在线播放| 久久亚洲二区三区| 99国产欧美另类久久久精品| 欧美mv日韩mv亚洲| 成人一区二区三区在线观看| 亚洲男人的天堂在线观看| 色丁香久综合在线久综合在线观看| 亚洲老司机在线| 69堂成人精品免费视频| 国产精品一区二区在线观看不卡| 国产精品久久久久aaaa樱花| 欧美网站一区二区| 久久精品噜噜噜成人88aⅴ| 国产欧美日韩卡一| 色婷婷精品久久二区二区蜜臂av| 亚洲风情在线资源站| 精品久久一区二区三区| 99免费精品视频| 日韩精彩视频在线观看| 国产欧美日韩在线| 欧美亚洲国产一区二区三区va| 青青草国产精品97视觉盛宴| 在线观看日韩一区| 极品美女销魂一区二区三区| 综合欧美亚洲日本| 91精品中文字幕一区二区三区| 国产一区二区福利| 亚洲自拍都市欧美小说| 日韩午夜在线播放| 91影视在线播放| 毛片av一区二区| 亚洲欧美偷拍三级| 久久综合色婷婷| 91黄色激情网站| 国产一区二区三区蝌蚪| 亚洲人成人一区二区在线观看| 欧美一级专区免费大片| 91在线视频官网| 狠狠色综合日日| 亚洲成人先锋电影| 国产精品欧美一区喷水| 日韩丝袜美女视频| 欧美综合一区二区| av综合在线播放| 精彩视频一区二区三区| 亚洲大片免费看| 亚洲欧美偷拍卡通变态| 色综合久久中文综合久久牛| 国产一区二区三区四| 天天做天天摸天天爽国产一区| 国产精品热久久久久夜色精品三区| 日韩一二三区视频| 欧美色爱综合网| av亚洲精华国产精华精华| 韩国精品一区二区| 视频一区二区三区在线| 一区二区在线免费观看| 国产女人水真多18毛片18精品视频 | 色av综合在线| 国产91精品露脸国语对白| 老司机精品视频一区二区三区| 亚洲国产精品一区二区尤物区| 中文字幕在线观看不卡视频| 国产欧美日韩三级| 欧美精品一区二区高清在线观看| 欧美日韩黄色影视| 99v久久综合狠狠综合久久| 韩国精品久久久| 精品制服美女丁香| 老司机免费视频一区二区| 免费成人深夜小野草| 婷婷丁香激情综合| 日韩二区三区在线观看|