ROOT logo
// @(#)root/pgsql:$Id$
// Author: g.p.ciceri <gp.ciceri@acm.org> 01/06/2001

/*************************************************************************
 * Copyright (C) 1995-2001, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TPgSQLResult.h"
#include "TPgSQLRow.h"


ClassImp(TPgSQLResult)

//______________________________________________________________________________
TPgSQLResult::TPgSQLResult(void *result)
{
   // PgSQL query result.

   fResult     = (PGresult *) result;
   fRowCount   = fResult ? PQntuples(fResult) : 0;
   fCurrentRow = 0;
}

//______________________________________________________________________________
TPgSQLResult::~TPgSQLResult()
{
   // Cleanup PgSQL query result.

   if (fResult)
      Close();
}

//______________________________________________________________________________
void TPgSQLResult::Close(Option_t *)
{
   // Close query result.

   if (!fResult)
      return;

   PQclear(fResult);
   fResult     = 0;
   fRowCount   = 0;
   fCurrentRow = 0;
}

//______________________________________________________________________________
Bool_t TPgSQLResult::IsValid(Int_t field)
{
   // Check if result set is open and field index within range.

   if (!fResult) {
      Error("IsValid", "result set closed");
      return kFALSE;
   }
   if (field < 0 || field >= GetFieldCount()) {
      Error("IsValid", "field index out of bounds");
      return kFALSE;
   }
   return kTRUE;
}

//______________________________________________________________________________
Int_t TPgSQLResult::GetFieldCount()
{
   // Get number of fields in result.

   if (!fResult) {
      Error("GetFieldCount", "result set closed");
      return 0;
   }
   return PQnfields(fResult);
}

//______________________________________________________________________________
const char *TPgSQLResult::GetFieldName(Int_t field)
{
   // Get name of specified field.

   if (!fResult) {
      Error("GetFieldName", "result set closed");
      return 0;
   }
   return PQfname(fResult, field);
}

//______________________________________________________________________________
TSQLRow *TPgSQLResult::Next()
{
   // Get next query result row. The returned object must be
   // deleted by the user.

   Int_t row;

   if (!fResult) {
      Error("Next", "result set closed");
      return 0;
   }
   row = fCurrentRow++;
   if (row >= fRowCount)
      return 0;
   else
      return new TPgSQLRow((void *) fResult, (ULong_t) row);
}
 TPgSQLResult.cxx:1
 TPgSQLResult.cxx:2
 TPgSQLResult.cxx:3
 TPgSQLResult.cxx:4
 TPgSQLResult.cxx:5
 TPgSQLResult.cxx:6
 TPgSQLResult.cxx:7
 TPgSQLResult.cxx:8
 TPgSQLResult.cxx:9
 TPgSQLResult.cxx:10
 TPgSQLResult.cxx:11
 TPgSQLResult.cxx:12
 TPgSQLResult.cxx:13
 TPgSQLResult.cxx:14
 TPgSQLResult.cxx:15
 TPgSQLResult.cxx:16
 TPgSQLResult.cxx:17
 TPgSQLResult.cxx:18
 TPgSQLResult.cxx:19
 TPgSQLResult.cxx:20
 TPgSQLResult.cxx:21
 TPgSQLResult.cxx:22
 TPgSQLResult.cxx:23
 TPgSQLResult.cxx:24
 TPgSQLResult.cxx:25
 TPgSQLResult.cxx:26
 TPgSQLResult.cxx:27
 TPgSQLResult.cxx:28
 TPgSQLResult.cxx:29
 TPgSQLResult.cxx:30
 TPgSQLResult.cxx:31
 TPgSQLResult.cxx:32
 TPgSQLResult.cxx:33
 TPgSQLResult.cxx:34
 TPgSQLResult.cxx:35
 TPgSQLResult.cxx:36
 TPgSQLResult.cxx:37
 TPgSQLResult.cxx:38
 TPgSQLResult.cxx:39
 TPgSQLResult.cxx:40
 TPgSQLResult.cxx:41
 TPgSQLResult.cxx:42
 TPgSQLResult.cxx:43
 TPgSQLResult.cxx:44
 TPgSQLResult.cxx:45
 TPgSQLResult.cxx:46
 TPgSQLResult.cxx:47
 TPgSQLResult.cxx:48
 TPgSQLResult.cxx:49
 TPgSQLResult.cxx:50
 TPgSQLResult.cxx:51
 TPgSQLResult.cxx:52
 TPgSQLResult.cxx:53
 TPgSQLResult.cxx:54
 TPgSQLResult.cxx:55
 TPgSQLResult.cxx:56
 TPgSQLResult.cxx:57
 TPgSQLResult.cxx:58
 TPgSQLResult.cxx:59
 TPgSQLResult.cxx:60
 TPgSQLResult.cxx:61
 TPgSQLResult.cxx:62
 TPgSQLResult.cxx:63
 TPgSQLResult.cxx:64
 TPgSQLResult.cxx:65
 TPgSQLResult.cxx:66
 TPgSQLResult.cxx:67
 TPgSQLResult.cxx:68
 TPgSQLResult.cxx:69
 TPgSQLResult.cxx:70
 TPgSQLResult.cxx:71
 TPgSQLResult.cxx:72
 TPgSQLResult.cxx:73
 TPgSQLResult.cxx:74
 TPgSQLResult.cxx:75
 TPgSQLResult.cxx:76
 TPgSQLResult.cxx:77
 TPgSQLResult.cxx:78
 TPgSQLResult.cxx:79
 TPgSQLResult.cxx:80
 TPgSQLResult.cxx:81
 TPgSQLResult.cxx:82
 TPgSQLResult.cxx:83
 TPgSQLResult.cxx:84
 TPgSQLResult.cxx:85
 TPgSQLResult.cxx:86
 TPgSQLResult.cxx:87
 TPgSQLResult.cxx:88
 TPgSQLResult.cxx:89
 TPgSQLResult.cxx:90
 TPgSQLResult.cxx:91
 TPgSQLResult.cxx:92
 TPgSQLResult.cxx:93
 TPgSQLResult.cxx:94
 TPgSQLResult.cxx:95
 TPgSQLResult.cxx:96
 TPgSQLResult.cxx:97
 TPgSQLResult.cxx:98
 TPgSQLResult.cxx:99
 TPgSQLResult.cxx:100
 TPgSQLResult.cxx:101
 TPgSQLResult.cxx:102
 TPgSQLResult.cxx:103
 TPgSQLResult.cxx:104
 TPgSQLResult.cxx:105
 TPgSQLResult.cxx:106
 TPgSQLResult.cxx:107
 TPgSQLResult.cxx:108