[
https://issues.apache.org/jira/browse/CALCITE-1941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16146412#comment-16146412
]
Julian Hyde commented on CALCITE-1941:
--------------------------------------
What would be the impact of removing CachingCalciteSchema? It would simplify
things, as long as it doesn't break too much.
OK, it's decided, let's change to strict. Can we call it "isBefore"?
> Refine interface Schema#snapshot()
> ----------------------------------
>
> Key: CALCITE-1941
> URL: https://issues.apache.org/jira/browse/CALCITE-1941
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Affects Versions: 1.13.0
> Reporter: Maryann Xue
> Assignee: Maryann Xue
> Priority: Minor
> Fix For: 1.14.0
>
>
> The current Schema#snapshot(long timestamp) interface is limited, for it
> assumes that users only use timestamp for schema version control, thus we
> need something new to replace the "timestamp" parameter.
> So we'll introduce a SchemaVersion interface with a partial ordering contract
> that is:
> 1) Reflexive: if a.equals(b) then a.lessThanOrEqualTo(b);
> 2) Transitive: if a. lessThanOrEqualTo(b) and b. lessThanOrEqualTo(c) then
> a.lessThanOrEqualTo(c);
> and 3) anti-symmetric: if a.lessThanOrEqualTo(b) and !a.equals(b) then
> !b.lessThanOrEqualTo(a);
> User can implement their own SchemaVersion, which, aside from following the
> partial ordering contract, must also override {{equals()}}, {{hashCode()}}
> and {{toString()}}, so that user can, through overriding
> {{CalciteConnection#createPrepareContext()}}, create a Schema snapshot of a
> specific SchemaVersion used by the prepare context.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)