テーブルアクセスクラス (nocopyable) [詳解]
#include <table.h>
公開型 | |
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::fields & | fields () |
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 tabledef * | tableDef () 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 |
nsdatabase * | nsdb () 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で初期化されます。 |
|
explicitprotected |
コンストラクタは直接呼出しできません。 table クラスは database::openTable() によってのみ生成されます。
|
protectedvirtual |
仮想デストラクタ。デストラクタは直接呼出しできません。代わりに nstable::release() を呼び出します。
|
protected |
データバッファをnewPtrで指定したアドレスに変更します。
|
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 | ) |
データバッファのすべてのバイトをゼロで初期化します。
resetType | clearNullを指定すると、NULLを許可するフィールドをNOT NULLで初期化します。defaultNullを指定すると テーブル作成時のデフォルト値で初期化します。(Default NULLであればNULLで初期化する) |
データバッファにはtextまたはblobフィールドのための作業バッファとfind系オペレーションで取得したレコードセットも含みます。 但し、beginBulkInsert() を呼び出した後にこの関数を呼び出しても、blob用のバッファはクリアされません。 commitBulkInsert()または abortBulkInsert() が呼び出されるまで送信のために保持されます。 大きなtext、blobデータを扱った後、不要になった時点でこの関数を呼び出すようにしてください。
直前のオペレーションがfind系オペレーションだった場合、結果用のバッファを標準のバッファに戻します。 find系オペレーションの後、新たなカレントを作成する場合はキー値をセットする前にこの関数を呼び出してください。
|
protected |
バックアップされたdataバッファのアドレスを返します。
|
protected |
データバッファーの長さを返します。
|
protected |
アタッチされたデータバッファを元のバッファに戻します。
このクラスではスキーマを読んで各種初期化処理が行われます。フィールドのキャラクタセットの初期化なども行われます。
|
protected |
プリペアー処理を実行します。
short fieldNumByName | ( | const _TCHAR * | name | ) | const |
名前からフィールド番号を検索して返します。
[in] | name | 番号を調べるフィールド名を指定します。 |
void * fieldPtr | ( | short | index | ) | const |
indexで指定されたフィールド値の先頭アドレスを返します。
client::fields& fields | ( | ) |
void find | ( | eFindType | type = findForword | ) |
キーバッファにあるキー値でカレントレコードを seekGreater(orEqual)または seekLessThan(orEqual)で移動し、findNextまたはfindPrevオペレーションを実行します。
このメソッドを使用すると事前にカレントレコードを確立する必要がありません。
内部的に行われるseekオペレーションは、transactdではサーバー側で行われるため、通信回数を削減できます。 このオペレーションはキー番号に-1は指定できません。必ず0以上のキーを指定する必要があります。
type | findForwordを指定すると内部でfindNextを使用します。findBackForwordを指定すると、findPrevを使用します。findContinueは直前のfind系オペレーションが、フィルター条件のmaxRecordまたはrejectCountによって終了した場合、その続きから同じ条件で検索を続ける場合に使用します。 |
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を返します。
現在の処理状態で有効なフィールドリストから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 * getFVbin | ( | const _TCHAR * | fieldName, |
uint_td & | size | ||
) | const |
データバッファのfieldNameで指定されたフィールドの内容の先頭アドレスとサイズを返します。
[in] | fieldName | フィールドの名前を指定します。 |
[out] | size | データのサイズを返します。 |
|
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 | ( | const _TCHAR * | fieldName | ) | const |
データバッファから、fieldNameで指定されたフィールドの値を読み取ってshort型で返します。
|
inline |
UNICODEコンパイル時のみ
データバッファから、indexで指定されたフィールドの値を読み取ってconst wchar_t*型で返します。
ANSIコンパイル時のみ
データバッファから、indexで指定されたフィールドの値を読み取ってconst char*型で返します。
|
inline |
ANSIコンパイル時のみ
データバッファから、fieldNameで指定されたフィールドの値を読み取ってconst char*型で返します。
unsigned int getRecordHash | ( | ) | const |
現在のデータバッファにあるレコードの値の簡易ハッシュ値を取得します。
使い方の一例を示します。 読み出し時と更新時に他のユーザーによるレコードの変更がないことを保証したい場合、最初の読み出しで レコードのハッシュ値を取得します。更新時はトランザクション内で再度同じレコードを読み出しハッシュ値を 比較します。もし、異なっている場合は更新をキャンセルするなどの処理を行うことができます。
テーブルを初期化します。このメソッドは databaseクラスの openTable()でテーブルのopenに成功すると呼び出されます。 初期化の内容を変更したい場合は doInit()をオーバーライドします。
def | このテーブルのtabledefへのポインター |
filenum | このテーブルのテーブル番号 |
regularDir | openの際にスキーマで指定された標準の場所のテーブルかどうかを示します。falseの場合開かれたテーブルの場所は標準外の場所にあるテーブルです。 |
mysqlnull | NULLをSQLと同じように扱う場合はtrueを指定します。 |
void insertBookmarks | ( | unsigned int | start, |
void * | data, | ||
ushort_td | count | ||
) |
ブックマーク配列に値を追加します。
start | 追加する先頭のインデックスを指定します。 |
data | 追加するブックマークデータ配列の先頭アドレスを指定します。 |
count | 追加するブックマークデータ配列の数を指定します。 |
Dataは、2Byte + boolmarkLen() を1つのブックマークとした配列です。 先頭 2Byteはゼロで埋めます。 その後ろの、boolmarkLen()はそのの長さのブックマーク値で埋めます。
|
protectedvirtual |
keynumで指定されたインデックスがユニークインデックス(重複値を許可しないインデックス) かどうかを返します。
nstableを再実装しています。
void * keyValueDescription | ( | _TCHAR * | buf, |
int | bufsize | ||
) |
eFindType lastFindDirection | ( | ) | const |
直前のfind系オペレーションの検索方向を返します。
bool logicalToString | ( | ) | const |
ft_logicalタイプのフィールドの文字列での値の設定・取得において"yes" "no"の文字列よるセット・取得を行うかどうかを返します。
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型にはこの設定は影響しません。
|
inlineprotected |
NULL値を保持するための、バッファのサイズを返します。
通常NULLを許可するフィールドの数から以下のように計算できます。
nullBytes = (int)((nullFileds + 7) / 8);
|
protectedvirtual |
|
protectedvirtual |
このクラスでは、unpack() とblobに関する処理が実装されています。
nstableを再実装しています。
|
inlineprotectedvirtual |
このクラスでは単にゼロを返すだけの処理が実装されています。
nstableを再実装しています。
recordCountFn onRecordCount | ( | ) | const |
setOnRecordCount() 関数でセットされた、recordCountFn型のコールバック関数を返します。 何もセットされていない場合は、NULLを返します。
|
protectedvirtual |
nstable::recordCount() 関数の呼び出しでフィルターを有効にした場合、処理に時間がかかる場合があります。 その処理内部で定期的にonRecordCountingが呼び出されます。tableクラスでは何も実装されません。
|
protectedvirtual |
このクラスでは、unpack() とblobに関する処理が実装されています。
nstableを再実装しています。
|
inlineprotectedvirtual |
このクラスでは単にゼロを返すだけの処理が実装されています。
nstableを再実装しています。
|
protectedvirtual |
このクラスでは smartUpdaateに関する処理が実装されています。
nstableを再実装しています。
void * optionalData | ( | ) | const |
ユーザー定義のオプショナルデータを取得します。
|
protected |
tableDef()->pack()を呼び出します。
詳しくは tabledef::pack() を参照してください。
|
inline |
この関数は setQuery() の別名です。詳細は setQuery() を参照してください。
|
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つの形式のいずれかで指定します
最初のフィルターパターンは、最初の検索呼び出しで table::find() table::findNext() table::findPrev() を使用できます。
2番目のフィルターパターンは、最初の検索呼び出しで table::find()のみ使用できます。
select・フィールドリスト・フィールド名・演算子・値・接続詞・値リスト・in はそれぞれトークンです、トークンとトークンの間は必ず1つの空白で区切ります。 トークンが空白を含む文字列の場合は ' (シングルコーテーション)で囲みます。 シングルコーテーションで囲った文字列にシングルコーテーションを含む場合はその文字の前に&をつけてエスケープします。 さらに、&を使用する場合は&&でエスケープします。
次に各トークンの意味について説明します。
以下にフィルーターの例を示します。
例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回の検索では抽出できないことに注意してください。 このような場合複数回検索を行うか、共通条件で検索を行ったあとクライアントサイドで個別のフィルタリング を行うようにします。
例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を1つのフィールドとして連結した長さで比較するように サーバーに検索要求をします。連結すると ab or cd の2つの論理式になり一回のオペレーションで検索できます。 このフィールドの連結機能は setFilter() 関数を使用した場合は自動でonになります。offにする場合は queryBase::optimaize() でfalseを指定し setQuery() を使用してください。
サーバーのフィルター処理では、フィルーターの内容が指定したキーのキーフィールドを含んでいる場合、検索中のキーの値からして、もうこれ以上マッチするレコード がないことを自動で判定できる場合がありその処理を行っています。しかし、フィールドが連結されているとこの判定ができず、検索範囲が広がってしますことがあります。 このような場合は、 queryBase::optimaize(false) にしてください。
str | フィルター文字列を指定します。 |
rejectCount | 除外レコードの最大数を指定します。除外レコードの数がこの値に達すると検索を中止し、 ステータス STATUS_LIMMIT_OF_REJECTを返します。 cacheCountの数のレコードが取得できない場合の動作は以下のようになります。
|
cacheCount | 検索時にマッチするレコードを1回のサーバー呼び出しで取得する最大数を指定します。0を指定すると、57000バイトを レコード長 + 6 で割った値を自動的にセットします。 |
autoEscape | strで指定したフィルター文字列をエスケープ処理を行うかどうかを指定します。デフォルトは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の扱いはこのクラスの概要を参照してください。
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の扱いはこのクラスの概要を参照してください。
void setFV | ( | const _TCHAR * | fieldName, |
int | data | ||
) |
fieldNameで指定されたフィールドのint型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。
|
inline |
ANSIコンパイル時のみ
indexで指定されたフィールドの dataで示されたマルチバイト文字列をデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。
|
inline |
fieldNameで指定されたフィールドのconst char*型の値 dataをデータバッファに書き込みます。
NULLの扱いはこのクラスの概要を参照してください。
indexで指定されたフィールドのバッファに、dataで指定された bitset の64ビット値を書き込みます。
|
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"による設定を有効にし、フィールドに値をセットする例です。
void setMra | ( | multiRecordAlocator * | p | ) |
multiRecordAlocator へのポインターをセットします。
この関数は通常ユーザーは使用しません。
|
inlineprotectedvirtual |
タイムスタンプフィールドの自動更新を行うかどうかを設定します。 タイムスタンプの更新をクライアント側で行っている場合にのみ有効です。
現在 tableクラスではタイムスタンプを更新する実装はありません。 ft_myTimestampフィールドタイプのタイムスタンプ更新はサーバーサイドで行われるためこの設定は何ら効果を持ちません。
v | trueを指定すると更新を抑止します。 |
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 | このクエリーをサーバーにキャッシュするかどうかを指定します。 |
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() で指定した数に達した。
|
inline |
このテーブルのテーブル定義を返します。
|
inline |
このテーブルのテーブル定義のポインターを格納したアドレスを返します。
tableDef() で取得できるテーブル定義のポインターは insertField や insertKey オペレーションによって変化します。 変化にしても問題ないコードを書く場合は tabledef** p = table::tableDefPtr()を取得し*pとしてアクセスするようにしてください。 tableDefPtr() は常に変化しません。
|
protected |
tableDef()->unPack()を呼び出します。
詳しくは tabledef::unPack() を参照してください。
|
inline |
テーブルに可変長のフィールドを含むかどうかを返します。フィールドにvarcharまたはvarbinaryを含み且つPSQL互換の可変長テーブル でない場合trueが返ります。
transactdではPSQLの可変長テーブルの実装に最後のフィールドにvarbinaryを使うこと行っています。 この場合、varbinaryを含んでいますが、可変長テーブルですのでfalseを返します。
|
protectedvirtual |
キーバッファに現在のフィールドの値を使って書き込みます。 この関数はインデックスを使用した読み取りオペレーションの前に nstableクラスの 読み取り関数から呼び出されます。
nstableを再実装しています。
|
protected |
現在のキー番号で、バッファ内にあるデータからキー用のデータを toで指定されたバッファにコピーします。
通常ユーザーはこの関数を使用する必要はありません。
|
inlineprotectedvirtual |
この関数は何も処理しないよう実装されています。
nstableを実装しています。