全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 ページ
公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
table クラス

テーブルアクセスクラス (nocopyable) [詳解]

#include <table.h>

+ table の継承関係図

公開型

enum  eFindType
 
enum  eNullReset { clearNull, defaultNull }
 clearBuffer() でNULL許可フィールドの初期化方法を示します。 [詳解]
 
- 基底クラス nstable に属する継承公開型
enum  eFindType { findForword, findBackForword, findContinue }
 findオペレーションで検索の方向を示すタイプ [詳解]
 
enum  eUpdateType { changeCurrentCc, changeCurrentNcc, changeInKey }
 更新オペレーションの対象とカレント移動のタイプ [詳解]
 

公開メンバ関数

bool blobFieldUsed () const
 
bookmark_td bookmarkFindCurrent () const
 
bookmark_td bookmarks (unsigned int index) const
 
int bookmarksCount () const
 
void clearBuffer (eNullReset resetType=defaultNull)
 
short fieldNumByName (const _TCHAR *name) const
 
void * fieldPtr (short index) const
 
client::fieldsfields ()
 
void find (eFindType type=findForword)
 
void findFirst ()
 
void findLast ()
 
void findNext (bool notIncCurrent=true)
 
void findPrev (bool notIncCurrent=true)
 
short getCurProcFieldCount () const
 
short getCurProcFieldIndex (short index) const
 
__int64 getFV64 (short index) const
 
__int64 getFV64 (const _TCHAR *fieldName) const
 
const char * getFVAstr (short index) const
 
const char * getFVAstr (const _TCHAR *fieldName) const
 
void * getFVbin (short index, uint_td &size) const
 
void * getFVbin (const _TCHAR *fieldName, uint_td &size) const
 
bitset getFVbits (short index) const
 
bitset getFVbits (const _TCHAR *fieldName) const
 
unsigned char getFVbyt (short index) const
 
unsigned char getFVbyt (const _TCHAR *fieldName) const
 
double getFVdbl (short index) const
 
double getFVdbl (const _TCHAR *fieldName) const
 
float getFVflt (short index) const
 
float getFVflt (const _TCHAR *fieldName) const
 
int getFVint (short index) const
 
int getFVint (const _TCHAR *fieldName) const
 
int getFVlng (short index) const
 
int getFVlng (const _TCHAR *fieldName) const
 
bool getFVNull (short index) const
 
bool getFVNull (const _TCHAR *fieldName) const
 
short getFVsht (short index) const
 
short getFVsht (const _TCHAR *fieldName) const
 
const char * getFVstr (short index) const
 
const char * getFVstr (const char *fieldName) const
 
unsigned int getRecordHash () const
 
void insertBookmarks (unsigned int start, void *data, ushort_td count)
 
void keyValueDescription (_TCHAR *buf, int bufsize)
 
eFindType lastFindDirection () const
 
bool logicalToString () const
 
void moveBookmarks (unsigned int index)
 
multiRecordAlocator * mra () const
 
bool myDateTimeValueByBtrv () const
 
recordCountFn onRecordCount () const
 
void * optionalData () const
 
pq_handle prepare (const queryBase *query, bool serverPrepare=false)
 
void setAlias (const _TCHAR *orign, const _TCHAR *alias)
 
void setFilter (const _TCHAR *str, ushort_td rejectCount, ushort_td cacheCount, bool autoEscape=true)
 
void setFV (short index, double data)
 
void setFV (short index, float data)
 
void setFV (short index, unsigned char data)
 
void setFV (short index, short data)
 
void setFV (short index, int data)
 
void setFV (short index, const void *data, uint_td size)
 
void setFV (const _TCHAR *fieldName, int data)
 
void setFV (short index, const char *data)
 
void setFV (const _TCHAR *fieldName, const char *data)
 
void setFV (short index, const bitset &bits)
 
void setFV (const _TCHAR *fieldName, const bitset &bits)
 
void setFV (const _TCHAR *fieldName, double data)
 
void setFV (const _TCHAR *fieldName, float data)
 
void setFV (const _TCHAR *fieldName, unsigned char data)
 
void setFV (const _TCHAR *fieldName, short data)
 
void setFV (const _TCHAR *fieldName, const void *data, uint_td size)
 
void setFV (short index, __int64 data)
 
void setFV (const _TCHAR *fieldName, __int64 data)
 
void setFVA (short index, const char *data)
 
void setFVA (const _TCHAR *fieldName, const char *data)
 
void setFVNull (short index, bool v)
 
void setFVNull (const _TCHAR *fieldName, bool v)
 
void setLogicalToString (bool v)
 
void setMra (multiRecordAlocator *p)
 
void setOnRecordCount (const recordCountFn v)
 
void setOptionalData (void *v)
 
void setPrepare (const pq_handle stmt)
 
pq_handle setQuery (const queryBase *query, bool serverPrepare=false)
 
void smartUpdate ()
 
short statReasonOfFind () const
 
const tabledeftableDef () const
 
const tabledef ** tableDefPtr () const
 
bool valiableFormatType () const
 
- 基底クラス nstable に属する継承公開メンバ関数
 nstable (nsdatabase *pbe)
 
void abortBulkInsert ()
 
void addref (void)
 
void beginBulkInsert (int maxBuflen=BULKBUFSIZE)
 
bookmark_td bookmark ()
 
ushort_td bookmarkLen () const
 
uint_td buflen () const
 
bool canDelete () const
 
bool canInsert () const
 
bool canRead () const
 
bool canWrite () const
 
void clearOwnerName ()
 
void close ()
 
ushort_td commitBulkInsert (bool autoCommit=false)
 
void createIndex (bool specifyKeyNum=false)
 
const void * data () const
 
uint_td datalen () const
 
void del (bool in_key=false)
 
void dropIndex (bool norenumber=false)
 
char * getCreateSql (char *retbuf, uint_td *size)
 
percentage_td getPercentage ()
 
percentage_td getPercentage (bookmark_td &bm)
 
uint_td getWriteImageLen ()
 
