summaryrefslogtreecommitdiff
path: root/db/matcher_covered.cpp
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2012-08-29 20:54:51 +0200
committerAntonin Kral <a.kral@bobek.cz>2012-08-29 20:54:51 +0200
commit83957b73f9177f6e38bd5375bd93ca1f6a47188c (patch)
treef20b7d6ac9a9c64ff5bb6b5910a24abbb356b1d5 /db/matcher_covered.cpp
parent5071d203970edd4c995493d810abe20987e76fe9 (diff)
Imported Upstream version 2.2.0upstream/2.2.0
Diffstat (limited to 'db/matcher_covered.cpp')
-rw-r--r--db/matcher_covered.cpp99
1 files changed, 0 insertions, 99 deletions
diff --git a/db/matcher_covered.cpp b/db/matcher_covered.cpp
deleted file mode 100644
index 52164f5dde3..00000000000
--- a/db/matcher_covered.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// matcher_covered.cpp
-
-/* Matcher is our boolean expression evaluator for "where" clauses */
-
-/**
-* Copyright (C) 2008 10gen Inc.
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License, version 3,
-* as published by the Free Software Foundation.
-*
-* 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 Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "pch.h"
-#include "matcher.h"
-#include "../util/goodies.h"
-#include "../util/unittest.h"
-#include "diskloc.h"
-#include "../scripting/engine.h"
-#include "db.h"
-#include "client.h"
-
-#include "pdfile.h"
-
-namespace mongo {
-
- CoveredIndexMatcher::CoveredIndexMatcher( const BSONObj &jsobj, const BSONObj &indexKeyPattern, bool alwaysUseRecord) :
- _docMatcher( new Matcher( jsobj ) ),
- _keyMatcher( *_docMatcher, indexKeyPattern ) {
- init( alwaysUseRecord );
- }
-
- CoveredIndexMatcher::CoveredIndexMatcher( const shared_ptr< Matcher > &docMatcher, const BSONObj &indexKeyPattern , bool alwaysUseRecord ) :
- _docMatcher( docMatcher ),
- _keyMatcher( *_docMatcher, indexKeyPattern ) {
- init( alwaysUseRecord );
- }
-
- void CoveredIndexMatcher::init( bool alwaysUseRecord ) {
- _needRecord =
- alwaysUseRecord ||
- !_keyMatcher.keyMatch( *_docMatcher );
- }
-
- bool CoveredIndexMatcher::matchesCurrent( Cursor * cursor , MatchDetails * details ) {
- // bool keyUsable = ! cursor->isMultiKey() && check for $orish like conditions in matcher SERVER-1264
- return matches( cursor->currKey() , cursor->currLoc() , details ,
- !cursor->indexKeyPattern().isEmpty() // unindexed cursor
- && !cursor->isMultiKey() // multikey cursor
- );
- }
-
- bool CoveredIndexMatcher::matches(const BSONObj &key, const DiskLoc &recLoc , MatchDetails * details , bool keyUsable ) {
- dassert( key.isValid() );
-
- if ( details )
- details->reset();
-
- if ( keyUsable ) {
-
- if ( !_keyMatcher.matches(key, details ) ) {
- return false;
- }
-
- if ( ! _needRecord ) {
- return true;
- }
-
- }
-
- if ( details )
- details->_loadedObject = true;
-
- return _docMatcher->matches(recLoc.obj() , details );
- }
-
- string CoveredIndexMatcher::toString() const {
- StringBuilder buf;
- buf << "(CoveredIndexMatcher ";
-
- if ( _needRecord )
- buf << "needRecord ";
-
- buf << "keyMatcher: " << _keyMatcher.toString() << " ";
-
- if ( _docMatcher )
- buf << "docMatcher: " << _docMatcher->toString() << " ";
-
- buf << ")";
- return buf.str();
- }
-}