Bug report #13096
QgsVectorLayerImport does not work for Oracle Provider
|Affected QGIS version:||2.10.0||Regression?:||No|
|Operating System:||Easy fix?:||No|
|Pull Request or Patch supplied:||No||Resolution:||end of life|
|Crashes QGIS or corrupts data:||No||Copied to github as #:||21163|
I've tried to import a very basic layer (shapefile with two numeric attributes) with the import method of QgsVectorLayerImport class (under Python).
The return code is always ErrInvalidLayer (8) and I've got the message "Loading of layer failed".
There is also this error in the Oracle tab of the logs:
"DBPAT"."CTEST" has no valid geometry types. SQL: SELECT DISTINCT gtype FROM (SELECT t."GEOM".sdo_gtype AS gtype FROM "DBPAT"."CTEST" t WHERE rownum<1000) WHERE rownum<=2
As far as I can see, the table is created in the Oracle database with only one attribute: the geom one.
But it won't go further: the layer is empty.
When QGIS tries to open an Oracle layer it tries to find the geometry type. But this doesn't work on empty table as Oracle metadata don't care about geometry type.
I suspect this is where the import failed: QGIS is not able to find the geometry type of the empty layer that has been just created and it can"t open it leading to the invalid layer error.
I am not sure about how to proceed but I have seen that there is already a workaround for Shapefiles in src/core/qgsvectorlayerimport.cpp . Perhaps could we add another one for Oracle layers where we force the geometry type for the layer to be the same than the layer to import. It could take place in the constructor. We could add the geometry type in the uri variable and I think that the Oracle provier will be able to open the layer.
Thanks for fixing this...
#2 Updated by Jean-Louis Stanus almost 3 years ago
Got the same problem i think. Question with bounty opened on GIS stack exchange
I applied this to uri instance
but not working
#4 Updated by Giovanni Manghi about 1 year ago
- Resolution set to end of life
- Status changed from Open to Closed
End of life notice: QGIS 2.18 LTR
QGIS 3.4 has recently become our new Long Term Release (LTR) version. This is a major step in our history – a long term release version based on the massive updates, library upgrades and improvements that we carried out in the course of the 2.x to 3x upgrade cycle.
We strongly encourage all users who are currently using QGIS 2.18 LTR as their preferred QGIS release to migrate to QGIS 3.4. This new LTR version will receive regular bugfixes for at least one year. It also includes hundreds of new functions, usability improvements, bugfixes, and other goodies. See the relevant changelogs for a good sampling of all the new features that have gone into version 3.4
Most plugins have been either migrated or incorporated into the core QGIS code base.
We strongly discourage the continued use of QGIS 2.18 LTR as it is now officially unsupported, which means we’ll not provide any bug fix releases for it.
You should also note that we intend to close all bug tickets referring to the now obsolete LTR version. Original reporters will receive a notification of the ticket closure and are encouraged to check whether the issue persists in the new LTR, in which case they should reopen the ticket.
If you would like to better understand the QGIS release roadmap, check out our roadmap page! It outlines the schedule for upcoming releases and will help you plan your deployment of QGIS into an operational environment.
The development of QGIS 3.4 LTR has been made possible by the work of hundreds of volunteers, by the investments of companies, professionals, and administrations, and by continuous donations and financial support from many of you. We sincerely thank you all and encourage you to collaborate and support the project even more, for the long term improvement and sustainability of the QGIS project.