[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.804
    Das Problem ist mir nach Umstellung von V6 auf V7 begegnet da der neue Optimizer nach anderen Regeln arbeitet.
    Der häufigste Grund sind umgedrehte Autocasts des Optimizers bei Verwendung von Konstanten die nicht zum Feldtyp passen.
    Also "where XXX = 21" führt dann zu einem Fehler, wenn XXX als Charvariable definiert ist.
    In V6 wurde cast(21 as char(nn)) verwendet, in V7 wird cast(xxx as decimal(n, m)) generiert.
    Ist XXX nun sporadisch nicht numerisch, führt dies zum Fehler.
    Das Selbe passiert nun auch bei Join-Beziehungen (on a=b and ...).
    Hier erfolgen Typanpassungen ggf. genau falsch herum was auch zur Nichtverwendung von Indizes führt.

    Du musst deine View bzgl. der Where und On-Klauseln prüfen und ggf. durch eigene Cast's eine andere Typisierung erzwingen.
    Zugegeben, ein mühsames Geschäft.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.052
    Ja, danke, soetwas war es.
    Ich habe nur vorher noch nie eine derartige Meldung im Joblog gesehen.

    Ich habe die View 'rückwärts' entschärft bis sie wieder lief.
    Ursache war ein alpa Feld mit numerischem Inhalt, das numerisch abgefragt wurde.
    Ein Feld, das jeder hier als Num ansieht, das aber per Definition tatsächlich Alpa ist.
    Hat mit fast 4 Stunden gekostet. Natürlich ist das ein Fehler der ursprünglichen Definition gewesen.
    Vermutlich war die letzte PTF Orgie schuld daran, das der Fehler nun aufschlug.

    Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.804
    Das hat eher was mit Glück zu tun.
    Wahrscheinlich war bisher immer ein numerischer Wert in diesem Feld, aber erst seit kurzem taucht ein Alpha-Wert auf.
    Prüfe mal, ob es in der Datei einen nicht numerischen Wert gibt, z.B.:

    select * from myfile
    where translate(myfield, ' ', '0123456789') <> ' '

    Dies war bei mir auch der Fall und wir haben damit einen Uraltfehler behoben.
    Mit V6R1 war es auch nicht mehr möglich, in der Where-Klausel solche Sätze auszufiltern, da nicht garantiert wird, ob die Reihenfolge in der Whereklausel beibehalten wird.

    where translate(myfield, ' ', '0123456789') = '' and myfield = 148

    führt trotzdem zu einem Fehler, da die 2. Bedingung anscheinend zuerst (oder auch grundsätzlich beide) ausgeführt werden.
    Zusätzlich ist zu berücksichtigen, dass seit V7 ein Index über das Char-Feld bei dieser Art der Abfrage nicht mehr verwendet werden kann!
    Dies ist u.U. sogar gravierender.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Antworten: 7
    Letzter Beitrag: 23-03-15, 18:21
  2. API Finden
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-07-14, 16:14
  3. Source in Bibliothek finden!
    By VWBussi in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 24-08-12, 10:34
  4. doppelte Sätze finden = > SQL
    By heynem in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 05-12-02, 09:59
  5. DUPSPLF nicht zu finden
    By Sascha in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 09-07-02, 10:08

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •