{"id":45,"date":"2008-10-21T22:24:54","date_gmt":"2008-10-21T22:24:54","guid":{"rendered":"http:\/\/oracle-internals.com\/blog\/?p=45"},"modified":"2014-01-26T22:25:16","modified_gmt":"2014-01-26T22:25:16","slug":"working-and-waiting","status":"publish","type":"post","link":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/","title":{"rendered":"Working and waiting\u2026"},"content":{"rendered":"<p>Just to update everyone. First, for those of you who keep bugging me, I haven\u2019t yet heard back from Oracle regarding\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/www.oracle-internals.com\/?p=39\">SibylNet<\/a>. Regardless, I\u2019m still hopeful that they will be OK with it and that I can pursue it openly. Second, I\u2019ve been \u00fcber busy writing a few open-source utilities for work including a Linux buffer cache profiler and primer, a specialized copy-on-write file versioning library based on I\/O call library interpositioning, and completely rewriting our\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/https:\/\/area51.myyearbook.com\/trac.cgi\/wiki\/Playr\">Playr<\/a>\u00a0utility (which is similar in function to\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/www.oracle.com\/database\/real-application-testing.html\">Real Application Testing<\/a>\u00a0but for\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/www.postgresql.org\/\">Postgres<\/a>\u00a0rather than Oracle). Regardless, while I\u2019m waiting on Oracle, I\u2019ve found myself becoming interested in writing a reference implementation of\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/en.wikipedia.org\/wiki\/SQL\/MED\">SQL\/MED<\/a>. SQL\/MED, SQL Management of External Data, is part of the SQL:1999, SQL:2003, and SQL:2008 standards and defines a standard interface for accessing data external to the database.<\/p>\n<p>For those of us who have used Oracle forever, we would easily relate to this concept using\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/download.oracle.com\/docs\/cd\/B28359_01\/server.111\/b28310\/ds_concepts002.htm#ADMIN12083\">database links<\/a>and\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/download.oracle.com\/docs\/cd\/B28359_01\/server.111\/b28318\/schema.htm#i36180\">external tables<\/a>. In fact, most database systems support similar functionality; SQL Server supports<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/msdn.microsoft.com\/en-us\/library\/ms188279.aspx\">Linked Servers<\/a>, DB2 supports\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/publib.boulder.ibm.com\/infocenter\/db2luw\/v8\/topic\/com.ibm.db2.ii.doc\/admin\/cfpint01.htm\">Federated Databases<\/a>, MySQL has\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/pluggable-storage-overview.html\">Pluggable Storage Engines<\/a>, Postgres has<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/www.postgresql.org\/docs\/current\/static\/dblink.html\">dblink<\/a>\u00a0and\u00a0<a href=\"https:\/\/web.archive.org\/web\/20110919002650\/http:\/\/pgfoundry.org\/projects\/dbi-link\/\">DBI-Link<\/a>, and Farrago has a JDBC implementation. Though, while only two servers support the basic SQL syntax for SQL\/MED (DB2 and Farrago), neither implement the SQL\/MED Foreign Data Wrapper (FDW) interface API. DB2 does include a Wrapper Developer Kit, but it\u2019s for C++ and Java, and does not comply with the FDW API.<\/p>\n<p>Similar to SQL\/CLI (ODBC), the FDW API consists of 87 function calls dedicated to interfacing with external data. As expected, the FDW API includes functions for fairly-routine tasks such as server connection and disconnection, SQL execution, and result fetching. However, the FDW API also includes calls for retrieving query plan information such as cardinality, degree, number of distinct rows, basic execution cost statistics, and supported predicates for pushdown.<\/p>\n<p>Of course, there\u2019s lots of other good Oracle stuff I have yet to put up here\u2026 I\u2019m just searching for what to work on next :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just to update everyone. First, for those of you who keep bugging me, I haven\u2019t yet heard back from Oracle regarding\u00a0SibylNet. Regardless, I\u2019m still hopeful that they will be OK with it and that I can pursue it openly. Second, I\u2019ve been \u00fcber busy writing a few open-source utilities for work including a Linux buffer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Working and waiting\u2026 - Oracle Internals<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Working and waiting\u2026 - Oracle Internals\" \/>\n<meta property=\"og:description\" content=\"Just to update everyone. First, for those of you who keep bugging me, I haven\u2019t yet heard back from Oracle regarding\u00a0SibylNet. Regardless, I\u2019m still hopeful that they will be OK with it and that I can pursue it openly. Second, I\u2019ve been \u00fcber busy writing a few open-source utilities for work including a Linux buffer [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\" \/>\n<meta property=\"og:site_name\" content=\"Oracle Internals\" \/>\n<meta property=\"article:published_time\" content=\"2008-10-21T22:24:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-01-26T22:25:16+00:00\" \/>\n<meta name=\"author\" content=\"Jonah Harris\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jonahharris\" \/>\n<meta name=\"twitter:site\" content=\"@jonahharris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonah Harris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\"},\"author\":{\"name\":\"Jonah Harris\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"headline\":\"Working and waiting\u2026\",\"datePublished\":\"2008-10-21T22:24:54+00:00\",\"dateModified\":\"2014-01-26T22:25:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\"},\"wordCount\":345,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\",\"url\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\",\"name\":\"Working and waiting\u2026 - Oracle Internals\",\"isPartOf\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#website\"},\"datePublished\":\"2008-10-21T22:24:54+00:00\",\"dateModified\":\"2014-01-26T22:25:16+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/oracle-internals.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Working and waiting\u2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/#website\",\"url\":\"http:\/\/oracle-internals.com\/blog\/\",\"name\":\"Oracle Internals\",\"description\":\"Researching the Inner Workings of the World&#039;s Most Powerful Database\",\"publisher\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/oracle-internals.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\",\"name\":\"Jonah Harris\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g\",\"caption\":\"Jonah Harris\"},\"logo\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jonahharris\/\",\"https:\/\/x.com\/jonahharris\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Working and waiting\u2026 - Oracle Internals","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/","og_locale":"en_US","og_type":"article","og_title":"Working and waiting\u2026 - Oracle Internals","og_description":"Just to update everyone. First, for those of you who keep bugging me, I haven\u2019t yet heard back from Oracle regarding\u00a0SibylNet. Regardless, I\u2019m still hopeful that they will be OK with it and that I can pursue it openly. Second, I\u2019ve been \u00fcber busy writing a few open-source utilities for work including a Linux buffer [&hellip;]","og_url":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/","og_site_name":"Oracle Internals","article_published_time":"2008-10-21T22:24:54+00:00","article_modified_time":"2014-01-26T22:25:16+00:00","author":"Jonah Harris","twitter_card":"summary_large_image","twitter_creator":"@jonahharris","twitter_site":"@jonahharris","twitter_misc":{"Written by":"Jonah Harris","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#article","isPartOf":{"@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/"},"author":{"name":"Jonah Harris","@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"headline":"Working and waiting\u2026","datePublished":"2008-10-21T22:24:54+00:00","dateModified":"2014-01-26T22:25:16+00:00","mainEntityOfPage":{"@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/"},"wordCount":345,"commentCount":0,"publisher":{"@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/","url":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/","name":"Working and waiting\u2026 - Oracle Internals","isPartOf":{"@id":"http:\/\/oracle-internals.com\/blog\/#website"},"datePublished":"2008-10-21T22:24:54+00:00","dateModified":"2014-01-26T22:25:16+00:00","breadcrumb":{"@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/oracle-internals.com\/blog\/2008\/10\/21\/working-and-waiting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/oracle-internals.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Working and waiting\u2026"}]},{"@type":"WebSite","@id":"http:\/\/oracle-internals.com\/blog\/#website","url":"http:\/\/oracle-internals.com\/blog\/","name":"Oracle Internals","description":"Researching the Inner Workings of the World&#039;s Most Powerful Database","publisher":{"@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/oracle-internals.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4","name":"Jonah Harris","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g","caption":"Jonah Harris"},"logo":{"@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jonahharris\/","https:\/\/x.com\/jonahharris"]}]}},"_links":{"self":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts\/45"}],"collection":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":1,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"predecessor-version":[{"id":46,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts\/45\/revisions\/46"}],"wp:attachment":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}