[CALCITE-4544] Deprecate Metadata API backed by Java Reflection (James Starr)

Deprecating:
* RelOptPlanner.registerMetadataProviders - Used to support custom nodes
  in reflection based rel metadata.  The generated code based rel
  metadata has tight couple so this is not needed.
* RelOptPlanner.getRelMetadataTimestamp - Used for cache invalidation in
  reflection based rel metadata.  The generated code based rel
  metadata has tight couple so this is not needed.
* RelOptCluster.metadataFactory - Exposing an api for reflection based
  rel metadata.
* RelNode.metadata - An api for accessing reflection based rel metadata.
* CachingRelMetadataProvider - Implements caching for reflection based
  rel metadata.  Generated code base rel metadata use a Table in
  RelMetadataQuery and tight coupling for caching.
* RelMetadataProvider.apply - The primary entry point reflection based
  rel metadata.
* MetadataFactory - An api for reflection based rel metadata.
* MockRelOptPlanner.setRelMetadataTimestamp - Used in testing reflection
  based rel metadata.
* ReflectiveRelMetadataProvider.{map, metadataClass0 - Used in the
  implementation reflection based rel metadata.
* VolcanoRelMetadataProvider - Supports custom volcanno rels in
  reflection based rel metadata.
* HepRelMetadataProvider - Supports custom hep rels in reflection based
  rel metadata.

Close apache/calcite#2475
20 files changed
tree: 48dc4b6d8f5a2c6a818fc7479dd8de14ce5468eb
  1. .github/
  2. .idea/
  3. babel/
  4. bom/
  5. buildSrc/
  6. cassandra/
  7. core/
  8. druid/
  9. elasticsearch/
  10. example/
  11. file/
  12. geode/
  13. gradle/
  14. innodb/
  15. kafka/
  16. linq4j/
  17. mongodb/
  18. pig/
  19. piglet/
  20. plus/
  21. redis/
  22. release/
  23. server/
  24. site/
  25. spark/
  26. splunk/
  27. src/
  28. ubenchmark/
  29. .asf.yaml
  30. .editorconfig
  31. .gitattributes
  32. .gitignore
  33. .ratignore
  34. .travis.yml
  35. appveyor.yml
  36. build.gradle.kts
  37. gradle.properties
  38. gradlew
  39. gradlew.bat
  40. LICENSE
  41. NOTICE
  42. README
  43. README.md
  44. settings.gradle.kts
  45. sqlline
  46. sqlline.bat
  47. sqlsh
  48. sqlsh.bat
README.md

Maven Central Travis Build Status CI Status AppVeyor Build Status

Apache Calcite

Apache Calcite is a dynamic data management framework.

It contains many of the pieces that comprise a typical database management system but omits the storage primitives. It provides an industry standard SQL parser and validator, a customisable optimizer with pluggable rules and cost functions, logical and physical algebraic operators, various transformation algorithms from SQL to algebra (and the opposite), and many adapters for executing SQL queries over Cassandra, Druid, Elasticsearch, MongoDB, Kafka, and others, with minimal configuration.

For more details, see the home page.