If you'd like to contribute a patch to Impala, but aren't sure what you
want to work on, you can look at Impala's newbie issues:
https://issues.apache.org/jira/issues/?filter=12341668. You can find
detailed instructions on submitting patches at
https://cwiki.apache.org/confluence/display/IMPALA/Contributing+to+Impala.
This is a walkthrough of a ticket a new contributor could take on, with
hopefully enough detail to get you going but not so much to take away the
fun.

How can we fix https://issues.apache.org/jira/browse/IMPALA-5362, "Preserve
case-sensitivity in field titles"?

First, set up your development environment, and make sure you can run the
tests. In particular, you'll want to run the front-end tests and the
end-to-end shell tests:

(pushd fe && mvn -fae test)
tests/run-tests.py shell

The test case listed in the ticket uses the impala shell, so let's first
look to add it to the tests for the shell. Look in
tests/shell/test_shell_interactive.py. This interacts with the shell in a
way most similar to how a human would, among Impala's automated tests. You
will notice that a number of tests check stdout or stderr for the string
they expect in the results. You can use this as well to write a test that
fails in HEAD but that will pass when you are done with your patch.

The column headers printed by impala-shell.sh are stored in some variables
and parameters named column_names. These are fetched from
ImpalaClient.get_column_names. You can continue to trace this all the way
to the frontend. That code is in the fe directory. There, the terminology
changes to column labels, rather than column names. If you grep around for
toLowerCase, you will find that column labels are forced to lowercase in
SelectListItem.toColumnLabel.

That call to toLowerCase() must be there for a reason - see if you can
figure out why! You may decide to keep it and add to column labels an
additional string containing the original capitalization, or you may decide
to eliminate the call to toLowerCase(). In the former case, you can limit
the uses of the original capitalization to impala-shell.sh, but in the
latter all clients will see the original capitalization. This may break
other tests, including frontend tests.

You may need to fix some planner tests. Some of these have a special format
that you can see examples of in
testdata/workloads/functional-planner/queries/PlannerTest/.

Have fun! Once you're done, re-run the front-end tests and the end-to-end
shell tests, as described above. Then submit your patch for review
following the instructions on
https://cwiki.apache.org/confluence/display/IMPALA/Contributing+to+Impala.

Reply via email to