Is there plans to introduce D8 driver?

Also there's a https://drupal.org/project/pdo_oci module - please update project page with differences

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

andypost’s picture

Suppose better to join forces with pdo_oci to make one solid module

aaaristo’s picture

No actually we don't have a plan for it. I'll look at it once Drupal8 will be released as i've done with drupal7, because the core and api is going to change meanwhile.

pdo_oci: requires you to use a patched drupal kernel.

bohart’s picture

Hi there.

I and @DeimoS have worked for D8 oracle version.
For now, we fixed almost problems. Only transaction handling and some problems with blob data type are not resolved problems yet.
Our driver already can successfully setup Drupal 8 (minimal and standard profiles).

We are interested in further development of Oracle module.
Is there any way to join the project as co-maintainers (for D8)?

Thanks!

andypost’s picture

aaaristo’s picture

great to hear that... you are both co-maintainers now. how are simpletests going?
have you tried to run it?

bohart’s picture

Thank you, @aaaristo!

We hope to finish main works in this week (if no new problems will be found).

bohart’s picture

We have created 8.x-1.x branch for module.
Committed code successfully installs Drupal 8 core.

Small roadmap for next Drupal 8 Oracle Driver deployment:
- remove "blobs" table, insert blobs directly to needed tables;
- fix queries transaction support;
- refactor/rewrite all in "resources" folder;
- refactor/rewrite long identifiers support;
- try to run all simpletests without fails;
- refactor all driver components (Select.php, Connection.php and so on);
- fix core bug (drupal-core.patch) in Drupal 8 (so we will need commit to Drupal core) or find how we can fix problem via driver;
- apply Drupal code standards to driver :)

deimos’s picture

@aaaristo, Hi there

Currently we want to remove intermediate "blobs" table and write and read blobs directly from tables. But we need to know whether this is useful.
Can you explain what was the main idea to create "blobs" table and store blobs there?
Maybe such solution fix some critical issues? And if we remove "blobs" table we will get a lot of troubles and crush everything :)

Thanks.

aaaristo’s picture

The main problem beside it was the fact that there where some queries in the Drupal core that where doing "distinct" or "group by" clauses against lob colums. As i remember in the block.module.

andypost’s picture

locale module uses 'where on blobs' too!

I think better to write SP that will care about search (will use dbms_lob) to allow this kind of queries for long text columns.
Another way is to override conditions and rewrite query once this kind of columns are involved (the same used in mongodb)

otoh there's another approach #2068325: [META] Convert entity SQL queries to the Entity Query API

But anyway while we have db_query() usage in core and contrib this queries will require rewrite if blob/clob columns are used (nice example is draggable views module)

PS: related #1801726: EntityFieldQuery v2

bohart’s picture

Thanks to all.

@aaaristo, one more question.
What is the main point of resources like those:
- package drupal_timestamp
- function identifier.longin

Seems that they do not used anymore and we can simply remove them, right?

_
Btw, I have made new commit that fix about 20 database tests from core Testing module.
One test blocked by #2144795: ConnectionUnitTest fails with not MySQL driver and I'll create one more patch to core tests today.

aaaristo’s picture

- package drupal_timestamp: was useful to understand the content of a timestamp (number) from sql / plsql

- function identifier.longin: some module (not the core) generates long in (..,.,.,.,.,.,.,.) clauses, with more than 1000 elements in the in list. In the drupal 6 driver i was able to workaround it by creating this function, so that
a PHP regexp transforms every 1000 elements in a vargs type then pass the list of vargs to a vargst that is pipelined
by this function within an in clause like this:

select some, strange, thing from table where id in (select column_value from table(identifier.login(vargst(vargs(1-1000),vargs(1000-2000),vargs(2000-3000), etc...)))

1-1000 -> the first 1000 elements of the original in clause
1000-2000 -> the second 1000 elements of the original in clause
etc

all this because in Oracle you cannot have a list longer than 1000 elements within an in clause..... :(
http://stackoverflow.com/questions/4722220/sql-in-clause-1000-item-limit much like this

I think i never ported this on 7.x driver

deimos’s picture

Issue summary: View changes
Status: Active » Postponed

Current state of the issue:
- installation of the Drupal 8 with Oracle DB (11g) works fine;
- almost all database tests are green, some tests need to be corrected (one of them is already corrected - #2144795: ConnectionUnitTest fails with not MySQL driver, waiting for fixes of other two #2151241: Database Log does not support drivers outside core #2150031: SchemaTest fails with not MySQL driver).

Left to do:
- review and (maybe) refactor long identifiers support;
- review, refactor (and/or remove useless) all in "resources" folder.

I think it makes more sense to do all of the above after Drupal 8 release. So, mark node as 'postponed'.

aaaristo’s picture

Good job!

chx’s picture

Note that you can override whole backends if they do something stupid. This is way better than trying to bend a stupid query.

andypost’s picture

anjjriit’s picture

I'm a newbie in oracle, but i want to to test oracle 11g using drupal 8.0,
currently i have installed both of them on XAMPP for Windows 5.6.14 and bitnami for drupal.

oci8 already loaded in phpinfo and this module already located at "D:\xampp\apps\drupal\htdocs\core\lib\Drupal\Core\Database\Driver\oracle", with mysql, sqlite,pgsql.

There is no error message on installation but i do not get oracle driver at the database setting form.

Please advise, where is my wrong and how to fix it,

Thanks in advance.

anjjriit’s picture

The problem is because i left "extension=php_pdo_oci.dll".

Still get an error after submit oracle driver as option :
PDOException: SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor (ext\pdo_oci\oci_driver.c:635) in install_verify_database_ready() (line 1106 of core\includes\install.core.inc).
install_verify_database_ready(Array)
install_run_task(Array, Array)
install_run_tasks(Array)
install_drupal(Object)

mattew’s picture

Status: Postponed » Needs work

Now D8 has been released, I think we could revive this thread... :)
Some news about the tasks listed in #13 ?

juliopineda’s picture

Drupal 8.2 is available for RC testing... :-) is there any news about this?

  • bohart committed 414ea5f on 8.x-1.x
    Issue #2037119 by bohart: Drupal 8 release fixes.
    

  • bohart committed 4af79d2 on 8.x-1.x
    Issue #2037119 by bohart: Drupal 8 dev release. Fixed all coding...
bohart’s picture

Version: 7.x-1.x-dev » 8.x-1.x-dev
Status: Needs work » Fixed
FileSize
183.62 KB

All issues from issue queu are fixed regarding D8.
All core tests are passed now (oracle-xe-11g and php7.1).
Drupal 8 RC1 released.

Finally, this one can be marked as fixed after 50+ months! :)
Thanks, everyone!

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

ludiam0ndz’s picture

Category: Feature request » Support request
Priority: Normal » Critical
Issue tags: +version 8 RC1 unable to select Oracle as driver option

Hi,

I'm unable to get the Oracle Driver as an option while using the web installer. I have followed exactly all the steps required to use this plugin.

I am using composer to download drupal and manage module dependencies.

also using php fpm on PHP 7.2

I've tried with pdo_oci enabled and not enabled

Have tried putting the installer path as directed in INSTALL.txt as well as having the installer path set to the default where the mysql and pdo drivers are (this results in http 500)

Please help.