summaryrefslogtreecommitdiffstats
path: root/src/bin/psql/crosstabview.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/psql/crosstabview.h')
-rw-r--r--src/bin/psql/crosstabview.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/bin/psql/crosstabview.h b/src/bin/psql/crosstabview.h
new file mode 100644
index 0000000..53d0e41
--- /dev/null
+++ b/src/bin/psql/crosstabview.h
@@ -0,0 +1,29 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2021, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/crosstabview.h
+ */
+
+#ifndef CROSSTABVIEW_H
+#define CROSSTABVIEW_H
+
+#include "libpq-fe.h"
+
+/*
+ * Limit the number of output columns generated in memory by the crosstabview
+ * algorithm. A new output column is added for each distinct value found in the
+ * column that pivots (to form the horizontal header).
+ * The purpose of this limit is to fail early instead of over-allocating or spending
+ * too much time if the crosstab to generate happens to be unreasonably large
+ * (worst case: a NxN cartesian product with N=number of tuples).
+ * The value of 1600 corresponds to the maximum columns per table in storage,
+ * but it could be as much as INT_MAX theoretically.
+ */
+#define CROSSTABVIEW_MAX_COLUMNS 1600
+
+/* prototypes */
+extern bool PrintResultsInCrosstab(const PGresult *res);
+
+#endif /* CROSSTABVIEW_H */