ushort_td insert (bool ncc=false)
 
bool isOpen () const
 
bool isUseTransactd () const
 
char_td keyNum () const
 
char_td mode () const
 
nsdatabasensdb () const
 
uint_td recordCount (bool estimate=true, bool fromCurrent=false)
 
ushort_td recordLength ()
 
int refCount () const
 
void release ()
 
void seek (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekByBookmark (bookmark_td &bm, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekByBookmark ()
 
void seekByPercentage ()
 
void seekByPercentage (percentage_td pc)
 
void seekFirst (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekGreater (bool orEqual, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekLast (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekLessThan (bool orEqual, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekNext (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void seekPrev (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void setAccessRights (unsigned char curd)
 
void setBuflen (uint_td v)
 
void setData (void *v)
 
void setKeyNum (char_td v)
 
void setOwnerName (const _TCHAR *name, char_td enctype=0)
 
void setStat (short_td v)
 
void setTableid (short v)
 
void setTimestampMode (int mode)
 
bool setUpdateConflictCheck (bool v)
 
short_td stat () const
 
_TCHAR * statMsg (_TCHAR *retbuf)
 
void stats (void *databuffer, uint_td buflen, bool estimate=true)
 
void stepFirst (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepLast (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepNext (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void stepPrev (ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
short tableid () const
 
void tdap (ushort_td op)
 
short_td tdapErr (HWND hWnd, _TCHAR *retbuf=NULL)
 
void unlock (bookmark_td &bm)
 
void unlock ()
 
void update (eUpdateType type=changeCurrentCc)
 
bool updateConflictCheck () const
 

限定公開メンバ関数

 table (nsdatabase *pbe)
 
virtual ~table ()
 
void * attachBuffer (void *newPtr, bool unpack=false, size_t size=0)
 
void * dataBak () const
 
int dataBufferLen () const
 
void dettachBuffer ()
 
virtual void doInit (tabledef **def, short filenum, bool regularDir, bool mysqlnull)
 
bool doPrepare ()
 
void init (tabledef **def, short filenum, bool regularDir, bool mysqlnull)
 
bool isUniqeKey (char_td keynum)
 
unsigned int nullBytes () const
 
bool onDeleteCheck (bool inkey)
 
void onInsertAfter (int beforeResult)
 
int onInsertBefore ()
 
void onReadAfter ()
 
virtual void onRecordCounting (size_t count, bool &cancel)
 
void onUpdateAfter (int beforeResult)
 
int onUpdateBefore ()
 
bool onUpdateCheck (eUpdateType type)
 
uint_td pack (char *ptr, size_t size)
 
void * reallocDataBuffer (uint_td v)
 
virtual void setNoUpdateTimeStamp (bool v)
 
uint_td unPack (char *ptr, size_t size)
 
keylen_td writeKeyData ()
 
keylen_td writeKeyDataTo (uchar_td *to, int keySize)
 
void writeRecordData ()
 
- 基底クラス nstable に属する継承限定公開メンバ関数
virtual ~nstable ()
 
bulkInsert * bulkIns () const
 
void destroy ()
 
virtual void doClose ()
 
virtual void doDel (bool inkey)
 
virtual void doOpen (const _TCHAR *name, char_td mode, const _TCHAR *ownername)
 
const bzs::db::blobHeader * getBlobHeader ()
 
void open (const _TCHAR *uri, char_td mode=0, const _TCHAR *ownerName=NULL)
 
const uchar_td * posblk () const
 
void seekByBookmark (bookmark_td *bm, ushort_td lockBias=LOCK_BIAS_DEFAULT)
 
void setIsOpen (bool v)
 
void setMode (char_td v)
 
void setShared ()
 
const _TCHAR * uri () const
 

その他の継承メンバ

- 基底クラス nstable に属する継承静的公開メンバ関数
static bool existsFile (const _TCHAR *filename)
 
static _TCHAR * getDirURI (const _TCHAR *uri, _TCHAR *retbuf)
 
static _TCHAR * getFileName (const _TCHAR *uri, _TCHAR *retbuf)
 
static short_td tdapErr (HWND hWnd, short_td status, const _TCHAR *tableName=NULL, _TCHAR *retbuf=NULL)
 
static void throwError (const _TCHAR *caption, short statusCode)
 
static void throwError (const _TCHAR *caption, nstable *tb)
 
- 基底クラス nstable に属する継承静的公開変数類
static const bool inkey = true
 
- 基底クラス nstable に属する継承限定公開変数類
union {
   struct {
      uchar_td   m_delete: 1
 
      uchar_td   m_insart: 1
 
      uchar_td   m_read: 1
 
      uchar_td   m_reserverd: 4
 
      uchar_td   m_write: 1
 
   } 
 
   uchar_td   m_curd
 
}; 
 
uint_td m_buflen
 
uint_td m_datalen
 
void * m_keybuf
 
keylen_td m_keybuflen
 
keylen_td m_keylen
 
char_td m_keynum
 
ushort_td m_op
 
void * m_pdata
 
short_td m_stat
 

詳解

テーブルアクセスクラス (nocopyable)

スキーマ情報を元にカーソルナビゲーションやRUIDオペレーションを行います。 このクラスはコピーできません。 生成はdetabaseクラスのopenTableメソッドで行われます。破棄はdeleteでなくrelease()を呼び出します。 継承して特別な処理を加えたい場合はdetabaseを継承したクラスのcreateTableObject()を オーバーライドしてtableのスーパークラスを生成します。
フィールドに値をセットすると、セットした値に関わらず内部で自動的に setFVNull(index, false) が呼び出しそのフィールドを非NULLにマークします。 但し、(const char*)NULL (const wchar*)NULL または (const void*)NULL の無効な値をセットした場合に限り、 setFVNull(index, true)を呼び出しそのフィールドをNULLとしてマークします。

列挙型メンバ詳解

enum eFindType
enum eNullReset

clearBuffer() でNULL許可フィールドの初期化方法を示します。

列挙値
clearNull 

clearBuffer() でNULLを許可するフィールドを非NULLで初期化します。

defaultNull 

clearBuffer() でNULLを許可するフィールドをフィールドのデフォルト値で初期化します。DEFAULT NULLの場合は NULLで初期化されます。

構築子と解体子

table ( nsdatabase pbe)
explicitprotected

コンストラクタは直接呼出しできません。 table クラスは database::openTable() によってのみ生成されます。

~table ( )
protectedvirtual

仮想デストラクタ。デストラクタは直接呼出しできません。代わりに nstable::release() を呼び出します。

関数詳解

void * attachBuffer ( void *  newPtr,
bool  unpack = false,
size_t  size = 0 
)
protected

データバッファをnewPtrで指定したアドレスに変更します。

bool blobFieldUsed ( ) const
inline

テーブルにblobまたはtextフィールドを含むかどうかを返します。

bookmark_td bookmarkFindCurrent ( ) const

フィーター系オペレーション(find, findxxx)でレコードの読み出しに成功した際、現在のカレント レコードのブックマークを返します。

void bookmarks ( unsigned int  index) const

indexで指定したブックマークを返します。 実行結果はstat()で取得します。成功するとゼロが返ります。
indexは bookmarksCount() より小さな値である必要があります。不正なindexを指定すると stat() でSTATUS_PROGRAM_ERRORを返します。

int bookmarksCount ( ) const

フィルターを有効にした recordCount() オペレーションで既に取得したブックマークの数を返します。ブックマークを取得するか否かは queryBase::bookmarkAlso() で指定することができます。

void clearBuffer ( eNullReset  resetType = defaultNull)

データバッファのすべてのバイトをゼロで初期化します。

引数
resetTypeclearNullを指定すると、NULLを許可するフィールドをNOT NULLで初期化します。defaultNullを指定すると テーブル作成時のデフォルト値で初期化します。(Default NULLであればNULLで初期化する)

データバッファにはtextまたはblobフィールドのための作業バッファとfind系オペレーションで取得したレコードセットも含みます。 但し、beginBulkInsert() を呼び出した後にこの関数を呼び出しても、blob用のバッファはクリアされません。 commitBulkInsert()または abortBulkInsert() が呼び出されるまで送信のために保持されます。 大きなtext、blobデータを扱った後、不要になった時点でこの関数を呼び出すようにしてください。
直前のオペレーションがfind系オペレーションだった場合、結果用のバッファを標準のバッファに戻します。 find系オペレーションの後、新たなカレントを作成する場合はキー値をセットする前にこの関数を呼び出してください。

void * dataBak ( ) const
protected

バックアップされたdataバッファのアドレスを返します。

int dataBufferLen ( ) const
protected

データバッファーの長さを返します。

void dettachBuffer ( )
protected

アタッチされたデータバッファを元のバッファに戻します。

void doInit ( tabledef **  def,
short  filenum,
bool  regularDir,
bool  mysqlnull 
)
protectedvirtual

このクラスではスキーマを読んで各種初期化処理が行われます。フィールドのキャラクタセットの初期化なども行われます。

bool doPrepare ( )
protected

プリペアー処理を実行します。

short fieldNumByName ( const _TCHAR *  name) const

名前からフィールド番号を検索して返します。

引数
[in]name番号を調べるフィールド名を指定します。
戻り値
検索に成功すると0以上のフィールド番号を返します。見つからなった場合-1を返します。
void * fieldPtr ( short  index) const

indexで指定されたフィールド値の先頭アドレスを返します。

void find ( eFindType  type = findForword)

キーバッファにあるキー値でカレントレコードを seekGreater(orEqual)または seekLessThan(orEqual)で移動し、findNextまたはfindPrevオペレーションを実行します。
このメソッドを使用すると事前にカレントレコードを確立する必要がありません。
内部的に行われるseekオペレーションは、transactdではサーバー側で行われるため、通信回数を削減できます。 このオペレーションはキー番号に-1は指定できません。必ず0以上のキーを指定する必要があります。

引数
typefindForwordを指定すると内部でfindNextを使用します。findBackForwordを指定すると、findPrevを使用します。findContinueは直前のfind系オペレーションが、フィルター条件のmaxRecordまたはrejectCountによって終了した場合、その続きから同じ条件で検索を続ける場合に使用します。
注釈
直前のfind系オペレーションが、maxRecordまたはrejectCountによって終了したかどうかは、 table::statReasonOfFind() で調べることができます。
void findFirst ( )

現在のキー番号の先頭レコードから setFilter()で指定された検索条件に従って後方にレコードを抽出し、 マッチした最初のレコードをデータバッファに読み出します。
キー番号に-1を指定すると、物理順に先頭レコードから検索します。InnoDbの場合、物理順はプライマリーキー順です。

実行結果はstat()で取得します。成功するとゼロが返ります。
findFirstで開始した検索の次以降のレコード読み出しは findNext() で順次読み出しできます。
検索途中でfindPrev()を使うことはできません。使用した場合はstat()でSTATUS_PROGRAM_ERRORを返します。

void findLast ( )

現在のキー番号の最後レコードからフィルターで指定された検索条件に従って前方にレコードを抽出し、 マッチした最初のレコードをデータバッファに読み出します。
キー番号に-1を指定すると、物理順に最後のレコードから検索します。InnoDbの場合、物理順はプライマリーキー順です。

実行結果はstat()で取得します。成功するとゼロが返ります。
findLastで開始した検索の次以降のレコード読み出しは findPrev() で順次読み出しできます。
検索途中でfindNext()を使うことはできません。使用した場合はstat()でSTATUS_PROGRAM_ERRORを返します。

void findNext ( bool  notIncCurrent = true)

現在のカレントレコードから setFilter()で指定された検索条件に従って後方にレコードを抽出し、 マッチしたレコードをデータバッファに読み出します。
キー番号に-1を指定すると物理順に検索します。InnoDbの場合、物理順はプライマリーキー順です。

引数
notIncCurrent現在のカレントレコードを検索の対象かどうかを示します。 trueを指定するとカレントレコードを含めません。

実行結果はstat()で取得します。成功するとゼロが返ります。
findNextで開始した検索の次以降のレコード読み出しは findNext() で順次読み出しできます。
検索途中でfindPrev()を使うことはできません。使用した場合はstat()でSTATUS_PROGRAM_ERRORを返します。

void findPrev ( bool  notIncCurrent = true)

現在のカレントレコードから setFilter()で指定された検索条件に従って前方前方にレコードを抽出し、 マッチしたレコードをデータバッファに読み出します。
キー番号に-1を指定すると物理順に検索します。InnoDbの場合、物理順はプライマリーキー順です。

引数
notIncCurrent現在のカレントレコードを検索の対象かどうかを示します。 trueを指定するとカレントレコードを含めません。

実行結果はstat()で取得します。成功するとゼロが返ります。
findPrevで開始した検索の次以降のレコード読み出しは findPrev() で順次読み出しできます。
検索途中でfindNext()を使うことはできません。使用した場合はstat()でSTATUS_PROGRAM_ERRORを返します。

short getCurProcFieldCount ( ) const

現在の処理状態で有効なフィールドリストの数を返します。
たとえば、query によりフィールドが2つに絞られている場合2を返します。

short getCurProcFieldIndex ( short  index) const

現在の処理状態で有効なフィールドリストからindex番目の実定義のフィールド番号を返します。
たとえば、query によりフィールドが2つに絞られている場合、2番目のフィールドの実フィールド番号を調べる場合 getCurProcFieldIndex(1) で取得できます。

__int64 getFV64 ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取って__int64型で返します。

__int64 getFV64 ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取って__int64型で返します。

const char * getFVAstr ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってconst char*型で返します。

const char * getFVAstr ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってconst char*型で返します。

void * getFVbin ( short  index,
uint_td &  size 
) const

データバッファのindexで指定されたフィールドの内容の先頭アドレスとサイズを返します。

引数
[in]indexフィールドの番号を指定します。
[out]sizeデータのサイズを返します。
戻り値
データバッファーのフィールドの値の先頭アドレスをvoid*型で返します。
注釈
この関数が返すアドレスは、データの値そのままのものです。文字列型のフィールドであっても 他のgetFV関数のように文字コード変換は行われません。
void * getFVbin ( const _TCHAR *  fieldName,
uint_td &  size 
) const

データバッファのfieldNameで指定されたフィールドの内容の先頭アドレスとサイズを返します。

引数
[in]fieldNameフィールドの名前を指定します。
[out]sizeデータのサイズを返します。
戻り値
データバッファーのフィールドの値の先頭アドレスをvoid*型で返します。
注釈
この関数が返すアドレスは、データの値そのままのものです。文字列型のフィールドであっても 他のgetFV関数のように文字コード変換は行われません。
bitset getFVbits ( short  index) const
inline

indexで指定されたフィールドの値を読み取ってその値で初期化した bitset を返します。

bitset getFVbits ( const _TCHAR *  fieldName) const
inline

fieldNameで指定されたフィールドの値を読み取ってその値で初期化した bitset を返します。

unsigned char getFVbyt ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってunsigned char型で返します。

unsigned char getFVbyt ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってunsigned char型で返します。

double getFVdbl ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってdouble型で返します。

double getFVdbl ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってdouble型で返します。

float getFVflt ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってfloat型で返します。

float getFVflt ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってfloat型で返します。

int getFVint ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってint型で返します。

int getFVint ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってint型で返します。

int getFVlng ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってint型で返します。

int getFVlng ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってint型で返します。

bool getFVNull ( short  index) const

indexで指定されたフィールドの値がNULLかどうかを返します。

bool getFVNull ( const _TCHAR *  fieldName) const

fieldNameで指定されたフィールドの値がNULLかどうかを返します。

short getFVsht ( short  index) const

データバッファから、indexで指定されたフィールドの値を読み取ってshort型で返します。

short getFVsht ( const _TCHAR *  fieldName) const

データバッファから、fieldNameで指定されたフィールドの値を読み取ってshort型で返します。

const char * getFVstr ( short  index) const
inline

UNICODEコンパイル時のみ

データバッファから、indexで指定されたフィールドの値を読み取ってconst wchar_t*型で返します。

ANSIコンパイル時のみ

データバッファから、indexで指定されたフィールドの値を読み取ってconst char*型で返します。

const char * getFVstr ( const char *  fieldName) const
inline

ANSIコンパイル時のみ

データバッファから、fieldNameで指定されたフィールドの値を読み取ってconst char*型で返します。

unsigned int getRecordHash ( ) const

現在のデータバッファにあるレコードの値の簡易ハッシュ値を取得します。

使い方の一例を示します。 読み出し時と更新時に他のユーザーによるレコードの変更がないことを保証したい場合、最初の読み出しで レコードのハッシュ値を取得します。更新時はトランザクション内で再度同じレコードを読み出しハッシュ値を 比較します。もし、異なっている場合は更新をキャンセルするなどの処理を行うことができます。

void init ( tabledef **  def,
short  filenum,
bool  regularDir,
bool  mysqlnull 
)
protected

テーブルを初期化します。このメソッドは databaseクラスの openTable()でテーブルのopenに成功すると呼び出されます。 初期化の内容を変更したい場合は doInit()をオーバーライドします。

引数
defこのテーブルのtabledefへのポインター
filenumこのテーブルのテーブル番号
regularDiropenの際にスキーマで指定された標準の場所のテーブルかどうかを示します。falseの場合開かれたテーブルの場所は標準外の場所にあるテーブルです。
mysqlnullNULLをSQLと同じように扱う場合はtrueを指定します。
void insertBookmarks ( unsigned int  start,
void *  data,
ushort_td  count 
)

ブックマーク配列に値を追加します。

引数
start追加する先頭のインデックスを指定します。
data追加するブックマークデータ配列の先頭アドレスを指定します。
count追加するブックマークデータ配列の数を指定します。

Dataは、2Byte + boolmarkLen() を1つのブックマークとした配列です。 先頭 2Byteはゼロで埋めます。 その後ろの、boolmarkLen()はそのの長さのブックマーク値で埋めます。

注釈
この関数の名称は insert ですが現在のところ、startは、 bookmarksCount() と同じ値のみサポートされます。
bool isUniqeKey ( char_td  keynum)
protectedvirtual

keynumで指定されたインデックスがユニークインデックス(重複値を許可しないインデックス) かどうかを返します。

nstableを再実装しています。

void * keyValueDescription ( _TCHAR *  buf,
int  bufsize 
)

現在のキー値の情報を文字列で取得します。
seek() オペレーションで stat() がSTATUS_NOT_FOUND_TI(レコードが見つからない)を返した 場合や、insert() オペレーションで stat() がSTATUS_DUPPLICATE_KEYVALUE(重複を許可しないキーに重複した値を指定した) を返した際に、キーの情報を取得しエラーの詳細表示などに使用できます。

eFindType lastFindDirection ( ) const

直前のfind系オペレーションの検索方向を返します。

bool logicalToString ( ) const

ft_logicalタイプのフィールドの文字列での値の設定・取得において"yes" "no"の文字列よるセット・取得を行うかどうかを返します。

参照
setLogicalToString()
void moveBookmarks ( unsigned int  index)

カレントレコードをindexで指定したブックマークへ移動しデータバッファに読み出します。 実行結果はstat()で取得します。成功するとゼロが返ります。
indexは bookmarksCount() より小さな値である必要があります。不正なindexを指定すると stat() でSTATUS_PROGRAM_ERRORを返します。

multiRecordAlocator * mra ( ) const

setMra() でセットした multiRecordAlocator のポインターを返します。ない場合はNULLを返します。 この関数は通常ユーザーは使用しません。

bool myDateTimeValueByBtrv ( ) const

myDate型とmyTime型それぞれint __int64型での値の設定・取得の際に、PSQLのdata型・time型の値を使用するかどうかを返します。 この設定が有効な場合、mysqlとPSQLのdata型time型で同じコードを使って動作させることができます。 ただし、time型の秒未満の小数点以下の精度はPSQL time型の2桁までとなります。 myDateTime型myTimeStamp型にはこの設定は影響しません。

unsigned int nullBytes ( ) const
inlineprotected

NULL値を保持するための、バッファのサイズを返します。
通常NULLを許可するフィールドの数から以下のように計算できます。
nullBytes = (int)((nullFileds + 7) / 8);

bool onDeleteCheck ( bool  inkey)
protectedvirtual

nstableを継承して利用するための関数です。 レコードを削除する前に del() 関数内から呼び出されます。 削除を許可しない場合はfalseを返してください。

nstableを再実装しています。

void onInsertAfter ( int  beforeResult)
protectedvirtual

このクラスでは、unpack() とblobに関する処理が実装されています。

nstableを再実装しています。

int onInsertBefore ( )
inlineprotectedvirtual

このクラスでは単にゼロを返すだけの処理が実装されています。

nstableを再実装しています。

void onReadAfter ( )
protectedvirtual

このクラスでは、 pack() とblobに関する処理が実装されています。

nstableを実装しています。

recordCountFn onRecordCount ( ) const

setOnRecordCount() 関数でセットされた、recordCountFn型のコールバック関数を返します。 何もセットされていない場合は、NULLを返します。

void onRecordCounting ( size_t  count,
bool &  complate 
)
protectedvirtual

nstable::recordCount() 関数の呼び出しでフィルターを有効にした場合、処理に時間がかかる場合があります。 その処理内部で定期的にonRecordCountingが呼び出されます。tableクラスでは何も実装されません。

void onUpdateAfter ( int  beforeResult)
protectedvirtual

このクラスでは、unpack() とblobに関する処理が実装されています。

nstableを再実装しています。

int onUpdateBefore ( )
inlineprotectedvirtual

このクラスでは単にゼロを返すだけの処理が実装されています。

nstableを再実装しています。

bool onUpdateCheck ( eUpdateType  type)
protectedvirtual

このクラスでは smartUpdaateに関する処理が実装されています。

nstableを再実装しています。

void * optionalData ( ) const

ユーザー定義のオプショナルデータを取得します。

uint_td pack ( char *  ptr,
size_t  size 
)
protected

tableDef()->pack()を呼び出します。
詳しくは tabledef::pack() を参照してください。

pq_handle prepare ( const queryBase query,
bool  serverPrepare = false 
)
inline

この関数は setQuery() の別名です。詳細は setQuery() を参照してください。

int reallocDataBuffer ( uint_td  v)
protected

vで指定した長さのバッファを再確保します。

void setAlias ( const _TCHAR *  orign,
const _TCHAR *  alias 
)

フィールド名のエリアス(別名)を指定します。エリアスを指定した場合、以降のアクセスはすべて フィルターでのフィールド名も含めエリアス名で行ってください。

引数
orignフィールド名
alias別名
void setFilter ( const _TCHAR *  str,
ushort_td  rejectCount,
ushort_td  cacheCount,
bool  autoEscape = true 
)

find系オペレーションで使用するフィルターを設定します。 フィルター文字列は以下のように、ややSQL文に似ていますが異なるものです。

select id,name id >= 1 and id < 10

フィルター文字列は以下の2つの形式のいずれかで指定します

  • select フィールドリスト フィールド名 演算子 値|[フィールド名]( 接続詞) ...
  • select フィールドリスト in 値リスト

最初のフィルターパターンは、最初の検索呼び出しで table::find() table::findNext() table::findPrev() を使用できます。
2番目のフィルターパターンは、最初の検索呼び出しで table::find()のみ使用できます。
select・フィールドリスト・フィールド名・演算子・値・接続詞・値リスト・in はそれぞれトークンです、トークンとトークンの間は必ず1つの空白で区切ります。 トークンが空白を含む文字列の場合は ' (シングルコーテーション)で囲みます。 シングルコーテーションで囲った文字列にシングルコーテーションを含む場合はその文字の前に&をつけてエスケープします。 さらに、&を使用する場合は&&でエスケープします。
次に各トークンの意味について説明します。

  • フィールドリスト フィールド名をカンマで区切って羅列します。"select フィールドリスト"は省略できます。省略するとすべてのフィールドを取得します。 "select *"は使用できませんので注意してください。
  • フィールド名 フィールド名を指定します。
  • 演算子 演算子は次の8種類のものが使用できます。( =, >, < , >= ,<= ,<> ,& ,!&) Version 2.3 より文字列の場合、これらに続けて i (アイ) を付加すると、アルファベットの大文字小文字を区別せずに比較を行います。 ( =i, >i, <i , >=i ,<=i ,<>i ) '&'演算子はフィールドの値とビット演算を行い指定した値と同じであればマッチします。 '!&'演算子はフィールドの値とビット演算を行い指定した値でなければマッチします。'&'と'!&'は整数値を保持するフィールドでのみ有効です。
  • 値 文字列はstrcmpにより一致の場合マッチしているとなります。文字列の最後に*を指定した場合*より前の文字の長さで比較されます。 たとえば、name = 'y*'とした場合、比較長さはy*の*を除いた長さで1バイトでnameフィールドの先頭文字が'y'のレコードにマッチします。
  • [フィールド名] 値の代わりに同じレコード内の他のフィールド値を使うことができます。その場合はフィールド名を[]で囲んで指定します。
  • 接続詞 接続詞は and または or のいずれかです。
  • 値リスト 取得したいレコードのキー値をカンマ区切りで列挙します。 キー番号は table::find() オペレーションを実行するときに table::setKeyNum() にて指定されたものです。 指定するキーは必ずユニークキーでなければなりません。キーがマルチカラムの場合は、そのカラムの数分の値を列挙します。 たとえば、取得したいレコードの数が10レコードで、キーが3セグメントのマルチカラムの場合、3 × 10 = 30個の値をカンマで区切って指定します。 値リストに指定できる数は結果のデータのサイズによって制限されます。バッファを超える数を指定した場合は、 stat() がSTATUS_FILTERSTRING_ERRORを 返します。また、要求データのバイナリー表現がデータバッファーを超えるサイズになる場合、 find() オペレーションの実行時にSTATUS_WARKSPACE_TOO_SMALL=61を返します。

以下にフィルーターの例を示します。

例1 select id,name id >= 1 and id < 10
例2 name = 'akio'
例3 group = 1 and name = 'y*' or name = 'k*'
例4 group = 1 and name = [subname]
例5 item = 'yoko&'s table'
例6 in '1','10','15','17','18'
例7 select id,name in '1','10','15','17','18'
例7 *

論理式は1組のフィールド名・演算子・値で構成します。 論理式の評価は左から右に向かって順次行われます。演算の順序を決めるかっこ()は使用できません。 また、以下のロジックでマッチ、アンマッチが決定されます。

  • 1 現在の条件にマッチし、次がorの場合trueを返します。
  • 2 現在の条件にマッチし、次がandの場合処理を継続します。
  • 3 現在の条件にマッチし、次がない場合trueを返します。
  • 4 現在の条件にマッチせず、次がandの場合falseを返します。
  • 5 現在の条件にマッチせず、次がorの場合処理を継続します。
  • 6 現在の条件にマッチせず、次がない場合falseを返します。

つぎのようなパターンの論理式は1回の検索では抽出できないことに注意してください。 このような場合複数回検索を行うか、共通条件で検索を行ったあとクライアントサイドで個別のフィルタリング を行うようにします。

例1 (a or b) and (c or d)
最初の (a or b)のaがマッチすると条件1によりtrueが返され (c or d)であるかが評価されません。

例2 (a and b) or (c and d)
最初の (a and b)のaがアンマッチであると条件4によりfalseが返され (c and d)であるかが評価されません。

次のような論理式は良くあるパターンです。
最初に共通条件をandで接続します。最後に、候補をorで接続します。

date >= 2000-01-01 and date <= 2013-01-01 and group = 1 or group = 3 or group = 7

これは以下の式と等価です。

(date >= 2000-01-01 and date <= 2013-01-01) and (group = 1 or group = 3 or group = 7)

このような論理式は1回のオペレーションで検索できます。
上記例2については、条件によって最適化でき検索できる場合があります。その条件は次のすべてを満たす場合です。

  • a,b,c,dのすべての論理式が x = y のように=での比較。
  • a,b,c,dのすべてのフィールドが verchar verbinary text blob zstring lstring以外。
  • aとb、cとdのフィールド番号がともにその順で連続している。

これらの条件を満たしている場合、aとb、cとdを1つのフィールドとして連結した長さで比較するように サーバーに検索要求をします。連結すると ab or cd の2つの論理式になり一回のオペレーションで検索できます。 このフィールドの連結機能は setFilter() 関数を使用した場合は自動でonになります。offにする場合は queryBase::optimaize() でfalseを指定し setQuery() を使用してください。
サーバーのフィルター処理では、フィルーターの内容が指定したキーのキーフィールドを含んでいる場合、検索中のキーの値からして、もうこれ以上マッチするレコード がないことを自動で判定できる場合がありその処理を行っています。しかし、フィールドが連結されているとこの判定ができず、検索範囲が広がってしますことがあります。 このような場合は、 queryBase::optimaize(false) にしてください。

引数
strフィルター文字列を指定します。
rejectCount除外レコードの最大数を指定します。除外レコードの数がこの値に達すると検索を中止し、 ステータス STATUS_LIMMIT_OF_REJECTを返します。
cacheCountの数のレコードが取得できない場合の動作は以下のようになります。
  • 0を指定した場合は、テーブルの最後まで検索を行います。ステータスはSTATUS_EOFを返します。この時、サーバーはアンマッチレコードが4096レコードに達するごとに クライアントに制御を戻します。クライアント内部で自動で再度サーバーに検索を要求することで最後のレコードまで検索します。
  • 1を指定した場合は、最初にマッチしないレコードを見つけた時点で処理を終了します。また、ステータスはSTATUS_LIMMIT_OF_REJECTではなく STATUS_EOFを返します。
  • 2 〜 0xFFFF未満 この範囲の値を指定した場合は、その数の除外レコードに達した時点で処理を戻し、ステータスはSTATUS_LIMMIT_OF_REJECTを返します。
  • 0xFFFF 0xFFFFを指定すると、0を指定した場合とほとんど同じ動作ですが、サーバーはアンマッチレコードの数によって制御を戻すことはありません。 最後のレコードまで1回で検索します。最初からフルスキャンすることが前提の場合は、この値を指定するとサーバー・クライアント間の通信オーバーヘッドを 削減できます。
cacheCount検索時にマッチするレコードを1回のサーバー呼び出しで取得する最大数を指定します。0を指定すると、57000バイトを レコード長 + 6 で割った値を自動的にセットします。
autoEscapestrで指定したフィルター文字列をエスケープ処理を行うかどうかを指定します。デフォルトはtrueです。あらかじめエスケープ済の文字列である場合はfalseを指定します。

インデックスフィールドを含んだ検索条件でテーブルスキャンの範囲を明確にし、rejectCountに1を指定すると最もパフォーマンスが良くなります。
フィルターで唯一例外的な表記法があります。すべてのフィールドですべてのレコードを取得する場合です。この場合フィルター文字列に *を指定します。 空文字列を指定するとフィルターは削除されます。フィルターがない状態でfind系オペレーションを実行すると、内部でseek系オペレーションを代替して処理します。
nstable::recordCount() の呼び出し時にフィルターが設定されていると、フィルターにマッチしたレコード数が返されます。 同時にマッチしたレコードのブックマークを取得します。取得したブックマークへのカレントレコードの移動は table::moveBookmarks()で行うことができます。ブックマークを取得するか否かは queryBase::bookmarkAlso() で指定できます。また、このクエリをサーバーにキャッシュしてあった場合でもrecordCountのオペレーションではサーバーキャッシュを使用せず、レコード数の取得に合ったクエリーに変換して送信されます。

注釈
テーブルのフィルターにおいて、比較対象フィールドが、使用するインデックスのフィールドの時は、大文字/小文字区別の指定をテーブル作成時のフィールド定義と同じすると、パフォーマンスが良くなります。もし、異なるとインデックスによる最適は行えずフルスキャンの必要が出てきます。
void setFV ( short  index,
double  data 
)

indexで指定されたフィールドのdouble型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
float  data 
)

indexで指定されたフィールドのfloat型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
unsigned char  data 
)

indexで指定されたフィールドのunsigned char型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
short  data 
)

indexで指定されたフィールドのshort型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
int  data 
)

indexで指定されたフィールドのint型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
const void *  data,
uint_td  size 
)

indexで指定されたフィールドの値dataを、データバッファにsizeで指定された長さを書き込みます。
ft_blobとft_text型の場合、バッファに書き込まれるのはdataのポインタのみで内容はコピーはされません。 レコードのinsertやupdateが完了するまで dataポインターで示したメモリは有効でなければなりません。
NULLの扱いはこのクラスの概要を参照してください。

注釈
この関数は、dataで指定したメモリの内容がそのまま保存されます。 フィールド型が文字列場合であっても、他のsetFV関数のように文字コード変換は行われません。
void setFV ( const _TCHAR *  fieldName,
int  data 
)

fieldNameで指定されたフィールドのint型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
const char *  data 
)
inline

ANSIコンパイル時のみ

indexで指定されたフィールドの dataで示されたマルチバイト文字列をデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
const char *  data 
)
inline

fieldNameで指定されたフィールドのconst char*型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
const bitset data 
)
inline

indexで指定されたフィールドのバッファに、dataで指定された bitset の64ビット値を書き込みます。

void setFV ( const _TCHAR *  fieldName,
const bitset data 
)
inline

fieldNameで指定されたフィールドのバッファに、dataで指定された bitset の64ビット値を書き込みます。

void setFV ( const _TCHAR *  fieldName,
double  data 
)

fieldNameで指定されたフィールドのdouble型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
float  data 
)

fieldNameで指定されたフィールドのfloat型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
unsigned char  data 
)

fieldNameで指定されたフィールドのunsigned char型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
short  data 
)

fieldNameで指定されたフィールドのshort型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
const void *  data,
uint_td  size 
)

