44.9. ʵ�ú���

plpyģ��Ҳ�ṩ�˺���

plpy.debug(msg, **kwargs)
plpy.log(msg, **kwargs)
plpy.info(msg, **kwargs)
plpy.notice(msg, **kwargs)
plpy.warning(msg, **kwargs)
plpy.error(msg, **kwargs)
plpy.fatal(msg, **kwargs)

plpy.error��plpy.fatalʵ���ϻ����һ�� Python �쳣�����û����׽�������ᱻ���������ò�ѯ�е��µ�ǰ���������������ֹ��raise plpy.Error(msg)��raise plpy.Fatal(msg)�ֱ��Ч�ڵ���plpy.error(msg)��plpy.fatal(msg)������raise��ʽ���������ݹؼ��ʲ�������������ֻ���ɲ�ͬ���ȼ�����Ϣ��һ���ض����ȼ�����Ϣ�DZ�������ͻ��ˡ�д���������־�������߶�������log_min_messages��client_min_messages���ñ������ơ������ 19 ����

msg����������λһ��λ�ò�����Ϊ�������ݣ����Ը�������һ��λ�ò���������������£� λ�ò����γɵ�Ԫ����ַ������ォ���ɱ�����ͻ��˵���Ϣ��

���� keyword-only �����ᱻ���ܣ�

detail
hint
sqlstate
schema_name
table_name
column_name
datatype_name
constraint_name

��Ϊ keyword-only �������ݵĶ�����ַ���������������ḻ������ͻ��˵���Ϣ�����磺

CREATE FUNCTION raise_custom_exception() RETURNS void AS $$
plpy.error("custom exception message",
           detail="some info about exception",
           hint="hint for users")
$$ LANGUAGE plpythonu;

=# SELECT raise_custom_exception();
ERROR:  plpy.Error: custom exception message
DETAIL:  some info about exception
HINT:  hint for users
CONTEXT:  Traceback (most recent call last):
  PL/Python function "raise_custom_exception", line 4, in <module>
    hint="hint for users")
PL/Python function "raise_custom_exception"

��һ�鹤�ߺ�����plpy.quote_literal(string)��plpy.quote_nullable(string)�Լ�plpy.quote_ident(string)�����ǵ�Ч���� 9.4 �����������ڽ����ú������ڹ�����ʱ��ѯʱ�����������ó����� 41-1�ж�̬ SQL �� PL/Python ��Ч���ǣ�

plpy.execute("UPDATE tbl SET %s = %s WHERE key = %s" % (
    plpy.quote_ident(colname),
    plpy.quote_nullable(newvalue),
    plpy.quote_literal(keyvalue)))