示例#1
0
 INT32 _qgmPtrTable::getOwnField( const CHAR *begin,
                                  qgmField &field )
 {
    if ( begin )
    {
       return getOwnField( begin, ossStrlen( begin ), field ) ;
    }
    return SDB_INVALIDARG ;
 }
示例#2
0
   // 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 ;
   }
示例#3
0
 _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 ;
    }
 }
示例#4
0
 INT32 _qgmPtrTable::getUniqueTableAlias( qgmField & field )
 {
    CHAR uniqueName[20] = {0} ;
    ossSnprintf( uniqueName, 19, "$SYS_T%d", ++_uniqueTableID ) ;
    return getOwnField( uniqueName, field ) ;
 }