indexで指定されたフィールドの値dataを、データバッファにsizeで指定された長さを書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

fieldNameで指定されたフィールドの値dataを、データバッファにsizeで指定された長さを書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( short  index,
__int64  data 
)

indexで指定されたフィールドの__int64型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFV ( const _TCHAR *  fieldName,
__int64  data 
)

fieldNameで指定されたフィールドの__int64型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFVA ( short  index,
const char *  data 
)

indexで指定されたフィールドの dataで示された文字列をデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFVA ( const _TCHAR *  fieldName,
const char *  data 
)

fieldNameで指定されたフィールドの dataで示された文字列をデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。

void setFVNull ( short  index,
bool  v 
)

indexで指定されたフィールドの値がNULLかどうかを指定します。 trueを指定するとこのフィールドはNULLであるとマークします。
NULLの扱いはこのクラスの概要を参照してください。

void setFVNull ( const _TCHAR *  fieldName,
bool  v 
)

fieldNameで指定されたフィールドの値がNULLかどうかを指定します。 trueを指定するとこのフィールドはNULLであるとマークします。
NULLの扱いはこのクラスの概要を参照してください。

void setLogicalToString ( bool  v)

ft_logicalタイプのフィールドの文字列での値の設定・取得において"yes" "no"によるセット・取得を行うかどうかを設定します。

