chpars.c
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:4k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. /*
  2.  *  chpars.c -  change parameters of GNU SQL server at runtime
  3.  *
  4.  *  This file is a part of GNU SQL Server
  5.  *
  6.  *  Copyright (c) 1996, 1997, Free Software Foundation, Inc
  7.  *  Developed at the Institute of System Programming
  8.  *  This file is written by Vera Ponomarenko.
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23.  *
  24.  *  Contacts: gss@ispras.ru
  25.  *
  26.  */
  27. /* $Id: chpars.c,v 1.245 1997/03/31 03:46:38 kml Exp $ */
  28. #include "setup_os.h"
  29. #include <sys/types.h>
  30. #if HAVE_UNISTD_H
  31. #include <unistd.h>
  32. #endif
  33. #if HAVE_FCNTL_H
  34. #include <fcntl.h>
  35. #endif
  36. #include "engine/dispatch.h"
  37. #include "dyngspar.h"
  38. #include "gspstr.h"
  39. #define RESPONSE     
  40.       scanf ("%c", input); 
  41.       if (input[0] == 'y') {
  42.         printf ("Enter  ");
  43.         scanf ("%d", &in_num);
  44.       }
  45.       
  46. static void
  47. write_new_pars(void)
  48. {
  49.   i4_t fddp, length;
  50.   struct DGSPARAM dyn_par;
  51.   char input[10];
  52.   i4_t in_num;
  53.   printf ("DO you want to change max free extents in System? y/n"
  54.           "  (recommend = %d)n", D_MAX_FREE_EXTENTS_NUM);
  55.   RESPONSE;
  56.   if (in_num >= 0 && in_num <= D_MAX_FREE_EXTENTS_NUM && input[0] == 'y')
  57.     dyn_par.d_max_free_extents_num = in_num;
  58.   else
  59.     dyn_par.d_max_free_extents_num = D_MAX_FREE_EXTENTS_NUM;
  60.   
  61.   printf ("DO you want to change size of Logical "
  62.           "journal in journals pages? y/n (recommend = %d)n",
  63.           D_LJ_RED_BOUNDARY);
  64.   scanf ("%c", input);
  65.   RESPONSE;  
  66.   if (in_num > 0 && input[0] == 'y')
  67.     dyn_par.d_lj_red_boundary = in_num;
  68.   else
  69.     dyn_par.d_lj_red_boundary = D_LJ_RED_BOUNDARY; 
  70.   
  71.   printf ("DO you want to change optimal buffers "
  72.           "number in System? y/n (recommend = %d)n", D_OPT_BUF_NUM);
  73.   scanf ("%c", input);  
  74.   RESPONSE;
  75.   if (in_num > 0 && input[0] == 'y')
  76.     dyn_par.d_opt_buf_num = in_num;
  77.   else
  78.     dyn_par.d_opt_buf_num = D_OPT_BUF_NUM;
  79.     
  80.   printf ("DO you want to change max tacts number for"
  81.           " Buffer in System? y/n (recommend = %d)n", D_MAX_TACT_NUM);
  82.   scanf ("%c", input);  
  83.   RESPONSE;
  84.   if (in_num > 0 && input[0] == 'y')
  85.     dyn_par.d_max_tact_num = in_num;
  86.   else
  87.     dyn_par.d_max_tact_num = D_MAX_TACT_NUM;
  88.   
  89.   unlink (DYNPARS);
  90.   if ( (fddp = open (DYNPARS, O_RDWR|O_CREAT, 0660)) <0)
  91.     {
  92.       perror ("DYNPARS: open error");
  93.       exit (1);
  94.     }
  95.   length = sizeof (struct DGSPARAM);
  96.   if (write (fddp, (char *)&dyn_par, length) != length) {
  97.     perror ("DYNPARSE: write error");
  98.     exit (1);
  99.   } 
  100.   close (fddp);
  101. }
  102. i4_t 
  103. main (i4_t argc, char **argv)
  104. {
  105.   CLIENT *cli_disp;
  106.   struct timeval tv;
  107.   static i4_t int_arg = 0;
  108.   char   *hostname = NULL;
  109.   setbuf (stdout, NULL);
  110.   
  111.   if( argc > 1 )
  112.     hostname = argv[1];
  113.   if ( !hostname )
  114.     hostname = getenv("GSSHOST");
  115.   if ( !hostname )
  116.     hostname = "localhost";
  117.   if ( !hostname)
  118.     {
  119.       printf("Can't choose the host to connect to.n"
  120.              "Usage %s db_host_namen",argv[0]);
  121.       exit(1);
  122.     }
  123.   if (!(cli_disp = clnt_create (hostname, SQL_DISP, SQL_DISP_ONE, "tcp")))
  124.     {
  125.       clnt_pcreateerror(hostname);
  126.       exit (1);
  127.     }
  128.   
  129.   tv.tv_sec  = 0;
  130.   tv.tv_usec = 0;
  131.   clnt_control (cli_disp, CLSET_TIMEOUT, (char *)&tv);
  132.   
  133.   cli_disp->cl_auth = authunix_create_default();
  134.   write_new_pars();
  135.   change_params_1 (&int_arg, cli_disp);
  136.   
  137.   return 0;
  138. }