postgresql/contrib/pgbench/pgbench.h
Robert Haas e41beea0dd Improve pgbench error reporting.
This would have been worth doing on general principle anyway, but the
recent addition of an expression syntax to pgbench makes it an even
better idea than it would have been otherwise.

Fabien Coelho
2015-04-02 16:26:49 -04:00

61 lines
1.3 KiB
C

/*-------------------------------------------------------------------------
*
* pgbench.h
*
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*-------------------------------------------------------------------------
*/
#ifndef PGBENCH_H
#define PGBENCH_H
typedef enum PgBenchExprType
{
ENODE_INTEGER_CONSTANT,
ENODE_VARIABLE,
ENODE_OPERATOR
} PgBenchExprType;
typedef struct PgBenchExpr PgBenchExpr;
struct PgBenchExpr
{
PgBenchExprType etype;
union
{
struct
{
int64 ival;
} integer_constant;
struct
{
char *varname;
} variable;
struct
{
char operator;
PgBenchExpr *lexpr;
PgBenchExpr *rexpr;
} operator;
} u;
};
extern PgBenchExpr *expr_parse_result;
extern int expr_yyparse(void);
extern int expr_yylex(void);
extern void expr_yyerror(const char *str);
extern void expr_scanner_init(const char *str, const char *source,
const int lineno, const char *line,
const char *cmd, const int ecol);
extern void syntax_error(const char* source, const int lineno, const char* line,
const char* cmd, const char* msg, const char* more,
const int col);
extern void expr_scanner_finish(void);
extern int64 strtoint64(const char *str);
#endif /* PGBENCH_H */