{"id":27,"date":"2010-01-25T22:11:59","date_gmt":"2010-01-25T22:11:59","guid":{"rendered":"http:\/\/oracle-internals.com\/blog\/?p=27"},"modified":"2014-01-26T22:13:55","modified_gmt":"2014-01-26T22:13:55","slug":"nextgres-gateway-mysql-emulator-for-oracle","status":"publish","type":"post","link":"http:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/","title":{"rendered":"NEXTGRES Gateway: MySQL Emulator for Oracle"},"content":{"rendered":"<p>So, a few people have asked me what NEXTGRES Gateway is.\u00a0 My short answer, the ultimate database compatibility server.<\/p>\n<p>Sorry if this blog entry sounds very marketing-oriented, but I\u2019ve been working on this personal project non-stop for the last 8 months and am really excited about it.<\/p>\n<p>NEXTGRES Gateway in a nutshell:<\/p>\n<ul>\n<li>Designed to assist in database\/application migration<\/li>\n<li>Written in C<\/li>\n<li>Supports TCP and UDP sockets<\/li>\n<li>Runs in multi-threaded or multi-process mode (depending on configuration)<\/li>\n<li>Runs on Windows, UNIX, Linux<\/li>\n<li>Supports MySQL, PostgreSQL, Oracle, and SQL Server\/Sybase (TDS) server-side wire-level protocols<\/li>\n<li>Supports MySQL, PostgreSQL, Oracle, and SQL Server\/Sybase (TDS) client-side wire-level protocols, as well as ODBC<\/li>\n<li>Supports pass-through SQL or syntax translation between MySQL, PostgreSQL, Oracle, and SQL Server<\/li>\n<li>Supports native procedural language execution via translation of PL\/SQL and T-SQL to C (no C complier is needed on your system though, thanks to\u00a0<a href=\"https:\/\/web.archive.org\/web\/20131219032901\/http:\/\/bellard.org\/tcc\/\">TCC<\/a>)<\/li>\n<li>Supports data type conversion to\/from MySQL, PostgreSQL, Oracle, and SQL Server\/Sybase<\/li>\n<li>Supports local statement\/result-set caching<\/li>\n<\/ul>\n<p>In this entry, I\u2019m going to focus on MySQL server emulation.<\/p>\n<p><strong>MySQL Server Emulation<\/strong><br \/>\nNow that I\u2019ve fully completed the MySQL server emulation component, something I discussed with the Oracle Data Access guys at OpenWorld, here\u2019s a couple examples for you.<\/p>\n<p>Say you have an application that runs on MySQL and you\u2019d like to migrate it to Postgres, but don\u2019t want to do any code changes.\u00a0 Well, if you\u2019re using fairly standard ODBC\/JDBC, you don\u2019t have much to worry about.\u00a0 But what if it\u2019s a PHP application using the mysql_* calls, or an application using the MySQL client libraries, or a third-party application you don\u2019t have the code for?\u00a0 The answer is to use NEXTGRES Gateway.<\/p>\n<p>NEXTGRES Gateway allows you migrate your data to another database transparently to the application.\u00a0 The general process for using NEXTGRES Gateway is as follows:<\/p>\n<ul>\n<li>Migrate Data (MySQL to Postgres\/Oracle\/SQL Server)<\/li>\n<li>Shutdown MySQL<\/li>\n<li>Start NEXTGRES Gateway in MySQL Emulation mode and point it to the Postgres\/Oracle\/SQL Server data<\/li>\n<li>Test<\/li>\n<li>You\u2019re done!<\/li>\n<\/ul>\n<p>Unlike other databases which claim to be compatible, NEXTGRES Gateway allows you to migrate an application to another database server with\u00a0<strong>no<\/strong>\u00a0application changes.<\/p>\n<p>In the following example, I\u2019m using the native MySQL client to connect to a PostgreSQL 8.3 database.\u00a0 It\u2019s important to note that\u00a0<strong>no changes have been made to the MySQL client<\/strong>, it\u2019s just connecting to NEXTGRES Gateway which is emulating the MySQL server by performing SQL syntax and protocol translation to Postgres.<\/p>\n<pre>jharris@jharris-desktop$ mysql -A -u root -h 127.0.0.1 pgdb\r\nWelcome to the MySQL monitor.\u00a0 Commands end with ; or \\g.\r\nYour MySQL connection id is 1\r\nServer version: 5.1.39 (NEXTGRES Gateway 4.2.0.1)\r\n\r\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\r\n\r\nmysql&gt; select count(*) from pg_tables;\r\n+-------+\r\n| count |\r\n+-------+\r\n| 51\u00a0\u00a0\u00a0 |\r\n+-------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql&gt; select tablename from pg_tables limit 5;\r\n+-------------------------+\r\n| tablename\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n+-------------------------+\r\n| sql_features\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n| sql_implementation_info |\r\n| pg_statistic\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n| sql_languages\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n| sql_packages\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n+-------------------------+\r\n5 rows in set (0.01 sec)<\/pre>\n<p>That\u2019s cool and all, but say we want to move our MySQL application to Oracle:<\/p>\n<pre>jharris@jharris-desktop$ mysql -A -u root -h 127.0.0.1 oradb\r\nWelcome to the MySQL monitor.\u00a0 Commands end with ; or \\g.\r\nYour MySQL connection id is 1\r\nServer version: 5.1.39 (NEXTGRES Gateway 4.2.0.1)\r\n\r\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\r\n\r\nmysql&gt; select count(*) from all_tables;\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n| 108      |\r\n+----------+\r\n1 row in set (0.03 sec)\r\n\r\nmysql&gt; select count(*) from user_tables;\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n| 9        |\r\n+----------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql&gt; select user from dual;\r\n+-----------+\r\n| USER      |\r\n+-----------+\r\n| AUTOGRAPH |\r\n+-----------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql&gt; select table_name from all_tables limit 5;\r\n+-----------------------+\r\n| TABLE_NAME            |\r\n+-----------------------+\r\n| DUAL                  |\r\n| SYSTEM_PRIVILEGE_MAP  |\r\n| TABLE_PRIVILEGE_MAP   |\r\n| STMT_AUDIT_OPTION_MAP |\r\n| AUDIT_ACTIONS         |\r\n+-----------------------+\r\n5 rows in set (0.02 sec)<\/pre>\n<p>For those that didn\u2019t catch it, NEXTGRES Gateway performed a simple SQL translation from MySQL to Oracle syntax on:<\/p>\n<pre>SELECT table_name FROM all_tables LIMIT 5;<\/pre>\n<p>to<\/p>\n<pre>SELECT table_name FROM all_tables WHERE ROWNUM &lt; 6;<\/pre>\n<p>If you want to see more, I\u2019ll be happy to demonstrate MySQL, Postgres, and Oracle emulation at the<a href=\"https:\/\/web.archive.org\/web\/20131219032901\/http:\/\/www.seouc.com\/\">Southeastern Oracle Users Conference<\/a>, February 24 &amp; 25 in Charlotte, North Carolina.\u00a0 I\u2019ll also be presenting my session, \u201cListening In: Passive Capture and Analysis of Oracle Network Traffic\u201d.\u00a0 This session is designed to help you diagnose issues with and optimize applications for, the Oracle network protocol.<\/p>\n<p><strong>Added on 2010-01-30 per Baron\u2019s question:<\/strong><\/p>\n<pre>jharris@jharris-desktop$ mysql -A -u testuser1 -h 127.0.0.1 postgres\r\nWelcome to the MySQL monitor.  Commands end with ; or \\g.\r\nYour MySQL connection id is 2\r\nServer version: 5.1.39 (NEXTGRES Gateway 4.2.0.1)\r\n\r\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\r\n\r\nmysql&gt; show tables;\r\n+------------------------------------------------------+\r\n| Tables_in_postgres                                   |\r\n+------------------------------------------------------+\r\n| active_locks                                         |\r\n| active_queries                                       |\r\n| information_schema.administrable_role_authorizations |\r\n| information_schema.applicable_roles                  |\r\n| information_schema.attributes                        |\r\n| information_schema.check_constraint_routine_usage    |\r\n| information_schema.check_constraints                 |\r\n| information_schema.column_domain_usage               |\r\n| information_schema.column_privileges                 |\r\n| information_schema.column_udt_usage                  |\r\n| information_schema.columns                           |\r\n| information_schema.constraint_column_usage           |\r\n| information_schema.constraint_table_usage            |\r\n| information_schema.data_type_privileges              |\r\n| information_schema.domain_constraints                |\r\n| information_schema.domain_udt_usage                  |\r\n| information_schema.domains                           |\r\n| information_schema.element_types                     |\r\n| information_schema.enabled_roles                     |\r\n| information_schema.information_schema_catalog_name   |\r\n| information_schema.key_column_usage                  |\r\n| information_schema.parameters                        |\r\n| information_schema.referential_constraints           |\r\n| information_schema.role_column_grants                |\r\n| information_schema.role_routine_grants               |\r\n| information_schema.role_table_grants                 |\r\n| information_schema.role_usage_grants                 |\r\n| information_schema.routine_privileges                |\r\n| information_schema.routines                          |\r\n| information_schema.schemata                          |\r\n| information_schema.sequences                         |\r\n| information_schema.sql_features                      |\r\n| information_schema.sql_implementation_info           |\r\n| information_schema.sql_languages                     |\r\n| information_schema.sql_packages                      |\r\n| information_schema.sql_parts                         |\r\n| information_schema.sql_sizing                        |\r\n| information_schema.sql_sizing_profiles               |\r\n| information_schema.table_constraints                 |\r\n| information_schema.table_privileges                  |\r\n| information_schema.tables                            |\r\n| information_schema.triggered_update_columns          |\r\n| information_schema.triggers                          |\r\n| information_schema.usage_privileges                  |\r\n| information_schema.view_column_usage                 |\r\n| information_schema.view_routine_usage                |\r\n| information_schema.view_table_usage                  |\r\n| information_schema.views                             |\r\n| jhhdemotbl                                           |\r\n| jhhtest                                              |\r\n| pg_aggregate                                         |\r\n| pg_am                                                |\r\n| pg_amop                                              |\r\n| pg_amproc                                            |\r\n| pg_attrdef                                           |\r\n| pg_attribute                                         |\r\n| pg_auth_members                                      |\r\n| pg_authid                                            |\r\n| pg_autovacuum                                        |\r\n| pg_cast                                              |\r\n| pg_class                                             |\r\n| pg_constraint                                        |\r\n| pg_conversion                                        |\r\n| pg_cursors                                           |\r\n| pg_database                                          |\r\n| pg_depend                                            |\r\n| pg_description                                       |\r\n| pg_enum                                              |\r\n| pg_freespacemap_pages                                |\r\n| pg_freespacemap_relations                            |\r\n| pg_group                                             |\r\n| pg_index                                             |\r\n| pg_indexes                                           |\r\n| pg_inherits                                          |\r\n| pg_language                                          |\r\n| pg_largeobject                                       |\r\n| pg_listener                                          |\r\n| pg_locks                                             |\r\n| pg_namespace                                         |\r\n| pg_opclass                                           |\r\n| pg_operator                                          |\r\n| pg_opfamily                                          |\r\n| pg_pltemplate                                        |\r\n| pg_prepared_statements                               |\r\n| pg_prepared_xacts                                    |\r\n| pg_proc                                              |\r\n| pg_rewrite                                           |\r\n| pg_roles                                             |\r\n| pg_rules                                             |\r\n| pg_settings                                          |\r\n| pg_shadow                                            |\r\n| pg_shdepend                                          |\r\n| pg_shdescription                                     |\r\n| pg_stat_activity                                     |\r\n| pg_stat_all_indexes                                  |\r\n| pg_stat_all_tables                                   |\r\n| pg_stat_bgwriter                                     |\r\n| pg_stat_database                                     |\r\n| pg_stat_sys_indexes                                  |\r\n| pg_stat_sys_tables                                   |\r\n| pg_stat_user_indexes                                 |\r\n| pg_stat_user_tables                                  |\r\n| pg_statio_all_indexes                                |\r\n| pg_statio_all_sequences                              |\r\n| pg_statio_all_tables                                 |\r\n| pg_statio_sys_indexes                                |\r\n| pg_statio_sys_sequences                              |\r\n| pg_statio_sys_tables                                 |\r\n| pg_statio_user_indexes                               |\r\n| pg_statio_user_sequences                             |\r\n| pg_statio_user_tables                                |\r\n| pg_statistic                                         |\r\n| pg_stats                                             |\r\n| pg_tables                                            |\r\n| pg_tablespace                                        |\r\n| pg_timezone_abbrevs                                  |\r\n| pg_timezone_names                                    |\r\n| pg_trigger                                           |\r\n| pg_ts_config                                         |\r\n| pg_ts_config_map                                     |\r\n| pg_ts_dict                                           |\r\n| pg_ts_parser                                         |\r\n| pg_ts_template                                       |\r\n| pg_type                                              |\r\n| pg_user                                              |\r\n| pg_views                                             |\r\n| plproxy.cluster_partitions                           |\r\n| plproxy.clusters                                     |\r\n| testtbl                                              |\r\n| utility.index_byte_sizes                             |\r\n| utility.table_byte_sizes                             |\r\n| utility.user_table_sizes                             |\r\n+------------------------------------------------------+\r\n132 rows in set (0.03 sec)\r\n\r\nmysql&gt; show databases;\r\n+-----------+\r\n| Database  |\r\n+-----------+\r\n| template1 |\r\n| template0 |\r\n| postgres  |\r\n+-----------+\r\n3 rows in set (0.01 sec)<\/pre>\n<p>More info to come!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, a few people have asked me what NEXTGRES Gateway is.\u00a0 My short answer, the ultimate database compatibility server. Sorry if this blog entry sounds very marketing-oriented, but I\u2019ve been working on this personal project non-stop for the last 8 months and am really excited about it. NEXTGRES Gateway in a nutshell: Designed to assist [&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>NEXTGRES Gateway: MySQL Emulator for Oracle - 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=\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NEXTGRES Gateway: MySQL Emulator for Oracle - Oracle Internals\" \/>\n<meta property=\"og:description\" content=\"So, a few people have asked me what NEXTGRES Gateway is.\u00a0 My short answer, the ultimate database compatibility server. Sorry if this blog entry sounds very marketing-oriented, but I\u2019ve been working on this personal project non-stop for the last 8 months and am really excited about it. NEXTGRES Gateway in a nutshell: Designed to assist [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\" \/>\n<meta property=\"og:site_name\" content=\"Oracle Internals\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-25T22:11:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-01-26T22:13:55+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\"},\"author\":{\"name\":\"Jonah Harris\",\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"headline\":\"NEXTGRES Gateway: MySQL Emulator for Oracle\",\"datePublished\":\"2010-01-25T22:11:59+00:00\",\"dateModified\":\"2014-01-26T22:13:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\"},\"wordCount\":543,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\",\"url\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\",\"name\":\"NEXTGRES Gateway: MySQL Emulator for Oracle - Oracle Internals\",\"isPartOf\":{\"@id\":\"http:\/\/oracle-internals.com\/blog\/#website\"},\"datePublished\":\"2010-01-25T22:11:59+00:00\",\"dateModified\":\"2014-01-26T22:13:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/oracle-internals.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NEXTGRES Gateway: MySQL Emulator for Oracle\"}]},{\"@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":"NEXTGRES Gateway: MySQL Emulator for Oracle - 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":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/","og_locale":"en_US","og_type":"article","og_title":"NEXTGRES Gateway: MySQL Emulator for Oracle - Oracle Internals","og_description":"So, a few people have asked me what NEXTGRES Gateway is.\u00a0 My short answer, the ultimate database compatibility server. Sorry if this blog entry sounds very marketing-oriented, but I\u2019ve been working on this personal project non-stop for the last 8 months and am really excited about it. NEXTGRES Gateway in a nutshell: Designed to assist [&hellip;]","og_url":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/","og_site_name":"Oracle Internals","article_published_time":"2010-01-25T22:11:59+00:00","article_modified_time":"2014-01-26T22:13:55+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":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#article","isPartOf":{"@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/"},"author":{"name":"Jonah Harris","@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"headline":"NEXTGRES Gateway: MySQL Emulator for Oracle","datePublished":"2010-01-25T22:11:59+00:00","dateModified":"2014-01-26T22:13:55+00:00","mainEntityOfPage":{"@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/"},"wordCount":543,"commentCount":0,"publisher":{"@id":"http:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/","url":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/","name":"NEXTGRES Gateway: MySQL Emulator for Oracle - Oracle Internals","isPartOf":{"@id":"http:\/\/oracle-internals.com\/blog\/#website"},"datePublished":"2010-01-25T22:11:59+00:00","dateModified":"2014-01-26T22:13:55+00:00","breadcrumb":{"@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/oracle-internals.com\/blog\/2010\/01\/25\/nextgres-gateway-mysql-emulator-for-oracle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/oracle-internals.com\/blog\/"},{"@type":"ListItem","position":2,"name":"NEXTGRES Gateway: MySQL Emulator for Oracle"}]},{"@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\/27"}],"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=27"}],"version-history":[{"count":1,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":28,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/posts\/27\/revisions\/28"}],"wp:attachment":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}