全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド ページ
trdboostapi.h
1 #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_TRDBOOSTAPI_H
2 #define BZS_DB_PROTOCOL_TDAP_CLIENT_TRDBOOSTAPI_H
3 /*=================================================================
4  Copyright (C) 2013 2014 BizStation Corp All rights reserved.
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public License
8  as published by the Free Software Foundation; either version 2
9  of the License, or (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19  02111-1307, USA.
20 =================================================================*/
21 #include "trdboostapiInternal.h"
22 #include <boost/shared_ptr.hpp>
23 #include <boost/noncopyable.hpp>
24 #include <iterator>
25 #include <stdio.h>
26 #include <bzs/db/protocol/tdap/uri.h>
27 
28 #if defined(__GNUC__)
29 #if (!defined(__clang__) && \
30  ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)))
31 #error "Your GCC version is too old. 4.3 or later versions are required."
32 #endif
33 #endif
34 
35 namespace bzs
36 {
37 namespace db
38 {
39 namespace protocol
40 {
41 namespace tdap
42 {
43 namespace client
44 {
45 
47 {
55 };
56 
58 {
61 };
62 
64 {
68 };
69 
71 {
72  _TCHAR m_buf[MAX_PATH];
73  short m_type;
74  char_td m_mode;
75 
76 public:
77  inline connectParams(const _TCHAR* protocol, const _TCHAR* hostOrIp,
78  const _TCHAR* dbname, const _TCHAR* schemaTable
79  ,const _TCHAR* userName=NULL, const _TCHAR* passwd=NULL)
80  : m_type(TYPE_SCHEMA_BDF), m_mode(TD_OPEN_READONLY)
81  {
82  _TCHAR dbf[MAX_PATH]={0x00};
83  if (schemaTable && schemaTable[0])
84  {
85  const _TCHAR* ext = _T(".bdf");
86  if (_tcscmp(schemaTable, TRANSACTD_SCHEMANAME)==0)
87  ext = _T("");
88  _stprintf_s(dbf, MAX_PATH, _T("dbfile=%s%s"), schemaTable, ext);
89  }
90  if (userName == NULL || (userName[0] == 0x00))
91  _stprintf_s(m_buf, MAX_PATH, _T("%s://%s/%s?%s"), protocol,
92  hostOrIp, dbname, dbf);
93  else
94  {
95  if (!passwd) passwd = _T("");
96  _stprintf_s(m_buf, MAX_PATH, _T("%s://%s@%s/%s?%s&pwd=%s"),
97  protocol, userName, hostOrIp, dbname, dbf, passwd);
98  }
99  }
100  inline explicit connectParams(const _TCHAR* uri)
101  : m_type(TYPE_SCHEMA_BDF), m_mode(TD_OPEN_READONLY)
102  {
103  _tcscpy_s(m_buf, MAX_PATH, uri);
104  size_t len = _tcslen(uri);
105  if (len > 5)
106  {
107  _TCHAR tmp[10];
108  _tcscpy_s(tmp, 10, uri + len - 4);
109 #ifdef _tcsupr_s
110  _tcsupr_s(tmp, 10);
111 #else
112  _tcsupr(tmp);
113 #endif
114  if (_tcscmp(tmp, _T(".DDF"))==0)
115  m_type = TYPE_SCHEMA_DDF;
116  }
117  }
118  inline void setMode(char_td v) { m_mode = v; }
119 
120  inline void setType(short v)
121  {
122  if (m_type != v)
123  {
124  if ((_tcslen(m_buf) > 3) && m_buf[_tcslen(m_buf) - 3] == _T('.'))
125  {
126  m_buf[_tcslen(m_buf) - 3] = 0x00;
127  if (v == TYPE_SCHEMA_BDF)
128  _tcscat_s(m_buf, MAX_PATH, _T("bdf"));
129  else
130  _tcscat_s(m_buf, MAX_PATH, _T("ddf"));
131  }
132  }
133  m_type = v;
134  }
135 
136  inline const _TCHAR* uri(bool noPasswd=false) const
137  {
138  return m_buf;
139  }
140 
141  inline char_td mode() const { return m_mode; };
142 
143  inline short type() const { return m_type; };
144 };
145 
146 /* databaseManager interface
147  If use some databases, implemnt a this interface and set the activeTable
148  constructor
149  Create table by name and option from suitable database.
150 
151 */
153 {
154 
155 public:
156  virtual ~idatabaseManager(){};
157  virtual void reset(int) = 0;
158  virtual table_ptr table(const _TCHAR* name) = 0;
159  virtual database* db() const = 0;
160  virtual void use(const connectParams* param = NULL) = 0;
161  virtual void unUse() = 0;
162  virtual void setOption(__int64 v) = 0;
163  virtual __int64 option() = 0;
164  virtual void beginTrn(short bias) = 0;
165  virtual void endTrn() = 0;
166  virtual void abortTrn() = 0;
167  virtual int enableTrn() = 0;
168  virtual void beginSnapshot(short bias = CONSISTENT_READ) = 0;
169  virtual void endSnapshot() = 0;
170  virtual const _TCHAR* uri() const = 0;
171  virtual char_td mode() const = 0;
172  virtual bool isOpened() const = 0;
173  virtual short_td stat() const = 0;
174  virtual uchar_td* clientID() const = 0;
175 };
176 
177 template <class T>
179  : public std::iterator<std::bidirectional_iterator_tag, fields, void>
180 {
181 
182  table& m_tb;
183  fields m_fds;
184  ushort_td m_lockBias;
185 
186 public:
187  inline tableIterator(table& tb, ushort_td lockBias = LOCK_BIAS_DEFAULT) : m_tb(tb), m_fds(tb),m_lockBias(lockBias)
188  {
189  readStatusCheck(tb, _T("tableIterator"));
190  }
191 
192  table& tb() const { return m_tb; };
193 
194  void setLockBias(ushort_td v) { m_lockBias = v; }
195 
196  inline fields& operator*() { return m_fds; }
197 
198  inline fields* operator->() { return &m_fds; }
199 
201  {
202  T::increment(m_tb, m_lockBias);
203  return *this;
204  }
205 
207  {
208  T::decrement(m_tb, m_lockBias);
209  return *this;
210  }
211 
212  inline bool operator==(const tableIterator& v) { return m_tb.stat() != 0; }
213 
214  inline bool operator!=(const tableIterator& v) { return m_tb.stat() == 0; }
215 
216  inline bool isEnd() { return m_tb.stat() != 0; }
217 };
218 
222 
226 
227 static const int filter_validate_value = 0;
228 static const int filter_validate_block = 1;
229 static const int filter_invalidate_value = 2;
230 
231 typedef boost::function<int(const fields&)> validationFunc;
232 
233 #define VALIDATION_FUNC(FUNC_PTR, PTR) boost::bind(FUNC_PTR, PTR, fields_type)
234 
235 template <class T>
237  : public std::iterator<std::input_iterator_tag, fields, void>
238 {
239  T& m_it;
240  validationFunc m_func;
241  inline int callFunc()
242  {
243  int v = m_func(*m_it);
244  if (v == filter_invalidate_value)
245  m_it.tb().setStat(STATUS_EOF);
246  return v;
247  }
248 
249 public:
250  filterdIterator(T& it, validationFunc func) : m_it(it), m_func(func)
251  {
252  int v = callFunc();
253  if (v == filter_validate_block)
254  operator++();
255  }
256 
257  inline fields operator*() { return m_it.operator*(); }
258 
259  inline fields* operator->() { return m_it.operator->(); }
260 
262  {
263  int v;
264  do
265  {
266  ++m_it;
267  v = callFunc();
268  } while (v == filter_validate_block);
269  return m_it;
270  }
271 
272  inline bool operator==(const filterdIterator& v)
273  {
274  return m_it.operator==(v.m_it);
275  }
276 
277  inline bool operator!=(const filterdIterator& v)
278  {
279  return m_it.operator!=(v.m_it);
280  }
281 
282  inline bool isEnd() { return m_it.isEnd(); }
283 };
284 
288 
292 
293 inline indexIterator readIndex(table_ptr tb, eIndexOpType op, ushort_td lockBias = LOCK_BIAS_DEFAULT)
294 {
295 
296  switch (op)
297  {
298  case eSeekEqual:
299  tb->seek(lockBias);
300  break;
301  case eSeekFirst:
302  tb->seekFirst(lockBias);
303  break;
304  case eSeekGreaterOrEqual:
305  tb->seekGreater(true, lockBias);
306  break;
307  case eSeekGreater:
308  tb->seekGreater(false, lockBias);
309  break;
310  default:
311  assert(0);
312  readStatusCheck(*tb, _T("readIndex"));
313  }
314  return indexIterator(*tb, lockBias);
315 }
316 
317 inline indexRvIterator readIndexRv(table_ptr tb, eIndexOpType op, ushort_td lockBias = LOCK_BIAS_DEFAULT)
318 {
319 
320  switch (op)
321  {
322  case eSeekEqual:
323  tb->seek(lockBias);
324  break;
325  case eSeekLast:
326  tb->seekLast(lockBias);
327  break;
329  tb->seekLessThan(true, lockBias);
330  break;
331  case eSeekLessThan:
332  tb->seekLessThan(false, lockBias);
333  break;
334  default:
335  assert(0);
336  readStatusCheck(*tb, _T("readIndexRv"));
337  }
338  return indexRvIterator(*tb, lockBias);
339 }
340 
341 template <class T>
342 inline indexIterator readIndex(table_ptr tb, eIndexOpType op, char_td keynum,
343  T func, ushort_td lockBias = LOCK_BIAS_DEFAULT)
344 {
345  tb->setKeyNum(keynum);
346  if (&func)
347  {
348  fields fds(*tb);
349  func(fds);
350  }
351  return readIndex(tb, op, lockBias);
352 }
353 
354 template <class T>
356  char_td keynum, T func, ushort_td lockBias = LOCK_BIAS_DEFAULT)
357 {
358  tb->setKeyNum(keynum);
359  if (&func)
360  {
361  fields fds(*tb);
362  func(fds);
363  }
364  return readIndexRv(tb, op, lockBias);
365 }
366 
367 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6,
368  class T7>
369 inline indexIterator
370 readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0,
371  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4,
372  const T5 kv5, const T6 kv6, const T7 kv7)
373 {
374  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
375  tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
376  return readIndex(tb, op);
377 }
378 
379 /** @cond INTERNAL */
380 
381 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6>
383  const char_td keynum, const T0 kv0,
384  const T1 kv1, const T2 kv2, const T3 kv3,
385  const T4 kv4, const T5 kv5, const T6 kv6)
386 {
387  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2,
388  kv3, kv4, kv5, kv6);
389  return readIndex(tb, op);
390 }
391 
392 template <class T0, class T1, class T2, class T3, class T4, class T5>
394  const char_td keynum, const T0 kv0,
395  const T1 kv1, const T2 kv2, const T3 kv3,
396  const T4 kv4, const T5 kv5)
397 {
398  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3,
399  kv4, kv5);
400  return readIndex(tb, op);
401 }
402 
403 template <class T0, class T1, class T2, class T3, class T4>
404 inline indexIterator
405 readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0,
406  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
407 {
408  keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3,
409  kv4);
410  return readIndex(tb, op);
411 }
412 
413 template <class T0, class T1, class T2, class T3>
415  const char_td keynum, const T0 kv0,
416  const T1 kv1, const T2 kv2, const T3 kv3)
417 {
418  keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
419  return readIndex(tb, op);
420 }
421 
422 template <class T0, class T1, class T2>
424  const char_td keynum, const T0 kv0,
425  const T1 kv1, const T2 kv2)
426 {
427  keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
428  return readIndex(tb, op);
429 }
430 
431 template <class T0, class T1>
433  const char_td keynum, const T0 kv0,
434  const T1 kv1)
435 {
436  keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
437  return readIndex(tb, op);
438 }
439 
440 template <class T0>
442  const char_td keynum, const T0 kv0)
443 {
444  keyValueSetter<T0>::set(tb, keynum, kv0);
445  return readIndex(tb, op);
446 }
447 /** @endcond */
448 
449 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6,
450  class T7>
451 inline indexRvIterator
452 readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0,
453  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4,
454  const T5 kv5, const T6 kv6, const T7 kv7)
455 {
456  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
457  tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
458  return readIndexRv(tb, op);
459 }
460 
461 /** @cond INTERNAL */
462 
463 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6>
465  const char_td keynum, const T0 kv0,
466  const T1 kv1, const T2 kv2, const T3 kv3,
467  const T4 kv4, const T5 kv5, const T6 kv6)
468 {
469  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2,
470  kv3, kv4, kv5, kv6);
471  return readIndexRv(tb, op);
472 }
473 
474 template <class T0, class T1, class T2, class T3, class T4, class T5>
476  const char_td keynum, const T0 kv0,
477  const T1 kv1, const T2 kv2, const T3 kv3,
478  const T4 kv4, const T5 kv5)
479 {
480  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3,
481  kv4, kv5);
482  return readIndexRv(tb, op);
483 }
484 
485 template <class T0, class T1, class T2, class T3, class T4>
486 inline indexRvIterator
487 readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0,
488  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
489 {
490  keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3,
491  kv4);
492  return readIndexRv(tb, op);
493 }
494 
495 template <class T0, class T1, class T2, class T3>
497  const char_td keynum, const T0 kv0,
498  const T1 kv1, const T2 kv2, const T3 kv3)
499 {
500  keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
501  return readIndexRv(tb, op);
502 }
503 
504 template <class T0, class T1, class T2>
506  const char_td keynum, const T0 kv0,
507  const T1 kv1, const T2 kv2)
508 {
509  keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
510  return readIndexRv(tb, op);
511 }
512 
513 template <class T0, class T1>
515  const char_td keynum, const T0 kv0,
516  const T1 kv1)
517 {
518  keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
519  return readIndexRv(tb, op);
520 }
521 
522 template <class T0>
524  const char_td keynum, const T0 kv0)
525 {
526  keyValueSetter<T0>::set(tb, keynum, kv0);
527  return readIndexRv(tb, op);
528 }
529 /** @endcond */
530 
531 inline stepIterator readStep(table_ptr tb, ushort_td lockBias = LOCK_BIAS_DEFAULT)
532 {
533  tb->stepFirst(lockBias);
534  return stepIterator(*tb, lockBias);
535 }
536 
537 inline stepRvIterator readStepRv(table_ptr tb, ushort_td lockBias = LOCK_BIAS_DEFAULT)
538 {
539  tb->stepLast(lockBias);
540  return stepRvIterator(*tb, lockBias);
541 }
542 
543 
544 inline pq_handle setQuery(table_ptr& tb, const queryBase& q,
545  bool serverPrepare = false)
546 {
547  pq_handle stmt = tb->setQuery(&q, serverPrepare);
548  readStatusCheck(*tb, _T("setQuery"));
549  return stmt;
550 }
551 
552 /** @cond INTERNAL */
553 inline pq_handle setQuery(table_ptr& tb, const pq_handle& q)
554 {
555  tb->setPrepare(q);
556  return q;
557 }
558 /** @endcond */
559 
560 inline pq_handle prepare(table_ptr& tb, const queryBase& q, bool serverPrepare=false)
561 {
562  pq_handle stmt = tb->prepare(&q, serverPrepare);
563  readStatusCheck(*tb, _T("prepare"));
564  return stmt;
565 }
566 
567 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5, class T6,
568  class T7>
569 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
570  const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
571  const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
572 {
573  setQuery(tb, q);
574  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
575  tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
576  tb->find(table::findForword);
577  return findIterator(*tb);
578 }
579 
580 
581 /** @cond INTERNAL */
582 
583 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
584 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
585  const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
586  const T4 kv4, const T5 kv5, const T6 kv6)
587 {
588  setQuery(tb, q);
589  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2,
590  kv3, kv4, kv5, kv6);
591  tb->find(table::findForword);
592  return findIterator(*tb);
593 }
594 
595 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5>
596 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
597  const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
598  const T4 kv4, const T5 kv5)
599 {
600  setQuery(tb, q);
601  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3,
602  kv4, kv5);
603  tb->find(table::findForword);
604  return findIterator(*tb);
605 }
606 
607 template <class Q, class T0, class T1, class T2, class T3, class T4>
608 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
609  const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
610  const T4 kv4)
611 {
612  setQuery(tb, q);
613  keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3,
614  kv4);
615  tb->find(table::findForword);
616  return findIterator(*tb);
617 }
618 
619 template <class Q, class T0, class T1, class T2, class T3>
620 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
621  const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
622 {
623  setQuery(tb, q);
624  keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
625  tb->find(table::findForword);
626  return findIterator(*tb);
627 }
628 
629 template <class Q, class T0, class T1, class T2>
630 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
631  const T0 kv0, const T1 kv1, const T2 kv2)
632 {
633  setQuery(tb, q);
634  keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
635  tb->find(table::findForword);
636  return findIterator(*tb);
637 }
638 
639 template <class Q, class T0, class T1>
640 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
641  const T0 kv0, const T1 kv1)
642 {
643  setQuery(tb, q);
644  keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
645  tb->find(table::findForword);
646  return findIterator(*tb);
647 }
648 
649 template <class Q, class T0>
650 inline findIterator find(table_ptr tb, const char_td keynum, const Q& q,
651  const T0 kv0)
652 {
653  setQuery(tb, q);
654  keyValueSetter<T0>::set(tb, keynum, kv0);
655  tb->find(table::findForword);
656  return findIterator(*tb);
657 }
658 /** @endcond */
659 
660 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5, class T6,
661  class T7>
662 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
663  const Q& q, const T0 kv0, const T1 kv1,
664  const T2 kv2, const T3 kv3, const T4 kv4,
665  const T5 kv5, const T6 kv6, const T7 kv7)
666 {
667  setQuery(tb, q);
668  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
669  tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
670  tb->find(table::findBackForword);
671  return findRvIterator(*tb);
672 }
673 
674 /** @cond INTERNAL */
675 
676 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
677 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
678  const Q& q, const T0 kv0, const T1 kv1,
679  const T2 kv2, const T3 kv3, const T4 kv4,
680  const T5 kv5, const T6 kv6)
681 {
682  setQuery(tb, q);
683  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2,
684  kv3, kv4, kv5, kv6);
685  tb->find(table::findBackForword);
686  return findRvIterator(*tb);
687 }
688 
689 template <class Q, class T0, class T1, class T2, class T3, class T4, class T5>
690 inline findRvIterator
691 findRv(table_ptr tb, const char_td keynum, const Q& q, const T0 kv0,
692  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5)
693 {
694  setQuery(tb, q);
695  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3,
696  kv4, kv5);
697  tb->find(table::findBackForword);
698  return findRvIterator(*tb);
699 }
700 
701 template <class Q, class T0, class T1, class T2, class T3, class T4>
702 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
703  const Q& q, const T0 kv0, const T1 kv1,
704  const T2 kv2, const T3 kv3, const T4 kv4)
705 {
706  setQuery(tb, q);
707  keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3,
708  kv4);
709  tb->find(table::findBackForword);
710  return findRvIterator(*tb);
711 }
712 
713 template <class Q, class T0, class T1, class T2, class T3>
714 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
715  const Q& q, const T0 kv0, const T1 kv1,
716  const T2 kv2, const T3 kv3)
717 {
718  setQuery(tb, q);
719  keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
720  tb->find(table::findBackForword);
721  return findRvIterator(*tb);
722 }
723 
724 template <class Q, class T0, class T1, class T2>
725 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
726  const Q& q, const T0 kv0, const T1 kv1,
727  const T2 kv2)
728 {
729  setQuery(tb, q);
730  keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
731  tb->find(table::findBackForword);
732  return findRvIterator(*tb);
733 }
734 
735 template <class Q, class T0, class T1>
736 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
737  const Q& q, const T0 kv0, const T1 kv1)
738 {
739  setQuery(tb, q);
740  keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
741  tb->find(table::findBackForword);
742  return findRvIterator(*tb);
743 }
744 
745 template <class Q, class T0>
746 inline findRvIterator findRv(table_ptr tb, const char_td keynum,
747  const Q& q, const T0 kv0)
748 {
749  setQuery(tb, q);
750  keyValueSetter<T0>::set(tb, keynum, kv0);
751  tb->find(table::findBackForword);
752  return findRvIterator(*tb);
753 }
754 
755 /** @endcond */
756 
758  bool isCurrentValid)
759 
760 {
761  if (!it.isEnd())
762  {
763  it.tb().setQuery(&q);
764  if (!isCurrentValid)
765  it.tb().findNext(false);
766  }
767  return findIterator(it.tb());
768 }
769 
771  bool isCurrentValid)
772 {
773  if (!it.isEnd())
774  it.tb().setQuery(&q);
775  if (!isCurrentValid)
776  it.tb().findPrev(false);
777  return findRvIterator(it.tb());
778 }
779 
780 template <class Database_Ptr>
781 bool isSameUri(const connectParams* param, const Database_Ptr& db)
782 {
783  return db && db->isOpened() && (_tcsicmp(param->uri(), db->uri()) == 0) &&
784  (param->mode() == db->mode());
785 }
786 
787 inline void releaseDatabase(database* db)
788 {
789  database::destroy(db);
790 }
791 
792 inline void releaseTable(table* p)
793 {
794  if (p)
795  {
796  if (nsdatabase::testTablePtr(p))
797  p->release();
798  }
799 }
800 
802 {
804  return p;
805 }
806 
807 template <class Database_Ptr>
808 inline void disconnect(Database_Ptr db, const connectParams& connPrams)
809 {
810  db->disconnect(connPrams.uri());
811  if (db->stat())
812  nstable::throwError((std::_tstring(_T("Disconnect database ")) +
813  connPrams.uri()).c_str(),
814  db->stat());
815 }
816 
817 template <class Database_Ptr> inline void disconnect(Database_Ptr db)
818 {
819  db->disconnect();
820  if (db->stat())
821  nstable::throwError(_T("Disconnect database "), db->stat());
822 }
823 
824 template <class Database_Ptr>
825 inline void throwDbError(Database_Ptr db, const _TCHAR* caption, const _TCHAR* uri)
826 {
827  TCHAR tmp[MAX_PATH];
828  tdap::stripPasswd(uri, tmp, MAX_PATH);
829  nstable::throwError((std::_tstring(caption) + tmp).c_str(), db->stat());
830 }
831 
832 template <class Database_Ptr, class ConnectParam_type>
833 inline void connect(Database_Ptr db, const ConnectParam_type& connPrams,
834  bool newConnection)
835 {
836  db->connect(connPrams.uri(), newConnection);
837  if (db->stat())
838  throwDbError(db, _T("Connect database : "), connPrams.uri());
839 }
840 
841 template <class Database_Ptr>
842 inline void createDatabase(Database_Ptr db, const connectParams& connPrams)
843 {
844  db->create(connPrams.uri());
845  if (db->stat())
846  throwDbError(db, _T("Create database : "), connPrams.uri());
847 }
848 
849 template <class Database_Ptr>
850 inline void createDatabase(Database_Ptr db, const _TCHAR* uri)
851 {
852  db->create(uri);
853  if (db->stat())
854  throwDbError(db, _T("Create database : "), uri);
855 }
856 
857 template <class Database_Ptr, class ConnectParam_type>
858 inline void openDatabase(Database_Ptr db, const ConnectParam_type& connPrams)
859 {
860  db->open(connPrams.uri(), connPrams.type(), connPrams.mode());
861  if (db->stat())
862  throwDbError(db, _T("Open database : "), connPrams.uri());
863 }
864 
865 template <class Database_Ptr>
866 inline void openDatabase(Database_Ptr db, const _TCHAR* uri,
867  short schemaType = 0, short mode = -2,
868  const _TCHAR* dir = NULL,
869  const _TCHAR* ownername = NULL)
870 {
871  db->open(uri, schemaType, mode, dir, ownername);
872  if (db->stat())
873  throwDbError(db, _T("Open database : "), uri);
874 }
875 
876 template <class Database_Ptr>
877 inline void connectOpen(Database_Ptr db, const connectParams& connPrams,
878  bool newConnection)
879 {
880  if (newConnection)
881  connect(db, connPrams, newConnection);
882  openDatabase(db, connPrams);
883 }
884 
885 template <class Database_Ptr> inline void dropDatabase(Database_Ptr db)
886 {
887  db->drop();
888  if (db->stat())
889  nstable::throwError(std::_tstring(_T("Drop database ")).c_str(),
890  db->stat());
891 }
892 
893 template <class Database_Ptr>
894 inline table_ptr openTable(Database_Ptr db, const _TCHAR* name,
895  short mode = TD_OPEN_NORMAL,
896  bool autoCreate = true, const _TCHAR* ownerName = NULL,
897  const _TCHAR* uri = NULL)
898 {
899  table_ptr p(db->openTable(name, mode, autoCreate, ownerName, uri),
900  releaseTable);
901  if (db->stat())
902  nstable::throwError((std::_tstring(_T("Open table ")) + name).c_str(),
903  db->stat());
904  return p;
905 }
906 
907 template <class Database_Ptr>
908 inline table_ptr openTable(Database_Ptr db, short tableid,
909  short mode = TD_OPEN_NORMAL,
910  bool autoCreate = true, const _TCHAR* ownerName = NULL,
911  const _TCHAR* uri = NULL)
912 {
913  table_ptr p(db->openTable(tableid, mode, autoCreate, ownerName, uri),
914  releaseTable);
915 
916  if (db->stat())
917  {
918  _TCHAR buf[50];
919  _stprintf_s(buf, 50, _T("Open table id = %d"), tableid);
920  nstable::throwError(buf, db->stat());
921  }
922  return p;
923 }
924 
925 template <class Database_Ptr>
926 inline void dropTable(Database_Ptr db, const _TCHAR* name)
927 {
928  db->dropTable(name);
929  if (db->stat())
930  nstable::throwError((std::_tstring(_T("Drop table ")) + name).c_str(),
931  db->stat());
932 }
933 
934 template <class Database_Ptr>
935 inline void convertTable(Database_Ptr db, short tableid, copyDataFn func = NULL)
936 {
937 
938  if (db->existsTableFile(tableid, NULL))
939  {
940  db->setOnCopyData(func);
941  db->convertTable(tableid, false, NULL);
942  db->setOnCopyData(NULL);
943  if (db->stat())
944  {
945  assert(db->dbDef());
946  db->dbDef()->popBackup(tableid);
947  nstable::throwError(std::_tstring(_T("Convert table ")).c_str(),
948  db->stat());
949  }
950  }
951 }
952 
953 template <class Database_Ptr>
954 inline void convertTable(Database_Ptr db, const _TCHAR* name,
955  copyDataFn func = NULL)
956 {
957  assert(db->dbDef());
958  short tablenum = db->dbDef()->tableNumByName(name);
959  convertTable(db, tablenum, func);
960 }
961 
962 inline void insertTable(dbdef* def, short id, const _TCHAR* name,
963  unsigned short charsetIndex)
964 {
965  tabledef td;
966  td.setTableName(name);
967  td.setFileName(name);
968  td.id = id;
969  td.charsetIndex = (uchar_td)charsetIndex;
970  def->insertTable(&td);
971  if (def->stat() != 0)
973  (std::_tstring(_T("Insert tabledef ")) + name).c_str(),
974  def->stat());
975 }
976 
977 inline void deleteTable(dbdef* def, short id)
978 {
979  def->deleteTable(id);
980  if (def->stat() != 0)
981  nstable::throwError(_T("Delete tabledef "), def->stat());
982 
983 }
984 
985 
986 inline void renumberTable(dbdef* def, short id, short newid)
987 {
988  def->renumberTable(id, newid);
989  if (def->stat() != 0)
990  nstable::throwError(_T("Renumber table id "), def->stat());
991 
992 }
993 
994 inline fielddef* insertField(dbdef* def, short tableid, short fieldNum,
995  const _TCHAR* name, uchar_td type, ushort_td len)
996 {
997  fielddef* fd = def->insertField(tableid, fieldNum);
998  if (def->stat() != 0)
1000  (std::_tstring(_T("Insert fielddef ")) + name).c_str(),
1001  def->stat());
1002 
1003  fd->setName(name);
1004  fd->type = type;
1005  fd->len = len;
1006  return fd;
1007 }
1008 
1009 inline void deleteField(dbdef* def, short tableid, short fieldNum)
1010 {
1011  def->deleteField(tableid, fieldNum);
1012  if (def->stat() != 0)
1013  nstable::throwError(_T("Delete fielddef "), def->stat());
1014 }
1015 
1016 inline keydef* insertKey(dbdef* def, short tableid, short insertIndex)
1017 {
1018  keydef* kd = def->insertKey(tableid, insertIndex);
1019  if (def->stat() != 0)
1020  nstable::throwError(std::_tstring(_T("Insert keydef ")).c_str(),
1021  def->stat());
1022  return kd;
1023 }
1024 
1025 inline void deleteKey(dbdef* def, short tableid, short keynum)
1026 {
1027  def->deleteKey(tableid, keynum);
1028  if (def->stat() != 0)
1029  nstable::throwError(_T("Delete keydef "), def->stat());
1030 }
1031 
1032 inline void validateTableDef(dbdef* def, short tableid)
1033 {
1034  def->validateTableDef(tableid);
1035  if (def->stat() != 0)
1036  {
1037  std::_tstring s;
1038  if (def->tableDefs(tableid))
1039  s = def->tableDefs(tableid)->tableName();
1040  nstable::throwError((std::_tstring(_T("Validate tabledef ")) + s).c_str(),
1041  def->stat());
1042  }
1043 }
1044 
1045 inline void updateTableDef(dbdef* def, short tableid)
1046 {
1047  def->updateTableDef(tableid);
1048  if (def->stat() != 0)
1049  {
1050  std::_tstring s;
1051  if (def->tableDefs(tableid))
1052  s = def->tableDefs(tableid)->tableName();
1053  nstable::throwError((std::_tstring(_T("Update tabledef ")) + s).c_str(),
1054  def->stat());
1055  }
1056 }
1057 
1058 /** @cond INTERNAL */
1059 
1060 template <class T> inline table* getTable(T& it)
1061 {
1062  return &(it.tb());
1063 }
1064 
1065 template <> inline table* getTable(table_ptr& tb)
1066 {
1067  return tb.get();
1068 }
1069 
1070 template <> inline table* getTable(table*& tb)
1071 {
1072  return tb;
1073 }
1074 
1075 /** @endcond */
1076 
1077 template <class T> inline void insertRecord(T& some, bool ncc = true)
1078 {
1079  table* tb = getTable(some);
1080  tb->insert(ncc);
1081  if (tb->stat() != 0)
1082  nstable::throwError(std::_tstring(_T("Insert record")).c_str(), tb);
1083 }
1084 
1085 inline void updateRecord(fields& fd, const char_td keynum)
1086 {
1087  fd.tb().setKeyNum(keynum);
1089  if (fd.tb().stat() != 0)
1090  nstable::throwError(std::_tstring(_T("Update record")).c_str(),
1091  &(fd.tb()));
1092 }
1093 
1094 template <class T> inline void updateRecord(T& some, bool ncc = true)
1095 {
1096  table* tb = getTable(some);
1097  tb->update((nstable::eUpdateType)ncc);
1098  if (tb->stat() != 0)
1099  nstable::throwError(std::_tstring(_T("Update record")).c_str(), tb);
1100 }
1101 
1102 template <class T> inline void deleteRecord(T& some)
1103 {
1104  table* tb = getTable(some);
1105  tb->del(false /*inKey*/);
1106  if (tb->stat() != 0)
1107  nstable::throwError(std::_tstring(_T("Delete record")).c_str(), tb);
1108 }
1109 
1110 template <class T> inline void deleteRecord(T& some, const char_td keynum)
1111 {
1112  table* tb = getTable(some);
1113 
1114  tb->setKeyNum(keynum);
1115  tb->del(true /*inKey*/);
1116  if (tb->stat() != 0)
1117  nstable::throwError(std::_tstring(_T("Delete record")).c_str(), tb);
1118 }
1119 
1120 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6,
1121  class T7>
1122 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1123  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4,
1124  const T5 kv5, const T6 kv6, const T7 kv7)
1125 {
1126  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
1127  tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
1128  fields fd(tb);
1129  deleteRecord(fd, keynum);
1130 }
1131 /** @cond INTERNAL */
1132 
1133 template <class T0, class T1, class T2, class T3, class T4, class T5, class T6>
1134 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1135  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4,
1136  const T5 kv5, const T6 kv6)
1137 {
1138  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2,
1139  kv3, kv4, kv5, kv6);
1140  fields fd(tb);
1141  deleteRecord(fd, keynum);
1142 }
1143 
1144 template <class T0, class T1, class T2, class T3, class T4, class T5>
1145 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1146  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4,
1147  const T5 kv5)
1148 {
1149  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3,
1150  kv4, kv5);
1151  fields fd(tb);
1152  deleteRecord(fd, keynum);
1153 }
1154 
1155 template <class T0, class T1, class T2, class T3, class T4>
1156 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1157  const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
1158 {
1159  keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3,
1160  kv4);
1161  fields fd(tb);
1162  deleteRecord(fd, keynum);
1163 }
1164 
1165 template <class T0, class T1, class T2, class T3>
1166 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1167  const T1 kv1, const T2 kv2, const T3 kv3)
1168 {
1169  keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
1170  fields fd(tb);
1171  deleteRecord(fd, keynum);
1172 }
1173 
1174 template <class T0, class T1, class T2>
1175 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1176  const T1 kv1, const T2 kv2)
1177 {
1178  keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
1179  fields fd(tb);
1180  deleteRecord(fd, keynum);
1181 }
1182 
1183 template <class T0, class T1>
1184 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0,
1185  const T1 kv1)
1186 {
1187  keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
1188  fields fd(tb);
1189  deleteRecord(fd, keynum);
1190 }
1191 
1192 template <class T0>
1193 inline void deleteRecord(table_ptr tb, const char_td keynum, const T0 kv0)
1194 {
1195  keyValueSetter<T0>::set(tb, keynum, kv0);
1196  fields fd(tb);
1197  deleteRecord(fd, keynum);
1198 }
1199 /** @endcond */
1200 
1201 template <class T, class F> void for_each(T iterator, F func)
1202 {
1203  std::for_each(iterator, iterator, func);
1204 }
1205 
1206 /** Shared pointer of idatabaseManager. */
1207 typedef boost::shared_ptr<idatabaseManager> dbmanager_ptr;
1208 
1209 template <class T> inline T createDatabaseForConnectionPool(T& p);
1210 
1211 /** @cond INTERNAL */
1213 {
1214  return createDatabaseObject();
1215 }
1216 /** @endcond */
1217 
1218 /* Exception safe trnasction
1219  It can use for database and idatabaseManager.
1220 */
1221 template <class DB> class transaction
1222 {
1223  DB m_db;
1224  short m_bias;
1225 
1226 public:
1227  inline transaction(DB db, short bias = SINGLELOCK_READ_COMMITED +
1228  NOWAIT_WRITE)
1229  : m_db(db), m_bias(bias){};
1230  inline ~transaction()
1231  {
1232  if (m_db->enableTrn())
1233  m_db->abortTrn();
1234  };
1235  inline void begin() { m_db->beginTrn(m_bias); }
1236  inline void end() { m_db->endTrn(); }
1237  inline void abort() { m_db->abortTrn(); }
1238 };
1239 
1240 /** transaction for database */
1242 
1243 /** transaction for idatabaseManager */
1245 
1246 template <class DB> class snapshot
1247 {
1248  DB m_db;
1249 
1250 public:
1251  snapshot(DB db, short bias = CONSISTENT_READ) : m_db(db) { m_db->beginSnapshot(bias); }
1252 
1253  ~snapshot() { m_db->endSnapshot(); }
1254 };
1255 
1256 /** snapshot for database */
1258 
1259 /** snapshot for idatabaseManager */
1261 
1263 {
1264  table_ptr m_tb;
1265 
1266 public:
1267  autoBulkinsert(table_ptr tb, int bufsize = BULKBUFSIZE) : m_tb(tb)
1268  {
1269  m_tb->beginBulkInsert(bufsize);
1270  }
1271 
1272  /* For activeObject */
1273  template <class T>
1274  autoBulkinsert(T& tba, int bufsize = BULKBUFSIZE)
1275  : m_tb(tba.table())
1276  {
1277  m_tb->beginBulkInsert(bufsize);
1278  }
1279 
1280  ~autoBulkinsert() { m_tb->commitBulkInsert(); }
1281 };
1282 
1283 } // namespace client
1284 } // namespace tdap
1285 } // namespace protocol
1286 } // namespace db
1287 } // namespace bzs
1288 
1289 #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_TRDBOOSTAPI_H
~snapshot()
Definition: trdboostapi.h:1253
const _TCHAR * protocol(const _TCHAR *uri)
Definition: uri.h:42
void renumberTable(short oldIndex, short newIndex)
autoBulkinsert(table_ptr tb, int bufsize=BULKBUFSIZE)
Definition: trdboostapi.h:1267
keydef * insertKey(dbdef *def, short tableid, short insertIndex)
Definition: trdboostapi.h:1016
ushort_td len
Definition: tdapSchema.h:232
virtual void use(const connectParams *param=NULL)=0
tableIterator & operator++()
Definition: trdboostapi.h:200
バルクインサート自動開始終了クラス
Definition: trdboostapi.h:1262
void openDatabase(Database_Ptr db, const ConnectParam_type &connPrams)
Definition: trdboostapi.h:858
eStepOpType
ステップオペレーションタイプ
Definition: trdboostapi.h:57
void del(bool in_key=false)
Definition: nsTable.h:174
pq_handle setQuery(const queryBase *query, bool serverPrepare=false)
void for_each(T iterator, F func)
Definition: trdboostapi.h:1201
~autoBulkinsert()
Definition: trdboostapi.h:1280
テーブルイテレータクラステンプレート
Definition: trdboostapi.h:178
autoBulkinsert(T &tba, int bufsize=BULKBUFSIZE)
Definition: trdboostapi.h:1274
transaction(DB db, short bias=SINGLELOCK_READ_COMMITED+NOWAIT_WRITE)
Definition: trdboostapi.h:1227
void deleteKey(short tableIndex, short deleteIndex)
void setMode(char_td v)
Definition: trdboostapi.h:118
void deleteRecord(T &some)
Definition: trdboostapi.h:1102
pq_handle prepare(table_ptr &tb, const queryBase &q, bool serverPrepare=false)
Definition: trdboostapi.h:560
トランザクション自動ロールバックオブジェクト
Definition: trdboostapi.h:1221
void begin()
Definition: trdboostapi.h:1235
fields operator*()
Definition: trdboostapi.h:257
pq_handle setQuery(table_ptr &tb, const queryBase &q, bool serverPrepare=false)
Definition: trdboostapi.h:544
void setTableName(const char *s)
virtual void beginSnapshot(short bias=CONSISTENT_READ)=0
static void throwError(const _TCHAR *caption, short statusCode)
bool operator!=(const tableIterator &v)
Definition: trdboostapi.h:214
filterdIterator(T &it, validationFunc func)
Definition: trdboostapi.h:250
virtual ~idatabaseManager()
Definition: trdboostapi.h:156
void dropDatabase(Database_Ptr db)
Definition: trdboostapi.h:885
void insertTable(dbdef *def, short id, const _TCHAR *name, unsigned short charsetIndex)
Definition: trdboostapi.h:962
void setType(short v)
Definition: trdboostapi.h:120
クエリー(フィルター)作成の補助をするためのベースクラス
Definition: table.h:314
boost::shared_ptr< idatabaseManager > dbmanager_ptr
Definition: trdboostapi.h:1207
tableIterator< indexNavi > indexIterator
Definition: trdboostapi.h:219
ushort_td id
Definition: tdapSchema.h:725
void updateTableDef(dbdef *def, short tableid)
Definition: trdboostapi.h:1045
fielddef * insertField(dbdef *def, short tableid, short fieldNum, const _TCHAR *name, uchar_td type, ushort_td len)
Definition: trdboostapi.h:994
const _TCHAR * passwd(const _TCHAR *uri, _TCHAR *buf, size_t size)
Definition: uri.h:169
スナップショット自動開始終了クラス
Definition: trdboostapi.h:1246
indexRvIterator readIndexRv(table_ptr tb, eIndexOpType op, ushort_td lockBias=LOCK_BIAS_DEFAULT)
Definition: trdboostapi.h:317
void findPrev(bool notIncCurrent=true)
フィールド定義構造体
Definition: tdapSchema.h:300
stepRvIterator readStepRv(table_ptr tb, ushort_td lockBias=LOCK_BIAS_DEFAULT)
Definition: trdboostapi.h:537
virtual const _TCHAR * uri() const =0
boost::shared_ptr< table > table_ptr
Definition: fields.h:219
フィールドコレクションクラス
Definition: fields.h:224
void throwDbError(Database_Ptr db, const _TCHAR *caption, const _TCHAR *uri)
Definition: trdboostapi.h:825
void setKeyNum(char_td v)
Definition: nsTable.h:166
tableIterator< indexRvNavi > indexRvIterator
Definition: trdboostapi.h:223
void abort()
Definition: trdboostapi.h:1237
findIterator find(table_ptr tb, const char_td keynum, const Q &q, const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
Definition: trdboostapi.h:569
~transaction()
Definition: trdboostapi.h:1230
findRvIterator findRv(table_ptr tb, const char_td keynum, const Q &q, const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
Definition: trdboostapi.h:662
filterdIterator< findIterator > filterdFindIterator
Definition: trdboostapi.h:287
void(__STDCALL * copyDataFn)(database *db, int recordCount, int count, bool &cancel)
Definition: database.h:55
void insertRecord(T &some, bool ncc=true)
Definition: trdboostapi.h:1077
Definition: trdboostapi.h:50
short_td stat() const
Definition: dbDef.h:101
void setFileName(const char *s)
keydef * insertKey(short tableIndex, short insertIndex)
boost::function< int(const fields &)> validationFunc
Definition: trdboostapi.h:231
transaction< dbmanager_ptr > dbmTransaction
Definition: trdboostapi.h:1244
snapshot< database_ptr > dbSnapshot
Definition: trdboostapi.h:1257
void deleteField(short tableIndex, short deleteIndex)
boost::shared_ptr< database > database_ptr
Definition: fields.h:218
eIndexOpType
インデックスオペレーションタイプ
Definition: trdboostapi.h:46
tableIterator< indexRvFindNavi > findRvIterator
Definition: trdboostapi.h:224
const _TCHAR * dbname(const _TCHAR *uri, _TCHAR *buf, size_t size)
Definition: uri.h:113
filterdIterator< indexRvIterator > filterdIndexRvIterator
Definition: trdboostapi.h:289
テーブルスキーマ管理クラス (nocopyable noncreatable)
Definition: dbDef.h:46
テーブルアクセスクラス (nocopyable)
Definition: table.h:89
T & operator++()
Definition: trdboostapi.h:261
bool operator==(const tableIterator &v)
Definition: trdboostapi.h:212
bool operator==(const filterdIterator &v)
Definition: trdboostapi.h:272
void createDatabase(Database_Ptr db, const connectParams &connPrams)
Definition: trdboostapi.h:842
void setLockBias(ushort_td v)
Definition: trdboostapi.h:194
void connect(Database_Ptr db, const ConnectParam_type &connPrams, bool newConnection)
Definition: trdboostapi.h:833
short_td stat() const
Definition: nsTable.h:163
indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
Definition: trdboostapi.h:370
void deleteField(dbdef *def, short tableid, short fieldNum)
Definition: trdboostapi.h:1009
eFindCurrntType
Definition: trdboostapi.h:63
void releaseDatabase(database *db)
Definition: trdboostapi.h:787
findIterator getFindIterator(indexIterator it, const queryBase &q, bool isCurrentValid)
Definition: trdboostapi.h:757
fields * operator->()
Definition: trdboostapi.h:198
const _TCHAR * uri(bool noPasswd=false) const
Definition: trdboostapi.h:136
uchar_td type
Definition: tdapSchema.h:231
connectParams(const _TCHAR *uri)
Definition: trdboostapi.h:100
filterdIterator< stepIterator > filterdStepIterator
Definition: trdboostapi.h:286
snapshot(DB db, short bias=CONSISTENT_READ)
Definition: trdboostapi.h:1251
snapshot< idatabaseManager * > dbmSnapshot
Definition: trdboostapi.h:1260
キー定義構造体
Definition: tdapSchema.h:147
void dropTable(Database_Ptr db, const _TCHAR *name)
Definition: trdboostapi.h:926
stepIterator readStep(table_ptr tb, ushort_td lockBias=LOCK_BIAS_DEFAULT)
Definition: trdboostapi.h:531
void deleteKey(dbdef *def, short tableid, short keynum)
Definition: trdboostapi.h:1025
fields & operator*()
Definition: trdboostapi.h:196
tableIterator< stepRvNavi > stepRvIterator
Definition: trdboostapi.h:225
const _TCHAR * stripPasswd(const _TCHAR *uri, _TCHAR *buf, size_t size)
Definition: uri.h:201
tableIterator< indexFindNavi > findIterator
Definition: trdboostapi.h:220
table_ptr openTable(Database_Ptr db, const _TCHAR *name, short mode=TD_OPEN_NORMAL, bool autoCreate=true, const _TCHAR *ownerName=NULL, const _TCHAR *uri=NULL)
Definition: trdboostapi.h:894
short validateTableDef(short TableIndex)
データベースとテーブルを管理するインタフェース
Definition: trdboostapi.h:152
void updateRecord(fields &fd, const char_td keynum)
Definition: trdboostapi.h:1085
database_ptr createDatabaseObject()
Definition: trdboostapi.h:801
connectParams(const _TCHAR *protocol, const _TCHAR *hostOrIp, const _TCHAR *dbname, const _TCHAR *schemaTable, const _TCHAR *userName=NULL, const _TCHAR *passwd=NULL)
Definition: trdboostapi.h:77
void connectOpen(Database_Ptr db, const connectParams &connPrams, bool newConnection)
Definition: trdboostapi.h:877
virtual table_ptr table(const _TCHAR *name)=0
fields * operator->()
Definition: trdboostapi.h:259
tableIterator(table &tb, ushort_td lockBias=LOCK_BIAS_DEFAULT)
Definition: trdboostapi.h:187
bool isSameUri(const connectParams *param, const Database_Ptr &db)
Definition: trdboostapi.h:781
void disconnect(Database_Ptr db, const connectParams &connPrams)
Definition: trdboostapi.h:808
bool isEnd()
Definition: trdboostapi.h:216
void insertTable(tabledef *tableDef)
transaction< database_ptr > dbTransaction
Definition: trdboostapi.h:1241
short type() const
Definition: trdboostapi.h:143
bool operator!=(const filterdIterator &v)
Definition: trdboostapi.h:277
tableIterator & operator--()
Definition: trdboostapi.h:206
filterdIterator< findRvIterator > filterdFindRvIterator
Definition: trdboostapi.h:291
tableIterator< stepNavi > stepIterator
Definition: trdboostapi.h:221
void findNext(bool notIncCurrent=true)
filterdIterator< stepRvIterator > filterdStepRvIterator
Definition: trdboostapi.h:290
indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum, const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
Definition: trdboostapi.h:452
const _TCHAR * schemaTable(const _TCHAR *uri, _TCHAR *buf, size_t size)
Definition: uri.h:133
filterdIterator< indexIterator > filterdIndexIterator
Definition: trdboostapi.h:285
ushort_td insert(bool ncc=false)
Definition: nsTable.h:175
void renumberTable(dbdef *def, short id, short newid)
Definition: trdboostapi.h:986
void updateTableDef(short tableIndex, bool forPsqlDdf=true)
データベースアクセスクラス
Definition: database.h:59
void releaseTable(table *p)
Definition: trdboostapi.h:792
const char * tableName() const
void deleteTable(dbdef *def, short id)
Definition: trdboostapi.h:977
Definition: trdboostapi.h:60
void convertTable(Database_Ptr db, short tableid, copyDataFn func=NULL)
Definition: trdboostapi.h:935
eUpdateType
更新オペレーションの対象とカレント移動のタイプ
Definition: nsTable.h:50
void update(eUpdateType type=changeCurrentCc)
Definition: nsTable.h:173
const _TCHAR * c_str(const btrDate &d)
Definition: btrDate.h:207
void deleteTable(short tableIndex)
char_td mode() const
Definition: trdboostapi.h:141
void validateTableDef(dbdef *def, short tableid)
Definition: trdboostapi.h:1032
uchar_td charsetIndex
Definition: tdapSchema.h:752
テーブル定義構造体
Definition: tdapSchema.h:660
フィルタリングイテレータアダプターテンプレート
Definition: trdboostapi.h:236
table & tb() const
Definition: trdboostapi.h:192
const _TCHAR * userName(const _TCHAR *uri, _TCHAR *buf, size_t size)
Definition: uri.h:151
table & tb() const
Definition: fields.h:251
データベースへの接続文字列生成ヘルパークラス
Definition: trdboostapi.h:70
fielddef * insertField(short tableIndex, short insertIndex)
void end()
Definition: trdboostapi.h:1236
indexIterator readIndex(table_ptr tb, eIndexOpType op, ushort_td lockBias=LOCK_BIAS_DEFAULT)
Definition: trdboostapi.h:293
bool isEnd()
Definition: trdboostapi.h:282

Transactd SDK 2015年09月08日(火) 19時13分36秒 doxygen