[fdo-internals] King Oracle Issue

Greg Boone greg.boone at autodesk.com
Wed Jun 10 15:06:25 EDT 2009


For the debugging issue, look to see if the pdb files that are loaded are the up to date for the dlls you are using.

From: fdo-internals-bounces at lists.osgeo.org [mailto:fdo-internals-bounces at lists.osgeo.org] On Behalf Of Thomas Knoell
Sent: Wednesday, June 10, 2009 2:42 PM
To: fdo-internals at lists.osgeo.org
Subject: [fdo-internals] King Oracle Issue

Hi,

I am working on a FDO based application that should use the King Oracle Provider to connect to a data source on an Oracle 11g instance. The application currently connects fine to an empty data store (the data store does not contain any tables) and successfully applies a test schema that consists of a feature and a non feature class. The problem arises in the following step where a describe schema request is executed. In this case, the result is one schema named KingOra and no classes. I expected the test schema and its corresponding classes being reported.

The application has access to all the DLLs that come with FDO. The DLLs were created by compiling the projects from the trunk in release mode. Due to the fact that I use MS Visual Studio C++ 2008 Express Edition, I had to open each solution and compile it separately as some of the projects referenced MFC files that are not available with the Express Edition. Those issues were corrected in the shadow and all builds succeeded.

Besides the changes to eliminate MFC references, one additional change was required in the King Oracle provider project in that the references to Oracle 10 libs were replaced by the corresponding Oracle 11 ones.

Using the command built.bat -c=release -a=install -o=c:\FdoHome on the FDO and ThirdParty directory, all DLLs were copied into the specified folder and hence made accessible to the FDO application.

The providers.xml file was modified to include the following statement for the King Oracle Provider:

  <FeatureProvider>
    <Name>King.Oracle.3.5</Name>
    <DisplayName>King Provider for Oracle</DisplayName>
    <Description>Read/write access to spatial and attribute data in an Oracle Spatial.</Description>
    <IsManaged>False</IsManaged>
    <Version>3.5.0.0</Version>
    <FeatureDataObjectsVersion>3.5.0.0</FeatureDataObjectsVersion>
    <LibraryPath>.\KingOracleProvider.dll</LibraryPath>
  </FeatureProvider>

I did perform some debugging on the code. When following the statement that retrieves the schema name (see code below), I noted that it does not hit the function that implements the retrieval of the schema name but ends up in the function FdoCollection::GetCount() (file FDO\Unmanaged\Inc\Common\Collection.h). However, following other requests like the apply schema execute or the describe schema execute call, the correct functions are hit and executed. I also did some dependency checks on some DLLs and executables and nothing missing was reported.

I assume that this may be just a simple setup issue but after trying multiple things now, I reached a point where I am not sure what to try next. If someone has any suggestions I would appreciate the feedback. Also, if there are additional questions, please let me know.

Thanks

  Thomas



      FdoPtr<FdoIDescribeSchema> describe_schema_cmd =
        (FdoIDescribeSchema*) fdo_connection->CreateCommand(
                                               FdoCommandType_DescribeSchema);
      FdoFeatureSchemasP schema_collection = describe_schema_cmd->Execute();
      FdoInt32 schema_count = schema_collection->GetCount();
      if (schema_count == 0)
          printf("   -> No schemas found \n");
      else
        for (int s = 0; s < schema_count; s++) {

          FdoFeatureSchemaP curr_schema = schema_collection->GetItem(s);
          FdoStringP curr_schema_name = curr_schema->GetName();
          printf("   -> Schema[%d]: %ls \n", s, (FdoString *)curr_schema_name);
          FdoPtr<FdoClassCollection> curr_schema_classes =
                                                curr_schema->GetClasses();
          FdoInt32 curr_schema_class_count = curr_schema_classes->GetCount();
          if (curr_schema_class_count == 0)
              printf("     -> No classes found for current schema \n");
          else
            for (int sc = 0; sc < curr_schema_class_count; sc++) {

              FdoPtr<FdoClassDefinition> curr_schema_class =
                                            curr_schema_classes->GetItem(sc);
              FdoStringP curr_schema_class_name = curr_schema_class->GetName();
              printf("     -> Class[%d]: %ls \n",
                     sc,
                     (FdoString *)curr_schema_class_name);

            }  //  for (int sc = 0; ...

        }  //  for (int s = 0; ...


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/fdo-internals/attachments/20090610/f497f317/attachment-0001.html


More information about the fdo-internals mailing list