以下のコードは"yes" "no"による設定を有効にし、フィールドに値をセットする例です。

table* tb = db->openTable("test");
tb->setLogicalToString(true);
tb->setFV("hasCar", "yes");
void setMra ( multiRecordAlocator *  p)

multiRecordAlocator へのポインターをセットします。
この関数は通常ユーザーは使用しません。

void setNoUpdateTimeStamp ( bool  v)
inlineprotectedvirtual

タイムスタンプフィールドの自動更新を行うかどうかを設定します。 タイムスタンプの更新をクライアント側で行っている場合にのみ有効です。

現在 tableクラスではタイムスタンプを更新する実装はありません。 ft_myTimestampフィールドタイプのタイムスタンプ更新はサーバーサイドで行われるためこの設定は何ら効果を持ちません。

引数
vtrueを指定すると更新を抑止します。
void setOnRecordCount ( const recordCountFn  v)

recordCount() 関数内から呼び出されるrecordCountFn型のコールバック関数をセットします。

void setOptionalData ( void *  v)

ユーザー定義のオプショナルデータを設定します。 この値は、コールバック関数の呼び出し元特定のためなどに使用できます。

void setPrepare ( const pq_handle  stmt)

prepare済のプリぺアードクエリーをテーブルにセットします。

pq_handle setQuery ( const queryBase query,
bool  serverPrepare = false 
)

