[ 
https://issues.apache.org/jira/browse/DERBY-693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15431456#comment-15431456
 ] 

Leshan Bashitha Wijegunawardana commented on DERBY-693:
-------------------------------------------------------

Bryan, I did all the above mentioned steps. But it didn't resolve. When the sql 
command("select") is executed prevCharIsLF flag is set to true in both the 
occasions even without modification to the code. In both the occasions 
UpdateLineColumn method is called and the code within the if block(which is 
checking prevCharIsLF is true ) is executed. (incrementing line number is also 
here) But for the surprise when giving the error message line number is given 
as in the description every time. When I did the modification mentioned above 
(prevCharIsLF is set to false before calling UpdateLineColumn method in 
readChar method) , since prevCharIsLF is set to false the code within the if 
block is not executed which means that incrementing line number is also not 
executed. But even after that also the error message is as above. And also even 
after commenting the line incrementing part also gives the error message as in 
the description. So it seems like incrementing line number incorrectly happens 
not within the code which is in the description. 

> Incorrect line number in the error message when parser throws syntax error in 
> some specific examples
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-693
>                 URL: https://issues.apache.org/jira/browse/DERBY-693
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.1.6
>            Reporter: Mamta A. Satoor
>            Assignee: Leshan Bashitha Wijegunawardana
>            Priority: Minor
>              Labels: derby_triage10_5_2
>         Attachments: w.sql
>
>
> After connecting to a database through ij, parser returns correct line number 
> for the sql "select" the first time around but it returns incorrect line 
> number when the same sql is rexecuted, as shown below
> $ java org.apache.derby.tools.ij
> ij version 10.2
> ij> connect 'jdbc:derby:c:/dellater/db1';
> ij> select
> ;
> ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 8.
> ij> select
> ;
> ERROR 42X01: Syntax error: Encountered "<EOF>" at line 2, column 8.
> ij>
> This is caused by UCode_CharStream's UpdateLineColumn method. When the sql 
> "select" is executed the first time, the parser comes to UpdateLineColumn 
> method for trailing \r and then for trailing \n for the first line "select". 
> The trailing \n causes the prevCharIsLF to be set to true. Since this sql is 
> incorrect by itself, parser will throw a syntax error. After the exception 
> and before the processing of next sql "select", this prevCharIsLF flag does 
> not get set to false(this is the problem). When the first character "s" is 
> read, UpdateLineColumn checks if prevCharIsLF set to true and if yes, it 
> increments(incorrectly) the line number to 2 and that is why the second time 
> around, execution of "select" gives syntax error at line 2 rather than line 1.
> This also causes problem with the optimizer hints when they are used in 
> incorrect context as shown below. 
> $ java org.apache.derby.tools.ij
> ij version 10.2
> ij> connect 'jdbc:derby:c:/dellater/db1';
> ij> -- derby-properties
> select * from t1;
> ERROR 42X01: Syntax error: Encountered "derby-properties" at line 1, column 4.
> ij> -- derby-properties
> select * from t1;
> ERROR 42X01: Syntax error: Encountered "derby-properties" at line 2, column 4.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to