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

数据库系统

开发平台:

Unix_Linux

  1. /*
  2.  * pgnulltest.c
  3.  *
  4. */
  5. #define TEST_NON_NULLS
  6. #include <stdio.h>
  7. #include <time.h>
  8. #include <halt.h>
  9. #include <libpq-fe.h>
  10. #include <pginterface.h>
  11. int
  12. main(int argc, char **argv)
  13. {
  14. char query[4000];
  15. int row = 1;
  16. int aint;
  17. float afloat;
  18. double adouble;
  19. char achar[11],
  20. achar16[17],
  21. abpchar[11],
  22. avarchar[51],
  23. atext[51];
  24. time_t aabstime;
  25. int aint_null,
  26. afloat_null,
  27. adouble_null,
  28. achar_null,
  29. achar16_null,
  30. abpchar_null,
  31. avarchar_null,
  32. atext_null,
  33. aabstime_null;
  34. if (argc != 2)
  35. halt("Usage:  %s databasen", argv[0]);
  36. connectdb(argv[1], NULL, NULL, NULL, NULL);
  37. on_error_continue();
  38. doquery("DROP TABLE testfetch");
  39. on_error_stop();
  40. doquery("
  41.         CREATE TABLE testfetch( 
  42.             aint    int4, 
  43.             afloat  float4, 
  44.             adouble float8, 
  45.             achar   char, 
  46.             achar16 char16, 
  47.             abpchar char(10), 
  48.             avarchar varchar(50), 
  49.             atext   text, 
  50.             aabstime abstime) 
  51.         ");
  52. #ifdef TEST_NON_NULLS
  53. sprintf(query, "INSERT INTO testfetch VALUES ( 
  54.             0, 
  55. 0, 
  56. 0, 
  57. '', 
  58. '', 
  59. '', 
  60. '', 
  61. '', 
  62. '');");
  63. #else
  64. sprintf(query, "INSERT INTO testfetch VALUES ( 
  65.             NULL, 
  66. NULL, 
  67. NULL, 
  68. NULL, 
  69. NULL, 
  70. NULL, 
  71. NULL, 
  72. NULL, 
  73. NULL);");
  74. #endif
  75. doquery(query);
  76. doquery("BEGIN WORK");
  77. doquery("DECLARE c_testfetch BINARY CURSOR FOR 
  78.                     SELECT * FROM testfetch");
  79. doquery("FETCH ALL IN c_testfetch");
  80. if (fetchwithnulls(
  81.    &aint,
  82.    &aint_null,
  83.    &afloat,
  84.    &afloat_null,
  85.    &adouble,
  86.    &adouble_null,
  87.    achar,
  88.    &achar_null,
  89.    achar16,
  90.    &achar16_null,
  91.    abpchar,
  92.    &abpchar_null,
  93.    avarchar,
  94.    &avarchar_null,
  95.    atext,
  96.    &atext_null,
  97.    &aabstime,
  98.    &aabstime_null) != END_OF_TUPLES)
  99. printf("int %dnfloat %fndouble %fnchar %snchar16 %sn
  100. bpchar %snvarchar %sntext %snabstime %sn",
  101.    aint,
  102.    afloat,
  103.    adouble,
  104.    achar,
  105.    achar16,
  106.    abpchar,
  107.    avarchar,
  108.    atext,
  109.    ctime(&aabstime));
  110. printf("NULL:nint %dnfloat %dndouble %dnchar %dnchar16 %dn
  111. bpchar %dnvarchar %dntext %dnabstime %dn",
  112.    aint_null,
  113.    afloat_null,
  114.    adouble_null,
  115.    achar_null,
  116.    achar16_null,
  117.    abpchar_null,
  118.    avarchar_null,
  119.    atext_null,
  120.    aabstime_null);
  121. doquery("CLOSE c_testfetch");
  122. doquery("COMMIT WORK");
  123. printf("--- %-d rows inserted so farn", row);
  124. row++;
  125. disconnectdb();
  126. return 0;
  127. }