greenplumn plpy_elog 源码

  • 2022-08-18
  • 浏览 (367)

greenplumn plpy_elog 代码

文件路径:/src/pl/plpython/plpy_elog.h

/*
 * src/pl/plpython/plpy_elog.h
 */

#ifndef PLPY_ELOG_H
#define PLPY_ELOG_H

#include "plpython.h"

/* global exception classes */
extern PyObject *PLy_exc_error;
extern PyObject *PLy_exc_fatal;
extern PyObject *PLy_exc_spi_error;

/*
 * PLy_elog()
 *
 * See comments at elog() about the compiler hinting.
 */
#ifdef HAVE__BUILTIN_CONSTANT_P
#define PLy_elog(elevel, ...) \
	do { \
		PLy_elog_impl(elevel, __VA_ARGS__); \
		if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \
			pg_unreachable(); \
	} while(0)
#else							/* !HAVE__BUILTIN_CONSTANT_P */
#define PLy_elog(elevel, ...)  \
	do { \
		const int elevel_ = (elevel); \
		PLy_elog_impl(elevel_, __VA_ARGS__); \
		if (elevel_ >= ERROR) \
			pg_unreachable(); \
	} while(0)
#endif							/* HAVE__BUILTIN_CONSTANT_P */

extern void PLy_elog_impl(int elevel, const char *fmt,...) pg_attribute_printf(2, 3);

extern void PLy_exception_set(PyObject *exc, const char *fmt,...) pg_attribute_printf(2, 3);

extern void PLy_exception_set_plural(PyObject *exc, const char *fmt_singular, const char *fmt_plural,
									 unsigned long n,...) pg_attribute_printf(2, 5) pg_attribute_printf(3, 5);

extern void PLy_exception_set_with_details(PyObject *excclass, ErrorData *edata);

#endif							/* PLPY_ELOG_H */

相关信息

greenplumn 源码目录

相关文章

greenplumn plpy_cursorobject 源码

greenplumn plpy_cursorobject 源码

greenplumn plpy_elog 源码

greenplumn plpy_exec 源码

greenplumn plpy_exec 源码

greenplumn plpy_main 源码

greenplumn plpy_main 源码

greenplumn plpy_planobject 源码

greenplumn plpy_planobject 源码

greenplumn plpy_plpymodule 源码

0  赞