I agree with Vladimir Ozerov, When I was a newcomer to Calcite, I just used
its core part rather than framework, so I don't know some concepts. I don't
know what JDBC adapter really is,  such as CALCITE-4901, CALCITE-4740 I
reported before. I don't know why the title needs to add 'JDBC adapter '.
Another example is CALCITE-4683, I don't know how I could describe the
symptom, because it's just an online bad case, I can't summarize it well
before I found a more simple and representative case. Frankly, as newcomers
will be more, I think the community needs patience and a friendly guide to
make the summaries friendly to the most contributors. I appreciate Julian
Hyde's work very much, He found the summary problem and tried to resolve it
which gave me lots of trouble for a long time.

xiong duan <nobigo...@gmail.com> 于2022年1月13日周四 19:56写道:

> Hi all,
>   I prefer to describe the symptoms the user sees. Because For developers
> and users both can know what happens when Calcite has a wrong result or
> unexpected exception. If the user encounters a problem, I guess he wants to
> find the related symptoms summary in the git log, not the root cause. The
> root cause requires the user have to do some debug or know related
> implement in Calcite. I think this is not very friendly to describe
> the root cause. When we release a new Calcite version with use the
> description of the symptoms, I think the commit log is very friendly for
> users and followers to know what has been fixed or improved.
>    But for CALCITE-4983, I think  `Incorrect plan for query that has
> GROUPING SETS and WHERE` is not enough, Because only MV rewriting have
> wrong according to the description, not all queries. So I suggest `MV
> rewriting generates the incorrect plan for query that has GROUPING SETS and
> WHERE`
>   In addition, I admit this forced me to change my natural way of thinking
> and not every issue I can describe correctly. But I think this is good for
> me.
>
> Viliam Durina <vil...@hazelcast.com> 于2022年1月13日周四 16:11写道:
>
> > Hi all,
> >
> > I also prefer root cause over end effect, if it's known. The end effect
> > should definitely be mentioned in the body. I even tend to edit summaries
> > when I start with the end effect and find out the root cause later.
> >
> > I also prefer a more impersonal tone. In our example I prefer this:
> >
> > > SubstitutionVisitor.unifyAggregates() doesn't handle conditions if
> > Aggregate
> > > has grouping sets
> >
> > Viliam
> >
> > On Wed, 12 Jan 2022 at 20:38, Vladimir Ozerov <ppoze...@gmail.com>
> wrote:
> >
> > > Hi Julian,
> > >
> > > In my opinion, both ways work well. People tend to think differently.
> > Some
> > > prefer symptoms, others - the root cause. I personally prefer the
> latter
> > > for the following reason. If I face a problem, I first try to debug it
> on
> > > my own. The result of the analysis is usually some questionable
> behavior
> > in
> > > a specific part of the code. Once you find the problematic place, you
> can
> > > run a search in JIRA or Git log (class name, feature name, etc) and
> check
> > > whether somebody else faced a similar issue. The description "Incorrect
> > > plan ..." is less likely to help me than more concrete "In
> > > SubstitutionVisitor ...". Especially, given that a single root cause
> may
> > > manifest in several ways. But I would like to stress out - it is a
> matter
> > > of personal habits and previous experience, not something that I
> > > expect others to follow.
> > >
> > > In the past, I worked on the Apache Ignite project. We had a number of
> > > contribution rules, such as "put a comma here", "set the proper
> component
> > > there", "write the comment in that way", etc. I was the one who
> actively
> > > enforced this for a may years, because it gave the feeling that
> > everything
> > > is "put in order". Eventually, I came to the conclusion that this does
> > more
> > > harm than good, because I regularly observed confusion and
> > dissatisfaction
> > > of the new contributors (and Apache Ignite community is far less
> diverse
> > > and active than in Apache Calcite), as they were forced to change their
> > > natural way of thinking or past habits to engage with the community.
> > >
> > > Regards,
> > > Vladimir.
> > >
> > > ср, 12 янв. 2022 г. в 21:42, Julian Hyde <jhyde.apa...@gmail.com>:
> > >
> > > > Hi all,
> > > >
> > > > Can we discuss how we write summaries for Jira cases? In my opinion
> > it’s
> > > > really important, because summaries become commit messages, and
> commit
> > > > messages become release notes, which is how most people figure out
> what
> > > is
> > > > in Calcite. I spend a lot of my time working with people to write
> good
> > > > summaries.
> > > >
> > > > I’d like some feedback on whether this approach is useful. And to try
> > to
> > > > teach people how to do it for themselves.
> > > >
> > > > Consider this case
> https://issues.apache.org/jira/browse/CALCITE-4983
> > <
> > > > https://issues.apache.org/jira/browse/CALCITE-4983>. (I chose a
> still
> > > > current case because it doesn’t yet have an ‘answer’.)
> > > >
> > > > The current summary is
> > > >
> > > > >  In SubstitutionVisitor's unifyAggregates, if Aggregate has
> > > > >  grouping sets, we need to handle the condition needs to pull up.
> > > >
> > > > It describes the cause but it doesn’t describe the problem (or the
> > > > symptoms the user sees).
> > > >
> > > > If you take your car into your mechanic the cause is ‘Leaky gasket
> > > results
> > > > in oil dripping onto hot manifold’ but the problem is ‘Smoke comes
> from
> > > > hood when engine gets hot’. Do you agree that the second description
> is
> > > > much more useful?
> > > >
> > > > In this case, the author came up with an example:
> > > >
> > > > > Here is an example:
> > > > >
> > > > > sql: select empid, deptno from emps group by grouping sets ((empid,
> > > > deptno),(empid))
> > > > > mv: select empid, count(distinct deptno) from emps where empid>100
> > > > >   group by grouping sets ((empid, deptno), (empid))
> > > > >
> > > > > the result plan is:
> > > > >
> > > > >   LogicalCalc(expr#0..2=[{inputs}], deptno=[$t1], EXPR$1=[$t2])
> > > > >     LogicalAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}]],
> > > > EXPR$1=[COUNT(DISTINCT $1)])
> > > > >       EnumerableTableScan(table=[[hr, MV0]])
> > > > >
> > > > > We can see that this plan doesn't handle the condition empid>100
> > > >
> > > > I think it’s a great example. I especially like the last line, where
> > the
> > > > author pointed out what was wrong. I suggest the following summary:
> > > >
> > > > > Incorrect plan for query that has GROUPING SETS and WHERE
> > > >
> > > > Do you think the summary is more useful? Can it be improved?
> > > >
> > > > Julian
> > > >
> > > >
> > > >
> > > >
> > >
> >
> > --
> > This message contains confidential information and is intended only for
> > the
> > individuals named. If you are not the named addressee you should not
> > disseminate, distribute or copy this e-mail. Please notify the sender
> > immediately by e-mail if you have received this e-mail by mistake and
> > delete this e-mail from your system. E-mail transmission cannot be
> > guaranteed to be secure or error-free as information could be
> intercepted,
> > corrupted, lost, destroyed, arrive late or incomplete, or contain
> viruses.
> > The sender therefore does not accept liability for any errors or
> omissions
> > in the contents of this message, which arise as a result of e-mail
> > transmission. If verification is required, please request a hard-copy
> > version. -Hazelcast
> >
>

Reply via email to