PayasR / paralite

0 stars 0 forks source link

入力が2単語の時 #25

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
● ステータス:NO IDEA

● 現象
・まず「paralite 
A.db」の2単語だけを入力し、Enterボタンを押す。その後、残�
��のクエリ「 "select * from 
X"」を入力しEnterボタンを押した後、「Ctrl + 
d」を押すと、エラーメッセージと例外が生じる。下記(Ex.1)�
��
・下記(Ex.1)のクエリを2回に分けて入力する場合と、下記(Ex.
2)のクエリを1行で入力する場合は、両方ともクエリの内容��
�同じだが、出力結果が異なる。

● 再現手順
1.
Ex.1) 初めに2単語入力し、2回に分けて入力する場合
$ paralite A.db     # Enterボタンを押す
 "select * from X"  # Enterボタンを押し、「Ctrl + d」を押す
↓
ERROR: the syntax of your query is wrong, please check! # 
エラーメッセージ
Traceback (most recent call last):  # 例外
  File "/home/takizawa/paralite-read-only/ParaLite-3.0/bin/paralite", line 60, in <module>
    ParaLite().main(argv, 0)
  File "/home/takizawa/paralite-read-only/ParaLite-3.0/bin/paraLite.py", line 1020, in main
    self.process_single_query(argv, flag)
  File "/home/takizawa/paralite-read-only/ParaLite-3.0/bin/paraLite.py", line 1056, in process_single_query
    self.execute(self.args)
  File "/home/takizawa/paralite-read-only/ParaLite-3.0/bin/paraLite.py", line 1010, in execute
    assert(0), c
AssertionError: do_{'block_size': 0, 'log_dir': '/home/takizawa/.paralite-log', 
'temp_dir': '/tmp'}_cmd

2.
Ex.2) クエリを1行で入力する場合(Ex.1と同じクエリ内容)
$ paralite A.db "select * from X"  # Enterボタンを押す
↓
ERROR: X does not exist

What is the expected output? What do you see instead?

Please use labels and text to provide additional information.
● 原因
・paraLite.pyファイル 413行目「es("ERROR: the syntax of your query is 
wrong, please 
check!\n")」でエラーメッセージが生じているが、処理はその�
��ま進み、1005行目「c = "do_%s_cmd" % (argv[0])」で例外が発生。
 通常、Select文の場合「c」は「'do_sql_cmd'」となり、同名の�
��数へと処理が移るが、今回の「c」は「do_{'block_size': 0, 
'log_dir': '/home/takizawa/.paralite-log', 'temp_dir': 
'/tmp'}_cmd」となり、この名前の関数は存在しないので、例外
が発生している。

・413行目「es("ERROR: the syntax of your query is wrong, please 
check!\n")」で、エラーメッセージが返っていない。

・paraLite.pyファイル 355行目からの「def parse(self, 
argv):」では、入力されたクエリを分類し各処理に割り振っ��
�いるが、そもそも、今回のクエリが 406行目「if 
ctquery.split()[0].lower() in s:」に該当せず、413行目「es("ERROR: the 
syntax of your query is wrong, please 
check!\n")」の処理へ行くのかが不明。

・修正するべき箇所が不明のため、paraliteファイル 
15行目「elif len(argv) == 2:」の後ろにコメントを追加する。

● 修正箇所
 ◆ bin/paralite
< before >
        elif len(argv) == 2:
            if argv[1].lower() == "help" or argv[1].lower() == "--help":
                ParaLite().main(argv, 0)
                sys.exit(0)

< after >
        elif len(argv) == 2:
            # takizawa:Case 01: 下記3行に該当しない入力('paralite help'や'paralite --help'以外の
            # 2単語入力)の場合、paraLite.pyファイルで、AssertionErrorが発生する
            if argv[1].lower() == "help" or argv[1].lower() == "--help":
                ParaLite().main(argv, 0)
                sys.exit(0)

Original issue reported on code.google.com by wdb.taki...@gmail.com on 24 Dec 2014 at 2:15

GoogleCodeExporter commented 9 years ago
・修正箇所のコメントを修正(takizawa:Case 01 --> takizawa:Issue25)

● 修正箇所
 ◆ bin/paralite
< before >
        elif len(argv) == 2:
            if argv[1].lower() == "help" or argv[1].lower() == "--help":
                ParaLite().main(argv, 0)
                sys.exit(0)

< after >
        elif len(argv) == 2:
            # takizawa:Issue25: 下記3行に該当しない入力('paralite help'や'paralite --help'以外の
            # 2単語入力)の場合、paraLite.pyファイルで、AssertionErrorが発生する
            if argv[1].lower() == "help" or argv[1].lower() == "--help":
                ParaLite().main(argv, 0)
                sys.exit(0)

Original comment by wdb.taki...@gmail.com on 24 Dec 2014 at 4:31