find系オペレーションで使用するフィルターをqueryによって設定します。
詳しくは table::setFilter() および class queryBase を参照してください。

引数
query条件を設定済のqueryBaseオブジェクトを渡します。
serverPrepareこのクエリーをサーバーにキャッシュするかどうかを指定します。
戻り値
プリぺアードクエリー(クライアントキャッシュ済のフィルターまたはクエリ)のハンドルが返ります。セットしたクエリーにプレースホルダーの?が含まれていればこのハンドルを使用して値をセットする必要があります。無ければ、そのまますぐに find() などのオペレーションを実行できます。
プレースホルダーへの値のセットは、supplyValues supplyValues 関数を使って行います。
サーバーにキャッシュされたプリぺアードクエリーはこのテーブルをクローズするまで有効です。 サーバーにキャッシュした場合とそうでない場合で、その後の操作に何ら変わりはありません。サーバーにキャッシュするとその際に通信が行われます。そのテーブルをクローズするまでに、一度しか使われないような場合はキャッシュしないほうが効率的になります。
注釈
serverPrepareがtrueの場合、このオペレーションによってデータバッファの値が変更されます。読み取りのための、キー値の設定はこの呼び出しの後でバッファをクリアして行わなければなりません。
 
queryBase q;
q.queryString(_T("id >= ? and id < ?"));
q.reject(0xFFFF).limit(0);
pq_handle stmt = tb->prepare(&q, true /*servePrepared*/);
const _TCHAR* vs[2];
int nn = makeSupplyValues(vs, 2, _T("10"), _T("200"));
if (!supplyValues(stmt, vs, nn))
;// supplyValues error!
tb->setPrepare(stmt);
 
