You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by yo...@apache.org on 2016/10/19 17:24:33 UTC

[1/6] incubator-hawq-docs git commit: add file discussing hawq built-in languages

Repository: incubator-hawq-docs
Updated Branches:
  refs/heads/develop 3df5448c8 -> 0b4e1daf8


add file discussing hawq built-in languages


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/504c662b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/504c662b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/504c662b

Branch: refs/heads/develop
Commit: 504c662be21dc344a161b81a9c627a8f6d7861cd
Parents: e169704
Author: Lisa Owen <lo...@pivotal.io>
Authored: Wed Oct 5 14:33:36 2016 -0700
Committer: Lisa Owen <lo...@pivotal.io>
Committed: Wed Oct 5 14:33:36 2016 -0700

----------------------------------------------------------------------
 plext/builtin_langs.html.md.erb | 104 +++++++++++++++++++++++++++++++++++
 1 file changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/504c662b/plext/builtin_langs.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/builtin_langs.html.md.erb b/plext/builtin_langs.html.md.erb
new file mode 100644
index 0000000..8b408a9
--- /dev/null
+++ b/plext/builtin_langs.html.md.erb
@@ -0,0 +1,104 @@
+---
+title: Using HAWQ Built-In Languages
+---
+
+This section provides an introduction to using the HAWQ built-in languages.
+
+HAWQ supports user-defined functions created with the SQL and C built-in languages. HAWQ also supports user-defined aliases for internal functions.
+
+
+## <a id="enablebuiltin"></a>Enabling Built-in Language Support
+
+Support for SQL, internal, and C language user-defined functions is enabled by default for all HAWQ databases.
+
+## <a id="builtinsql"></a>SQL
+
+SQL functions execute an arbitrary list of SQL statements. The SQL statements in the body of an SQL function must be separated by semicolons. The final statement in a non-void-returning SQL function must be a `SELECT` that returns data of the type specified by the function's return type. The function will return a single or set of rows corresponding to this last SQL query.
+
+The following example creates and calls an SQL function to count the number of rows of the database named `orders`:
+
+``` sql
+gpadmin=# CREATE FUNCTION count_orders() RETURNS bigint AS $$
+ SELECT count(*) FROM orders;
+$$ LANGUAGE SQL;
+CREATE FUNCTION
+gpadmin=# select count_orders();
+ my_count 
+----------
+   830513
+(1 row)
+```
+
+For additional information on creating SQL functions, refer to [Query Language (SQL) Functions](https://www.postgresql.org/docs/8.2/static/xfunc-sql.html) in the PostgreSQL documentation.
+
+## <a id="builtininternal"></a>Internal
+
+Many HAWQ internal functions are written in C. These functions are declared during initialization of the database cluster and statically linked to the HAWQ server.
+
+While users cannot define new internal functions, they can create aliases for existing internal functions.
+
+The following example creates a new function named `to_upper` that will be an alias for the `upper` internal HAWQ function:
+
+
+``` sql
+gpadmin=# CREATE FUNCTION to_upper (text) RETURNS text AS 'upper'
+            LANGUAGE internal STRICT;
+CREATE FUNCTION
+gpadmin=# SELECT to_upper('change me');
+ to_upper  
+-----------
+ CHANGE ME
+(1 row)
+
+```
+
+For more information on aliasing internal functions, refer to [Internal Functions](https://www.postgresql.org/docs/8.2/static/xfunc-internal.html) in the PostgreSQL documentation.
+
+## <a id="builtininternal"></a>C
+
+User-defined functions written in C must be compiled into shared libraries to be loaded by the HAWQ server on demand. This dynamic loading distinguishes C language functions from internal functions that are written in C.
+
+The `CREATE FUNCTION` call for a user-defined C function must include both the name of the shared library and the name of the function.
+
+If an absolute path to the shared library is not provided, an attempt is made to locate the library relative to: the HAWQ PostgreSQL library directory (obtained via the `pg_config --pkglibdir` command), the `dynamic_library_path` configuration value, and the current working directory, in that order. 
+
+Example:
+
+``` c
+#include "postgres.h"
+#include "fmgr.h"
+
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
+PG_FUNCTION_INFO_V1(double_it);
+         
+Datum
+double_it(PG_FUNCTION_ARGS)
+{
+    int32   arg = PG_GETARG_INT32(0);
+
+    PG_RETURN_INT64(arg + arg);
+}
+```
+
+If the above function is compiled into a shared object named `libdoubleit.so` located in `/share/libs`, you would register and invoke the function with HAWQ as follows:
+
+``` sql
+gpadmin=# CREATE FUNCTION double_it(integer) RETURNS integer
+            AS '/share/libs/libdoubleit', 'double_it'
+            LANGUAGE C STRICT;
+CREATE FUNCTION
+gpadmin=# SELECT double_it(27);
+ double_it 
+-----------
+        54
+(1 row)
+
+```
+
+The shared library `.so` extension may be omitted.
+
+For additional information on using the C language to create functions, refer to [C-Language Functions](https://www.postgresql.org/docs/8.2/static/xfunc-c.html) in the PostgreSQL documentation.
+


[5/6] incubator-hawq-docs git commit: make david's requested changes

Posted by yo...@apache.org.
make david's requested changes


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/168cb22a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/168cb22a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/168cb22a

Branch: refs/heads/develop
Commit: 168cb22a0cc719441a46c98ff3c505cb88bffd2f
Parents: 1332870
Author: Lisa Owen <lo...@pivotal.io>
Authored: Wed Oct 19 09:08:30 2016 -0700
Committer: Lisa Owen <lo...@pivotal.io>
Committed: Wed Oct 19 09:08:30 2016 -0700

----------------------------------------------------------------------
 plext/UsingProceduralLanguages.html.md.erb |  2 +-
 plext/builtin_langs.html.md.erb            | 26 ++++++++++++-------------
 2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/168cb22a/plext/UsingProceduralLanguages.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/UsingProceduralLanguages.html.md.erb b/plext/UsingProceduralLanguages.html.md.erb
index ea23982..bef1b93 100644
--- a/plext/UsingProceduralLanguages.html.md.erb
+++ b/plext/UsingProceduralLanguages.html.md.erb
@@ -2,7 +2,7 @@
 title: Using Languages and Extensions in HAWQ
 ---
 
-HAWQ supports user-defined functions created with the SQL and C built-in languages, including supporting user-defined aliases for internal functions.
+HAWQ supports user-defined functions that are created with the SQL and C built-in languages, and also supports user-defined aliases for internal functions.
 
 HAWQ also supports user-defined functions written in languages other than SQL and C. These other languages are generically called *procedural languages* (PLs) and are extensions to the core HAWQ functionality. HAWQ specifically supports the PL/Java, PL/Perl, PL/pgSQL, PL/Python, and PL/R procedural languages. 
 

http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/168cb22a/plext/builtin_langs.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/builtin_langs.html.md.erb b/plext/builtin_langs.html.md.erb
index a630732..931f2f2 100644
--- a/plext/builtin_langs.html.md.erb
+++ b/plext/builtin_langs.html.md.erb
@@ -9,13 +9,13 @@ HAWQ supports user-defined functions created with the SQL and C built-in languag
 
 ## <a id="enablebuiltin"></a>Enabling Built-in Language Support
 
-Support for SQL, internal, and C language user-defined functions is enabled by default for all HAWQ databases.
+Support for SQL and C language user-defined functions and aliasing of internal functions is enabled by default for all HAWQ databases.
 
-## <a id="builtinsql"></a>SQL
+## <a id="builtinsql"></a>Defining SQL Functions
 
-SQL functions execute an arbitrary list of SQL statements. The SQL statements in the body of an SQL function must be separated by semicolons. The final statement in a non-void-returning SQL function must be a [SELECT](../reference/sql/SELECT.html) that returns data of the type specified by the function's return type. The function will return a single or set of rows corresponding to this last SQL query.
+SQL functions execute an arbitrary list of SQL statements. The SQL statements in the body of a SQL function must be separated by semicolons. The final statement in a non-void-returning SQL function must be a [SELECT](../reference/sql/SELECT.html) that returns data of the type specified by the function's return type. The function will return a single or set of rows corresponding to this last SQL query.
 
-The following example creates and calls an SQL function to count the number of rows of the database named `orders`:
+The following example creates and calls a SQL function to count the number of rows of the database named `orders`:
 
 ``` sql
 gpadmin=# CREATE FUNCTION count_orders() RETURNS bigint AS $$
@@ -29,15 +29,15 @@ gpadmin=# select count_orders();
 (1 row)
 ```
 
-For additional information on creating SQL functions, refer to [Query Language (SQL) Functions](https://www.postgresql.org/docs/8.2/static/xfunc-sql.html) in the PostgreSQL documentation.
+For additional information about creating SQL functions, refer to [Query Language (SQL) Functions](https://www.postgresql.org/docs/8.2/static/xfunc-sql.html) in the PostgreSQL documentation.
 
-## <a id="builtininternal"></a>Internal
+## <a id="builtininternal"></a>Aliasing Internal Functions
 
-Many HAWQ internal functions are written in C. These functions are declared during initialization of the database cluster and statically linked to the HAWQ server. See [Built-in Functions and Operators](../query/functions-operators.html#topic29) for detailed information on HAWQ internal functions.
+Many HAWQ internal functions are written in C. These functions are declared during initialization of the database cluster and statically linked to the HAWQ server. See [Built-in Functions and Operators](../query/functions-operators.html#topic29) for detailed information about HAWQ internal functions.
 
-While users cannot define new internal functions, they can create aliases for existing internal functions.
+You cannot define new internal functions, but you can create aliases for existing internal functions.
 
-The following example creates a new function named `all_caps` that will be defined as an alias for the `upper` HAWQ internal function:
+The following example creates a new function named `all_caps` that is an alias for the `upper` HAWQ internal function:
 
 
 ``` sql
@@ -52,11 +52,11 @@ gpadmin=# SELECT all_caps('change me');
 
 ```
 
-For more information on aliasing internal functions, refer to [Internal Functions](https://www.postgresql.org/docs/8.2/static/xfunc-internal.html) in the PostgreSQL documentation.
+For more information about aliasing internal functions, refer to [Internal Functions](https://www.postgresql.org/docs/8.2/static/xfunc-internal.html) in the PostgreSQL documentation.
 
-## <a id="builtininternal"></a>C
+## <a id="builtinc_lang"></a>Defining C Functions
 
-User-defined functions written in C must be compiled into shared libraries to be loaded by the HAWQ server on demand. This dynamic loading distinguishes C language functions from internal functions that are written in C.
+You must compile user-defined functions written in C into shared libraries so that the HAWQ server can load them on demand. This dynamic loading distinguishes C language functions from internal functions that are written in C.
 
 The [CREATE FUNCTION](../reference/sql/CREATE-FUNCTION.html) call for a user-defined C function must include both the name of the shared library and the name of the function.
 
@@ -106,5 +106,5 @@ gpadmin=# SELECT double_it_c(27);
 
 The shared library `.so` extension may be omitted.
 
-For additional information on using the C language to create functions, refer to [C-Language Functions](https://www.postgresql.org/docs/8.2/static/xfunc-c.html) in the PostgreSQL documentation.
+For additional information about using the C language to create functions, refer to [C-Language Functions](https://www.postgresql.org/docs/8.2/static/xfunc-c.html) in the PostgreSQL documentation.
 


[3/6] incubator-hawq-docs git commit: c user-defined function example - add _c to function name to avoid confusion

Posted by yo...@apache.org.
c user-defined function example - add _c to function name to avoid confusion


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/bd85fdbc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/bd85fdbc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/bd85fdbc

Branch: refs/heads/develop
Commit: bd85fdbc31cb463855c2606fde48d803dccb3de2
Parents: 8e27e90
Author: Lisa Owen <lo...@pivotal.io>
Authored: Wed Oct 5 14:47:11 2016 -0700
Committer: Lisa Owen <lo...@pivotal.io>
Committed: Wed Oct 5 14:47:11 2016 -0700

----------------------------------------------------------------------
 plext/builtin_langs.html.md.erb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/bd85fdbc/plext/builtin_langs.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/builtin_langs.html.md.erb b/plext/builtin_langs.html.md.erb
index 8b408a9..761a1d8 100644
--- a/plext/builtin_langs.html.md.erb
+++ b/plext/builtin_langs.html.md.erb
@@ -86,11 +86,11 @@ double_it(PG_FUNCTION_ARGS)
 If the above function is compiled into a shared object named `libdoubleit.so` located in `/share/libs`, you would register and invoke the function with HAWQ as follows:
 
 ``` sql
-gpadmin=# CREATE FUNCTION double_it(integer) RETURNS integer
+gpadmin=# CREATE FUNCTION double_it_c(integer) RETURNS integer
             AS '/share/libs/libdoubleit', 'double_it'
             LANGUAGE C STRICT;
 CREATE FUNCTION
-gpadmin=# SELECT double_it(27);
+gpadmin=# SELECT double_it_c(27);
  double_it 
 -----------
         54


[4/6] incubator-hawq-docs git commit: builtin langs - clarify and add some links

Posted by yo...@apache.org.
builtin langs -  clarify and add some links


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/1332870d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/1332870d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/1332870d

Branch: refs/heads/develop
Commit: 1332870d01d2f8da2f8284ac167253d7005c6dfd
Parents: bd85fdb
Author: Lisa Owen <lo...@pivotal.io>
Authored: Mon Oct 10 15:24:20 2016 -0700
Committer: Lisa Owen <lo...@pivotal.io>
Committed: Mon Oct 10 15:24:20 2016 -0700

----------------------------------------------------------------------
 plext/UsingProceduralLanguages.html.md.erb |  6 +++---
 plext/builtin_langs.html.md.erb            | 22 ++++++++++++++--------
 2 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/1332870d/plext/UsingProceduralLanguages.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/UsingProceduralLanguages.html.md.erb b/plext/UsingProceduralLanguages.html.md.erb
index c920486..ea23982 100644
--- a/plext/UsingProceduralLanguages.html.md.erb
+++ b/plext/UsingProceduralLanguages.html.md.erb
@@ -4,11 +4,11 @@ title: Using Languages and Extensions in HAWQ
 
 HAWQ supports user-defined functions created with the SQL and C built-in languages, including supporting user-defined aliases for internal functions.
 
-HAWQ also allows user-defined functions to be written in languages other than SQL and C. These other languages are generically called *procedural languages* (PLs).
+HAWQ also supports user-defined functions written in languages other than SQL and C. These other languages are generically called *procedural languages* (PLs) and are extensions to the core HAWQ functionality. HAWQ specifically supports the PL/Java, PL/Perl, PL/pgSQL, PL/Python, and PL/R procedural languages. 
 
-For a function written in a procedural language, the database server has no built-in knowledge about how to interpret the function's source text. Instead, the task is passed to a special handler that knows the details of the language. The handler could either do all the work of parsing, syntax analysis, execution, and so on itself, or it could serve as "glue" between HAWQ and an existing implementation of a programming language. The handler itself is a C language function compiled into a shared object and loaded on demand, just like any other C function.
+HAWQ additionally provides the `pgcrypto` extension for password hashing and data encryption.
 
-This chapter describes the following:
+This chapter describes these languages and extensions:
 
 -   <a href="builtin_langs.html">Using HAWQ Built-In Languages</a>
 -   <a href="using_pljava.html">Using PL/Java</a>

http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/1332870d/plext/builtin_langs.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/builtin_langs.html.md.erb b/plext/builtin_langs.html.md.erb
index 761a1d8..a630732 100644
--- a/plext/builtin_langs.html.md.erb
+++ b/plext/builtin_langs.html.md.erb
@@ -13,7 +13,7 @@ Support for SQL, internal, and C language user-defined functions is enabled by d
 
 ## <a id="builtinsql"></a>SQL
 
-SQL functions execute an arbitrary list of SQL statements. The SQL statements in the body of an SQL function must be separated by semicolons. The final statement in a non-void-returning SQL function must be a `SELECT` that returns data of the type specified by the function's return type. The function will return a single or set of rows corresponding to this last SQL query.
+SQL functions execute an arbitrary list of SQL statements. The SQL statements in the body of an SQL function must be separated by semicolons. The final statement in a non-void-returning SQL function must be a [SELECT](../reference/sql/SELECT.html) that returns data of the type specified by the function's return type. The function will return a single or set of rows corresponding to this last SQL query.
 
 The following example creates and calls an SQL function to count the number of rows of the database named `orders`:
 
@@ -33,19 +33,19 @@ For additional information on creating SQL functions, refer to [Query Language (
 
 ## <a id="builtininternal"></a>Internal
 
-Many HAWQ internal functions are written in C. These functions are declared during initialization of the database cluster and statically linked to the HAWQ server.
+Many HAWQ internal functions are written in C. These functions are declared during initialization of the database cluster and statically linked to the HAWQ server. See [Built-in Functions and Operators](../query/functions-operators.html#topic29) for detailed information on HAWQ internal functions.
 
 While users cannot define new internal functions, they can create aliases for existing internal functions.
 
-The following example creates a new function named `to_upper` that will be an alias for the `upper` internal HAWQ function:
+The following example creates a new function named `all_caps` that will be defined as an alias for the `upper` HAWQ internal function:
 
 
 ``` sql
-gpadmin=# CREATE FUNCTION to_upper (text) RETURNS text AS 'upper'
+gpadmin=# CREATE FUNCTION all_caps (text) RETURNS text AS 'upper'
             LANGUAGE internal STRICT;
 CREATE FUNCTION
-gpadmin=# SELECT to_upper('change me');
- to_upper  
+gpadmin=# SELECT all_caps('change me');
+ all_caps  
 -----------
  CHANGE ME
 (1 row)
@@ -58,9 +58,15 @@ For more information on aliasing internal functions, refer to [Internal Function
 
 User-defined functions written in C must be compiled into shared libraries to be loaded by the HAWQ server on demand. This dynamic loading distinguishes C language functions from internal functions that are written in C.
 
-The `CREATE FUNCTION` call for a user-defined C function must include both the name of the shared library and the name of the function.
+The [CREATE FUNCTION](../reference/sql/CREATE-FUNCTION.html) call for a user-defined C function must include both the name of the shared library and the name of the function.
 
-If an absolute path to the shared library is not provided, an attempt is made to locate the library relative to: the HAWQ PostgreSQL library directory (obtained via the `pg_config --pkglibdir` command), the `dynamic_library_path` configuration value, and the current working directory, in that order. 
+If an absolute path to the shared library is not provided, an attempt is made to locate the library relative to the: 
+
+1. HAWQ PostgreSQL library directory (obtained via the `pg_config --pkglibdir` command)
+2. `dynamic_library_path` configuration value
+3. current working directory
+
+in that order. 
 
 Example:
 


[6/6] incubator-hawq-docs git commit: Merge branch 'feature/builtin-langs' of https://github.com/lisakowen/incubator-hawq-docs into develop

Posted by yo...@apache.org.
Merge branch 'feature/builtin-langs' of https://github.com/lisakowen/incubator-hawq-docs into develop


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/0b4e1daf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/0b4e1daf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/0b4e1daf

Branch: refs/heads/develop
Commit: 0b4e1daf8558ba2ea88d685327029c7709809cf5
Parents: 3df5448 168cb22
Author: David Yozie <yo...@apache.org>
Authored: Wed Oct 19 10:24:25 2016 -0700
Committer: David Yozie <yo...@apache.org>
Committed: Wed Oct 19 10:24:25 2016 -0700

----------------------------------------------------------------------
 plext/UsingProceduralLanguages.html.md.erb |  11 ++-
 plext/builtin_langs.html.md.erb            | 110 ++++++++++++++++++++++++
 2 files changed, 117 insertions(+), 4 deletions(-)
----------------------------------------------------------------------



[2/6] incubator-hawq-docs git commit: include built-in languages in PL lang landing page

Posted by yo...@apache.org.
include built-in languages in PL lang landing page


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/commit/8e27e909
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/tree/8e27e909
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/diff/8e27e909

Branch: refs/heads/develop
Commit: 8e27e9093f1d27277d676386144ee895ad004f86
Parents: 504c662
Author: Lisa Owen <lo...@pivotal.io>
Authored: Wed Oct 5 14:34:36 2016 -0700
Committer: Lisa Owen <lo...@pivotal.io>
Committed: Wed Oct 5 14:34:36 2016 -0700

----------------------------------------------------------------------
 plext/UsingProceduralLanguages.html.md.erb | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq-docs/blob/8e27e909/plext/UsingProceduralLanguages.html.md.erb
----------------------------------------------------------------------
diff --git a/plext/UsingProceduralLanguages.html.md.erb b/plext/UsingProceduralLanguages.html.md.erb
index 3ffba2c..c920486 100644
--- a/plext/UsingProceduralLanguages.html.md.erb
+++ b/plext/UsingProceduralLanguages.html.md.erb
@@ -1,13 +1,16 @@
 ---
-title: Using Procedural Languages and Extensions in HAWQ
+title: Using Languages and Extensions in HAWQ
 ---
 
-HAWQ allows user-defined functions to be written in other languages besides SQL and C. These other languages are generically called *procedural languages* (PLs).
+HAWQ supports user-defined functions created with the SQL and C built-in languages, including supporting user-defined aliases for internal functions.
+
+HAWQ also allows user-defined functions to be written in languages other than SQL and C. These other languages are generically called *procedural languages* (PLs).
 
 For a function written in a procedural language, the database server has no built-in knowledge about how to interpret the function's source text. Instead, the task is passed to a special handler that knows the details of the language. The handler could either do all the work of parsing, syntax analysis, execution, and so on itself, or it could serve as "glue" between HAWQ and an existing implementation of a programming language. The handler itself is a C language function compiled into a shared object and loaded on demand, just like any other C function.
 
 This chapter describes the following:
 
+-   <a href="builtin_langs.html">Using HAWQ Built-In Languages</a>
 -   <a href="using_pljava.html">Using PL/Java</a>
 -   <a href="using_plperl.html">Using PL/Perl</a>
 -   <a href="using_plpgsql.html">Using PL/pgSQL</a>