pgtclCmds.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pgtclCmds.h
  4.  *   declarations for the C functions which implement pg_* tcl commands
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  * $Id: pgtclCmds.h,v 1.15 1999/05/25 22:43:45 momjian Exp $
  9.  *
  10.  *-------------------------------------------------------------------------
  11.  */
  12. #ifndef PGTCLCMDS_H
  13. #define PGTCLCMDS_H
  14. #include "tcl.h"
  15. #include "libpq-fe.h"
  16. #define RES_HARD_MAX 128
  17. #define RES_START 16
  18. /*
  19.  * Each Pg_ConnectionId has a list of Pg_TclNotifies structs, one for each
  20.  * Tcl interpreter that has executed any pg_listens on the connection.
  21.  * We need this arrangement to be able to clean up if an interpreter is
  22.  * deleted while the connection remains open.  A free side benefit is that
  23.  * multiple interpreters can be registered to listen for the same notify
  24.  * name.  (All their callbacks will be called, but in an unspecified order.)
  25.  */
  26. typedef struct Pg_TclNotifies_s
  27. {
  28. struct Pg_TclNotifies_s *next; /* list link */
  29. Tcl_Interp *interp; /* This Tcl interpreter */
  30. /*
  31.  * NB: if interp == NULL, the interpreter is gone but we haven't yet
  32.  * got round to deleting the Pg_TclNotifies structure.
  33.  */
  34. Tcl_HashTable notify_hash; /* Active pg_listen requests */
  35. } Pg_TclNotifies;
  36. typedef struct Pg_ConnectionId_s
  37. {
  38. char id[32];
  39. PGconn    *conn;
  40. int res_max; /* Max number of results allocated */
  41. int res_hardmax; /* Absolute max to allow */
  42. int res_count; /* Current count of active results */
  43. int res_last; /* Optimize where to start looking */
  44. int res_copy; /* Query result with active copy */
  45. int res_copyStatus; /* Copying status */
  46. PGresult  **results; /* The results */
  47. Pg_TclNotifies *notify_list;/* head of list of notify info */
  48. int notifier_running; /* notify event source is live */
  49. int notifier_socket;/* PQsocket on which notifier is listening */
  50. } Pg_ConnectionId;
  51. /* Values of res_copyStatus */
  52. #define RES_COPY_NONE 0
  53. #define RES_COPY_INPROGRESS 1
  54. #define RES_COPY_FIN 2
  55. /* **************************/
  56. /* registered Tcl functions */
  57. /* **************************/
  58. extern int Pg_conndefaults(
  59.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  60. extern int Pg_connect(
  61.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  62. extern int Pg_disconnect(
  63.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  64. extern int Pg_exec(
  65. ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  66. extern int Pg_select(
  67.   ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  68. extern int Pg_result(
  69.   ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  70. extern int Pg_lo_open(
  71.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  72. extern int Pg_lo_close(
  73. ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  74. extern int Pg_lo_read(
  75.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  76. extern int Pg_lo_write(
  77. ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  78. extern int Pg_lo_lseek(
  79. ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  80. extern int Pg_lo_creat(
  81. ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  82. extern int Pg_lo_tell(
  83.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  84. extern int Pg_lo_unlink(
  85.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  86. extern int Pg_lo_import(
  87.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  88. extern int Pg_lo_export(
  89.    ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  90. extern int Pg_listen(
  91.   ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
  92. #endif  /* PGTCLCMDS_H */