void smartUpdate ( )

スマートアップデートを有効にします。スマートアップデートは、変更前と変更後のバッファを比較して変更がない場合 何もせずに、update()の成功を返す最適化の仕組みです。このメソッドを呼び出すと現在のデータバッファを保存し 次の update()時に比較を行うように設定されます。update()が呼ばれると、保存されたデータバッファおよび、次の更新での比較 を行うかどうかの設定はクリアされます。 連続する更新のすべてでsmartUpdateを有効にするには、個々のupdate()の呼び出しに対応するsmartUpdate関数の呼び出しが必要です。

short statReasonOfFind ( ) const

find系 オペレーションの結果がSTATUS_EOFを返した場合のより詳しい情報を返します。
find findNext findPrev オペレーションがSTATUS_EOFをより詳しい情報として以下の値を返します。

STATUS_EOF : 検索が、レコードの並びの最後まで達した STATUS_LIMMIT_OF_REJECT : フィルターにマッチしないレコードが queryBase::reject() で指定した数に達した STATUS_REACHED_FILTER_COND : 検索条件から判断してこれ以上該当するレコードは存在しない STATUS_SUCCESS : マッチしたレコードが、 queryBase::limit() で指定した数に達した。

const tabledef * tableDef ( ) const
inline

このテーブルのテーブル定義を返します。

