Как запустить анализ запроса с помощью программы java -jdb c? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выполнить запрос на анализ в scala jdb c программе, как указано ниже.

try {
    for(t<-tabList){
        var statement = con.prepareStatement(s"analyze ${t}")
        println(s"Analyze for: ${t}")
        val rs = statement.execute()
        println(s"Analyze completed for the table: ${t}")
        println(rs)
    }
} catch {
    case pse:PSQLException => pse.printStackTrace()
    case e:Exception       => e.printStackTrace()
}

Таблица на postgres, и я создаю jar своей программы и запустив его из командной строки, как показано ниже.

scala -cp /home/username/postgresql-42.1.4.jar analyzetables_2.11-0.1.jar schema.tablename

Код не выдает никаких ошибок, но я вижу результат из объекта набора результатов как ложный, как показано ниже:

Analyze for: schema.tablename
Analyze completed for the table: schema.tablename
false

Запрос не терпит неудачу, следовательно, не исключение во время выполнения. Также приведенные таблицы присутствуют в базе данных и содержат данные. Но я распечатал объект набора результатов и увидел, что логическое значение false. Означает ли это, что запрос на анализ не выполнен или я должен выполнить это каким-либо другим способом? Не могли бы вы сообщить мне, есть ли проблема с тем, как я обработал запрос на анализ, и есть ли лучший или правильный способ сделать это?

1 Ответ

1 голос
/ 13 февраля 2020

ANALYZE не дает никакого набора результатов.

Если вы не получили java.sql.SQLException, вы можете предположить, что это сработало.

Вы должны использовать executeUpdate() вместо execute() и было бы лучше взять java.sql.Statement вместо java.sql.PreparedStatement на первом месте.

...