INT32 _qgmPtrTable::getOwnField( const CHAR *begin, qgmField &field ) { if ( begin ) { return getOwnField( begin, ossStrlen( begin ), field ) ; } return SDB_INVALIDARG ; }
// PD_TRACE_DECLARE_FUNCTION( SDB__QGMPTRTABLE_GETOWNATTR, "_qgmPtrTable::getOwnAttr" ) INT32 _qgmPtrTable::getOwnAttr( const CHAR *begin, UINT32 size, qgmDbAttr &attr ) { INT32 rc = SDB_OK ; PD_TRACE_ENTRY( SDB__QGMPTRTABLE_GETOWNATTR ) ; UINT32 pos = 0 ; BOOLEAN hasDot = qgmUtilFirstDot( begin, size, pos ) ; if ( hasDot && ( 0 == pos || size - 1 == pos ) ) { PD_LOG( PDERROR, "the first char and the last char can not be '.'" ) ; rc = SDB_INVALIDARG ; goto error ; } if ( hasDot ) { rc = getOwnField( begin, pos, attr.relegation() ) ; if ( SDB_OK != rc ) { goto error ; } ++pos ; } rc = getOwnField( begin + pos, size - pos, attr.attr() ) ; if ( SDB_OK != rc ) { goto error ; } done: PD_TRACE_EXITRC( SDB__QGMPTRTABLE_GETOWNATTR, rc ) ; return rc ; error: goto done ; }
_qgmField _qgmPtrTable::getField( const qgmField &sub1, const qgmField &sub2 ) { if ( sub1.empty() ) { return sub2 ; } else if ( sub2.empty() ) { return sub1 ; } else { string str( sub1.begin(), sub1.size() ) ; str += sub2.toString() ; qgmField merge ; getOwnField( str.c_str(), merge ) ; return merge ; } }
INT32 _qgmPtrTable::getUniqueTableAlias( qgmField & field ) { CHAR uniqueName[20] = {0} ; ossSnprintf( uniqueName, 19, "$SYS_T%d", ++_uniqueTableID ) ; return getOwnField( uniqueName, field ) ; }