Hi!
I've written a function that I want to use in a query. When I write the query using SQL Object + SQL Builder I get wrong SQL generated. The correct output would be (wrapped and with parens and quotes fixed from SO's generated code): ================================================================================ SELECT neolab.v_resultados_resumo.id, neolab.v_resultados_resumo.cliente_id, neolab.v_resultados_resumo.nao_conformidade_id, neolab.v_resultados_resumo.segmento_id, neolab.v_resultados_resumo.cliente_nome, neolab.v_resultados_resumo.material_coletado_id, neolab.v_resultados_resumo.material_coletado, neolab.v_resultados_resumo.amostra_id, neolab.v_resultados_resumo.id, neolab.v_resultados_resumo.analise, neolab.v_resultados_resumo.situacao, neolab.v_resultados_resumo.data_cadastro, neolab.v_resultados_resumo.previsao_entrega, neolab.v_resultados_resumo.entregue_em, neolab.v_resultados_resumo.recebido_em, neolab.v_resultados_resumo.ref_externa, neolab.v_resultados_resumo.nome_paciente, neolab.v_resultados_resumo.nome_paciente_normalizado, neolab.v_resultados_resumo.autenticacao, neolab.v_resultados_resumo.emitir_laudo FROM neolab.v_resultados_resumo WHERE ((((neolab.v_resultados_resumo.segmento_id) = (1)) AND (((neolab.v_resultados_resumo.data_cadastro) >= ('2006-04-17 00:00:00')) AND ((neolab.v_resultados_resumo.data_cadastro) <= ('2007-04-23 00:00:00')))) AND ((neolab.v_resultados_resumo.nome_paciente_normalizado) LIKE (f_v_texto('jo%')))) ORDER BY id; ================================================================================ The query starts like this: ================================================================================ amostras = model.VResultadoResumo.select( AND(model.VResultadoResumo.q.segmentoID == toxicologia.id, model.VResultadoResumo.q.dataCadastro >= data_inicial, model.VResultadoResumo.q.dataCadastro <= data_final)) if situacao == u'pendentes': amostras = amostras.filter( model.VResultadoResumo.q.entregueEm==None) elif situacao == u'prontos': amostras = amostras.filter( model.VResultadoResumo.q.entregueEm!=None) if nome_paciente: amostras = amostras.filter( model.VResultadoResumo.q.nomePacienteNormalizado.startswith( func.f_v_texto(nome_paciente))) ================================================================================ Here, my function on the databse is "f_v_texto" at PostgreSQL's public schema. nome_paciente is a unicode string containing, for this test case, 'jo'. >From PostgreSQL's log the generated query is (just wrapped to fit on the screen): ================================================================================ SELECT neolab.v_resultados_resumo.id, neolab.v_resultados_resumo.cliente_id, neolab.v_resultados_resumo.nao_conformidade_id, neolab.v_resultados_resumo.segmento_id, neolab.v_resultados_resumo.cliente_nome, neolab.v_resultados_resumo.material_coletado_id, neolab.v_resultados_resumo.material_coletado, neolab.v_resultados_resumo.amostra_id, neolab.v_resultados_resumo.id, neolab.v_resultados_resumo.analise, neolab.v_resultados_resumo.situacao, neolab.v_resultados_resumo.data_cadastro, neolab.v_resultados_resumo.previsao_entrega, neolab.v_resultados_resumo.entregue_em, neolab.v_resultados_resumo.recebido_em, neolab.v_resultados_resumo.ref_externa, neolab.v_resultados_resumo.nome_paciente, neolab.v_resultados_resumo.nome_paciente_normalizado, neolab.v_resultados_resumo.autenticacao, neolab.v_resultados_resumo.emitir_laudo FROM neolab.v_resultados_resumo WHERE ((((neolab.v_resultados_resumo.segmento_id) = (1)) AND (((neolab.v_resultados_resumo.data_cadastro) >= ('2006-04-17 00:00:00')) AND ((neolab.v_resultados_resumo.data_cadastro) <= ('2007-04-23 00:00:00')))) AND ((neolab.v_resultados_resumo.nome_paciente_normalizado) LIKE ('_v_texto('jo'%'))) ORDER BY id ================================================================================ It is missing the 'f' in 'f_v_texto' and misses one closing parenthesis. Also, I don't know why it is quoting the function name. Did I do something wrong? Is it a bug? Should I change my code somehow to have it working? Just to be sure to have all what is available for SQL Object in, I've updated to 0.10dev_r2576 and the problem is still there. I'll go back to 0.8.2 for production. -- Jorge Godoy <[EMAIL PROTECTED]> ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ sqlobject-discuss mailing list sqlobject-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss