Changing pg_type records

Поиск
Список
Период
Сортировка
От Rob Richardson
Тема Changing pg_type records
Дата
Msg-id 04A6DB42D2BA534FAC77B90562A6A03DD6204E@server.rad-con.local
обсуждение исходный текст
Ответы Re: Changing pg_type records  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Greetings!
 
I just discovered the existence of a couple of functions I don't understand in one customer's PostgreSQL database:
 
-- Function: c_mode()
 
-- DROP FUNCTION c_mode();
 
CREATE OR REPLACE FUNCTION c_mode()
  RETURNS text AS
$BODY$  UPDATE pg_type SET typoutput='c_textout'    WHERE typname='SET';
 
      UPDATE pg_type SET typoutput='c_varcharout' WHERE typname='bpchar';
 
      UPDATE pg_type SET typoutput='c_textout'    WHERE typname='bytea';
 
      UPDATE pg_type SET typoutput='c_charout'    WHERE typname='char';
 
      UPDATE pg_type SET typoutput='c_textout'    WHERE typname='text';
 
      UPDATE pg_type SET typoutput='c_textout'    WHERE typname='unknown';
 
      UPDATE pg_type SET typoutput='c_varcharout' WHERE typname='varchar';
 
      select 'c_mode'::text;$BODY$
  LANGUAGE 'sql' VOLATILE;
ALTER FUNCTION c_mode() OWNER TO postgres;
-- Function: pg_mode()
 
-- DROP FUNCTION pg_mode();
 
CREATE OR REPLACE FUNCTION pg_mode()
  RETURNS text AS
$BODY$  UPDATE pg_type SET typoutput='textout'    WHERE typname='SET';
 
      UPDATE pg_type SET typoutput='varcharout' WHERE typname='bpchar';
 
      UPDATE pg_type SET typoutput='textout'    WHERE typname='bytea';
 
      UPDATE pg_type SET typoutput='charout'    WHERE typname='char';
 
      UPDATE pg_type SET typoutput='textout'    WHERE typname='text';
 
      UPDATE pg_type SET typoutput='textout'    WHERE typname='unknown';
 
      UPDATE pg_type SET typoutput='varcharout' WHERE typname='varchar';
 
      select 'pg_mode'::text;$BODY$
  LANGUAGE 'sql' VOLATILE;
ALTER FUNCTION pg_mode() OWNER TO postgres;
This customer has demanded extensive modifications to their database and our application.  I think these functions are used in encryption, since there are several other non-standard functions in this database that are related to encryption.
 
Our lead developer is in another state, and is naturally very uncommunicative.  When I asked him about the c_mode() function and expressed concern that changing pg_type records might not be a good idea, his reply was:
 
"Ignore it,  it is a database contrib routine for string I/O.   It doesn't change the database properties."
 
Are these functions really as innocuous as he claims?  It seems to me that between the time c_mode() is called and the time that pg_mode() is called, any other database access is likely to be confused. 
 
Thank you very much.
 
RobR
 

В списке pgsql-general по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Multiple natural joins
Следующее
От: "Anton V. Belyaev"
Дата:
Сообщение: Long-running query blocks all other queries