pg_query 2.0.1 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +220 -114
- data/README.md +12 -0
- data/Rakefile +6 -21
- data/ext/pg_query/extconf.rb +5 -2
- data/ext/pg_query/include/c.h +12 -0
- data/ext/pg_query/include/executor/executor.h +6 -0
- data/ext/pg_query/include/nodes/execnodes.h +9 -6
- data/ext/pg_query/include/nodes/pathnodes.h +1 -1
- data/ext/pg_query/include/optimizer/paths.h +8 -0
- data/ext/pg_query/include/pg_config.h +10 -6
- data/ext/pg_query/include/pg_config_manual.h +7 -0
- data/ext/pg_query/include/pg_query.h +2 -2
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1 -0
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +472 -467
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/include/utils/array.h +1 -0
- data/ext/pg_query/include/utils/lsyscache.h +1 -0
- data/ext/pg_query/include/utils/probes.h +57 -57
- data/ext/pg_query/pg_query.pb-c.c +502 -487
- data/ext/pg_query/pg_query_deparse.c +33 -21
- data/ext/pg_query/pg_query_fingerprint.c +123 -33
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_normalize.c +222 -61
- data/ext/pg_query/pg_query_parse_plpgsql.c +21 -1
- data/ext/pg_query/pg_query_ruby.sym +1 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +36 -0
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1 -1
- data/lib/pg_query/filter_columns.rb +3 -1
- data/lib/pg_query/fingerprint.rb +1 -3
- data/lib/pg_query/parse.rb +101 -46
- data/lib/pg_query/pg_query_pb.rb +1385 -1383
- data/lib/pg_query/truncate.rb +12 -4
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +8 -8
- data/lib/pg_query/json_field_names.rb +0 -1402
@@ -271,6 +271,12 @@ extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList,
|
|
271
271
|
TupleTableSlot *slot,
|
272
272
|
PlanState *parent,
|
273
273
|
TupleDesc inputDesc);
|
274
|
+
extern ProjectionInfo *ExecBuildProjectionInfoExt(List *targetList,
|
275
|
+
ExprContext *econtext,
|
276
|
+
TupleTableSlot *slot,
|
277
|
+
bool assignJunkEntries,
|
278
|
+
PlanState *parent,
|
279
|
+
TupleDesc inputDesc);
|
274
280
|
extern ExprState *ExecPrepareExpr(Expr *node, EState *estate);
|
275
281
|
extern ExprState *ExecPrepareQual(List *qual, EState *estate);
|
276
282
|
extern ExprState *ExecPrepareCheck(List *qual, EState *estate);
|
@@ -395,12 +395,15 @@ typedef struct OnConflictSetState
|
|
395
395
|
* relation, and perhaps also fire triggers. ResultRelInfo holds all the
|
396
396
|
* information needed about a result relation, including indexes.
|
397
397
|
*
|
398
|
-
* Normally, a ResultRelInfo refers to a table that is in the query's
|
399
|
-
*
|
400
|
-
*
|
401
|
-
*
|
402
|
-
*
|
403
|
-
*
|
398
|
+
* Normally, a ResultRelInfo refers to a table that is in the query's range
|
399
|
+
* table; then ri_RangeTableIndex is the RT index and ri_RelationDesc is
|
400
|
+
* just a copy of the relevant es_relations[] entry. However, in some
|
401
|
+
* situations we create ResultRelInfos for relations that are not in the
|
402
|
+
* range table, namely for targets of tuple routing in a partitioned table,
|
403
|
+
* and when firing triggers in tables other than the target tables (See
|
404
|
+
* ExecGetTriggerResultRel). In these situations, ri_RangeTableIndex is 0
|
405
|
+
* and ri_RelationDesc is a separately-opened relcache pointer that needs to
|
406
|
+
* be separately closed.
|
404
407
|
*/
|
405
408
|
typedef struct ResultRelInfo
|
406
409
|
{
|
@@ -912,7 +912,7 @@ typedef struct StatisticExtInfo
|
|
912
912
|
|
913
913
|
Oid statOid; /* OID of the statistics row */
|
914
914
|
RelOptInfo *rel; /* back-link to statistic's table */
|
915
|
-
char kind; /*
|
915
|
+
char kind; /* statistics kind of this entry */
|
916
916
|
Bitmapset *keys; /* attnums of the columns covered */
|
917
917
|
} StatisticExtInfo;
|
918
918
|
|
@@ -135,6 +135,14 @@ extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root,
|
|
135
135
|
Index sortref,
|
136
136
|
Relids rel,
|
137
137
|
bool create_it);
|
138
|
+
extern EquivalenceMember *find_ec_member_matching_expr(EquivalenceClass *ec,
|
139
|
+
Expr *expr,
|
140
|
+
Relids relids);
|
141
|
+
extern EquivalenceMember *find_computable_ec_member(PlannerInfo *root,
|
142
|
+
EquivalenceClass *ec,
|
143
|
+
List *exprs,
|
144
|
+
Relids relids,
|
145
|
+
bool require_parallel_safe);
|
138
146
|
extern Expr *find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel);
|
139
147
|
extern Expr *find_em_expr_usable_for_sorting_rel(PlannerInfo *root,
|
140
148
|
EquivalenceClass *ec,
|
@@ -757,7 +757,7 @@
|
|
757
757
|
#define PACKAGE_NAME "PostgreSQL"
|
758
758
|
|
759
759
|
/* Define to the full name and version of this package. */
|
760
|
-
#define PACKAGE_STRING "PostgreSQL 13.
|
760
|
+
#define PACKAGE_STRING "PostgreSQL 13.3"
|
761
761
|
|
762
762
|
/* Define to the one symbol short name of this package. */
|
763
763
|
#define PACKAGE_TARNAME "postgresql"
|
@@ -766,7 +766,7 @@
|
|
766
766
|
#define PACKAGE_URL "https://www.postgresql.org/"
|
767
767
|
|
768
768
|
/* Define to the version of this package. */
|
769
|
-
#define PACKAGE_VERSION "13.
|
769
|
+
#define PACKAGE_VERSION "13.3"
|
770
770
|
|
771
771
|
/* Define to the name of a signed 128-bit integer type. */
|
772
772
|
#define PG_INT128_TYPE __int128
|
@@ -785,7 +785,7 @@
|
|
785
785
|
#define PG_MAJORVERSION_NUM 13
|
786
786
|
|
787
787
|
/* PostgreSQL minor version number */
|
788
|
-
#define PG_MINORVERSION_NUM
|
788
|
+
#define PG_MINORVERSION_NUM 3
|
789
789
|
|
790
790
|
/* Define to best printf format archetype, usually gnu_printf if available. */
|
791
791
|
#define PG_PRINTF_ATTRIBUTE printf
|
@@ -794,13 +794,13 @@
|
|
794
794
|
#define PG_USE_STDBOOL 1
|
795
795
|
|
796
796
|
/* PostgreSQL version as a string */
|
797
|
-
#define PG_VERSION "13.
|
797
|
+
#define PG_VERSION "13.3"
|
798
798
|
|
799
799
|
/* PostgreSQL version as a number */
|
800
|
-
#define PG_VERSION_NUM
|
800
|
+
#define PG_VERSION_NUM 130003
|
801
801
|
|
802
802
|
/* A string containing the version number, platform, and C compiler */
|
803
|
-
#define PG_VERSION_STR "PostgreSQL 13.
|
803
|
+
#define PG_VERSION_STR "PostgreSQL 13.3 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit"
|
804
804
|
|
805
805
|
/* Define to 1 to allow profiling output to be saved separately for each
|
806
806
|
process. */
|
@@ -986,3 +986,7 @@
|
|
986
986
|
#undef HAVE__STATIC_ASSERT
|
987
987
|
#undef HAVE_EXECINFO_H
|
988
988
|
#undef HAVE_BACKTRACE_SYMBOLS
|
989
|
+
#undef HAVE__GET_CPUID
|
990
|
+
#ifdef __FreeBSD__
|
991
|
+
#define HAVE_STRCHRNUL
|
992
|
+
#endif
|
@@ -135,6 +135,13 @@
|
|
135
135
|
#define EXEC_BACKEND
|
136
136
|
#endif
|
137
137
|
|
138
|
+
/*
|
139
|
+
* Define this if your operating system supports link()
|
140
|
+
*/
|
141
|
+
#if !defined(WIN32) && !defined(__CYGWIN__)
|
142
|
+
#define HAVE_WORKING_LINK 1
|
143
|
+
#endif
|
144
|
+
|
138
145
|
/*
|
139
146
|
* USE_POSIX_FADVISE controls whether Postgres will attempt to use the
|
140
147
|
* posix_fadvise() kernel call. Usually the automatic configure tests are
|
@@ -106,9 +106,9 @@ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result);
|
|
106
106
|
void pg_query_exit(void);
|
107
107
|
|
108
108
|
// Postgres version information
|
109
|
-
#define PG_VERSION "13.
|
109
|
+
#define PG_VERSION "13.3"
|
110
110
|
#define PG_MAJORVERSION "13"
|
111
|
-
#define PG_VERSION_NUM
|
111
|
+
#define PG_VERSION_NUM 130003
|
112
112
|
|
113
113
|
// Deprecated APIs below
|
114
114
|
|
@@ -2270,6 +2270,7 @@ _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out, const TableL
|
|
2270
2270
|
{
|
2271
2271
|
WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation);
|
2272
2272
|
WRITE_UINT_FIELD(options, options, options);
|
2273
|
+
WRITE_UINT_FIELD(relation_oid, relationOid, relationOid);
|
2273
2274
|
}
|
2274
2275
|
|
2275
2276
|
static void
|
@@ -2674,6 +2674,7 @@ _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg)
|
|
2674
2674
|
TableLikeClause *node = makeNode(TableLikeClause);
|
2675
2675
|
READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation);
|
2676
2676
|
READ_UINT_FIELD(options, options, options);
|
2677
|
+
READ_UINT_FIELD(relation_oid, relationOid, relationOid);
|
2677
2678
|
return node;
|
2678
2679
|
}
|
2679
2680
|
|