const tabledef ** tableDefPtr ( ) const
inline

このテーブルのテーブル定義のポインターを格納したアドレスを返します。
tableDef() で取得できるテーブル定義のポインターは insertField や insertKey オペレーションによって変化します。 変化にしても問題ないコードを書く場合は tabledef** p = table::tableDefPtr()を取得し*pとしてアクセスするようにしてください。 tableDefPtr() は常に変化しません。

uint_td unPack ( char *  ptr,
size_t  size 
)
protected

tableDef()->unPack()を呼び出します。
詳しくは tabledef::unPack() を参照してください。

bool valiableFormatType ( ) const
inline

テーブルに可変長のフィールドを含むかどうかを返します。フィールドにvarcharまたはvarbinaryを含み且つPSQL互換の可変長テーブル でない場合trueが返ります。

transactdではPSQLの可変長テーブルの実装に最後のフィールドにvarbinaryを使うこと行っています。 この場合、varbinaryを含んでいますが、可変長テーブルですのでfalseを返します。

keylen_td writeKeyData ( )
protectedvirtual

キーバッファに現在のフィールドの値を使って書き込みます。 この関数はインデックスを使用した読み取りオペレーションの前に nstableクラスの 読み取り関数から呼び出されます。

nstableを再実装しています。

keylen_td writeKeyDataTo ( uchar_td *  to,
int  keySize 
)
protected

現在のキー番号で、バッファ内にあるデータからキー用のデータを toで指定されたバッファにコピーします。
通常ユーザーはこの関数を使用する必要はありません。

void writeRecordData ( )
inlineprotectedvirtual

この関数は何も処理しないよう実装されています。

nstableを実装しています。

Transactd SDK 2018年07月31日(火) 19時40分40秒 doxygen