[CALCITE-4795] In class SqlBasicCall, make the "operands" field private (part 1)

In class SqlBasicCall, the operands field is currently a
public array. This gives too much freedom for clients to do
crazy things, and creates unexpected behavior because the
array is not copied when a SqlBasicCall is cloned. We would
like to make the first private, but that would be a breaking
change, so we must do it over two releases.

This is part 1: deprecate the "operands" field; after 1.28,
part 2 will make the "operands" field private, and also
change it from an array to an immutable List. You will still
be able to call SqlCall.setOperand, but the whole new List
will be created.
7 files changed
tree: 50f74327f3e28a0676b10c56d6c2f837e8ca71d3
  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. testkit/
  29. ubenchmark/
  30. .asf.yaml
  31. .editorconfig
  32. .gitattributes
  33. .gitignore
  34. .ratignore
  35. .travis.yml
  36. appveyor.yml
  37. build.gradle.kts
  38. gradle.properties
  39. gradlew
  40. gradlew.bat
  41. LICENSE
  42. NOTICE
  43. README
  44. README.md
  45. settings.gradle.kts
  46. sqlline
  47. sqlline.bat
  48. sqlsh
  49. 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.