[JBoss JIRA] (TEIID-4619) left join returns wrong results
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4619?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4619.
---------------------------------
> left join returns wrong results
> -------------------------------
>
> Key: TEIID-4619
> URL: https://issues.jboss.org/browse/TEIID-4619
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 9.0.4, 9.0.5
> Reporter: Bram Gadeyne
> Assignee: Steven Hawkins
> Priority: Critical
> Attachments: correct_result.txt, enclosed_queryplan.txt, query1_enclosed_plan.txt, query1_plan.txt, query2_plan.txt, teiid_reduced_case.txt, wrong_result.txt
>
>
> I have the following situation.
> I have a temporary table #tmp_admissions that contains 8047 rows.
> In this first query there are 66290 results. However if I only look at the lines for infectionid 880 then there are only 16 lines.
> {code:sql}
> select l.infectionid, l.id as linkid, lc.linkcultureid, lc.responsibleculture, lc.culturealternative, cl.sampleinsertts, cl.specimennumber,
> cl.culturenumber, cl.culturename, cl.quotation, ls.material, ls.sampletime,
> abr.culturenumber as abgram_culturenumber,abr.antibiogrampart, abr.resisttype,
> lc.antibiogramculturenr,lc.antibiogramspecimennr,lc.antibiogramsampleinsertts
> from #tmp_admissions adm
> join cos2_links l on l.admissionid = cast(adm.patientid as string)
> join cos2_link_culture lc on lc.linkid = l.id
> left join cos2_lab_culture cl on cl.culturenumber = lc.culturenr and cl.specimennumber = lc.culturespecimennr and cl.sampleinsertts = lc.culturesampleinsertts
> left join cos2_lab_sample ls on ls.inserttime = cl.sampleinsertts and ls.specimennumber = cl.specimennumber
> left join cos2_antibiogramresistences abr on abr.specimennumber = cl.specimennumber and abr.culturenumber = cl.culturenumber and abr.sampleinsertts = cl.sampleinsertts
> {code}
> This query does almost the same but returns 30 rows (and is correct).
> {code:sql}
> select l.infectionid, l.id as linkid, lc.linkcultureid, lc.responsibleculture, lc.culturealternative, cl.sampleinsertts, cl.specimennumber,
> cl.culturenumber, cl.culturename, cl.quotation, ls.material, ls.sampletime,
> abr.culturenumber as abgram_culturenumber,abr.antibiogrampart, abr.resisttype,
> lc.antibiogramculturenr,lc.antibiogramspecimennr,lc.antibiogramsampleinsertts
> from cos2_links l
> join cos2_link_culture lc on lc.linkid = l.id
> left join cos2_lab_culture cl on cl.culturenumber = lc.culturenr and cl.specimennumber = lc.culturespecimennr and cl.sampleinsertts = lc.culturesampleinsertts
> left join cos2_lab_sample ls on ls.inserttime = cl.sampleinsertts and ls.specimennumber = cl.specimennumber
> left join cos2_antibiogramresistences abr on abr.specimennumber = cl.specimennumber and abr.culturenumber = cl.culturenumber and abr.sampleinsertts = cl.sampleinsertts
> where l.infectionid = 880
> {code}
> cos2_link_culture contains 2 rows for this infectionid. The left join statements should result in 15 rows for both rows. However the left join results in the first query for the first row are null and to my understanding ignored. I'll attach the query plans for both queries.
> I should note that there is a one to many relation between infection and admission so therefore infectionid is for the same admission.
> Strangely enough if you enclode the first query in a group by query and count the rows it does indeed return 2 times 15 for the specific groups (see enclosed_queryplan.txt).
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-4431) ASSERTION FAILED: expected reference to be not null
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4431?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4431.
---------------------------------
> ASSERTION FAILED: expected reference to be not null
> ---------------------------------------------------
>
> Key: TEIID-4431
> URL: https://issues.jboss.org/browse/TEIID-4431
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 8.12.x
> Reporter: Chenna Krishna
> Assignee: Steven Hawkins
>
> We are using TEIID 8.12 driver for Jasper. Getting the below query when tried to trigger the query.
> Caused by: java.lang.AssertionError: ASSERTION FAILED: expected reference to be not null
> select "DOX_JB_EAM_FOLDER_SP"."EAM_CODE" as "DOX_JB_EAM_FOLDER_SP_EAM_CODE",
> "DOX_JB_EAM_FOLDER_SP"."OBJECT_NAME" as "DOX_JB_EAM_FOLDER_SP_OBJECT_NAME",
> "DT_DOX_JB_EAM_DOC_SP_CA"."R_CREATION_DATE" as "DT_DOX_JB_EAM_DOC_SP_CA_R_CREATION_DATE",
> "DT_DOX_JB_EAM_DOC_SP_EAM"."R_CREATION_DATE" as "DT_DOX_JB_EAM_DOC_SP_EAM_R_CREATION_DATE",
> "DT_ODS_AGENT_PROFILES"."AGENT_CODE" as "DT_ODS_AGENT_PROFILES_AGENT_CODE",
> "DT_ODS_AGENT_PROFILES"."AGENT_NAME" as "DT_ODS_AGENT_PROFILES_AGENT_NAME",
> "DT_ODS_AGENT_PROFILES"."MODIFICATION_DATE" as "DT_ODS_AGENT_PROFILES_MODIFICATION_DATE",
> "DT_ODS_AGENT_PROFILES"."OPEN_DATE" as "DT_ODS_AGENT_PROFILES_OPEN_DATE",
> "DT_ODS_AGENT_PROFILES"."STATUS" as "DT_ODS_AGENT_PROFILES_STATUS"
> from "DOX_JASPER_DXTR_USER"."JB_EAM_FOLDER_SP_SG" "DOX_JB_EAM_FOLDER_SP"
> left outer join (SELECT AGENT_CODE, AGENT_NAME, MODIFICATION_DATE, OPEN_DATE, CASE WHEN STATUS = 'A' THEN 'Inactive' WHEN STATUS = '' THEN 'Active' ELSE STATUS END AS STATUS FROM ODS.AGENT_PROFILES WHERE FLG_ACTIVE = 'Y') "DT_ODS_AGENT_PROFILES" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_ODS_AGENT_PROFILES"."AGENT_CODE")
> left outer join (SELECT D.DOC_CODE, D.EAM_CODE, D.OBJECT_NAME, D.R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG D INNER JOIN (SELECT EAM_CODE, DOC_CODE, MAX(R_CREATION_DATE) R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG WHERE DOC_CODE = 'E115' GROUP BY EAM_CODE, DOC_CODE) T ON D.EAM_CODE = T.EAM_CODE AND D.DOC_CODE = T.DOC_CODE AND D.R_CREATION_DATE = T.R_CREATION_DATE) "DT_DOX_JB_EAM_DOC_SP_CA" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_DOX_JB_EAM_DOC_SP_CA"."EAM_CODE")
> left outer join (SELECT D.DOC_CODE, D.EAM_CODE, D.OBJECT_NAME, D.R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG D INNER JOIN (SELECT EAM_CODE, DOC_CODE, MAX(R_CREATION_DATE) R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG WHERE DOC_CODE = 'E109' GROUP BY EAM_CODE, DOC_CODE) T ON D.EAM_CODE = T.EAM_CODE AND D.DOC_CODE = T.DOC_CODE AND D.R_CREATION_DATE = T.R_CREATION_DATE) "DT_DOX_JB_EAM_DOC_SP_EAM" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_DOX_JB_EAM_DOC_SP_EAM"."EAM_CODE")
> order by "DT_ODS_AGENT_PROFILES_AGENT_CODE"
> limit 200001
> Error Log:
> Caused by: com.jaspersoft.commons.dataset.DataSetException: Exception calling JRDataSource.next() for query select "DOX_JB_EAM_FOLDER_SP"."EAM_CODE" as "DOX_JB_EAM_FOLDER_SP_EAM_CODE",
> "DOX_JB_EAM_FOLDER_SP"."OBJECT_NAME" as "DOX_JB_EAM_FOLDER_SP_OBJECT_NAME",
> "DT_DOX_JB_EAM_DOC_SP_CA"."R_CREATION_DATE" as "DT_DOX_JB_EAM_DOC_SP_CA_R_CREATION_DATE",
> "DT_DOX_JB_EAM_DOC_SP_EAM"."R_CREATION_DATE" as "DT_DOX_JB_EAM_DOC_SP_EAM_R_CREATION_DATE",
> "DT_ODS_AGENT_PROFILES"."AGENT_CODE" as "DT_ODS_AGENT_PROFILES_AGENT_CODE",
> "DT_ODS_AGENT_PROFILES"."AGENT_NAME" as "DT_ODS_AGENT_PROFILES_AGENT_NAME",
> "DT_ODS_AGENT_PROFILES"."MODIFICATION_DATE" as "DT_ODS_AGENT_PROFILES_MODIFICATION_DATE",
> "DT_ODS_AGENT_PROFILES"."OPEN_DATE" as "DT_ODS_AGENT_PROFILES_OPEN_DATE",
> "DT_ODS_AGENT_PROFILES"."STATUS" as "DT_ODS_AGENT_PROFILES_STATUS"
> from "DOX_JASPER_DXTR_USER"."JB_EAM_FOLDER_SP_SG" "DOX_JB_EAM_FOLDER_SP"
> left outer join (SELECT AGENT_CODE, AGENT_NAME, MODIFICATION_DATE, OPEN_DATE, CASE WHEN STATUS = 'A' THEN 'Inactive' WHEN STATUS = '' THEN 'Active' ELSE STATUS END AS STATUS FROM ODS.AGENT_PROFILES WHERE FLG_ACTIVE = 'Y') "DT_ODS_AGENT_PROFILES" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_ODS_AGENT_PROFILES"."AGENT_CODE")
> left outer join (SELECT D.DOC_CODE, D.EAM_CODE, D.OBJECT_NAME, D.R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG D INNER JOIN (SELECT EAM_CODE, DOC_CODE, MAX(R_CREATION_DATE) R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG WHERE DOC_CODE = 'E115' GROUP BY EAM_CODE, DOC_CODE) T ON D.EAM_CODE = T.EAM_CODE AND D.DOC_CODE = T.DOC_CODE AND D.R_CREATION_DATE = T.R_CREATION_DATE) "DT_DOX_JB_EAM_DOC_SP_CA" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_DOX_JB_EAM_DOC_SP_CA"."EAM_CODE")
> left outer join (SELECT D.DOC_CODE, D.EAM_CODE, D.OBJECT_NAME, D.R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG D INNER JOIN (SELECT EAM_CODE, DOC_CODE, MAX(R_CREATION_DATE) R_CREATION_DATE FROM DOX_JASPER_DXTR_USER.JB_EAM_DOC_SP_SG WHERE DOC_CODE = 'E109' GROUP BY EAM_CODE, DOC_CODE) T ON D.EAM_CODE = T.EAM_CODE AND D.DOC_CODE = T.DOC_CODE AND D.R_CREATION_DATE = T.R_CREATION_DATE) "DT_DOX_JB_EAM_DOC_SP_EAM" on ("DOX_JB_EAM_FOLDER_SP"."EAM_CODE" = "DT_DOX_JB_EAM_DOC_SP_EAM"."EAM_CODE")
> order by "DT_ODS_AGENT_PROFILES_AGENT_CODE"
> limit 200001
> at com.jaspersoft.commons.semantic.dsimpl.JRQueryDataSet$JRDataSetIterator.next(JRQueryDataSet.java:456)
> at com.jaspersoft.commons.datarator.CachedData.fetchData(CachedData.java:217)
> ... 138 more
> Caused by: net.sf.jasperreports.engine.JRException: Error executing SQL statement for: null.
> at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:344)
> at com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuter.createDatasource(JRTimezoneJdbcQueryExecuter.java:169)
> at com.jaspersoft.commons.util.JSControlledJdbcQueryExecuter.run(JSControlledJdbcQueryExecuter.java:157)
> ... 1 more
> Caused by: org.teiid.jdbc.TeiidSQLException: ASSERTION FAILED: expected reference to be not null
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
> at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:703)
> at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:64)
> at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:542)
> at org.teiid.client.util.ResultsFuture.addCompletionListener(ResultsFuture.java:148)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:538)
> at org.teiid.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:260)
> at org.teiid.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:73)
> at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:310)
> ... 3 more
> Regards,
> Chenna
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-4516) Add support for updating child objects
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4516?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4516.
---------------------------------
> Add support for updating child objects
> --------------------------------------
>
> Key: TEIID-4516
> URL: https://issues.jboss.org/browse/TEIID-4516
> Project: Teiid
> Issue Type: Feature Request
> Components: JDG Connector
> Affects Versions: 8.12.7.6_3, 9.2
> Reporter: Jan Stastny
> Assignee: Van Halbert
>
> When using complex pojo with JDG 6.6, updating child tables doesn't do anything. It doesn't update the rows, but neither throws exception.
> The problem appears for both usages of JDG cache (annotated POJOs, protobuf+marshaller). I have following pojo structure:
> {code:plain}
> package org.jboss.qe.jdg.remote.protobuf.complex;
> /* @Indexed */
> message Person {
>
> /* @IndexedField(index=true, store=false) */
> required int32 id = 1;
>
> /* @IndexedField */
> required string name = 2;
>
> /* @IndexedField */
> optional string email = 3;
>
> /* @IndexedField(index=true, store=false) */
> repeated PhoneNumber phones = 4;
> /* @Indexed */
> message Address {
>
> /* @IndexedField */
> required string Address = 1;
>
> /* @IndexedField(index=true, store=false) */
> required string City = 2;
>
> /* @IndexedField(index=true, store=false) */
> required string State = 3;
> }
> /* @IndexedField(index=true, store=false) */
> optional Address address = 5;
> }
>
> /* @Indexed */
> message PhoneNumber {
>
> /* @IndexedField */
> required string number = 1;
> }
> {code}
> That is, one top-level POJO class Person, and two child POJO classes: Address(1-to-1) and PhoneNumber(1-to-N). Neither Address nor PhoneNumber tables could be updated. The DDL is following:
> {code:sql}
> CREATE FOREIGN TABLE Address (
> Address string NOT NULL PRIMARY KEY OPTIONS (NAMEINSOURCE 'address.Address', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> City string NOT NULL OPTIONS (NAMEINSOURCE 'address.City', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> State string NOT NULL OPTIONS (NAMEINSOURCE 'address.State', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
> CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'address')
> ) OPTIONS (UPDATABLE TRUE);
>
> CREATE FOREIGN TABLE Person (
> id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
> name string NOT NULL OPTIONS (NAMEINSOURCE 'name', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> email string OPTIONS (NAMEINSOURCE 'email', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> CONSTRAINT PK_ID PRIMARY KEY(id)
> ) OPTIONS (UPDATABLE TRUE);
>
> CREATE FOREIGN TABLE PhoneNumber (
> number string NOT NULL PRIMARY KEY OPTIONS (NAMEINSOURCE 'phones.number', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
> id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
> CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'phones')
> ) OPTIONS (UPDATABLE TRUE);
> {code}
> INSERT queries to prepare data:
> {code:sql}
> INSERT INTO Person(id,name,email) VALUES (1,'name1','email1')
> INSERT INTO Address(id,Address,City,State) VALUES (1,'address1','city1','state1')
> INSERT INTO PhoneNumber(id, number) VALUES (1, '001234567')
> INSERT INTO PhoneNumber(id, number) VALUES (1, '001234568')
> {code}
> UPDATE queries and queries for checking results:
> * 1-to-1
> {code:sql}UPDATE Address SET city='newCity' WHERE id=1{code}
> {code:sql}SELECT * FROM Person,Address{code}
> * 1-to-n
> {code:sql}UPDATE PhoneNumber SET number='newNumber' WHERE id=1{code}
> {code:sql}SELECT * FROM Person,PhoneNumber{code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-4945) Teiid java client error (Column name "VDBName" does not exist)
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4945?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4945.
---------------------------------
> Teiid java client error (Column name "VDBName" does not exist)
> --------------------------------------------------------------
>
> Key: TEIID-4945
> URL: https://issues.jboss.org/browse/TEIID-4945
> Project: Teiid
> Issue Type: Bug
> Components: JDBC Driver
> Affects Versions: 9.2.3
> Environment: Running teiid 9.2.3 on wildfly, failing using java client with 9.2.3 driver and sucess using protege with driver 9.2.3. both use ontop for mapping the data from db to the ontology.
> Reporter: Fábio Guilherme
> Assignee: Steven Hawkins
> Attachments: screenshot-1.png
>
>
> This java client uses ontop to make the mapping from a db to a ontology. I had prior version where i was mapping my data from a postgres db to the ontology using ontop, in my recent version i changed the db to a teiid db(where i get the error).
> Using teiid 9.2.3 and wildfly with java client with 9.2.3 driver i get this error:
> {color:red}Error obtaining the Metadataorg.teiid.jdbc.TeiidSQLException: Column name "VDBName" does not exist.
> 09:31:15.411 [http-nio-8081-exec-8] ERROR i.u.k.o.o.owlapi3.QuestOWL - Could not initialize the Quest query answering engine. Answering queries will not be available.
> 09:31:15.427 [http-nio-8081-exec-8] ERROR i.u.k.o.o.owlapi3.QuestOWL - java.lang.NullPointerException
> it.unibz.krdb.obda.model.OBDAException: java.lang.NullPointerException{color}
> i used the same driver(9.2.3) on protege with ontop-pro and i dont get any error.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-5038) Couchbase importer.sampleKeyspaces not resctricting document types imported
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5038?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-5038.
---------------------------------
> Couchbase importer.sampleKeyspaces not resctricting document types imported
> ---------------------------------------------------------------------------
>
> Key: TEIID-5038
> URL: https://issues.jboss.org/browse/TEIID-5038
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Jan Stastny
> Assignee: Steven Hawkins
> Priority: Critical
>
> A vdb with importer.sampleKeyspaces property doesn't restrict the keyspaces imported. From the docs:
> ??A comma-separate list of the keyspace names, used to fine-grained control which keyspaces should be mapped, by default map all keyspaces.??
> I have two keyspaces:
> * dvqe_small
> * dvqe_other
> The dvqe_small one contains ONLY types:
> * SmallA
> * SmallB
> But this vdb:
> {code:xml|title=vdb with sampleKeyspaces}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <vdb name="couchbase_crud" version="1">
> <model name="Source" type="PHYSICAL" visible="true">
> <property name="importer.typeNameList" value="`dvqe_small`:`type`,`dvqe_other`:`type`"/>
> <property name="importer.sampleKeyspaces" value="`dvqe_small`"/>
> <source name="Source" connection-jndi-name="java:/couchbase_crud" translator-name="couchbase"/>
> </model>
> </vdb>
> {code}
> is imported the same as this one:
> {code:xml|title=vdb without sampleKeyspaces}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <vdb name="couchbase_crud" version="1">
> <model name="Source" type="PHYSICAL" visible="true">
> <property name="importer.typeNameList" value="`dvqe_small`:`type`,`dvqe_other`:`type`"/>
> <source name="Source" connection-jndi-name="java:/couchbase_crud" translator-name="couchbase"/>
> </model>
> </vdb>
> {code}
> With resulting DDL containing OTHER types than those defined in dvqe_small keyspace:
> {code:sql|title=import result}
> SET NAMESPACE 'http://www.teiid.org/translator/couchbase/2017' AS teiid_couchbase;
> CREATE FOREIGN TABLE dvqe_crud (
> documentID string,
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_crud`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false');
> CREATE FOREIGN TABLE LargeA (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_other`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_other`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_other`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''LargeA''');
> CREATE FOREIGN TABLE LargeB (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_other`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_other`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_other`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''LargeB''');
> CREATE FOREIGN TABLE MediumA (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_other`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_other`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_other`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''MediumA''');
> CREATE FOREIGN TABLE MediumB (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_other`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_other`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_other`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_other`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_other`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_other`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''MediumB''');
> CREATE FOREIGN TABLE SmallA (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_small`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_small`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_small`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_small`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_small`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''SmallA''');
> CREATE FOREIGN TABLE SmallB (
> documentID string,
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`BigDecimalValue`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`BigIntegerValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`dvqe_small`.`BooleanValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`ByteNum`'),
> CharValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`CharValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`DateValue`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`DoubleNum`'),
> FloatNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`FloatNum`'),
> IntKey integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`IntKey`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`LongNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`ShortValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`dvqe_small`.`StringKey`'),
> StringNum string OPTIONS (NAMEINSOURCE '`dvqe_small`.`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`TimeValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`dvqe_small`.`TimestampValue`'),
> type string OPTIONS (NAMEINSOURCE '`dvqe_small`.`type`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`dvqe_small`.`IntNum`'),
> CONSTRAINT PK0 PRIMARY KEY(documentID)
> ) OPTIONS (NAMEINSOURCE '`dvqe_small`', UPDATABLE TRUE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''SmallB''');
> CREATE FOREIGN PROCEDURE getDocument(IN id string NOT NULL OPTIONS (ANNOTATION 'The document id of what documents to return'), IN keyspace string NOT NULL OPTIONS (ANNOTATION 'The keyspace name used to retrieve the document')) RETURNS TABLE (result blob)
> OPTIONS (ANNOTATION 'Return a json document that match the given document id as BLOB')
> CREATE FOREIGN PROCEDURE getDocuments(IN id string NOT NULL OPTIONS (ANNOTATION 'The document id or SQL like pattern of what documents to return, for example, the ''%'' sign is used to define wildcards (missing letters) both before and after the pattern'), IN keyspace string NOT NULL OPTIONS (ANNOTATION 'The keyspace name used to retrieve the documents')) RETURNS TABLE (result blob)
> OPTIONS (ANNOTATION 'Returns json documents that match the given document id or id pattern as BLOBs')
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-4728) Views are not multi-source aware - only source tables
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4728?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4728.
---------------------------------
> Views are not multi-source aware - only source tables
> -----------------------------------------------------
>
> Key: TEIID-4728
> URL: https://issues.jboss.org/browse/TEIID-4728
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 8.12.6.6_3
> Reporter: Debbie Steigner
> Assignee: Steven Hawkins
>
> Views are not multi-source aware - only source tables. You have to explicitly have a source_name column on the view that maps to the respective source name columns in Dynamic VDB.
> I'm not using Designer just a very basic dynamic VDB[1], if I "select
> id, SOURCE_NAME from emp" I get results, this is the physical table. If
> I query the empview, select id, SOURCE_NAME from empview I get the teiid
> processor error "TEIID30020 Processing exception for request
> MwpyLkSYMked.14 'TEIID31118 Element "SOURCE_NAME" is not defined by any
> relevant group.' unless I add the SOURCE_NAME column to the view, so it
> doesn't even make it to a source query.
> [1]
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <vdb name="multi_basic" version="1">
> <description/>
> <property name="validationDateTime" value="Mon Oct 31 08:01:36 CDT 2016"/>
> <property name="validationVersion" value="8.12.6"/>
> <model name="multi_phy" type="PHYSICAL" visible="true">
> <property name="multisource" value="true"/>
> <source connection-jndi-name="java:/deb" name="deb"
> translator-name="postgresql"/>
> <source connection-jndi-name="java:/dv63" name="dv63"
> translator-name="postgresql"/>
> <metadata type="DDL"><![CDATA[
> CREATE FOREIGN TABLE emp (
> id integer NOT NULL OPTIONS(NAMEINSOURCE '"id"', NATIVE_TYPE
> 'int4', CASE_SENSITIVE 'FALSE', FIXED_LENGTH 'TRUE', SEARCHABLE
> 'ALL_EXCEPT_LIKE'),
> name string(2147483647) OPTIONS(NAMEINSOURCE '"name"', NATIVE_TYPE
> 'text'),
> SOURCE_NAME string(50),
> CONSTRAINT pk_emp PRIMARY KEY(id)
> ) OPTIONS(UPDATABLE 'true',NAMEINSOURCE '"public"."emp"')
> ]]></metadata>
> </model>
> <model name="multiv" type="VIRTUAL" visible="true">
> <property name="imports" value="multi"/>
> <metadata type="DDL"><![CDATA[
> CREATE VIEW empview (
> id integer,
> name string(100)
> )
> AS
> SELECT id,name FROM multi_phy.emp
> ]]></metadata>
> </model>
> </vdb>
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-5167) PrestoDB translator - NULL values are not allowed on the probe side of SemiJoin operator
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5167?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-5167.
---------------------------------
> PrestoDB translator - NULL values are not allowed on the probe side of SemiJoin operator
> ----------------------------------------------------------------------------------------
>
> Key: TEIID-5167
> URL: https://issues.jboss.org/browse/TEIID-5167
> Project: Teiid
> Issue Type: Bug
> Components: JDBC Driver
> Affects Versions: 8.12.x-6.4
> Reporter: Andrej Šmigala
> Assignee: Steven Hawkins
>
> When running queries containg a subquery such as
> {code:sql}
> SELECT INTKEY, DOUBLENUM FROM BQT1.SMALLA WHERE DOUBLENUM <> ALL (SELECT DOUBLENUM FROM BQT1.SMALLA WHERE INTKEY = 40)
> {code}
> An exception is thrown:
> {noformat}
> org.teiid.translator.TranslatorException: Unexpected exception while translating results: Query failed (#20171121_103829_00016_8zhqn): NULL values are not allowed on the probe side of SemiJoin operator. See the query plan for details.
> at org.teiid.translator.jdbc.JDBCQueryExecution.next(JDBCQueryExecution.java:351) [translator-jdbc-8.12.11.6_4-redhat-64-7.jar:8.12.11.6_4-redhat-64-7]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:433)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_141]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_141]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_141]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_141]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy80.more(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:309)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_141]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_141]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_141]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141]
> Caused by: java.sql.SQLException: Query failed (#20171121_103829_00016_8zhqn): NULL values are not allowed on the probe side of SemiJoin operator. See the query plan for details.
> at com.facebook.presto.jdbc.PrestoResultSet.resultsException(PrestoResultSet.java:1799)
> at com.facebook.presto.jdbc.PrestoResultSet$ResultsPageIterator.computeNext(PrestoResultSet.java:1787)
> at com.facebook.presto.jdbc.PrestoResultSet$ResultsPageIterator.computeNext(PrestoResultSet.java:1756)
> at com.facebook.presto.jdbc.internal.guava.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
> at com.facebook.presto.jdbc.internal.guava.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
> at com.facebook.presto.jdbc.internal.guava.collect.TransformedIterator.hasNext(TransformedIterator.java:42)
> at com.facebook.presto.jdbc.internal.guava.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
> at com.facebook.presto.jdbc.internal.guava.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
> at com.facebook.presto.jdbc.PrestoResultSet.next(PrestoResultSet.java:149)
> at org.jboss.jca.adapters.jdbc.WrappedResultSet.next(WrappedResultSet.java:1862)
> at org.teiid.translator.jdbc.JDBCQueryExecution.next(JDBCQueryExecution.java:338) [translator-jdbc-8.12.11.6_4-redhat-64-7.jar:8.12.11.6_4-redhat-64-7]
> ... 19 more
> {noformat}
> The query is translated as
> {code:sql}
> SELECT g_0.intkey AS c_0, g_0.doublenum AS c_1 FROM smalla AS g_0 WHERE g_0.doublenum NOT IN (SELECT g_1.doublenum FROM smalla AS g_1 WHERE g_1.intkey = 40)
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months
[JBoss JIRA] (TEIID-4662) jBPM workbench may give us some hints for a moderner web ui
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4662?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4662.
---------------------------------
> jBPM workbench may give us some hints for a moderner web ui
> -----------------------------------------------------------
>
> Key: TEIID-4662
> URL: https://issues.jboss.org/browse/TEIID-4662
> Project: Teiid
> Issue Type: Feature Request
> Reporter: Kylin Soong
> Assignee: Steven Hawkins
> Attachments: screen-1.png, screen-2.png, screen-3.png, screen-4.png
>
>
> I have installed a jBPM and looked it roughly, found that the jbpm workbench looks more beautiful, especially there is a DataSet panels, almost do the same work of what Our designer do, as [1], current, RDBMS. excel/csv file, Elastic Search be support to import and mapping in web UI.
> Also the UI more moderner than our Designer, I would attach some screenshot
> [1] https://docs.jboss.org/jbpm/release/6.5.0.Final/jbpm-docs/html/ch09.html#...
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 4 months