Domanda

Accetta questa query:

  SELECT *
    FROM MyTable
   WHERE MyColumn = 'SomeValue'
ORDER BY SomeFakeQualifier.MyColumn DESC

Sembra che SqlServer ignori il qualificatore in questo caso. Se aggiungi un JOIN, lo prenderà in considerazione.

Questo in realtà non è un problema, fino a quando non si desidera rendere vitali le query tra i fornitori di DBMS. Oracle, ad esempio, si lamenterà, giustamente, che il qualificatore non è valido.

Sì, utilizziamo un ORM che elimina molto di questo, ma abbiamo ancora bisogno di JDBC per alcune azioni (è la natura del nostro prodotto e il suo supporto per le query dinamiche). In effetti, è a causa di ciò che si è verificato questo problema: qualcuno ha copiato una query denominata JPA in una query fornita da JDBC, ma ha lasciato il nome dell'oggetto anziché il nome della tabella.

Quindi suppongo che la domanda sia: qualcun altro si è imbattuto in questo? In tal caso, qual è il modo migliore per testare il tuo codice per assicurarti che funzioni tra & Quot; principali tre & Quot; DBMS (SqlServer, Oracle, DB2)? Abbiamo un team di controllo qualità, ma sembra che ci dovrebbe essere un modo migliore per testare l'unità per queste idiosincrasie.

Nota, cerchiamo sempre di imporre la scrittura di ANSI SQL per evitare problemi, ma alcune cose, come il problema di cui sopra, possono sfuggire

Spero che abbia senso. Posso fornire più contesto se necessario.

TIA

È stato utile?

Soluzione

La tua soluzione qui è in realtà test unitari delle tue query combinati con integrazione continua . Hai delle domande sotto forma di codice JDBC. È abbastanza facile scrivere unit test per connettersi ai database pertinenti ed eseguire le query in modo tale da almeno vedere se vengono eseguite, anche se non ti interessano i risultati, che è lo standard di cui stai parlando .

Probabilmente puoi estenderlo per misurare le prestazioni e / oi risultati, ma trovo che questi tipi di test siano estremamente fragili e tendano a rompersi molto, molto rapidamente poiché inevitabilmente si verificano più cambiamenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top