join on

来源:互联网 发布:理发店刷卡软件 编辑:程序博客网 时间:2024/06/14 01:37

SELECT  P.objID,P.u,P.g,P.r, P.i,P.z FROM Galaxy$num AS P JOIN Star$num AS  S ON  P.parentID=S.parentID WHERE  P.parentID>0;


src\query\parser\Translator.cpp:1673

scidb::parser::Translator::passGeneralizedJoin

for (size_t i = 0; pureDDJoin && (i < opParams.size()); i += 2)

    {
        LOG4CXX_TRACE(logger, "Probably pure DD join");


        bool isLeftDimension = resolveParamDimensionReference(inputSchemas, opParams[i], false);
        bool isLeftAttribute = resolveParamAttributeReference(inputSchemas, opParams[i], false);


        bool isRightDimension = resolveParamDimensionReference(inputSchemas, opParams[i + 1], false);
        bool isRightAttribute = resolveParamAttributeReference(inputSchemas, opParams[i + 1], false);


        const string leftFullName = str(boost::format("%s%s") % (opParams[i]->getArrayName() != "" ?
                opParams[i]->getArrayName() + "." : "") % opParams[i]->getObjectName() );


        const string rightFullName = str(boost::format("%s%s") % (opParams[i + 1]->getArrayName() != "" ?

                opParams[i + 1]->getArrayName() + "." : "") % opParams[i + 1]->getObjectName() );


(gdb) p leftFullName
$24 = "P.parentID"
(gdb) p rightFullName
$26 = "S.parentID"



        cout<<"leftFullName opParams[i]->getObjectNo()="<<opParams[i]->_objectNo<<endl;
        cout<<"rightFullName opParams[i]->getObjectNo()="<<opParams[i+ 1]->_objectNo<<endl;


        cout<<"leftFullName opParams[i]->_inputNo()="<<opParams[i]->_inputNo<<endl;
        cout<<"rightFullName opParams[i]->_inputNo()="<<opParams[i+ 1]->_inputNo<<endl;


属性编号从0开始的。

attidset= 0attidset= 467attidset= 468attidset= 469attidset= 470attidset= 471

leftFullName opParams[i]->getObjectNo()=465
rightFullName opParams[i]->getObjectNo()=465
leftFullName opParams[i]->_inputNo()=0
rightFullName opParams[i]->_inputNo()=1


0 0