Highlighted

Как сделать sql запрос к БД Jira, если нет доступа к БД

Всем привет!

Тут у меня был кейс, когда мне нужно было проверить, было ли применено решение по исправлению вот этого бага:

https://jira.atlassian.com/browse/JRASERVER-67697

Для этого нужно было исполнить вот такой запрос:

select j.id
from jiraissue j inner join project p on j.project = p.id
where j.issuetype is null order by p.pkey, j.issuenum;

А прав у меня на базу данных Jira не было.

Посмотрел на инстанс и увидел, что там был скриптраннер. Ну, и сделал через скриптраннер (можно тоже самое, думаю, и из грувиоли и майгруви сделать). Получилось как-то вот так:

def delegator = (DelegatorInterface) ComponentAccessor.getComponent(DelegatorInterface)
String helperName = delegator.getGroupHelperName(
"default")
def sqlStmt = """
select j.id from jiraissue j inner join project p on j.project = p.id where j.issuetype is null order by p.pkey, j.issuenum
"""
Connection conn = ConnectionFactory.getConnection(helperName)
Sql sql =
new Sql(conn)
try {
StringBuffer sb =
new StringBuffer()
sql.eachRow(sqlStmt) {
sb <<
"${it.id}\n"
}
log.error sb.toString()
}
finally {
sql.close()
}
  

 И посмотрел. В общем, хорошая штука скриптовые плагины.

1 comment

@Alexey Matveev [cPrime]

У меня собственно 3 вопроса:
1. Update и Delete тоже поддерживается?
2. В БД данные скрипты выполняются от имени пользовала JIRA же?
3. JIRA логирует выполнение таких скриптов?

1. Да поддерживаются.

import com.atlassian.jira.component.ComponentAccessor
import groovy.sql.Sql
import org.ofbiz.core.entity.ConnectionFactory
import org.ofbiz.core.entity.DelegatorInterface

import java.sql.Connection

def delegator = (DelegatorInterface) ComponentAccessor.getComponent(DelegatorInterface)
String helperName = delegator.getGroupHelperName("default")

Connection conn = ConnectionFactory.getConnection(helperName)
Sql sql = new Sql(conn)
sql.execute """
update cwd_group set LOWER_GROUP_NAME = 'mygroup' where GROUP_NAME = 'jira-users'
"""

2. Да, выполняются от пользователя, под которым Jira коннектится к БД, так что проблем быть не должно :)

3. Нет, если сам не обеспечишь логирование, то и логирования не будет :) 

Comment

Log in or Sign up to comment