blob: b3511a9463dd1f756f47d862488d1e74e77c67ca [file] [log] [blame]
/* -*-C++-*-
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
*****************************************************************************
*
* File: ElemDDLFileAttr.C
* Description: methods for classes representing file attributes and
* file Attribute(s) clauses
*
* Created: 9/20/95
* Language: C++
*
*
*
*
*****************************************************************************
*/
#include "AllElemDDLFileAttr.h"
#include "BaseTypes.h"
#include "ComASSERT.h"
#include "ComDiags.h"
#include "ComOperators.h"
#define SQLPARSERGLOBALS_CONTEXT_AND_DIAGS
#include "SqlParserGlobals.h"
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttr
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttr::~ElemDDLFileAttr()
{
}
// cast
ElemDDLFileAttr *
ElemDDLFileAttr::castToElemDDLFileAttr()
{
return this;
}
//
// given a size unit enumerated constant,
// return an appropriate NAString.
//
NAString
ElemDDLFileAttr::convertSizeUnitToNAString(ComUnits sizeUnit) const
{
switch (sizeUnit)
{
case COM_BYTES :
return NAString(COM_BYTES_LIT);
case COM_GBYTES :
return NAString(COM_GBYTES_LIT);
case COM_KBYTES :
return NAString(COM_KBYTES_LIT);
case COM_MBYTES :
return NAString(COM_MBYTES_LIT);
default :
ABORT("internal logic error");
return NAString();
}
}
// methods for tracing
const NAString
ElemDDLFileAttr::getText() const
{
ABORT("internal logic error");
return "ElemDDLFileAttr";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrAllocate
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrAllocate::ElemDDLFileAttrAllocate(ComSInt16 extentsToAllocate)
: ElemDDLFileAttr(ELM_FILE_ATTR_ALLOCATE_ELEM)
{
initializeExtentsToAllocate(extentsToAllocate);
}
// virtual destructor
ElemDDLFileAttrAllocate::~ElemDDLFileAttrAllocate()
{
}
// cast
ElemDDLFileAttrAllocate *
ElemDDLFileAttrAllocate::castToElemDDLFileAttrAllocate()
{
return this;
}
// is specified extents to allocate a legal value?
NABoolean
ElemDDLFileAttrAllocate::isLegalAllocateValue(ComSInt16
extentsToAllocate) const
{
if (extentsToAllocate >= 1 && extentsToAllocate <= COM_MAX_MAXEXTENTS)
{
return TRUE;
}
else
{
return FALSE;
}
}
//
// mutator
//
void
ElemDDLFileAttrAllocate::initializeExtentsToAllocate(ComSInt16
extentsToAllocate)
{
if (isLegalAllocateValue(extentsToAllocate))
{
extentsToAllocate_ = extentsToAllocate;
}
else
{
// Illegal size value in ALLOCATE phrase.
*SqlParser_Diags << DgSqlCode(-3057) << DgInt0(COM_MAX_MAXEXTENTS);
}
}
//
// trace
//
const NAString
ElemDDLFileAttrAllocate::displayLabel1() const
{
char buffer[80];
sprintf(buffer, "%d", getExtentsToAllocate());
return NAString("Allocate Extents: ") + NAString(buffer);
}
const NAString
ElemDDLFileAttrAllocate::getText() const
{
return "ElemDDLFileAttrAllocate";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrAudit
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrAudit::~ElemDDLFileAttrAudit()
{
}
// cast
ElemDDLFileAttrAudit *
ElemDDLFileAttrAudit::castToElemDDLFileAttrAudit()
{
return this;
}
// methods for tracing
const NAString
ElemDDLFileAttrAudit::getText() const
{
return "ElemDDLFileAttrAudit";
}
const NAString
ElemDDLFileAttrAudit::displayLabel1() const
{
return NAString("Is audited? ") + YesNo(getIsAudit());
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrAuditCompress
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrAuditCompress::~ElemDDLFileAttrAuditCompress()
{
}
// cast
ElemDDLFileAttrAuditCompress *
ElemDDLFileAttrAuditCompress::castToElemDDLFileAttrAuditCompress()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrAuditCompress::getText() const
{
return "ElemDDLFileAttrAuditCompress";
}
const NAString
ElemDDLFileAttrAuditCompress::displayLabel1() const
{
return NAString("Is audit-compress? ") + YesNo(getIsAuditCompress());
}
//----------------------------------------------------------------------------
// method for building text
// virtual
NAString ElemDDLFileAttrAuditCompress::getSyntax() const
{
NAString syntax;
if(FALSE == isAuditCompress_)
{
syntax += "NO ";
}
syntax += "AUDITCOMPRESS";
return syntax;
} // getSyntax
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrBlockSize
// -----------------------------------------------------------------------
// constructor
ElemDDLFileAttrBlockSize::ElemDDLFileAttrBlockSize(
ULng32 blockSizeInBytes)
: ElemDDLFileAttr(ELM_FILE_ATTR_BLOCK_SIZE_ELEM)
{
if (isLegalBlockSizeValue(blockSizeInBytes))
{
// On Linux, only 32K blocksize is supported. For other specified
// blocksize, a warning is raised and the default 32K will be used.
if (blockSizeInBytes == 32768)
blockSizeInBytes_ = blockSizeInBytes;
else
{
*SqlParser_Diags << DgSqlCode(+3250);
blockSizeInBytes_ = DEFAULT_BLOCK_SIZE;
}
}
else
{
// Block size can only be 4096, 8192, 16384, 32768
*SqlParser_Diags << DgSqlCode(-3058);
blockSizeInBytes_ = DEFAULT_BLOCK_SIZE;
}
}
// virtual destructor
ElemDDLFileAttrBlockSize::~ElemDDLFileAttrBlockSize()
{
}
// is the input value a legal block size value?
NABoolean
ElemDDLFileAttrBlockSize::isLegalBlockSizeValue(ULng32 blockSize) const
{
// Determine whether the DB Limits checks for large blocks, rows, and keys
// should be used.
NABoolean useDBLimits =
((CmpCommon::getDefault(CAT_LARGE_BLOCKS_LARGE_KEYS) == DF_ON) ||
(CmpCommon::getDefault(CREATE_OBJECTS_IN_METADATA_ONLY) == DF_ON)) ? TRUE : FALSE;
switch (blockSize)
{
// case 512 :
// case 1024 :
// case 2048 :
case 4096 :
case 32768 :
return TRUE;
case 8192 :
case 16384 :
if (useDBLimits)
return TRUE;
else
return FALSE;
default :
return FALSE;
}
}
// cast
ElemDDLFileAttrBlockSize *
ElemDDLFileAttrBlockSize::castToElemDDLFileAttrBlockSize()
{
return this;
}
//
// trace
//
const NAString
ElemDDLFileAttrBlockSize::getText() const
{
return "ElemDDLFileAttrBlockSize";
}
const NAString
ElemDDLFileAttrBlockSize::displayLabel1() const
{
char buffer[80];
sprintf(buffer, "%d", getBlockSize());
return NAString("Block size: ") + NAString(buffer);
}
//----------------------------------------------------------------------------
// method for building text
//virtual
NAString ElemDDLFileAttrBlockSize::getSyntax() const
{
NAString syntax = "BLOCKSIZE ";
syntax += LongToNAString(blockSizeInBytes_);
return syntax;
} // getSyntax()
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrBuffered
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrBuffered::~ElemDDLFileAttrBuffered()
{
}
// cast
ElemDDLFileAttrBuffered *
ElemDDLFileAttrBuffered::castToElemDDLFileAttrBuffered()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrBuffered::getText() const
{
return "ElemDDLFileAttrBuffered";
}
const NAString
ElemDDLFileAttrBuffered::displayLabel1() const
{
return NAString("Is buffered? ") + YesNo(getIsBuffered());
}
//----------------------------------------------------------------------------
// method for building text
//virtual
NAString ElemDDLFileAttrBuffered::getSyntax() const
{
NAString syntax;
if(FALSE == isBuffered_)
{
syntax += "NO ";
}
syntax += "BUFFERED";
return syntax;
}
// ---------------------------------------------------------------------
// methods for class ElemDDLFileAttrCompression
// ---------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrCompression::~ElemDDLFileAttrCompression()
{
}
// cast
ElemDDLFileAttrCompression *
ElemDDLFileAttrCompression::castToElemDDLFileAttrCompression()
{
return this;
}
// trace
// to be added if required
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrClause
//
// Note that class ElemDDLFileAttrClause is not derived from class
// ElemDDLFileAttr. The former is derived from class ElemDDLNode.
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrClause::~ElemDDLFileAttrClause()
{
}
// cast virtual function
ElemDDLFileAttrClause *
ElemDDLFileAttrClause::castToElemDDLFileAttrClause()
{
return this;
}
//
// accessors
//
// get the degree of this node
Int32
ElemDDLFileAttrClause::getArity() const
{
return MAX_ELEM_DDL_FILE_ATTR_CLAUSE_ARITY;
}
ExprNode *
ElemDDLFileAttrClause::getChild(Lng32 index)
{
ComASSERT(index >= 0 AND index < getArity());
return children_[index];
}
//
// mutators
//
void
ElemDDLFileAttrClause::setChild(Lng32 index, ExprNode * pChildNode)
{
ComASSERT(index >= 0 AND index < getArity());
if (pChildNode NEQ NULL)
{
ComASSERT(pChildNode->castToElemDDLNode() NEQ NULL);
children_[index] = pChildNode->castToElemDDLNode();
}
else
{
children_[index] = NULL;
}
}
const NAString
ElemDDLFileAttrClause::getText() const
{
return "ElemDDLFileAttrClause";
}
//----------------------------------------------------------------------------
// method for building text
//virtual
NAString ElemDDLFileAttrClause::getSyntax() const
{
NAString syntax = "ATTRIBUTES";
ElemDDLNode * pFileAttrs = getFileAttrDefBody();
ComASSERT(pFileAttrs NEQ NULL);
for (CollIndex i = 0; i < pFileAttrs->entries(); i++)
{
syntax += " ";
syntax += (*pFileAttrs)[i]->castToElemDDLFileAttr()->getSyntax();
}
syntax += " ";
return syntax;
} // getSyntax
// -----------------------------------------------------------------------
// methods for class ElemDDLMVFileAttrClause
//
// Note that class ElemDDLFileAttrClause is not derived from class
// ElemDDLFileAttr. The former is derived from class ElemDDLNode.
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLMVFileAttrClause::~ElemDDLMVFileAttrClause()
{
}
// cast virtual function
ElemDDLMVFileAttrClause *
ElemDDLMVFileAttrClause::castToElemDDLMVFileAttrClause()
{
return this;
}
//
// accessors
//
// get the degree of this node
Int32
ElemDDLMVFileAttrClause::getArity() const
{
return MAX_ELEM_DDL_MV_FILE_ATTR_CLAUSE_ARITY;
}
ExprNode *
ElemDDLMVFileAttrClause::getChild(Lng32 index)
{
ComASSERT(index >= 0 AND index < getArity());
return children_[index];
}
//
// mutators
//
void
ElemDDLMVFileAttrClause::setChild(Lng32 index, ExprNode * pChildNode)
{
ComASSERT(index >= 0 AND index < getArity());
if (pChildNode NEQ NULL)
{
ComASSERT(pChildNode->castToElemDDLNode() NEQ NULL);
children_[index] = pChildNode->castToElemDDLNode();
}
else
{
children_[index] = NULL;
}
}
const NAString
ElemDDLMVFileAttrClause::getText() const
{
return "ElemDDLMVFileAttrClause";
}
// method for building text
// virtual
NAString ElemDDLMVFileAttrClause::getSyntax() const
{
NAString syntax = "MVATTRIBUTES ";
syntax += getFileAttrDefBody()->getSyntax();
return syntax;
} // getSyntax()
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrClearOnPurge
//----------------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrClearOnPurge::~ElemDDLFileAttrClearOnPurge()
{
}
// cast
ElemDDLFileAttrClearOnPurge *
ElemDDLFileAttrClearOnPurge::castToElemDDLFileAttrClearOnPurge()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrClearOnPurge::getText() const
{
return "ElemDDLFileAttrClearOnPurge";
}
const NAString
ElemDDLFileAttrClearOnPurge::displayLabel1() const
{
return NAString("Is clear-on-purge? ") + YesNo(getIsClearOnPurge());
}
// method for building text
//virtual
NAString ElemDDLFileAttrClearOnPurge::getSyntax() const
{
NAString syntax;
if(FALSE == isClearOnPurge_)
{
syntax += "NO ";
}
syntax += "CLEARONPURGE";
return syntax;
} // getSyntax
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrDCompress
//----------------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrDCompress::~ElemDDLFileAttrDCompress()
{
}
// cast
ElemDDLFileAttrDCompress *
ElemDDLFileAttrDCompress::castToElemDDLFileAttrDCompress()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrDCompress::getText() const
{
return "ElemDDLFileAttrDCompress";
}
const NAString
ElemDDLFileAttrDCompress::displayLabel1() const
{
return NAString("Is d-compress? ") + YesNo(getIsDCompress());
}
// method for building text
//virtual
NAString ElemDDLFileAttrDCompress::getSyntax() const
{
NAString syntax;
if(FALSE == isDCompress_)
{
syntax += "NO ";
}
syntax += "DCOMPRESS";
return syntax;
} // getSyntax
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrDeallocate
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrDeallocate::~ElemDDLFileAttrDeallocate()
{
}
// cast
ElemDDLFileAttrDeallocate *
ElemDDLFileAttrDeallocate::castToElemDDLFileAttrDeallocate()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrDeallocate::getText() const
{
return "ElemDDLFileAttrDeallocate";
}
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrICompress
//----------------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrICompress::~ElemDDLFileAttrICompress()
{
}
// cast
ElemDDLFileAttrICompress *
ElemDDLFileAttrICompress::castToElemDDLFileAttrICompress()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrICompress::getText() const
{
return "ElemDDLFileAttrICompress";
}
const NAString
ElemDDLFileAttrICompress::displayLabel1() const
{
return NAString("Is i-compress? ") + YesNo(getIsICompress());
}
// method for building text
//virtual
NAString ElemDDLFileAttrICompress::getSyntax() const
{
NAString syntax;
if(FALSE == isICompress_)
{
syntax += "NO ";
}
syntax += "ICOMPRESS";
return syntax;
} // getSyntax
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrRangeLog
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrRangeLog::~ElemDDLFileAttrRangeLog()
{
}
// cast
ElemDDLFileAttrRangeLog *
ElemDDLFileAttrRangeLog::castToElemDDLFileAttrRangeLog()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrRangeLog::getText() const
{
return "ElemDDLFileAttrRangeLog";
}
const NAString
ElemDDLFileAttrRangeLog::displayLabel1() const
{
return NAString("rangelog type: ") +
getRangeLogTypeAsNAString(rangelogType_);
}
NAString
ElemDDLFileAttrRangeLog::getRangeLogTypeAsNAString(ComRangeLogType type)
{
switch (type)
{
case COM_NO_RANGELOG:
return "NO";
case COM_AUTO_RANGELOG:
return "AUTOMATIC";
case COM_MANUAL_RANGELOG:
return "MANUAL";
case COM_MIXED_RANGELOG:
return "MIXED";
}
return "NO";
}
// method for building text
// virtual
NAString ElemDDLFileAttrRangeLog::getSyntax() const
{
NAString syntax = getRangeLogTypeAsNAString(rangelogType_);
syntax += " RANGELOG";
return syntax;
} // getSyntax()
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrLockOnRefresh
//----------------------------------------------------------------------------
ElemDDLFileAttrLockOnRefresh::~ElemDDLFileAttrLockOnRefresh()
{
}
ElemDDLFileAttrLockOnRefresh *
ElemDDLFileAttrLockOnRefresh::castToElemDDLFileAttrLockOnRefresh()
{
return this;
}
const NAString
ElemDDLFileAttrLockOnRefresh::getText() const
{
return "ElemDDLFileAttrLockOnRefresh";
}
const NAString
ElemDDLFileAttrLockOnRefresh::displayLabel1() const
{
return NAString("LOCKONREFRESH? ") + YesNo(isLockOnRefresh());
}
// method for building text
// virtual
NAString ElemDDLFileAttrLockOnRefresh::getSyntax() const
{
NAString syntax;
if(FALSE == isLockOnRefresh_)
{
syntax += "NO ";
}
syntax += "LOCKONREFRESH";
return syntax;
}
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrInsertLog
//----------------------------------------------------------------------------
ElemDDLFileAttrInsertLog::~ElemDDLFileAttrInsertLog()
{
}
ElemDDLFileAttrInsertLog *
ElemDDLFileAttrInsertLog::castToElemDDLFileAttrInsertLog()
{
return this;
}
const NAString
ElemDDLFileAttrInsertLog::getText() const
{
return "ElemDDLFileAttrInsertLog";
}
const NAString
ElemDDLFileAttrInsertLog::displayLabel1() const
{
return NAString("INSERTLOG? ") + YesNo(isInsertLog());
}
// method for building text
// virtual
NAString ElemDDLFileAttrInsertLog::getSyntax() const
{
NAString syntax;
if(FALSE == isInsertLog_)
{
syntax += "NO ";
}
syntax += "INSERTLOG";
return syntax;
}
//----------------------------------------------------------------------------
// methods for class ElemDDLFileAttrMvsAllowed
//----------------------------------------------------------------------------
ElemDDLFileAttrMvsAllowed::~ElemDDLFileAttrMvsAllowed()
{
}
ElemDDLFileAttrMvsAllowed *
ElemDDLFileAttrMvsAllowed::castToElemDDLFileAttrMvsAllowed()
{
return this;
}
const NAString
ElemDDLFileAttrMvsAllowed::getText() const
{
return "ElemDDLFileAttrMvsAllowed";
}
const NAString
ElemDDLFileAttrMvsAllowed::displayLabel1() const
{
return getMvsAllowedTypeAsNAString(mvsAllowedType_) +
NAString(" MVS ALLOWED");
}
NAString
ElemDDLFileAttrMvsAllowed::getMvsAllowedTypeAsNAString(ComMvsAllowed type)
{
switch (type)
{
case COM_NO_MVS_ALLOWED:
return "NO";
case COM_ON_STATEMENT_MVS_ALLOWED:
return "ON STATEMENT";
case COM_ON_REQUEST_MVS_ALLOWED:
return "ON REQUEST";
case COM_RECOMPUTE_MVS_ALLOWED:
return "RECOMPUTE";
case COM_ALL_MVS_ALLOWED:
return "ALL";
}
return "parser getMvsAllowedTypeAsNAString"; // this will of course cause a sytax error
}
// method for building text
// virtual
NAString ElemDDLFileAttrMvsAllowed::getSyntax() const
{
NAString syntax = getMvsAllowedTypeAsNAString(mvsAllowedType_);
syntax += " MVS ALLOWED";
return syntax;
} // getSyntax()
//----------------------------------------------------------------------------
//++ MV OZ
//----------------------------------------------------------------------------
// SPECIAL MV FILE ATTRIBUTES
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// ElemDDLFileAttrMvAudit
//----------------------------------------------------------------------------
ElemDDLFileAttrMvAudit::~ElemDDLFileAttrMvAudit()
{
}
ElemDDLFileAttrMvAudit*
ElemDDLFileAttrMvAudit::castToElemDDLFileAttrMvAudit()
{
return this;
}
NABoolean
ElemDDLFileAttrMvAudit::isBTAudit()
{
switch(mvAuditType_)
{
case COM_MV_AUDIT:
return TRUE;
case COM_MV_NO_AUDIT:
return FALSE;
case COM_MV_NO_AUDIT_ON_REFRESH:
return TRUE;
}
return TRUE; // make compiler happy
}
const NAString
ElemDDLFileAttrMvAudit::getText() const
{
return "ElemDDLFileAttrMvAudit";
}
const NAString
ElemDDLFileAttrMvAudit::displayLabel1() const
{
return NAString("MV AUDIT TYPE: ") +
getMvAuditTypeTypeAsNAString(mvAuditType_);
}
NAString
ElemDDLFileAttrMvAudit::getMvAuditTypeTypeAsNAString(ComMvAuditType type)
{
switch (type)
{
case COM_MV_AUDIT:
return "AUDIT";
case COM_MV_NO_AUDIT:
return "NO AUDIT";
case COM_MV_NO_AUDIT_ON_REFRESH:
return "NO AUDITONREFRESH";
}
return "AUDIT";
}
// method for building text
// virtual
NAString ElemDDLFileAttrMvAudit::getSyntax() const
{
return getMvAuditTypeTypeAsNAString(mvAuditType_);
}
//----------------------------------------------------------------------------
// ElemDDLFileAttrMvAudit
//----------------------------------------------------------------------------
ElemDDLFileAttrMVCommitEach::~ElemDDLFileAttrMVCommitEach()
{
}
ElemDDLFileAttrMVCommitEach *
ElemDDLFileAttrMVCommitEach::castToElemDDLFileAttrMVCommitEach()
{
return this;
}
const NAString
ElemDDLFileAttrMVCommitEach::getText() const
{
return "ElemDDLFileAttrMVCommitEach";
}
const NAString
ElemDDLFileAttrMVCommitEach::displayLabel1() const
{
char buffer[80];
sprintf(buffer, "%d", getNRows());
return NAString("nrows: ") + NAString(buffer);
}
// method for building text
// virtual
NAString ElemDDLFileAttrMVCommitEach::getSyntax() const
{
NAString syntax = "COMMIT REFRESH EACH ";
syntax += LongToNAString(nrows_);
return syntax;
}
//-- MV
//----------------------------------------------------------------------------
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrMaxSize
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrMaxSize::ElemDDLFileAttrMaxSize()
: ElemDDLFileAttr(ELM_FILE_ATTR_MAX_SIZE_ELEM),
isUnbounded_(TRUE)
{
ParSetDefaultMaxSize(maxSize_, maxSizeUnit_);
}
ElemDDLFileAttrMaxSize::ElemDDLFileAttrMaxSize(Lng32 maxSize)
: ElemDDLFileAttr(ELM_FILE_ATTR_MAX_SIZE_ELEM),
isUnbounded_(FALSE),
maxSizeUnit_((ComUnits)DEFAULT_MAX_SIZE_UNIT)
{
initializeMaxSize(maxSize);
}
ElemDDLFileAttrMaxSize::ElemDDLFileAttrMaxSize(
Lng32 maxSize,
ComUnits maxSizeUnit)
: ElemDDLFileAttr(ELM_FILE_ATTR_MAX_SIZE_ELEM),
isUnbounded_(FALSE),
maxSizeUnit_(maxSizeUnit)
{
initializeMaxSize(maxSize);
}
// virtual destructor
ElemDDLFileAttrMaxSize::~ElemDDLFileAttrMaxSize()
{
}
// cast
ElemDDLFileAttrMaxSize *
ElemDDLFileAttrMaxSize::castToElemDDLFileAttrMaxSize()
{
return this;
}
//
// accessor
//
NAString
ElemDDLFileAttrMaxSize::getMaxSizeUnitAsNAString() const
{
return convertSizeUnitToNAString(getMaxSizeUnit());
}
// method for building text
//virtual
NAString ElemDDLFileAttrMaxSize::getSyntax() const
{
NAString syntax = "MAXSIZE ";
if (TRUE == isUnbounded_)
{
syntax += "UNBOUNDED";
}
else
{
syntax += LongToNAString(maxSize_);
syntax += " ";
switch(maxSizeUnit_)
{
case COM_BYTES:
syntax += "";
break;
case COM_KBYTES:
syntax += "K";
break;
case COM_MBYTES:
syntax += "M";
break;
case COM_GBYTES:
syntax += "G";
break;
default:
ComASSERT(FALSE);
break;
}
}
return syntax;
} // getSyntax
// is specified maximum size a legal value?
NABoolean
ElemDDLFileAttrMaxSize::isLegalMaxSizeValue(Lng32 maxSize) const
{
if (maxSize >= 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
//
// mutator
//
void
ElemDDLFileAttrMaxSize::initializeMaxSize(Lng32 maxSize)
{
if (isLegalMaxSizeValue(maxSize))
{
maxSize_ = maxSize;
}
else
{
// Illegal size value in MAXSIZE phrase.
*SqlParser_Diags << DgSqlCode(-3059);
ParSetDefaultMaxSize(maxSize_, maxSizeUnit_);
}
}
//
// helpers
//
void
ParSetDefaultMaxSize(ULng32 &maxSize,
ComUnits &maxSizeUnit)
{
maxSize = ElemDDLFileAttrMaxSize::DEFAULT_MAX_SIZE_IN_BYTES;
maxSizeUnit = COM_BYTES;
}
//
// methods for tracing
//
const NAString
ElemDDLFileAttrMaxSize::getText() const
{
return "ElemDDLFileAttrMaxSize";
}
const NAString
ElemDDLFileAttrMaxSize::displayLabel1() const
{
return NAString("Is unbounded? ") + YesNo(isUnbounded());
}
const NAString
ElemDDLFileAttrMaxSize::displayLabel2() const
{
char buffer[80];
sprintf(buffer, "%d", getMaxSize());
return NAString("Size: ") + NAString(buffer);
}
const NAString
ElemDDLFileAttrMaxSize::displayLabel3() const
{
return NAString("Size unit: ") + getMaxSizeUnitAsNAString();
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrExtents
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrExtents::ElemDDLFileAttrExtents()
: ElemDDLFileAttr(ELM_FILE_ATTR_EXTENT_ELEM)
{
ParSetDefaultExtents(priExt_, secExt_);
}
ElemDDLFileAttrExtents::ElemDDLFileAttrExtents(
Lng32 priExt, Lng32 secExt)
: ElemDDLFileAttr(ELM_FILE_ATTR_EXTENT_ELEM)
{
initializeExtents(priExt, secExt);
}
ElemDDLFileAttrExtents::ElemDDLFileAttrExtents(
Lng32 priExt)
: ElemDDLFileAttr(ELM_FILE_ATTR_EXTENT_ELEM)
{
initializePriExtent(priExt);
}
// virtual destructor
ElemDDLFileAttrExtents::~ElemDDLFileAttrExtents()
{
}
// cast
ElemDDLFileAttrExtents *
ElemDDLFileAttrExtents::castToElemDDLFileAttrExtents()
{
return this;
}
// is specified extent a legal value?
NABoolean
ElemDDLFileAttrExtents::isLegalExtentValue(Lng32 Ext) const
{
if (Ext >= 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
//
// mutator
//
void
ElemDDLFileAttrExtents::initializeExtents(Lng32 priExt,
Lng32 secExt)
{
if (isLegalExtentValue(priExt) && isLegalExtentValue (secExt))
{
priExt_ = priExt;
secExt_ = secExt;
}
else
{
// Illegal size value in EXTENT phrase.
*SqlParser_Diags << DgSqlCode(-3059);
ParSetDefaultExtents(priExt_,secExt_);
}
}
void
ElemDDLFileAttrExtents::initializePriExtent(Lng32 priExt)
{
if (isLegalExtentValue(priExt))
{
priExt_ = priExt;
secExt_ = ElemDDLFileAttrExtents::DEFAULT_SEC_EXTENT;
}
else
{
// Illegal size value in EXTENT phrase.
*SqlParser_Diags << DgSqlCode(-3059);
ParSetDefaultExtents(priExt_,secExt_);
}
}
//
// helpers
//
void
ParSetDefaultExtents(ULng32 &priExt,
ULng32 &secExt)
{
priExt = ElemDDLFileAttrExtents::DEFAULT_PRI_EXTENT;
secExt = ElemDDLFileAttrExtents::DEFAULT_SEC_EXTENT;
}
//
// methods for tracing - Do we need this for Extents ? Verify and then add.
//
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrMaxExtents
// -----------------------------------------------------------------------
// Constructors
ElemDDLFileAttrMaxExtents::ElemDDLFileAttrMaxExtents()
: ElemDDLFileAttr(ELM_FILE_ATTR_MAXEXTENTS_ELEM)
{
ParSetDefaultMaxExtents(maxExt_);
}
ElemDDLFileAttrMaxExtents::ElemDDLFileAttrMaxExtents(Lng32 maxExt)
: ElemDDLFileAttr(ELM_FILE_ATTR_MAXEXTENTS_ELEM)
{
initializeMaxExtents(maxExt);
}
// virtual destructor
ElemDDLFileAttrMaxExtents::~ElemDDLFileAttrMaxExtents()
{
}
// cast
ElemDDLFileAttrMaxExtents *
ElemDDLFileAttrMaxExtents::castToElemDDLFileAttrMaxExtents()
{
return this;
}
// is specified extent a legal value?
NABoolean
ElemDDLFileAttrMaxExtents::isLegalMaxExtentValue(Lng32 maxExt) const
{
if (maxExt >= 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
//
// mutator
//
void
ElemDDLFileAttrMaxExtents::initializeMaxExtents(Lng32 maxExt)
{
if (isLegalMaxExtentValue(maxExt))
{
maxExt_ = maxExt;
}
else
{
// Illegal size value in MAXEXTENT phrase.
*SqlParser_Diags << DgSqlCode(-3059);
ParSetDefaultMaxExtents(maxExt_);
}
}
//
// helpers
//
void
ParSetDefaultMaxExtents(ULng32 &maxExt)
{
maxExt = ElemDDLFileAttrMaxExtents::DEFAULT_MAX_EXTENT;
}
//
// methods for tracing - Do we need this for Extents ? Verify and then add.
//
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrUID
// -----------------------------------------------------------------------
// Constructors
ElemDDLFileAttrUID::ElemDDLFileAttrUID(Int64 UID)
: ElemDDLFileAttr(ELM_FILE_ATTR_UID_ELEM),
UID_(UID)
{
}
// virtual destructor
ElemDDLFileAttrUID::~ElemDDLFileAttrUID()
{
}
// cast
ElemDDLFileAttrUID *
ElemDDLFileAttrUID::castToElemDDLFileAttrUID()
{
return this;
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrRowFormat
// -----------------------------------------------------------------------
// Constructors
ElemDDLFileAttrRowFormat::ElemDDLFileAttrRowFormat
( ElemDDLFileAttrRowFormat::ERowFormat rowFormat )
: ElemDDLFileAttr(ELM_FILE_ATTR_ROW_FORMAT_ELEM),
eRowFormat_(rowFormat)
{
}
// virtual destructor
ElemDDLFileAttrRowFormat::~ElemDDLFileAttrRowFormat()
{
}
// cast
ElemDDLFileAttrRowFormat *
ElemDDLFileAttrRowFormat::castToElemDDLFileAttrRowFormat()
{
return this;
}
//----------------------------------------------------------------------------
// method for building text
//virtual
NAString ElemDDLFileAttrRowFormat::getSyntax() const
{
return "";
} // getSyntax()
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrPOSNumPartns
// -----------------------------------------------------------------------
ElemDDLFileAttrPOSNumPartns::ElemDDLFileAttrPOSNumPartns(ComSInt32 numPartns)
: ElemDDLFileAttr(ELM_FILE_ATTR_POS_NUM_PARTNS_ELEM)
{
if (numPartns <= 0)
{
// Illegal size value in NUMBER OF PARTITIONS phrase.
// *SqlParser_Diags << DgSqlCode(-3057) << DgInt0(COM_MAX_MAXEXTENTS);
}
posNumPartns_ = numPartns;
}
// virtual destructor
ElemDDLFileAttrPOSNumPartns::~ElemDDLFileAttrPOSNumPartns()
{
}
// cast
ElemDDLFileAttrPOSNumPartns *
ElemDDLFileAttrPOSNumPartns::castToElemDDLFileAttrPOSNumPartns()
{
return this;
}
//
// trace
//
const NAString
ElemDDLFileAttrPOSNumPartns::getText() const
{
return "ElemDDLFileAttrPOSNumPartns";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrPOSDiskPool
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrPOSDiskPool::ElemDDLFileAttrPOSDiskPool(ComSInt32 diskPool, ComSInt32 numDiskPools)
: ElemDDLFileAttr(ELM_FILE_ATTR_POS_DISK_POOL_ELEM)
{
if (diskPool <= 0)
{
// Illegal size value in DISK POOL phrase.
*SqlParser_Diags << DgSqlCode(-3419)
<< DgInt0(diskPool);
}
if (numDiskPools <= 0)
{
// Illegal size value in NUM DISK POOLS phrase.
*SqlParser_Diags << DgSqlCode(-3420)
<< DgInt0(numDiskPools);
}
// Fix for CR 5234
if (diskPool == MAX_COMSINT32)
posDiskPool_ = 0;
else
posDiskPool_ = diskPool;
if (numDiskPools == MAX_COMSINT32)
posNumDiskPools_ = 0;
else
posNumDiskPools_ = numDiskPools;
}
// virtual destructor
ElemDDLFileAttrPOSDiskPool::~ElemDDLFileAttrPOSDiskPool()
{
}
// cast
ElemDDLFileAttrPOSDiskPool *
ElemDDLFileAttrPOSDiskPool::castToElemDDLFileAttrPOSDiskPool()
{
return this;
}
//
// trace
//
const NAString
ElemDDLFileAttrPOSDiskPool::getText() const
{
return "ElemDDLFileAttrPOSDiskPool";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrPOSTableSize
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrPOSTableSize::ElemDDLFileAttrPOSTableSize
(ComSInt32 initialTableSize,
ComSInt32 maxTableSize,
double numRows,
ComSInt32 indexLevels,
ComSInt64 partnEOF)
: ElemDDLFileAttr(ELM_FILE_ATTR_POS_TABLE_SIZE_ELEM)
{
posInitialTableSize_ = initialTableSize;
posMaxTableSize_ = maxTableSize;
numRows_ = numRows;
indexLevels_ = indexLevels;
partnEOF_ = partnEOF;
}
// virtual destructor
ElemDDLFileAttrPOSTableSize::~ElemDDLFileAttrPOSTableSize()
{
}
// cast
ElemDDLFileAttrPOSTableSize *
ElemDDLFileAttrPOSTableSize::castToElemDDLFileAttrPOSTableSize()
{
return this;
}
//
// trace
//
const NAString
ElemDDLFileAttrPOSTableSize::getText() const
{
return "ElemDDLFileAttrPOSTableSize";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrPOSIgnore
// -----------------------------------------------------------------------
//
// constructors
//
ElemDDLFileAttrPOSIgnore::ElemDDLFileAttrPOSIgnore
(ComBoolean posIgnore)
: ElemDDLFileAttr(ELM_FILE_ATTR_POS_IGNORE_ELEM)
{
posIgnore_ = posIgnore;
}
// virtual destructor
ElemDDLFileAttrPOSIgnore::~ElemDDLFileAttrPOSIgnore()
{
}
// cast
ElemDDLFileAttrPOSIgnore *
ElemDDLFileAttrPOSIgnore::castToElemDDLFileAttrPOSIgnore()
{
return this;
}
//
// trace
//
const NAString
ElemDDLFileAttrPOSIgnore::getText() const
{
return "ElemDDLFileAttrPOSIgnore";
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrNoLabelUpdate
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrNoLabelUpdate::~ElemDDLFileAttrNoLabelUpdate()
{
}
// cast
ElemDDLFileAttrNoLabelUpdate *
ElemDDLFileAttrNoLabelUpdate::castToElemDDLFileAttrNoLabelUpdate()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrNoLabelUpdate::getText() const
{
return "ElemDDLFileAttrNoLabelUpdate";
}
const NAString
ElemDDLFileAttrNoLabelUpdate::displayLabel1() const
{
return NAString("Is no-label-update? ") + YesNo(getIsNoLabelUpdate());
}
// -----------------------------------------------------------------------
// methods for class ElemDDLFileAttrOwner
// -----------------------------------------------------------------------
// virtual destructor
ElemDDLFileAttrOwner::~ElemDDLFileAttrOwner()
{
}
// cast
ElemDDLFileAttrOwner *
ElemDDLFileAttrOwner::castToElemDDLFileAttrOwner()
{
return this;
}
// trace
const NAString
ElemDDLFileAttrOwner::getText() const
{
return "ElemDDLFileAttrOwner";
}
const NAString
ElemDDLFileAttrOwner::displayLabel1() const
{
return NAString("Is owner-specified? ") + objectOwner_;
}
//----------------------------------------------------------------------------
// method for building text
// virtual
NAString ElemDDLFileAttrOwner::getSyntax() const
{
NAString syntax("BY ");
syntax += getOwner();
return syntax;
} // getSyntax
//
//
// End of File
//