DataImportHandler *can't* work out with Oracle 12c and Solr 6.3.
Query in nested entities are called, the mapping values are not in child's
WHERE clause.
What is the cause of this error? I want some help.


## data-config.xml

<dataConfig>
  <dataSource type="JdbcDataSource"
              driver="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@localhost:1521/bookstore" 
              user="bookadmin" 
              password="bookpass"/>
  <document>
    <entity name="books" query="select book_id, title from books where
deleted = 0" >
      <field column="book_id" name="book_id" />
      <field column="title" name="title" />
      <entity name="contents" query="select book_id, content_id, content
from contents where book_id = ${books.book_id} and deleted = 0" >
        <field column="book_id" name="book_id" />
        <field column="content_id" name="content_id" />
        <field column="content" name="content" />
      </entity>
    </entity>
  </document>
</dataConfig>


## Tables

CREATE TABLE books (
 book_id     number(11)       NOT NULL PRIMARY KEY,
 title       varchar2(128)    DEFAULT NULL,
 deleted     number(1)        DEFAULT 0
);

CREATE TABLE contents (
 book_id          number(11)      NOT NULL,
 content_id       number(11)      NOT NULL,
 content          varchar2(2048)  NOT NULL,
 deleted          number(1)       DEFAULT 0
);
ALTER TABLE contents ADD CONSTRAINT contents_pk PRIMARY KEY (book_id,
content_id);
ALTER TABLE contents ADD CONSTRAINT contents_fk FOREIGN KEY (book_id)
REFERENCES books(book_id);


## Data

INSERT INTO books(book_id, title) VALUES ('1', 'First');
INSERT INTO books(book_id, title) VALUES ('2', 'Second');
INSERT INTO books(book_id, title) VALUES ('3', 'Third');

INSERT INTO contents(book_id, content_id, content) VALUES (1,1,'During the
Middle Ages');
INSERT INTO contents(book_id, content_id, content) VALUES (1,2,'The
Renaissance began in Italy');
INSERT INTO contents(book_id, content_id, content) VALUES (2,1,'By the
mid-19th century');
INSERT INTO contents(book_id, content_id, content) VALUES (3,1,'Italy has
the third largest economy');


## schema.xml

<field name="book_id" type="tint" multiValued="false" indexed="true"
stored="true" required="true" />
<field name="content_id" type="tint" multiValued="false" indexed="true"
stored="true" />
<field name="title" type="text_general" multiValued="false" indexed="true"
stored="true"/>
<field name="content" type="text_general" multiValued="true" indexed="true"
stored="true" />


## Error messages in /var/solr/logs/solr.log

2017-01-20 12:29:00.853 ERROR (Thread-17) [   x:bookstore]
o.a.s.h.d.DocBuilder Exception while processing: books document :
SolrInputDocument(fields: [book_id=1,
title=First]):org.apache.solr.handler.dataimport.DataImportHandlerException:
Unable to execute query: select book_id, content_id, content from contents
where book_id =  and deleted = 0 Processing Document # 1
        at
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:69)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:327)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.createResultSetIterator(JdbcDataSource.java:288)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:283)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:52)
        at
org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
        at
org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
        at
org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:244)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:516)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)
        at
org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329)
        at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
        at
org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416)
        at
org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:475)
        at
org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:458)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00936: missing expression

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
        at
oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
        at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
        at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
        at
oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1792)
        at
oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1745)
        at
oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:334)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.executeStatement(JdbcDataSource.java:349)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:321)
        ... 15 more

2017-01-20 12:29:00.854 INFO  (Thread-17) [   x:bookstore]
o.a.s.u.p.LogUpdateProcessorFactory [bookstore]  webapp=/solr
path=/dataimport
params={core=bookstore&optimize=false&indent=on&commit=true&name=dataimport&clean=true&wt=json&command=full-import&_=1484914018516&verbose=false}
status=0 QTime=11{deleteByQuery=*:* (-1557046587856781312)} 0 601
2017-01-20 12:29:00.856 ERROR (Thread-17) [   x:bookstore]
o.a.s.h.d.DataImporter Full Import failed:java.lang.RuntimeException:
java.lang.RuntimeException:
org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to
execute query: select book_id, content_id, content from contents where
book_id =  and deleted = 0 Processing Document # 1
        at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270)
        at
org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416)
        at
org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:475)
        at
org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:458)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException:
org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to
execute query: select book_id, content_id, content from contents where
book_id =  and deleted = 0 Processing Document # 1
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:416)
        at
org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329)
        at
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
        ... 4 more
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException:
Unable to execute query: select book_id, content_id, content from contents
where book_id =  and deleted = 0 Processing Document # 1
        at
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:69)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:327)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.createResultSetIterator(JdbcDataSource.java:288)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:283)
        at
org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:52)
        at
org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
        at
org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
        at
org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:244)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:516)
        at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)
        ... 6 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00936: missing expression

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
        at
oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
        at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
        at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
        at
oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1792)
        at
oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1745)
        at
oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:334)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.executeStatement(JdbcDataSource.java:349)
        at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:321)
        ... 15 more




--
View this message in context: 
http://lucene.472066.n3.nabble.com/DIH-do-not-work-Child-entity-cannot-refer-parent-s-id-tp4315023.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to