[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    Wie kann ich den fehler finden

    Hi *all
    seltsame Sache ...
    Eine View, die es gefühlt 'Ewig' gibt knallt plötzlich.
    Ich habe ein RQ (RunQuery) auf die View gemacht und bekomme soetwas im Joblog
    PHP-Code:
    *********************************************************                
    *********************************************************                
    ****         
    ERROR OCCURED ON CREATE INDEXÜ          ****                
    *********************************************************                
    *********************************************************                
    =-=-= 
    Start of Performance Messages Lvl01 =-=-=                        
    QQPERF Subquery join composite: *YES                                   
    QQPERF 
    Dial001 Data Space004 MethodArrival Seq  J-TypeNL Join  
    QQPERF 
    Dial002 Data Space001 MethodAKTENL20     J-TypeMKF Join 
    QQPERF 
    Dial003 Data Space002 MethodSCHULP       J-TypeMKF Join 
    QQPERF 
    Dial004 Data Space003 MethodGERAZP       J-TypeMKF Join
    QQPERF 
    Dial005 Data Space005 MethodHISTMP       J-TypeMKF Join
    QQPERF 
    Dial006 Data Space006 MethodX-CBUCHP01   J-TypeMKF Join
    QQPERF 
    Field frogger or Key Sel Attempted for Dial002               
    QQPERF 
    Field frogger or Key Sel Attempted for Dial003               
    QQPERF 
    Field frogger or Key Sel Attempted for Dial004               
    QQPERF 
    Field frogger or Key Sel Attempted for Dial005               
    QQPERF 
    Frogger or Key Selection Attempted for Dial006               
    QQPERF 
    Temporary Index Field frogger Attempted.                       
    =-=-=-=-=- 
    End of Performance Messages -=-=-=-=-=                       
    *********************************************************               
    ****              
    THE CURSOR TEMPLATE                ****               
    *********************************************************               
    THE CURSOR TEMPLATE HEADER FOLLOWS:                                     
                                                              
    .    
    00000000000000000DEFC1D2E3C5D5D7   '..........AKTENP'
    .    7BE5F5D2D8E3C5D4D740404040405CD8   '#V5KQTEMP     *Q'
    .    E4C5D9E8404040404000000000000000   'UERY     .......'
    .    00000000001300000000000000000200   '................'
    .    00000000000000000000000000000000   '................'
    .    00000000000000000000000000000000   '................'
    .    00000000000000000000000000000000   '................'
    .    8000000000000000FF99F5F249001300   '.........r52ñ...'
    .    8000000000000000FF99F5F249001240   '.........r52ñ.. '
    .    00600014000000000000000000000040   '.-............. '
    .    00000000000000000000000000000000   '................'
    .    00000003000000000000000000000000   '................'
    .    8000000000000000FF99F5F24900F820   '.........r52ñ.8.'
    .    00000000000000000000000000000000   '................'
    ....
    ähnliche Daten 
    ...
    001B 040000000000000D0000000000000000   '................'              
    001C 040000000000000D0000000000000000   '................'              
    001D 040000000000000D0000000000000000   '................'              
    Field 0 in mapping template not valid when creating cursor.             
    Interner Fehler im Abfrageprozessor.                                    
    Ausgabe des Speicherauszugs an Spool-Datei 5Job 188509/QPGMR4/DSP_RJ2,
      
    erstellt auf System S4405619 am 07.07.15 12:22:45 geleitet.           
    Es kann kein Speicherauszug der angeforderten Informationen erstellt    
      werden
    .                                                               
    AnwendungsfehlerCPF4204 nicht überwacht durch QQQQUERY bei Anweisung  
      0000033039
    Instruktion X'0000'.                                      
    Abfrage kann nicht ausgeführt werdensiehe Nachrichten unterer Ebene
    Und nun?
    Wie geh ich da ran
    Die view ist riesig!.
    Muß ich die nun Schritt für schritt 'entschärfen'
    Oder kann ich in obrigen Infos nach 'irgendwas' suchen?

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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    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!)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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, 17:21
  2. API Finden
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-07-14, 15:14
  3. Source in Bibliothek finden!
    By VWBussi in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 24-08-12, 09:34
  4. doppelte Sätze finden = > SQL
    By heynem in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 05-12-02, 08:59
  5. DUPSPLF nicht zu finden
    By Sascha in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 09-07-02, 09:08

Berechtigungen

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