$ docker pull graphprotocol/graph-node:v0.30.0
Database locale change
New graph-node
installations now mandate PostgreSQL to use C locale and UTF-8 encoding. The official docker-compose.yml
template has been updated accordingly. Pre-existing graph-node
installations are not concerned with this change, but local development scripts and CI pipelines may have to adjust database initialization parameters. This can be done with initdb -E UTF8 --locale=C
. #4163, #4151, #4201, #4340
What's new
- AND/OR filters. AND/OR logical operators in
where
filters have been one ofgraph-node
's most awaited features. They do exactly what you would expect them to do, and are very powerful. #579, #4080, #4171 - IPFS file data sources. IPFS file data sources allow subgraph developers to query offchain information from IPFS directly in mappings. This feature is the culmination of much community and development efforts (GIP here). A future iteration of this feature will also include a so-called "Availability Chain", allowing IPFS file data sources to contribute to Proofs of Indexing. At the moment, entity updates that originate from these data sources' handlers do not contribute to PoIs. #4147, #4162, and many others!
- Sorting by child entities (a.k.a. nested sorting). You can now
orderBy
properties of child entities. #4058, #3737, #3096 - Added support for a Firehose-based block ingestor. Indexers that use the new Firehose-based block ingestor cannot automatically switch back to RPC. In order to downgrade, indexers must manually delete all blocks accumulated by Firehose in the database. For this reason, we suggest caution when switching over from RPC to Firehose. #4059, #4204, #4216
- Fields of type
Bytes
can now use less than and greater than filters. #4285 - "userinfo" is now allowed in IPFS URLs (e.g.
https://foo:bar@example.com:5001/
). #4252 - The default for
GRAPH_IPFS_TIMEOUT
is now 60 seconds instead of 30. #4324 - Forking options can now be set via env. vars. (
GRAPH_START_BLOCK
,GRAPH_FORK_BASE
,GRAPH_DEBUG_FORK
). #4308 - Allow retrieving GraphQL query tracing over HTTP if the env. var.
GRAPH_GRAPHQL_TRACE_TOKEN
is set and the headerX-GraphTraceQuery
is included. The query traces' JSON is the same as returned bygraphman query
. #4243 - Lots of visual and filtering improvements to #4232
- More aggressive in-memory caching of blocks close the chain head, potentially alleviating database load. #4215
- New counter Prometheus metric
query_validation_error_counter
, labelled by deployment ID and error code. #4230
graph_elasticsearch_logs_sent - Turned "Flushing logs to Elasticsearch" log into a Prometheus metric (
graph_elasticsearch_logs_sent
) to reduce log noise. #4333 - New materialized view
info.chain_sizes
, which works the same way as the already existinginfo.subgraph_sizes
andinfo.table_sizes
. #4318 - New
graphman stats
subcommandsset-target
andtarget
to manage statistics targets for specific deployments (i.e. how much data PostgreSQL samples when analyzing a table). #4092
Fixes
graph-node
now has PID=1 when running inside the official Docker image. #4217- More robust
ipfs.cat
logic during grafted subgraphs' manifest lookup. #4284 - Fixed a bug that caused some large multi-entity inserts to fail because of faulty chunk size calculation. #4250
- Subgraph pruning now automatically cancels ongoing autovacuum, to avoid getting stuck. #4167
ens.getNameByHash
now fails nondeterministically if ENS rainbow tables are not available locally. #4219- Some kinds of subgraph failures were previously wrongly treated as unattestable (value parsing,
enum
and scalar coercion), i.e. nondeterministic. These subgraph failure modes are now flagged as fully-deterministic. #4278
Full Changelog: v0.29.0...e5dd53d