Oracle Text + NLS_* parameters = hell

If you need to do some kind of “full-text”, fuzzy text search and you use Oracle, you will probably end up using Oracle Text because ,well, truckloads of money have already been spent on the Oracle database itself, right? :)

You may have reached this page after much hair-pulling because of the following error when using something like “CONTAINS(no_nome,’?eracles or ?diego’)>0 “:


09:50:03,519 ERROR [JDBCExceptionReporter] ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
DRG-00100: internal error, arguments : [50935],[drpn.c],[992],[],[]
DRG-00100: internal error, arguments : [50935],[drpnw.c],[604],[],[]
DRG-00100: internal error, arguments : [51002],[drwa.c],[576],[],[]
DRG-00100: internal error, arguments : [51028],[drwaf.c],[809],[204],[ERACLES]
DRG-00100: internal error, arguments : [50401],[dreb.c],[1040],[],[]
ORA-00600: internal error code, arguments: [qernsRowP], [1], [], [], [], [], [], []

I’ve lost some hair trying to figure out this obscure error, and I finally found the offending code:


HibernateUtil.getInstance().getSession().connection().prepareStatement("alter session set nls_sort=Latin_AI").executeUpdate();
HibernateUtil.getInstance().getSession().connection().prepareStatement("alter session set nls_comp=linguistic").executeUpdate();

This was used to set up case-insensitive searches, but when I removed those lines the error was gone! If you have similar statements executed before the SELECT, try to remove them and see how it works. I guess Oracle Text is not compatible with some of the nls_* parameters.

Deixe um comentário

Django + Boletos

Depois de algum tempo sem trabalhar diretamente com o Django, comecei a trabalhar de novo com ele. Estou iniciando um site para o Amor Exigente. Precisava de alguma coisa em Python/Django para gerar boletos bancários. Não encontrei nada feito diretamente para o Django, o que, a princípio, me deixou decepcionado. Felizmente, descobri o PyBoletos, que foi feito para Pylons, porém, foi até fácil fazer a o port para o Django.Eis um exemplo de boleto gerado com ele. Ignore os erros de codificação, eu só colei os exemplos do PyBoletos mas não mudei a codificação.

DJBoleto

O resultado está no endereço http://bitbucket.org/joaomc/djboleto/. Caso você encontre algum problema, por favor, me avise, ou faça um fork do projeto e envie um patch ;)

Comments (7)

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.