initial import
This commit is contained in:
parent
ad3d65cdac
commit
c047927b18
3
.gitignore
vendored
3
.gitignore
vendored
@ -30,3 +30,6 @@
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
tmp/*
|
||||
bin/*
|
||||
|
||||
33
build_linux.sh
Executable file
33
build_linux.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
BUILDMODE=${2:-"debug"}
|
||||
OPT_FLAG="O2"
|
||||
GF="uce_fastcgi"
|
||||
|
||||
if [ "$BUILDMODE" == "debug" ]; then
|
||||
OPT_FLAG="O0"
|
||||
fi
|
||||
echo "Build mode: $BUILDMODE"
|
||||
|
||||
mkdir bin > /dev/null 2>&1
|
||||
mkdir bin/tmp > /dev/null 2>&1
|
||||
mkdir bin/assets > /dev/null 2>&1
|
||||
mkdir work > /dev/null 2>&1
|
||||
|
||||
COMPILER="clang++"
|
||||
FLAGS="-g -rdynamic -w -Wall -$OPT_FLAG -std=c++17 -fpermissive -ffast-math"
|
||||
|
||||
LIBS="-ldl -lm -lpthread `mysql_config --cflags --libs`"
|
||||
SRCFLAGS="-D EXEC_NAME=\"$GF\" -D PLATFORM_NAME=\"linux\""
|
||||
|
||||
echo "Compliling executable..."
|
||||
time -p $COMPILER src/linux_fastcgi.cpp $SRCFLAGS $FLAGS $LIBS -o bin/$GF.$BUILDMODE.linux.bin 2>&1
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
ls -lh bin/ | grep $GF
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
8
doc/areas/memcache.txt
Normal file
8
doc/areas/memcache.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Memcache Functions
|
||||
|
||||
memcache_command
|
||||
memcache_connect
|
||||
memcache_delete
|
||||
memcache_get
|
||||
memcache_get_multiple
|
||||
memcache_set
|
||||
8
doc/areas/mysql.txt
Normal file
8
doc/areas/mysql.txt
Normal file
@ -0,0 +1,8 @@
|
||||
MySQL Functions
|
||||
|
||||
mysql_connect
|
||||
mysql_disconnect
|
||||
mysql_error
|
||||
mysql_escape
|
||||
mysql_insert_id
|
||||
mysql_query
|
||||
9
doc/areas/noise.txt
Normal file
9
doc/areas/noise.txt
Normal file
@ -0,0 +1,9 @@
|
||||
Noise/Hash Functions
|
||||
|
||||
draw_float
|
||||
draw_int
|
||||
gen_noise01
|
||||
gen_noise32
|
||||
gen_noise64
|
||||
gen_float
|
||||
gen_int
|
||||
6
doc/areas/ob.txt
Normal file
6
doc/areas/ob.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Output Buffer Functions
|
||||
|
||||
ob_clear
|
||||
ob_get
|
||||
ob_get_clear
|
||||
ob_start
|
||||
5
doc/areas/session.txt
Normal file
5
doc/areas/session.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Sessions
|
||||
|
||||
make_session_id
|
||||
session_destroy
|
||||
session_start
|
||||
6
doc/areas/socket.txt
Normal file
6
doc/areas/socket.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Socket Functions
|
||||
|
||||
socket_close
|
||||
socket_connect
|
||||
socket_read
|
||||
socket_write
|
||||
10
doc/areas/string.txt
Normal file
10
doc/areas/string.txt
Normal file
@ -0,0 +1,10 @@
|
||||
String Functions
|
||||
|
||||
filter
|
||||
first
|
||||
join
|
||||
nibble
|
||||
split
|
||||
str_to_lower
|
||||
str_to_upper
|
||||
trim
|
||||
17
doc/areas/sys.txt
Normal file
17
doc/areas/sys.txt
Normal file
@ -0,0 +1,17 @@
|
||||
File System Functions
|
||||
|
||||
basename
|
||||
dirname
|
||||
expand_path
|
||||
file_append
|
||||
file_exists
|
||||
file_get_contents
|
||||
file_mtime
|
||||
file_put_contents
|
||||
get_cwd
|
||||
ls
|
||||
mkdir
|
||||
set_cwd
|
||||
shell_escape
|
||||
shell_exec
|
||||
unlink
|
||||
5
doc/areas/task.txt
Normal file
5
doc/areas/task.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Task API
|
||||
|
||||
kill
|
||||
task
|
||||
task_pid
|
||||
7
doc/areas/time.txt
Normal file
7
doc/areas/time.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Time and Date Functions
|
||||
|
||||
microtime
|
||||
time
|
||||
date
|
||||
gmdate
|
||||
parse_time
|
||||
7
doc/areas/uri.txt
Normal file
7
doc/areas/uri.txt
Normal file
@ -0,0 +1,7 @@
|
||||
URI Functions
|
||||
|
||||
encode_query
|
||||
make_session_id
|
||||
parse_query
|
||||
uri_decode
|
||||
uri_encode
|
||||
150
doc/index.uce
Normal file
150
doc/index.uce
Normal file
@ -0,0 +1,150 @@
|
||||
|
||||
void render_see_section(String name)
|
||||
{
|
||||
StringList lines = split(file_get_contents("areas/"+name+".txt"), "\n");
|
||||
s32 idx = 0;
|
||||
for(auto line : lines)
|
||||
{
|
||||
if(idx == 0)
|
||||
{
|
||||
<><h3><?= line ?></h3><ul></>
|
||||
}
|
||||
else if(line != "")
|
||||
{
|
||||
<><li><a href="index.uce?p=<?= line ?>"><?= line ?><span style="opacity:0.5">()</span></a></li></>
|
||||
}
|
||||
idx += 1;
|
||||
}
|
||||
<></ul></>
|
||||
}
|
||||
|
||||
|
||||
RENDER()
|
||||
{
|
||||
|
||||
String page = first(context->get["p"], "index");
|
||||
|
||||
<><html>
|
||||
<head>
|
||||
<link rel="stylesheet" href='style.css?v=<?= time() ?>'></link>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
<a href="index.uce">UCE Docs</a>:
|
||||
<?= page ?>
|
||||
</h1>
|
||||
<?
|
||||
|
||||
if(page == "index")
|
||||
{
|
||||
?><div style="display:flex;"><?
|
||||
?><div style="flex:1"><?
|
||||
?><h3>All API Functions</h3><?
|
||||
for(auto file_name : ls("pages/"))
|
||||
{
|
||||
String ft = nibble(file_name, ".");
|
||||
if(ft[1] == '_')
|
||||
{
|
||||
String fn = ft;
|
||||
String pre = nibble(fn, "_");
|
||||
?>
|
||||
<div><a href="?p=<?= ft ?>"><?= fn ?></a><span style="opacity:0.5"> : struct</span></div>
|
||||
<?
|
||||
}
|
||||
else
|
||||
{
|
||||
?>
|
||||
<div><a href="?p=<?= ft ?>"><?= ft ?><span style="opacity:0.5">()</span></a></div>
|
||||
<?
|
||||
}
|
||||
}
|
||||
?></div><?
|
||||
?><div style="flex:1"><?
|
||||
for(auto file_name : ls("areas/"))
|
||||
{
|
||||
String ft = nibble(file_name, ".");
|
||||
render_see_section(ft);
|
||||
}
|
||||
?></div><?
|
||||
?></div><?
|
||||
}
|
||||
else
|
||||
{
|
||||
auto doc = split(file_get_contents("pages/"+page+".txt"), "\n");
|
||||
String layout_class = "text";
|
||||
u32 line_idx = 0;
|
||||
for(auto s : doc)
|
||||
{
|
||||
line_idx++;
|
||||
if(s == "")
|
||||
{
|
||||
|
||||
}
|
||||
else if(s.substr(0, 1) == ":")
|
||||
{
|
||||
layout_class = s.substr(1);
|
||||
if(line_idx > 1)
|
||||
{
|
||||
?></div><?
|
||||
}
|
||||
?><div class="<?= layout_class ?>"><?
|
||||
if(layout_class == "params")
|
||||
{
|
||||
?><h3>Parameters</h3><?
|
||||
}
|
||||
else if(layout_class == "sig")
|
||||
{
|
||||
?><h3>Signature</h3><?
|
||||
}
|
||||
else if(layout_class == "pre")
|
||||
{
|
||||
layout_class = "sig";
|
||||
}
|
||||
else if(layout_class == "desc")
|
||||
{
|
||||
?><h3>Description</h3><?
|
||||
}
|
||||
else if(layout_class == "see")
|
||||
{
|
||||
/*?><h3>Related</h3><?*/
|
||||
}
|
||||
else
|
||||
{
|
||||
?><h3><?= layout_class ?></h3><?
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(s.substr(0, 1) == "-")
|
||||
{
|
||||
nibble(s, "-");
|
||||
?><li><?= (s) ?></li><?
|
||||
}
|
||||
else if(layout_class == "params")
|
||||
{
|
||||
?><div><b><?= trim(nibble(s, ":")) ?></b> : <?= trim(s) ?></div><?
|
||||
}
|
||||
else if(layout_class == "see")
|
||||
{
|
||||
if(s[0] == '>')
|
||||
{
|
||||
render_see_section(s.substr(1));
|
||||
}
|
||||
else
|
||||
{
|
||||
?><div><a href="index.uce?p=<?= trim(s) ?>"><?= trim(s) ?><span style="opacity:0.5">()</span></a></div><?
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
?><div><?= (s) ?></div><?
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</body>
|
||||
</html></>
|
||||
|
||||
}
|
||||
0
doc/pages/.fuse_hidden000003f000000011
Normal file
0
doc/pages/.fuse_hidden000003f000000011
Normal file
0
doc/pages/.fuse_hidden000003f600000012
Normal file
0
doc/pages/.fuse_hidden000003f600000012
Normal file
63
doc/pages/0_context.txt
Normal file
63
doc/pages/0_context.txt
Normal file
@ -0,0 +1,63 @@
|
||||
:sig
|
||||
Request* context;
|
||||
|
||||
:ServerState* server
|
||||
Contains the current server state
|
||||
|
||||
:StringMap params
|
||||
All FastCGI server parameters
|
||||
|
||||
:StringMap get
|
||||
The current request's GET variables
|
||||
|
||||
:StringMap post
|
||||
The current request's POST variables
|
||||
|
||||
:StringMap cookies
|
||||
Cookies that have been transmitted by the browser
|
||||
|
||||
:StringMap session
|
||||
The current session
|
||||
|
||||
:String session_id
|
||||
ID of the session cookie
|
||||
|
||||
String session_name
|
||||
Name of the session cookie
|
||||
|
||||
:DTree var
|
||||
Variable user-defined data
|
||||
|
||||
:std::vector<UploadedFile> uploaded_files
|
||||
Files that have been uploaded in the current request
|
||||
|
||||
:StringMap header
|
||||
Headers to be sent back to the browser
|
||||
|
||||
:StringList set_cookies;
|
||||
Cookies that should be sent back to the browser
|
||||
|
||||
:u64 random_seed
|
||||
The current request's "random" noise generator seed
|
||||
|
||||
:u64 random_index
|
||||
The current request's "random" noise generator index position
|
||||
|
||||
:MemoryArena* mem
|
||||
Contains the current request's memory arena
|
||||
|
||||
:bool flags.log_request
|
||||
Whether the request should be logged
|
||||
|
||||
:Stats
|
||||
u32 stats.bytes_written
|
||||
f64 stats.time_init
|
||||
f64 stats.time_start
|
||||
f64 stats.time_end
|
||||
|
||||
:invoke(String file_name, [DTree& call_param])
|
||||
Invokes the UCE file 'file_name'
|
||||
|
||||
|
||||
|
||||
|
||||
12
doc/pages/basename.txt
Normal file
12
doc/pages/basename.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String basename(String fn)
|
||||
|
||||
:params
|
||||
fn : raw filename
|
||||
return value : the file's name
|
||||
|
||||
:desc
|
||||
Isolates the file name component from a path/file name.
|
||||
|
||||
:see
|
||||
>sys
|
||||
125
doc/pages/date.txt
Normal file
125
doc/pages/date.txt
Normal file
@ -0,0 +1,125 @@
|
||||
:sig
|
||||
String date(String format = "", u64 timestamp = 0)
|
||||
|
||||
:params
|
||||
format : formatting string specifying the date format
|
||||
timestamp : optional timestamp value, defaults to current time
|
||||
return value : a formatted date
|
||||
|
||||
:desc
|
||||
Returns a formatted date. This is based on the Linux date() command. The formatting string supports the following sequences:
|
||||
:pre
|
||||
%% a literal %
|
||||
|
||||
%a locale's abbreviated weekday name (e.g., Sun)
|
||||
|
||||
%A locale's full weekday name (e.g., Sunday)
|
||||
|
||||
%b locale's abbreviated month name (e.g., Jan)
|
||||
|
||||
%B locale's full month name (e.g., January)
|
||||
|
||||
%c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
|
||||
|
||||
%C century; like %Y, except omit last two digits (e.g., 20)
|
||||
|
||||
%d day of month (e.g., 01)
|
||||
|
||||
%D date; same as %m/%d/%y
|
||||
|
||||
%e day of month, space padded; same as %_d
|
||||
|
||||
%F full date; like %+4Y-%m-%d
|
||||
|
||||
%g last two digits of year of ISO week number (see %G)
|
||||
|
||||
%G year of ISO week number (see %V); normally useful only
|
||||
with %V
|
||||
|
||||
%h same as %b
|
||||
|
||||
%H hour (00..23)
|
||||
|
||||
%I hour (01..12)
|
||||
|
||||
%j day of year (001..366)
|
||||
|
||||
%k hour, space padded ( 0..23); same as %_H
|
||||
|
||||
%l hour, space padded ( 1..12); same as %_I
|
||||
|
||||
%m month (01..12)
|
||||
|
||||
%M minute (00..59)
|
||||
|
||||
%n a newline
|
||||
|
||||
%N nanoseconds (000000000..999999999)
|
||||
|
||||
%p locale's equivalent of either AM or PM; blank if not known
|
||||
|
||||
%P like %p, but lower case
|
||||
|
||||
%q quarter of year (1..4)
|
||||
|
||||
%r locale's 12-hour clock time (e.g., 11:11:04 PM)
|
||||
|
||||
%R 24-hour hour and minute; same as %H:%M
|
||||
|
||||
%s seconds since 1970-01-01 00:00:00 UTC
|
||||
|
||||
%S second (00..60)
|
||||
|
||||
%t a tab
|
||||
|
||||
%T time; same as %H:%M:%S
|
||||
|
||||
%u day of week (1..7); 1 is Monday
|
||||
|
||||
%U week number of year, with Sunday as first day of week
|
||||
(00..53)
|
||||
|
||||
%V ISO week number, with Monday as first day of week (01..53)
|
||||
|
||||
%w day of week (0..6); 0 is Sunday
|
||||
|
||||
%W week number of year, with Monday as first day of week
|
||||
(00..53)
|
||||
|
||||
%x locale's date representation (e.g., 12/31/99)
|
||||
|
||||
%X locale's time representation (e.g., 23:13:48)
|
||||
|
||||
%y last two digits of year (00..99)
|
||||
|
||||
%Y year
|
||||
|
||||
%z +hhmm numeric time zone (e.g., -0400)
|
||||
|
||||
%:z +hh:mm numeric time zone (e.g., -04:00)
|
||||
|
||||
%::z +hh:mm:ss numeric time zone (e.g., -04:00:00)
|
||||
|
||||
%:::z numeric time zone with : to necessary precision (e.g.,
|
||||
-04, +05:30)
|
||||
|
||||
%Z alphabetic time zone abbreviation (e.g., EDT)
|
||||
|
||||
By default, date pads numeric fields with zeroes. The following
|
||||
optional flags may follow '%':
|
||||
|
||||
- (hyphen) do not pad the field
|
||||
|
||||
_ (underscore) pad with spaces
|
||||
|
||||
0 (zero) pad with zeros
|
||||
|
||||
+ pad with zeros, and put '+' before future years with >4
|
||||
digits
|
||||
|
||||
^ use upper case if possible
|
||||
|
||||
# use opposite case if possible
|
||||
|
||||
:see
|
||||
>time
|
||||
12
doc/pages/dirname.txt
Normal file
12
doc/pages/dirname.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String dirname(String fn)
|
||||
|
||||
:params
|
||||
fn : raw filename
|
||||
return value : the directory's name
|
||||
|
||||
:desc
|
||||
Isolates the directory name component from a path/file name.
|
||||
|
||||
:see
|
||||
>sys
|
||||
13
doc/pages/draw_float.txt
Normal file
13
doc/pages/draw_float.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
f64 draw_float(f64 from, f64 to)
|
||||
|
||||
:params
|
||||
from : minimum value
|
||||
to : maximum value
|
||||
return value : a noise value between 'from' and 'to'
|
||||
|
||||
:desc
|
||||
This function works exactly like generate_float(), but context->random_index is used for the 'index' value and context->random_seed is used for the seed. After this function has been called, the context->random_index is increased by one. At the start of every request, context->random_seed is automatically populated with a new seed value.
|
||||
|
||||
:see
|
||||
>noise
|
||||
13
doc/pages/draw_int.txt
Normal file
13
doc/pages/draw_int.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u64 draw_int(u64 from, u64 to)
|
||||
|
||||
:params
|
||||
from : minimum value
|
||||
to : maximum value
|
||||
return value : a noise value between 'from' and 'to'
|
||||
|
||||
:desc
|
||||
This function works exactly like generate_int(), but context->random_index is used for the 'index' value and context->random_seed is used for the seed. After this function has been called, the context->random_index is increased by one. At the start of every request, context->random_seed is automatically populated with a new seed value.
|
||||
|
||||
:see
|
||||
>noise
|
||||
12
doc/pages/encode_query.txt
Normal file
12
doc/pages/encode_query.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String encode_query(StringMap map)
|
||||
|
||||
:params
|
||||
q : StringMap containing URL parameters to be encoded
|
||||
return value : a string with the encoded parameters
|
||||
|
||||
:desc
|
||||
Encodes a StringMap containing URL parameters into a single String.
|
||||
|
||||
:see
|
||||
>uri
|
||||
12
doc/pages/expand_path.txt
Normal file
12
doc/pages/expand_path.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String expand_path(String path)
|
||||
|
||||
:params
|
||||
path : a relative path
|
||||
return value : expanded version of the 'path'
|
||||
|
||||
:desc
|
||||
Converts a relative path name into an absolute path, using the current working directory as a base.
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/file_append.txt
Normal file
12
doc/pages/file_append.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
void file_append(String file_name, ...val)
|
||||
|
||||
:params
|
||||
file_name : file name of file that should be written to
|
||||
...val : one or more values that should be written into the file
|
||||
|
||||
:desc
|
||||
Opens or creates a given file and appends data to it.
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/file_exists.txt
Normal file
12
doc/pages/file_exists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
bool file_exists(String path)
|
||||
|
||||
:params
|
||||
path : the path name to be checked
|
||||
return value : true if the file exists
|
||||
|
||||
:desc
|
||||
Checks whether the file or path specified by 'path' exists.
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/file_get_contents.txt
Normal file
12
doc/pages/file_get_contents.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String file_get_contents(String file_name)
|
||||
|
||||
:params
|
||||
file_name : file name of file that should be read
|
||||
return value : String containing the file's contents
|
||||
|
||||
:desc
|
||||
Reads the file identified by 'file_name' and returns it as a String. If the file cannot be read, this function will return an empty string.
|
||||
|
||||
:see
|
||||
>sys
|
||||
13
doc/pages/file_mtime.txt
Normal file
13
doc/pages/file_mtime.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
time_t file_mtime(String file_name)
|
||||
|
||||
:params
|
||||
file_name : name of the file
|
||||
return value : Unix time stamp of the file's last modification
|
||||
|
||||
:desc
|
||||
Retrieves the last modification date of 'file_name' as a Unix timestamp.
|
||||
|
||||
:see
|
||||
>sys
|
||||
>time
|
||||
13
doc/pages/file_put_contents.txt
Normal file
13
doc/pages/file_put_contents.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
bool file_put_contents(String file_name, String content)
|
||||
|
||||
:params
|
||||
file_name : file name of file that should be written
|
||||
content : content that should be written
|
||||
return value : true if write was successful
|
||||
|
||||
:desc
|
||||
Writes the String 'content' into a file identified by 'file_name'. Any pre-existing content of the file will be overwritten.
|
||||
|
||||
:see
|
||||
>sys
|
||||
14
doc/pages/filter.txt
Normal file
14
doc/pages/filter.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
StringList filter(StringList items, function<bool (String)> f)
|
||||
vector<T> filter(vector<T> items, function<bool (T)> f)
|
||||
|
||||
:params
|
||||
items : list of items to be filtered
|
||||
f : a function that decides which items should be in the new list
|
||||
return value : a new list
|
||||
|
||||
:desc
|
||||
Returns a list containing the members of 'items' for which 'f' returned boolean true.
|
||||
|
||||
:see
|
||||
>string
|
||||
12
doc/pages/first.txt
Normal file
12
doc/pages/first.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String first(String... args)
|
||||
|
||||
:params
|
||||
args : a variable number of String arguments
|
||||
return value : first of the 'args' that was not empty.
|
||||
|
||||
:desc
|
||||
Given a variable number of String parameters, the first() function returns the first of these parameters that was not empty. Leading and trailing whitespace characters are not considered, resulting in a string that contains only whitespace characters being considered empty.
|
||||
|
||||
:see
|
||||
>string
|
||||
16
doc/pages/gen_float.txt
Normal file
16
doc/pages/gen_float.txt
Normal file
@ -0,0 +1,16 @@
|
||||
:sig
|
||||
f64 generate_float(f64 from, f64 to, u64 index, u64 seed = 0)
|
||||
|
||||
:params
|
||||
from : minimum result
|
||||
to : maximum result
|
||||
index : index position to generate number from
|
||||
seed : seed position to generate number from (defaults to 0)
|
||||
return value : noise value
|
||||
|
||||
:desc
|
||||
Generates a noise value between 'from' and 'to', given the 'index' and 'seed' numbers.
|
||||
|
||||
|
||||
:see
|
||||
>noise
|
||||
16
doc/pages/gen_int.txt
Normal file
16
doc/pages/gen_int.txt
Normal file
@ -0,0 +1,16 @@
|
||||
:sig
|
||||
u64 generate_int(u64 from, u64 to, u64 index, u64 seed = 0)
|
||||
|
||||
:params
|
||||
from : minimum result
|
||||
to : maximum result
|
||||
index : index position to generate number from
|
||||
seed : seed position to generate number from (defaults to 0)
|
||||
return value : noise value
|
||||
|
||||
:desc
|
||||
Generates a noise value between 'from' and 'to', given the 'index' and 'seed' numbers.
|
||||
|
||||
|
||||
:see
|
||||
>noise
|
||||
13
doc/pages/gen_noise01.txt
Normal file
13
doc/pages/gen_noise01.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u32 noise01(u64 index, u64 seed = 0)
|
||||
|
||||
:params
|
||||
index : index position
|
||||
seed : seed set (defaults to 0)
|
||||
return value : a noise value from 0 to 1
|
||||
|
||||
:desc
|
||||
Generates a noise value in the range from 0 to 1 for the given 'index' and 'seed' values.
|
||||
|
||||
:see
|
||||
>noise
|
||||
13
doc/pages/gen_noise32.txt
Normal file
13
doc/pages/gen_noise32.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u32 noise32(u32 index, u32 seed = 0)
|
||||
|
||||
:params
|
||||
index : index position
|
||||
seed : seed set (defaults to 0)
|
||||
return value : a noise value given the 'index' and 'seed' values.
|
||||
|
||||
:desc
|
||||
Generates a noise value for the given 'index' and 'seed' values.
|
||||
|
||||
:see
|
||||
>noise
|
||||
13
doc/pages/gen_noise64.txt
Normal file
13
doc/pages/gen_noise64.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u32 noise64(u64 index, u64 seed = 0)
|
||||
|
||||
:params
|
||||
index : index position
|
||||
seed : seed set (defaults to 0)
|
||||
return value : a noise value given the 'index' and 'seed' values.
|
||||
|
||||
:desc
|
||||
Generates a noise value for the given 'index' and 'seed' values.
|
||||
|
||||
:see
|
||||
>noise
|
||||
10
doc/pages/gen_sha1.txt
Normal file
10
doc/pages/gen_sha1.txt
Normal file
@ -0,0 +1,10 @@
|
||||
:sig
|
||||
String sha1(String s, bool as_binary = false)
|
||||
|
||||
:params
|
||||
s : data to be hashed
|
||||
as_binary : when set to false, returns hash in hexadecimal notation (defaults to false)
|
||||
return value : the resulting hash value
|
||||
|
||||
:desc
|
||||
Returns the sha1 hash of 's'.
|
||||
11
doc/pages/get_cwd.txt
Normal file
11
doc/pages/get_cwd.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
String get_cwd()
|
||||
|
||||
:params
|
||||
return value : the current working directory
|
||||
|
||||
:desc
|
||||
Returns the current working directory.
|
||||
|
||||
:see
|
||||
>sys
|
||||
125
doc/pages/gmdate.txt
Normal file
125
doc/pages/gmdate.txt
Normal file
@ -0,0 +1,125 @@
|
||||
:sig
|
||||
String gmdate(String format = "", u64 timestamp = 0)
|
||||
|
||||
:params
|
||||
format : formatting string specifying the date format
|
||||
timestamp : optional timestamp value, defaults to current time
|
||||
return value : a formatted date
|
||||
|
||||
:desc
|
||||
Returns a formatted date in the GMT/UTC timezone. This is based on the Linux date() command. The formatting string supports the following sequences:
|
||||
:pre
|
||||
%% a literal %
|
||||
|
||||
%a locale's abbreviated weekday name (e.g., Sun)
|
||||
|
||||
%A locale's full weekday name (e.g., Sunday)
|
||||
|
||||
%b locale's abbreviated month name (e.g., Jan)
|
||||
|
||||
%B locale's full month name (e.g., January)
|
||||
|
||||
%c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
|
||||
|
||||
%C century; like %Y, except omit last two digits (e.g., 20)
|
||||
|
||||
%d day of month (e.g., 01)
|
||||
|
||||
%D date; same as %m/%d/%y
|
||||
|
||||
%e day of month, space padded; same as %_d
|
||||
|
||||
%F full date; like %+4Y-%m-%d
|
||||
|
||||
%g last two digits of year of ISO week number (see %G)
|
||||
|
||||
%G year of ISO week number (see %V); normally useful only
|
||||
with %V
|
||||
|
||||
%h same as %b
|
||||
|
||||
%H hour (00..23)
|
||||
|
||||
%I hour (01..12)
|
||||
|
||||
%j day of year (001..366)
|
||||
|
||||
%k hour, space padded ( 0..23); same as %_H
|
||||
|
||||
%l hour, space padded ( 1..12); same as %_I
|
||||
|
||||
%m month (01..12)
|
||||
|
||||
%M minute (00..59)
|
||||
|
||||
%n a newline
|
||||
|
||||
%N nanoseconds (000000000..999999999)
|
||||
|
||||
%p locale's equivalent of either AM or PM; blank if not known
|
||||
|
||||
%P like %p, but lower case
|
||||
|
||||
%q quarter of year (1..4)
|
||||
|
||||
%r locale's 12-hour clock time (e.g., 11:11:04 PM)
|
||||
|
||||
%R 24-hour hour and minute; same as %H:%M
|
||||
|
||||
%s seconds since 1970-01-01 00:00:00 UTC
|
||||
|
||||
%S second (00..60)
|
||||
|
||||
%t a tab
|
||||
|
||||
%T time; same as %H:%M:%S
|
||||
|
||||
%u day of week (1..7); 1 is Monday
|
||||
|
||||
%U week number of year, with Sunday as first day of week
|
||||
(00..53)
|
||||
|
||||
%V ISO week number, with Monday as first day of week (01..53)
|
||||
|
||||
%w day of week (0..6); 0 is Sunday
|
||||
|
||||
%W week number of year, with Monday as first day of week
|
||||
(00..53)
|
||||
|
||||
%x locale's date representation (e.g., 12/31/99)
|
||||
|
||||
%X locale's time representation (e.g., 23:13:48)
|
||||
|
||||
%y last two digits of year (00..99)
|
||||
|
||||
%Y year
|
||||
|
||||
%z +hhmm numeric time zone (e.g., -0400)
|
||||
|
||||
%:z +hh:mm numeric time zone (e.g., -04:00)
|
||||
|
||||
%::z +hh:mm:ss numeric time zone (e.g., -04:00:00)
|
||||
|
||||
%:::z numeric time zone with : to necessary precision (e.g.,
|
||||
-04, +05:30)
|
||||
|
||||
%Z alphabetic time zone abbreviation (e.g., EDT)
|
||||
|
||||
By default, date pads numeric fields with zeroes. The following
|
||||
optional flags may follow '%':
|
||||
|
||||
- (hyphen) do not pad the field
|
||||
|
||||
_ (underscore) pad with spaces
|
||||
|
||||
0 (zero) pad with zeros
|
||||
|
||||
+ pad with zeros, and put '+' before future years with >4
|
||||
digits
|
||||
|
||||
^ use upper case if possible
|
||||
|
||||
# use opposite case if possible
|
||||
|
||||
:see
|
||||
>time
|
||||
13
doc/pages/html_escape.txt
Normal file
13
doc/pages/html_escape.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
String html_escape(String s)
|
||||
|
||||
:params
|
||||
s : string to be escaped
|
||||
return value : an HTML-safe escaped version of 's'
|
||||
|
||||
:desc
|
||||
Returns a version of the input string where the following characters have been replace by HTML entities:
|
||||
- & → &
|
||||
- < → lt;
|
||||
- > → >
|
||||
- " → "
|
||||
11
doc/pages/int_val.txt
Normal file
11
doc/pages/int_val.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
u64 int_val(String s, u32 base = 10)
|
||||
|
||||
:params
|
||||
s : string to be converted
|
||||
base : number system base (default 10)
|
||||
return value : a u64 containing the number (0 if no number could be identified).
|
||||
|
||||
:desc
|
||||
Extracts an integer from a String.
|
||||
|
||||
13
doc/pages/join.txt
Normal file
13
doc/pages/join.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
String join(StringList l, String delim = "\n")
|
||||
|
||||
:params
|
||||
l : list of strings to be joined
|
||||
delim : delimiter (defaults to newline character)
|
||||
return value : a string containing items joined by 'delim'
|
||||
|
||||
:desc
|
||||
Joins the items contained in 'l' into a single String.
|
||||
|
||||
:see
|
||||
>string
|
||||
10
doc/pages/json_decode.txt
Normal file
10
doc/pages/json_decode.txt
Normal file
@ -0,0 +1,10 @@
|
||||
:sig
|
||||
DTree json_decode(String s)
|
||||
|
||||
:params
|
||||
s : string containing JSON data
|
||||
return value : a DTree object containing the deserialized JSON data
|
||||
|
||||
:desc
|
||||
Deserializes 's' into a DTree structure.
|
||||
|
||||
10
doc/pages/json_encode.txt
Normal file
10
doc/pages/json_encode.txt
Normal file
@ -0,0 +1,10 @@
|
||||
:sig
|
||||
String json_encode(DTree t)
|
||||
|
||||
:params
|
||||
t : DTree object to be serialized
|
||||
return value : string containing the JSON result
|
||||
|
||||
:desc
|
||||
Serializes a DTree structure 't' into a String in JSON notation.
|
||||
|
||||
15
doc/pages/kill.txt
Normal file
15
doc/pages/kill.txt
Normal file
@ -0,0 +1,15 @@
|
||||
:sig
|
||||
s64 kill(pid_t pid, s64 sig)
|
||||
|
||||
:params
|
||||
pid : PID of the process
|
||||
sig : signal number
|
||||
return value : 0 if signal was sent, -1 otherwise
|
||||
|
||||
:desc
|
||||
This is the standard POSIX kill() function, provided here for reference.
|
||||
|
||||
Possible signal numbers are: SIGABND, SIGABRT, SIGALRM, SIGBUS, SIGFPE, SIGHUP, SIGILL, SIGINT, SIGKILL, SIGPIPE, SIGPOLL, SIGPROF, SIGQUIT, SIGSEGV, SIGSYS, SIGTERM, SIGTRAP, SIGURG, SIGUSR1, SIGUSR2, SIGVTALRM, SIGXCPU, SIGXFSZ, SIGCHLD, SIGIO, SIGIOERR, SIGWINCH, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU, SIGCONT.
|
||||
|
||||
:see
|
||||
>task
|
||||
12
doc/pages/ls.txt
Normal file
12
doc/pages/ls.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
StringList ls(String path)
|
||||
|
||||
:params
|
||||
path : a filesystem path
|
||||
return value : list of directory entries
|
||||
|
||||
:desc
|
||||
Returns a list of files and subdirectories within the given 'path'.
|
||||
|
||||
:see
|
||||
>sys
|
||||
11
doc/pages/make_session_id.txt
Normal file
11
doc/pages/make_session_id.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
String make_session_id()
|
||||
|
||||
:params
|
||||
return value : a new session ID
|
||||
|
||||
:desc
|
||||
Creates a session ID
|
||||
|
||||
:see
|
||||
>session
|
||||
13
doc/pages/memcache_command.txt
Normal file
13
doc/pages/memcache_command.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
String memcache_command(u64 connection, String command)
|
||||
|
||||
:params
|
||||
connection : connection handle
|
||||
command : string containing the Memcache command
|
||||
return value : string containing the Memcache server's response
|
||||
|
||||
:desc
|
||||
Executes a command on an open memcache connection.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
13
doc/pages/memcache_connect.txt
Normal file
13
doc/pages/memcache_connect.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u64 memcache_connect(String host = "127.0.0.1", short port = 11211)
|
||||
|
||||
:params
|
||||
host : optional host name of the memcache server, defaults to local address 127.0.0.1
|
||||
port : optional memcache server's port, defaults to 11211
|
||||
return value : the connection handle (or -1 if an error occurred)
|
||||
|
||||
:desc
|
||||
Connects to a memcache server instance.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
13
doc/pages/memcache_delete.txt
Normal file
13
doc/pages/memcache_delete.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
bool memcache_delete(u64 connection, String key)
|
||||
|
||||
:params
|
||||
connection : connection handle
|
||||
key : key string
|
||||
return value : true if the operation was successful
|
||||
|
||||
:desc
|
||||
Deletes entry specified by the 'key'.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
14
doc/pages/memcache_get.txt
Normal file
14
doc/pages/memcache_get.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
String memcache_get(u64 connection, String key, String default_value = "")
|
||||
|
||||
:params
|
||||
connection : connection handle
|
||||
key : key string
|
||||
default_value : optional default value
|
||||
return value : value that was returned by the Memcache server
|
||||
|
||||
:desc
|
||||
Retrieves a value from an existing connection to a Memcache server.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
13
doc/pages/memcache_get_multiple.txt
Normal file
13
doc/pages/memcache_get_multiple.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
StringMap memcache_get_multiple(u64 connection, StringList keys)
|
||||
|
||||
:params
|
||||
connection : connection handle
|
||||
keys : a list of strings containing the keys to be retrieved
|
||||
return value : a StringMap with the retrieved entries
|
||||
|
||||
:desc
|
||||
Retrieves a bunch of entries all at once.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
15
doc/pages/memcache_set.txt
Normal file
15
doc/pages/memcache_set.txt
Normal file
@ -0,0 +1,15 @@
|
||||
:sig
|
||||
bool memcache_set(u64 connection, String key, String value, u64 expires_in = 60*60)
|
||||
|
||||
:params
|
||||
connection : connection handle
|
||||
key : the entry's key
|
||||
value : the value to be set
|
||||
expires_in : optional expiration timeout, defaults to one hour
|
||||
return value : true if the operation was successful
|
||||
|
||||
:desc
|
||||
Stores a 'value' on the Memcache server.
|
||||
|
||||
:see
|
||||
>memcache
|
||||
11
doc/pages/microtime.txt
Normal file
11
doc/pages/microtime.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
f64 microtime()
|
||||
|
||||
:params
|
||||
return value : current Unix timestamp
|
||||
|
||||
:desc
|
||||
Returns a 64 bit float containing the current Unix timestamp with millisecond accuracy or better.
|
||||
|
||||
:see
|
||||
>time
|
||||
12
doc/pages/mkdir.txt
Normal file
12
doc/pages/mkdir.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
bool mkdir(String path)
|
||||
|
||||
:params
|
||||
path : the path name to be created
|
||||
return value : returns true if the directory was successfully created
|
||||
|
||||
:desc
|
||||
Creates a directory stated by 'path'
|
||||
|
||||
:see
|
||||
>sys
|
||||
14
doc/pages/mysql_connect.txt
Normal file
14
doc/pages/mysql_connect.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
MySQL* mysql_connect(String host = "localhost", String username = "root", String password = "")
|
||||
|
||||
:params
|
||||
host : host name of the MySQL server
|
||||
username : user name
|
||||
password : password
|
||||
return value : pointer to the MySQL connection struct
|
||||
|
||||
:desc
|
||||
Establishes a connection to a MySQL server.
|
||||
|
||||
:see
|
||||
>mysql
|
||||
11
doc/pages/mysql_disconnect.txt
Normal file
11
doc/pages/mysql_disconnect.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void mysql_disconnect(MySQL* m)
|
||||
|
||||
:params
|
||||
m : pointer to an existing MySQL connection struct
|
||||
|
||||
:desc
|
||||
Closes a connection to a MySQL server.
|
||||
|
||||
:see
|
||||
>mysql
|
||||
12
doc/pages/mysql_error.txt
Normal file
12
doc/pages/mysql_error.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String mysql_error(MySQL* m)
|
||||
|
||||
:params
|
||||
m : pointer to a MySQL connection struct
|
||||
return value : MySQL error message (if present, otherwise empty string)
|
||||
|
||||
:desc
|
||||
Returns the last error message from a connection to a MySQL server.
|
||||
|
||||
:see
|
||||
>mysql
|
||||
13
doc/pages/mysql_escape.txt
Normal file
13
doc/pages/mysql_escape.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
String mysql_escape(String raw, char quote_char)
|
||||
|
||||
:params
|
||||
raw : the string to be escaped
|
||||
quote_char : the character that should be used to wrap the string (pass NULL for no wrapping)
|
||||
return value : the safe version of the 'raw' string
|
||||
|
||||
:desc
|
||||
Escapes a string such that it can be passed as a safe value into an SQL expression.
|
||||
|
||||
:see
|
||||
>mysql
|
||||
12
doc/pages/mysql_insert_id.txt
Normal file
12
doc/pages/mysql_insert_id.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
u64 mysql_insert_id(MySQL* m)
|
||||
|
||||
:params
|
||||
m : pointer to an active MySQL connection
|
||||
return value : the last used automatic row ID
|
||||
|
||||
:desc
|
||||
This retrieves the last row ID that was used for a column with an AUTO_INCREMENT row key.
|
||||
|
||||
:see
|
||||
>mysql
|
||||
17
doc/pages/mysql_query.txt
Normal file
17
doc/pages/mysql_query.txt
Normal file
@ -0,0 +1,17 @@
|
||||
:sig
|
||||
DTree mysql_query(MySQL* m, String q, StringMap params)
|
||||
|
||||
:params
|
||||
m : pointer to an active MySQL connection struct
|
||||
q : a string containing a MySQL query
|
||||
params : optional, a list of query parameter keys and values
|
||||
return value : a list of rows returned from executing the query
|
||||
|
||||
:desc
|
||||
Executes a MySQL query and returns the resulting data (if any).
|
||||
|
||||
:Examples
|
||||
(tbd)
|
||||
|
||||
:see
|
||||
>mysql
|
||||
13
doc/pages/nibble.txt
Normal file
13
doc/pages/nibble.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
String nibble(String& haystack, String delim)
|
||||
|
||||
:params
|
||||
haystack : string to be nibbled at
|
||||
delim : delimiter
|
||||
return value : string before first occurrence of 'delim'
|
||||
|
||||
:desc
|
||||
Returns the part of 'haystack' before the first occurrence of 'delim', removing the corresponding part from 'haystack' (including 'delim'). If the substring 'delim' does not occurr in 'haystack', the entire string is returned and 'haystack' is set to an empty string.
|
||||
|
||||
:see
|
||||
>string
|
||||
11
doc/pages/ob_clear.txt
Normal file
11
doc/pages/ob_clear.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void ob_clear()
|
||||
|
||||
:params
|
||||
(none)
|
||||
|
||||
:desc
|
||||
Discard the current output buffer.
|
||||
|
||||
:see
|
||||
>ob
|
||||
11
doc/pages/ob_get.txt
Normal file
11
doc/pages/ob_get.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
String ob_get()
|
||||
|
||||
:params
|
||||
return value : content of the current output buffer
|
||||
|
||||
:desc
|
||||
Returns the contents of the current output buffer.
|
||||
|
||||
:see
|
||||
>ob
|
||||
11
doc/pages/ob_get_clear.txt
Normal file
11
doc/pages/ob_get_clear.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
String ob_get_clear()
|
||||
|
||||
:params
|
||||
return value : content of the current output buffer
|
||||
|
||||
:desc
|
||||
Returns the contents of the current output buffer and then discards the buffer.
|
||||
|
||||
:see
|
||||
>ob
|
||||
11
doc/pages/ob_start.txt
Normal file
11
doc/pages/ob_start.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void ob_start()
|
||||
|
||||
:params
|
||||
(none)
|
||||
|
||||
:desc
|
||||
Starts a new output buffer. All subsequent output will be directed into this buffer.
|
||||
|
||||
:see
|
||||
>ob
|
||||
12
doc/pages/parse_query.txt
Normal file
12
doc/pages/parse_query.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
StringMap parse_query(String q)
|
||||
|
||||
:params
|
||||
q : string containing URL parameters
|
||||
return value : a StringMap containing the parameters
|
||||
|
||||
:desc
|
||||
Decodes a string of the format 'a=b&c=d' into a StringMap containing keyed entries.
|
||||
|
||||
:see
|
||||
>uri
|
||||
12
doc/pages/parse_time.txt
Normal file
12
doc/pages/parse_time.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
u64 parse_time(String time_string)
|
||||
|
||||
:params
|
||||
time_string : a string containing a date and/or time in text form
|
||||
return value : the interpreted 'time_string' as a Unix timestamp
|
||||
|
||||
:desc
|
||||
Attempts to parse the given 'time_string' into a Unix timestamp.
|
||||
|
||||
:see
|
||||
>time
|
||||
10
doc/pages/print.txt
Normal file
10
doc/pages/print.txt
Normal file
@ -0,0 +1,10 @@
|
||||
:sig
|
||||
void print(...val)
|
||||
|
||||
:params
|
||||
...val : one or more values that should be output
|
||||
|
||||
:desc
|
||||
Appends data to the current request's output stream.
|
||||
|
||||
|
||||
11
doc/pages/session_destroy.txt
Normal file
11
doc/pages/session_destroy.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void session_destroy(String session_name)
|
||||
|
||||
:params
|
||||
session_name : the name of the session
|
||||
|
||||
:desc
|
||||
Deletes the cookie specified by 'session_name' and clears the data stored under the session ID. This empties the 'context->session_id' and 'context->session' variables.
|
||||
|
||||
:see
|
||||
>session
|
||||
17
doc/pages/session_start.txt
Normal file
17
doc/pages/session_start.txt
Normal file
@ -0,0 +1,17 @@
|
||||
:sig
|
||||
String session_start(String session_name)
|
||||
|
||||
:params
|
||||
return value : the session ID, defaults to "uce-session"
|
||||
|
||||
:desc
|
||||
Starts session or connects to existing session. This function sets a cookie with the name contained in 'session_name' if it does not exist and fills that cookie with a new unique session ID. It then loads the session data for that session ID. Afterwards, the following fields are populated in the 'context' variable:
|
||||
|
||||
context->session_id : the current session ID
|
||||
|
||||
context->session_name : the current session cookie name
|
||||
|
||||
context->session : the current session data. The session data is automatically saved after a request completes.
|
||||
|
||||
:see
|
||||
>session
|
||||
11
doc/pages/set_cwd.txt
Normal file
11
doc/pages/set_cwd.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void set_cwd(String path)
|
||||
|
||||
:params
|
||||
path : the new working directory
|
||||
|
||||
:desc
|
||||
Sets a new working directory.
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/shell_escape.txt
Normal file
12
doc/pages/shell_escape.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String shell_escape(String raw)
|
||||
|
||||
:params
|
||||
raw : string that should be escaped
|
||||
return value : escaped version of 'raw'
|
||||
|
||||
:desc
|
||||
Escapes a parameter for shell_exec
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/shell_exec.txt
Normal file
12
doc/pages/shell_exec.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String shell_exec(String cmd)
|
||||
|
||||
:params
|
||||
cmd : string that contains the shell command line to be executed
|
||||
return value : output of the command execution
|
||||
|
||||
:desc
|
||||
Executes a Linux shell command and returns the generated output
|
||||
|
||||
:see
|
||||
>sys
|
||||
11
doc/pages/socket_close.txt
Normal file
11
doc/pages/socket_close.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void socket_close(u64 sockfd)
|
||||
|
||||
:params
|
||||
sockfd : socket handle
|
||||
|
||||
:desc
|
||||
Closes an existing socket connection.
|
||||
|
||||
:see
|
||||
>socket
|
||||
13
doc/pages/socket_connect.txt
Normal file
13
doc/pages/socket_connect.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
u64 socket_connect(String host, short port)
|
||||
|
||||
:params
|
||||
host : host name
|
||||
port : port number
|
||||
return value : the socket handle
|
||||
|
||||
:desc
|
||||
Opens a socket connection to the given 'host' and 'port'.
|
||||
|
||||
:see
|
||||
>socket
|
||||
14
doc/pages/socket_read.txt
Normal file
14
doc/pages/socket_read.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
String socket_read(u64 sockfd, u32 max_length = 1024*128, u32 timeout = 1);
|
||||
|
||||
:params
|
||||
sockfd : socket handle
|
||||
max_length : optional maximum data size, defaults to 128kBytes
|
||||
timeout : optional operation timeout, defaults to one second
|
||||
return value : string containing the data that was read
|
||||
|
||||
:desc
|
||||
Reads data from a socket connection.
|
||||
|
||||
:see
|
||||
>socket
|
||||
13
doc/pages/socket_write.txt
Normal file
13
doc/pages/socket_write.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
bool socket_write(u64 sockfd, String data)
|
||||
|
||||
:params
|
||||
sockfd : socket handle
|
||||
data : a string containing the data to be written to the socket
|
||||
return value : true if the write operation was successful
|
||||
|
||||
:desc
|
||||
Writes a string of 'data' to the given socket.
|
||||
|
||||
:see
|
||||
>socket
|
||||
13
doc/pages/split.txt
Normal file
13
doc/pages/split.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
StringList split(String str, String delim = "\n")
|
||||
|
||||
:params
|
||||
str : string to be split
|
||||
delim : delimiter (defaults to newline character)
|
||||
return value : a list of strings
|
||||
|
||||
:desc
|
||||
Splits 'str' into multiple strings based on the given delimiter 'delim'.
|
||||
|
||||
:see
|
||||
>string
|
||||
14
doc/pages/str_to_lower.txt
Normal file
14
doc/pages/str_to_lower.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
String str_to_lower(String s)
|
||||
|
||||
:params
|
||||
s : the string to be converted
|
||||
return value : returns a version of 's' where all upper case characters have been changed into lower case
|
||||
|
||||
:desc
|
||||
Returns a lower case version of the input string 's'.
|
||||
|
||||
Note: this function is not yet Unicode-aware.
|
||||
|
||||
:see
|
||||
>string
|
||||
14
doc/pages/str_to_upper.txt
Normal file
14
doc/pages/str_to_upper.txt
Normal file
@ -0,0 +1,14 @@
|
||||
:sig
|
||||
String str_to_upper(String s)
|
||||
|
||||
:params
|
||||
s : the string to be converted
|
||||
return value : returns a version of 's' where all lower case characters have been changed into upper case
|
||||
|
||||
:desc
|
||||
Returns a upper case version of the input string 's'.
|
||||
|
||||
Note: this function is not yet Unicode-aware.
|
||||
|
||||
:see
|
||||
>string
|
||||
13
doc/pages/task.txt
Normal file
13
doc/pages/task.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:sig
|
||||
pid_t task(String key, std::function<void()> exec_func)
|
||||
|
||||
:params
|
||||
key : string uniquely identifying the task
|
||||
exec_func : function to execute
|
||||
return value : the process ID of the started (or still running) task
|
||||
|
||||
:desc
|
||||
task() starts the 'exec_func' in a new process and returns that process' ID. If a process with the same 'key' is already running, task will not start a new process but instead just return the PID of the process that is already running.
|
||||
|
||||
:see
|
||||
>task
|
||||
12
doc/pages/task_pid.txt
Normal file
12
doc/pages/task_pid.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
pid_t task_pid(String key)
|
||||
|
||||
:params
|
||||
key : string uniquely identifying the task
|
||||
return value : the process ID of the task
|
||||
|
||||
:desc
|
||||
Checks whether a process with the given 'key' is running and returns its PID if it is. Returns 0 otherwise.
|
||||
|
||||
:see
|
||||
>task
|
||||
11
doc/pages/time.txt
Normal file
11
doc/pages/time.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
u64 time()
|
||||
|
||||
:params
|
||||
return value : second-accurate current Unix timestamp
|
||||
|
||||
:desc
|
||||
Returns a 64 bit integer containing the current Unix timestamp.
|
||||
|
||||
:see
|
||||
>time
|
||||
12
doc/pages/trim.txt
Normal file
12
doc/pages/trim.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String trim(String raw)
|
||||
|
||||
:params
|
||||
raw : string to be trimmed
|
||||
return value : string with leading and trailing whitespace characters removed
|
||||
|
||||
:desc
|
||||
Returns a string where leading an trailing whitespace characters have been trimmed off.
|
||||
|
||||
:see
|
||||
>string
|
||||
11
doc/pages/unlink.txt
Normal file
11
doc/pages/unlink.txt
Normal file
@ -0,0 +1,11 @@
|
||||
:sig
|
||||
void unlink(String file_name)
|
||||
|
||||
:params
|
||||
file_name : name of the file
|
||||
|
||||
:desc
|
||||
Deletes the file identified by 'file_name'.
|
||||
|
||||
:see
|
||||
>sys
|
||||
12
doc/pages/uri_decode.txt
Normal file
12
doc/pages/uri_decode.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String uri_decode(String s)
|
||||
|
||||
:params
|
||||
s : string containing URI encoded data
|
||||
return value : a string that contains the decoded version of 's'
|
||||
|
||||
:desc
|
||||
Decodes an URI-encoded string 's'.
|
||||
|
||||
:see
|
||||
>uri
|
||||
12
doc/pages/uri_encode.txt
Normal file
12
doc/pages/uri_encode.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String uri_encode(String s)
|
||||
|
||||
:params
|
||||
s : string that should be encoded
|
||||
return value : an URI-encoded version of 's'
|
||||
|
||||
:desc
|
||||
URI-encodes a string.
|
||||
|
||||
:see
|
||||
>uri
|
||||
12
doc/pages/var_dump.txt
Normal file
12
doc/pages/var_dump.txt
Normal file
@ -0,0 +1,12 @@
|
||||
:sig
|
||||
String var_dump(StringMap t, String prefix = "", String postfix = "\n")
|
||||
String var_dump(StringList t, String prefix = "", String postfix = "\n")
|
||||
String var_dump(DTree t, String prefix = "", String postfix = "\n")
|
||||
|
||||
:params
|
||||
t : object to be dumped into a string
|
||||
return value : string containing a human-friendly representation of 't'
|
||||
|
||||
:desc
|
||||
Returns a string representation of 't' intended for debugging.
|
||||
|
||||
105
doc/style.css
Normal file
105
doc/style.css
Normal file
@ -0,0 +1,105 @@
|
||||
* {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
box-sizing: inherit;
|
||||
color: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: monospace;
|
||||
font-size: 200%;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
font-family: Tahoma, Helvetica, Arial;
|
||||
font-size: 1.2em;
|
||||
box-sizing: border-box;
|
||||
background: #139;
|
||||
color: white;
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
body > * {
|
||||
background: rgba(255,255,255,0.1);
|
||||
padding: 32px;
|
||||
margin: 16px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
form > div, label {
|
||||
display: block;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
background: rgba(0,0,0,0.2);
|
||||
border: 2px solid rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
input[type=submit], button {
|
||||
padding: 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type=submit]:hover, button:hover {
|
||||
color: yellow;
|
||||
background: rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
input[type=text], textarea {
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input[type=text]:hover, textarea:hover {
|
||||
background: rgba(0,0,0,0.25);
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: 20%;
|
||||
}
|
||||
|
||||
pre {
|
||||
height: 20%;
|
||||
overflow: auto;
|
||||
padding: 8px;
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background: rgba(100,100,100,0.15);
|
||||
font-family: monospace;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0;
|
||||
font-family: monospace;
|
||||
font-size: 1.4em;
|
||||
margin-bottom: 0.8em;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.sig {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
.params {
|
||||
|
||||
}
|
||||
|
||||
.params b {
|
||||
font-family: monospace;
|
||||
white-space: pre;
|
||||
}
|
||||
41
scripts/compile
Executable file
41
scripts/compile
Executable file
@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
cd "$(dirname "$0")"
|
||||
cd ..
|
||||
|
||||
SRC_DIR="$1"
|
||||
DEST_DIR="$2"
|
||||
|
||||
SRC_FN="$3"
|
||||
PP_FN="$4"
|
||||
SO_FN="$5"
|
||||
|
||||
#echo "Source Dir: $SRC_DIR"
|
||||
#echo "Dest Dir: $DEST_DIR"
|
||||
#echo "Source File: $SRC_FN"
|
||||
#echo "Preprocessed File: $PP_FN"
|
||||
#echo "Dest File: $SO_FN"
|
||||
|
||||
mkdir -p "$DEST_DIR" > /dev/null 2>&1
|
||||
|
||||
export CPLUS_INCLUDE_PATH="${CPLUS_INCLUDE_PATH:+${CPLUS_INCLUDE_PATH}:}$SRC_DIR"
|
||||
|
||||
BUILDMODE="debug"
|
||||
OPT_FLAG="O0"
|
||||
|
||||
COMPILER="clang++"
|
||||
#COMPILER="g++"
|
||||
FLAGS="-shared -g -rdynamic -w -Wall -$OPT_FLAG -std=c++17 -fpermissive -ffast-math -fPIC"
|
||||
|
||||
LIBS="-ldl -lm -lpthread "
|
||||
SRCFLAGS="-D PLATFORM_NAME=\"linux\""
|
||||
|
||||
# echo "Compliling executable..."
|
||||
$COMPILER "$DEST_DIR/$PP_FN" $SRCFLAGS $FLAGS $LIBS -o "$DEST_DIR/$SO_FN"
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
# ls -lh "$DEST_DIR"
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
237
src/3rdparty/mysql/client_plugin.h
vendored
Normal file
237
src/3rdparty/mysql/client_plugin.h
vendored
Normal file
@ -0,0 +1,237 @@
|
||||
#ifndef MYSQL_CLIENT_PLUGIN_INCLUDED
|
||||
/* Copyright (c) 2010, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/**
|
||||
@file include/mysql/client_plugin.h
|
||||
MySQL Client Plugin API.
|
||||
This file defines the API for plugins that work on the client side
|
||||
*/
|
||||
#define MYSQL_CLIENT_PLUGIN_INCLUDED
|
||||
|
||||
#ifndef MYSQL_ABI_CHECK
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
On Windows, exports from DLL need to be declared.
|
||||
Also, plugin needs to be declared as extern "C" because MSVC
|
||||
unlike other compilers, uses C++ mangling for variables not only
|
||||
for functions.
|
||||
*/
|
||||
|
||||
#undef MYSQL_PLUGIN_EXPORT
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(MYSQL_DYNAMIC_PLUGIN)
|
||||
#ifdef __cplusplus
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C" __declspec(dllexport)
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT __declspec(dllexport)
|
||||
#endif
|
||||
#else /* MYSQL_DYNAMIC_PLUGIN */
|
||||
#ifdef __cplusplus
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C"
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT
|
||||
#endif
|
||||
#endif /*MYSQL_DYNAMIC_PLUGIN */
|
||||
#else /*_MSC_VER */
|
||||
|
||||
#if defined(MYSQL_DYNAMIC_PLUGIN)
|
||||
#define MYSQL_PLUGIN_EXPORT MY_ATTRIBUTE((visibility("default")))
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* known plugin types */
|
||||
#define MYSQL_CLIENT_reserved1 0
|
||||
#define MYSQL_CLIENT_reserved2 1
|
||||
#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN 2
|
||||
#define MYSQL_CLIENT_TRACE_PLUGIN 3
|
||||
|
||||
#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION 0x0200
|
||||
#define MYSQL_CLIENT_TRACE_PLUGIN_INTERFACE_VERSION 0x0200
|
||||
|
||||
#define MYSQL_CLIENT_MAX_PLUGINS 4
|
||||
|
||||
#define MYSQL_CLIENT_PLUGIN_AUTHOR_ORACLE "Oracle Corporation"
|
||||
|
||||
#define mysql_declare_client_plugin(X) \
|
||||
MYSQL_PLUGIN_EXPORT st_mysql_client_plugin_##X \
|
||||
_mysql_client_plugin_declaration_ = { \
|
||||
MYSQL_CLIENT_##X##_PLUGIN, \
|
||||
MYSQL_CLIENT_##X##_PLUGIN_INTERFACE_VERSION,
|
||||
#define mysql_end_client_plugin }
|
||||
|
||||
/* generic plugin header structure */
|
||||
#define MYSQL_CLIENT_PLUGIN_HEADER \
|
||||
int type; \
|
||||
unsigned int interface_version; \
|
||||
const char *name; \
|
||||
const char *author; \
|
||||
const char *desc; \
|
||||
unsigned int version[3]; \
|
||||
const char *license; \
|
||||
void *mysql_api; \
|
||||
int (*init)(char *, size_t, int, va_list); \
|
||||
int (*deinit)(void); \
|
||||
int (*options)(const char *option, const void *); \
|
||||
int (*get_options)(const char *option, void *);
|
||||
|
||||
struct st_mysql_client_plugin {
|
||||
MYSQL_CLIENT_PLUGIN_HEADER
|
||||
};
|
||||
|
||||
struct MYSQL;
|
||||
|
||||
/******** authentication plugin specific declarations *********/
|
||||
#include "plugin_auth_common.h"
|
||||
|
||||
struct auth_plugin_t {
|
||||
MYSQL_CLIENT_PLUGIN_HEADER
|
||||
int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct MYSQL *mysql);
|
||||
enum net_async_status (*authenticate_user_nonblocking)(MYSQL_PLUGIN_VIO *vio,
|
||||
struct MYSQL *mysql,
|
||||
int *result);
|
||||
};
|
||||
|
||||
// Needed for the mysql_declare_client_plugin() macro. Do not use elsewhere.
|
||||
typedef struct auth_plugin_t st_mysql_client_plugin_AUTHENTICATION;
|
||||
|
||||
/******** using plugins ************/
|
||||
|
||||
/**
|
||||
loads a plugin and initializes it
|
||||
|
||||
@param mysql MYSQL structure.
|
||||
@param name a name of the plugin to load
|
||||
@param type type of plugin that should be loaded, -1 to disable type check
|
||||
@param argc number of arguments to pass to the plugin initialization
|
||||
function
|
||||
@param ... arguments for the plugin initialization function
|
||||
|
||||
@retval
|
||||
a pointer to the loaded plugin, or NULL in case of a failure
|
||||
*/
|
||||
struct st_mysql_client_plugin *mysql_load_plugin(struct MYSQL *mysql,
|
||||
const char *name, int type,
|
||||
int argc, ...);
|
||||
|
||||
/**
|
||||
loads a plugin and initializes it, taking va_list as an argument
|
||||
|
||||
This is the same as mysql_load_plugin, but take va_list instead of
|
||||
a list of arguments.
|
||||
|
||||
@param mysql MYSQL structure.
|
||||
@param name a name of the plugin to load
|
||||
@param type type of plugin that should be loaded, -1 to disable type check
|
||||
@param argc number of arguments to pass to the plugin initialization
|
||||
function
|
||||
@param args arguments for the plugin initialization function
|
||||
|
||||
@retval
|
||||
a pointer to the loaded plugin, or NULL in case of a failure
|
||||
*/
|
||||
struct st_mysql_client_plugin *mysql_load_plugin_v(struct MYSQL *mysql,
|
||||
const char *name, int type,
|
||||
int argc, va_list args);
|
||||
|
||||
/**
|
||||
finds an already loaded plugin by name, or loads it, if necessary
|
||||
|
||||
@param mysql MYSQL structure.
|
||||
@param name a name of the plugin to load
|
||||
@param type type of plugin that should be loaded
|
||||
|
||||
@retval
|
||||
a pointer to the plugin, or NULL in case of a failure
|
||||
*/
|
||||
struct st_mysql_client_plugin *mysql_client_find_plugin(struct MYSQL *mysql,
|
||||
const char *name,
|
||||
int type);
|
||||
|
||||
/**
|
||||
adds a plugin structure to the list of loaded plugins
|
||||
|
||||
This is useful if an application has the necessary functionality
|
||||
(for example, a special load data handler) statically linked into
|
||||
the application binary. It can use this function to register the plugin
|
||||
directly, avoiding the need to factor it out into a shared object.
|
||||
|
||||
@param mysql MYSQL structure. It is only used for error reporting
|
||||
@param plugin an st_mysql_client_plugin structure to register
|
||||
|
||||
@retval
|
||||
a pointer to the plugin, or NULL in case of a failure
|
||||
*/
|
||||
struct st_mysql_client_plugin *mysql_client_register_plugin(
|
||||
struct MYSQL *mysql, struct st_mysql_client_plugin *plugin);
|
||||
|
||||
/**
|
||||
set plugin options
|
||||
|
||||
Can be used to set extra options and affect behavior for a plugin.
|
||||
This function may be called multiple times to set several options
|
||||
|
||||
@param plugin an st_mysql_client_plugin structure
|
||||
@param option a string which specifies the option to set
|
||||
@param value value for the option.
|
||||
|
||||
@retval 0 on success, 1 in case of failure
|
||||
**/
|
||||
int mysql_plugin_options(struct st_mysql_client_plugin *plugin,
|
||||
const char *option, const void *value);
|
||||
|
||||
/**
|
||||
get plugin options
|
||||
|
||||
Can be used to get options from a plugin.
|
||||
This function may be called multiple times to get several options
|
||||
|
||||
@param plugin an st_mysql_client_plugin structure
|
||||
@param option a string which specifies the option to get
|
||||
@param[out] value value for the option.
|
||||
|
||||
@retval 0 on success, 1 in case of failure
|
||||
**/
|
||||
int mysql_plugin_get_option(struct st_mysql_client_plugin *plugin,
|
||||
const char *option, void *value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
144
src/3rdparty/mysql/errmsg.h
vendored
Normal file
144
src/3rdparty/mysql/errmsg.h
vendored
Normal file
@ -0,0 +1,144 @@
|
||||
#ifndef ERRMSG_INCLUDED
|
||||
#define ERRMSG_INCLUDED
|
||||
|
||||
/* Copyright (c) 2000, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/**
|
||||
@file include/errmsg.h
|
||||
|
||||
Error messages for MySQL clients.
|
||||
These are constant and use the CR_ prefix.
|
||||
<mysqlclient_ername.h> will contain auto-generated mappings
|
||||
containing the symbolic name and the number from this file,
|
||||
and the english error messages in libmysql/errmsg.c.
|
||||
|
||||
Dynamic error messages for the daemon are in share/language/errmsg.sys.
|
||||
The server equivalent to <errmsg.h> is <mysqld_error.h>.
|
||||
The server equivalent to <mysqlclient_ername.h> is <mysqld_ername.h>.
|
||||
|
||||
Note that the auth subsystem also uses codes with a CR_ prefix.
|
||||
*/
|
||||
|
||||
void init_client_errs(void);
|
||||
void finish_client_errs(void);
|
||||
extern const char *client_errors[]; /* Error messages */
|
||||
|
||||
#define CR_MIN_ERROR 2000 /* For easier client code */
|
||||
#define CR_MAX_ERROR 2999
|
||||
#define CLIENT_ERRMAP 2 /* Errormap used by my_error() */
|
||||
|
||||
/* Do not add error numbers before CR_ERROR_FIRST. */
|
||||
/* If necessary to add lower numbers, change CR_ERROR_FIRST accordingly. */
|
||||
#define CR_ERROR_FIRST 2000 /*Copy first error nr.*/
|
||||
#define CR_UNKNOWN_ERROR 2000
|
||||
#define CR_SOCKET_CREATE_ERROR 2001
|
||||
#define CR_CONNECTION_ERROR 2002
|
||||
#define CR_CONN_HOST_ERROR 2003
|
||||
#define CR_IPSOCK_ERROR 2004
|
||||
#define CR_UNKNOWN_HOST 2005
|
||||
#define CR_SERVER_GONE_ERROR 2006
|
||||
#define CR_VERSION_ERROR 2007
|
||||
#define CR_OUT_OF_MEMORY 2008
|
||||
#define CR_WRONG_HOST_INFO 2009
|
||||
#define CR_LOCALHOST_CONNECTION 2010
|
||||
#define CR_TCP_CONNECTION 2011
|
||||
#define CR_SERVER_HANDSHAKE_ERR 2012
|
||||
#define CR_SERVER_LOST 2013
|
||||
#define CR_COMMANDS_OUT_OF_SYNC 2014
|
||||
#define CR_NAMEDPIPE_CONNECTION 2015
|
||||
#define CR_NAMEDPIPEWAIT_ERROR 2016
|
||||
#define CR_NAMEDPIPEOPEN_ERROR 2017
|
||||
#define CR_NAMEDPIPESETSTATE_ERROR 2018
|
||||
#define CR_CANT_READ_CHARSET 2019
|
||||
#define CR_NET_PACKET_TOO_LARGE 2020
|
||||
#define CR_EMBEDDED_CONNECTION 2021
|
||||
#define CR_PROBE_SLAVE_STATUS 2022
|
||||
#define CR_PROBE_SLAVE_HOSTS 2023
|
||||
#define CR_PROBE_SLAVE_CONNECT 2024
|
||||
#define CR_PROBE_MASTER_CONNECT 2025
|
||||
#define CR_SSL_CONNECTION_ERROR 2026
|
||||
#define CR_MALFORMED_PACKET 2027
|
||||
#define CR_WRONG_LICENSE 2028
|
||||
|
||||
/* new 4.1 error codes */
|
||||
#define CR_NULL_POINTER 2029
|
||||
#define CR_NO_PREPARE_STMT 2030
|
||||
#define CR_PARAMS_NOT_BOUND 2031
|
||||
#define CR_DATA_TRUNCATED 2032
|
||||
#define CR_NO_PARAMETERS_EXISTS 2033
|
||||
#define CR_INVALID_PARAMETER_NO 2034
|
||||
#define CR_INVALID_BUFFER_USE 2035
|
||||
#define CR_UNSUPPORTED_PARAM_TYPE 2036
|
||||
|
||||
#define CR_SHARED_MEMORY_CONNECTION 2037
|
||||
#define CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR 2038
|
||||
#define CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR 2039
|
||||
#define CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR 2040
|
||||
#define CR_SHARED_MEMORY_CONNECT_MAP_ERROR 2041
|
||||
#define CR_SHARED_MEMORY_FILE_MAP_ERROR 2042
|
||||
#define CR_SHARED_MEMORY_MAP_ERROR 2043
|
||||
#define CR_SHARED_MEMORY_EVENT_ERROR 2044
|
||||
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 2045
|
||||
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR 2046
|
||||
#define CR_CONN_UNKNOW_PROTOCOL 2047
|
||||
#define CR_INVALID_CONN_HANDLE 2048
|
||||
#define CR_UNUSED_1 2049
|
||||
#define CR_FETCH_CANCELED 2050
|
||||
#define CR_NO_DATA 2051
|
||||
#define CR_NO_STMT_METADATA 2052
|
||||
#define CR_NO_RESULT_SET 2053
|
||||
#define CR_NOT_IMPLEMENTED 2054
|
||||
#define CR_SERVER_LOST_EXTENDED 2055
|
||||
#define CR_STMT_CLOSED 2056
|
||||
#define CR_NEW_STMT_METADATA 2057
|
||||
#define CR_ALREADY_CONNECTED 2058
|
||||
#define CR_AUTH_PLUGIN_CANNOT_LOAD 2059
|
||||
#define CR_DUPLICATE_CONNECTION_ATTR 2060
|
||||
#define CR_AUTH_PLUGIN_ERR 2061
|
||||
#define CR_INSECURE_API_ERR 2062
|
||||
#define CR_FILE_NAME_TOO_LONG 2063
|
||||
#define CR_SSL_FIPS_MODE_ERR 2064
|
||||
#define CR_DEPRECATED_COMPRESSION_NOT_SUPPORTED 2065
|
||||
#define CR_COMPRESSION_WRONGLY_CONFIGURED 2066
|
||||
#define CR_KERBEROS_USER_NOT_FOUND 2067
|
||||
#define CR_LOAD_DATA_LOCAL_INFILE_REJECTED 2068
|
||||
#define CR_LOAD_DATA_LOCAL_INFILE_REALPATH_FAIL 2069
|
||||
#define CR_DNS_SRV_LOOKUP_FAILED 2070
|
||||
#define CR_MANDATORY_TRACKER_NOT_FOUND 2071
|
||||
#define CR_INVALID_FACTOR_NO 2072
|
||||
#define CR_ERROR_LAST /*Copy last error nr:*/ 2072
|
||||
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
|
||||
|
||||
/* Visual Studio requires '__inline' for C code */
|
||||
static inline const char *ER_CLIENT(int client_errno) {
|
||||
if (client_errno >= CR_ERROR_FIRST && client_errno <= CR_ERROR_LAST)
|
||||
return client_errors[client_errno - CR_ERROR_FIRST];
|
||||
return client_errors[CR_UNKNOWN_ERROR - CR_ERROR_FIRST];
|
||||
}
|
||||
|
||||
#endif /* ERRMSG_INCLUDED */
|
||||
98
src/3rdparty/mysql/field_types.h
vendored
Normal file
98
src/3rdparty/mysql/field_types.h
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
/* Copyright (c) 2014, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/**
|
||||
@file field_types.h
|
||||
|
||||
@brief This file contains the field type.
|
||||
|
||||
|
||||
@note This file can be imported both from C and C++ code, so the
|
||||
definitions have to be constructed to support this.
|
||||
*/
|
||||
|
||||
#ifndef FIELD_TYPES_INCLUDED
|
||||
#define FIELD_TYPES_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*
|
||||
* Constants exported from this package.
|
||||
*/
|
||||
|
||||
/**
|
||||
Column types for MySQL
|
||||
*/
|
||||
enum enum_field_types
|
||||
#if defined(__cplusplus) && __cplusplus > 201103L
|
||||
// N2764: Forward enum declarations, added in C++11
|
||||
: int
|
||||
#endif /* __cplusplus */
|
||||
{ MYSQL_TYPE_DECIMAL,
|
||||
MYSQL_TYPE_TINY,
|
||||
MYSQL_TYPE_SHORT,
|
||||
MYSQL_TYPE_LONG,
|
||||
MYSQL_TYPE_FLOAT,
|
||||
MYSQL_TYPE_DOUBLE,
|
||||
MYSQL_TYPE_NULL,
|
||||
MYSQL_TYPE_TIMESTAMP,
|
||||
MYSQL_TYPE_LONGLONG,
|
||||
MYSQL_TYPE_INT24,
|
||||
MYSQL_TYPE_DATE,
|
||||
MYSQL_TYPE_TIME,
|
||||
MYSQL_TYPE_DATETIME,
|
||||
MYSQL_TYPE_YEAR,
|
||||
MYSQL_TYPE_NEWDATE, /**< Internal to MySQL. Not used in protocol */
|
||||
MYSQL_TYPE_VARCHAR,
|
||||
MYSQL_TYPE_BIT,
|
||||
MYSQL_TYPE_TIMESTAMP2,
|
||||
MYSQL_TYPE_DATETIME2, /**< Internal to MySQL. Not used in protocol */
|
||||
MYSQL_TYPE_TIME2, /**< Internal to MySQL. Not used in protocol */
|
||||
MYSQL_TYPE_TYPED_ARRAY, /**< Used for replication only */
|
||||
MYSQL_TYPE_INVALID = 243,
|
||||
MYSQL_TYPE_BOOL = 244, /**< Currently just a placeholder */
|
||||
MYSQL_TYPE_JSON = 245,
|
||||
MYSQL_TYPE_NEWDECIMAL = 246,
|
||||
MYSQL_TYPE_ENUM = 247,
|
||||
MYSQL_TYPE_SET = 248,
|
||||
MYSQL_TYPE_TINY_BLOB = 249,
|
||||
MYSQL_TYPE_MEDIUM_BLOB = 250,
|
||||
MYSQL_TYPE_LONG_BLOB = 251,
|
||||
MYSQL_TYPE_BLOB = 252,
|
||||
MYSQL_TYPE_VAR_STRING = 253,
|
||||
MYSQL_TYPE_STRING = 254,
|
||||
MYSQL_TYPE_GEOMETRY = 255 };
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#else
|
||||
typedef enum enum_field_types enum_field_types;
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* FIELD_TYPES_INCLUDED */
|
||||
103
src/3rdparty/mysql/my_command.h
vendored
Normal file
103
src/3rdparty/mysql/my_command.h
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
/* Copyright (c) 2015, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#ifndef _mysql_command_h
|
||||
#define _mysql_command_h
|
||||
|
||||
/**
|
||||
@file include/my_command.h
|
||||
*/
|
||||
|
||||
/**
|
||||
@enum enum_server_command
|
||||
|
||||
@brief A list of all MySQL protocol commands.
|
||||
|
||||
These are the top level commands the server can receive
|
||||
while it listens for a new command in ::dispatch_command
|
||||
|
||||
@par Warning
|
||||
Add new commands to the end of this list, otherwise old
|
||||
servers won't be able to handle them as 'unsupported'.
|
||||
*/
|
||||
enum enum_server_command {
|
||||
/**
|
||||
Currently refused by the server. See ::dispatch_command.
|
||||
Also used internally to mark the start of a session.
|
||||
*/
|
||||
COM_SLEEP,
|
||||
COM_QUIT, /**< See @ref page_protocol_com_quit */
|
||||
COM_INIT_DB, /**< See @ref page_protocol_com_init_db */
|
||||
COM_QUERY, /**< See @ref page_protocol_com_query */
|
||||
COM_FIELD_LIST, /**< Deprecated. See @ref page_protocol_com_field_list */
|
||||
COM_CREATE_DB, /**< Currently refused by the server. See ::dispatch_command */
|
||||
COM_DROP_DB, /**< Currently refused by the server. See ::dispatch_command */
|
||||
COM_REFRESH, /**< Deprecated. See @ref page_protocol_com_refresh */
|
||||
COM_DEPRECATED_1, /**< Deprecated, used to be COM_SHUTDOWN */
|
||||
COM_STATISTICS, /**< See @ref page_protocol_com_statistics */
|
||||
COM_PROCESS_INFO, /**< Deprecated. See @ref page_protocol_com_process_info */
|
||||
COM_CONNECT, /**< Currently refused by the server. */
|
||||
COM_PROCESS_KILL, /**< Deprecated. See @ref page_protocol_com_process_kill */
|
||||
COM_DEBUG, /**< See @ref page_protocol_com_debug */
|
||||
COM_PING, /**< See @ref page_protocol_com_ping */
|
||||
COM_TIME, /**< Currently refused by the server. */
|
||||
COM_DELAYED_INSERT, /**< Functionality removed. */
|
||||
COM_CHANGE_USER, /**< See @ref page_protocol_com_change_user */
|
||||
COM_BINLOG_DUMP, /**< See @ref page_protocol_com_binlog_dump */
|
||||
COM_TABLE_DUMP,
|
||||
COM_CONNECT_OUT,
|
||||
COM_REGISTER_SLAVE,
|
||||
COM_STMT_PREPARE, /**< See @ref page_protocol_com_stmt_prepare */
|
||||
COM_STMT_EXECUTE, /**< See @ref page_protocol_com_stmt_execute */
|
||||
/** See @ref page_protocol_com_stmt_send_long_data */
|
||||
COM_STMT_SEND_LONG_DATA,
|
||||
COM_STMT_CLOSE, /**< See @ref page_protocol_com_stmt_close */
|
||||
COM_STMT_RESET, /**< See @ref page_protocol_com_stmt_reset */
|
||||
COM_SET_OPTION, /**< See @ref page_protocol_com_set_option */
|
||||
COM_STMT_FETCH, /**< See @ref page_protocol_com_stmt_fetch */
|
||||
/**
|
||||
Currently refused by the server. See ::dispatch_command.
|
||||
Also used internally to mark the session as a "daemon",
|
||||
i.e. non-client THD. Currently the scheduler and the GTID
|
||||
code does use this state.
|
||||
These threads won't be killed by `KILL`
|
||||
|
||||
@sa Event_scheduler::start, ::init_thd, ::kill_one_thread,
|
||||
::Find_thd_with_id
|
||||
*/
|
||||
COM_DAEMON,
|
||||
COM_BINLOG_DUMP_GTID,
|
||||
COM_RESET_CONNECTION, /**< See @ref page_protocol_com_reset_connection */
|
||||
COM_CLONE,
|
||||
COM_SUBSCRIBE_GROUP_REPLICATION_STREAM,
|
||||
/* don't forget to update const char *command_name[] in sql_parse.cc */
|
||||
|
||||
/* Must be last */
|
||||
COM_END /**< Not a real command. Refused. */
|
||||
};
|
||||
|
||||
#endif /* _mysql_command_h */
|
||||
114
src/3rdparty/mysql/my_compress.h
vendored
Normal file
114
src/3rdparty/mysql/my_compress.h
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
/* Copyright (c) 2019, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#ifndef MY_COMPRESS_INCLUDED
|
||||
#define MY_COMPRESS_INCLUDED
|
||||
|
||||
/* List of valid values for compression_algorithm */
|
||||
enum enum_compression_algorithm {
|
||||
MYSQL_UNCOMPRESSED = 1,
|
||||
MYSQL_ZLIB,
|
||||
MYSQL_ZSTD,
|
||||
MYSQL_INVALID
|
||||
};
|
||||
|
||||
/**
|
||||
Compress context information. relating to zlib compression.
|
||||
*/
|
||||
|
||||
typedef struct mysql_zlib_compress_context {
|
||||
/**
|
||||
Compression level to use in zlib compression.
|
||||
*/
|
||||
unsigned int compression_level;
|
||||
} mysql_zlib_compress_context;
|
||||
|
||||
typedef struct ZSTD_CCtx_s ZSTD_CCtx;
|
||||
typedef struct ZSTD_DCtx_s ZSTD_DCtx;
|
||||
|
||||
/**
|
||||
Compress context information relating to zstd compression.
|
||||
*/
|
||||
|
||||
typedef struct mysql_zstd_compress_context {
|
||||
/**
|
||||
Pointer to compressor context.
|
||||
*/
|
||||
ZSTD_CCtx *cctx;
|
||||
/**
|
||||
Pointer to decompressor context.
|
||||
*/
|
||||
ZSTD_DCtx *dctx;
|
||||
/**
|
||||
Compression level to use in zstd compression.
|
||||
*/
|
||||
unsigned int compression_level;
|
||||
} mysql_zstd_compress_context;
|
||||
|
||||
/**
|
||||
Compression context information.
|
||||
It encapsulate the context information based on compression method and
|
||||
presents a generic struct.
|
||||
*/
|
||||
|
||||
typedef struct mysql_compress_context {
|
||||
enum enum_compression_algorithm algorithm; ///< Compression algorithm name.
|
||||
union {
|
||||
mysql_zlib_compress_context zlib_ctx; ///< Context information of zlib.
|
||||
mysql_zstd_compress_context zstd_ctx; ///< Context information of zstd.
|
||||
} u;
|
||||
} mysql_compress_context;
|
||||
|
||||
/**
|
||||
Get default compression level corresponding to a given compression method.
|
||||
|
||||
@param algorithm Compression Method. Possible values are zlib or zstd.
|
||||
|
||||
@return an unsigned int representing default compression level.
|
||||
6 is the default compression level for zlib and 3 is the
|
||||
default compression level for zstd.
|
||||
*/
|
||||
|
||||
unsigned int mysql_default_compression_level(
|
||||
enum enum_compression_algorithm algorithm);
|
||||
|
||||
/**
|
||||
Initialize a compress context object to be associated with a NET object.
|
||||
|
||||
@param cmp_ctx Pointer to compression context.
|
||||
@param algorithm Compression algorithm.
|
||||
@param compression_level Compression level corresponding to the compression
|
||||
algorithm.
|
||||
*/
|
||||
|
||||
void mysql_compress_context_init(mysql_compress_context *cmp_ctx,
|
||||
enum enum_compression_algorithm algorithm,
|
||||
unsigned int compression_level);
|
||||
/**
|
||||
Deinitialize the compression context allocated.
|
||||
|
||||
@param mysql_compress_ctx Pointer to Compression context.
|
||||
*/
|
||||
|
||||
void mysql_compress_context_deinit(mysql_compress_context *mysql_compress_ctx);
|
||||
|
||||
#endif // MY_COMPRESS_INCLUDED
|
||||
57
src/3rdparty/mysql/my_list.h
vendored
Normal file
57
src/3rdparty/mysql/my_list.h
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
/* Copyright (c) 2000, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#ifndef _list_h_
|
||||
#define _list_h_
|
||||
|
||||
/**
|
||||
@file include/my_list.h
|
||||
*/
|
||||
|
||||
typedef struct LIST {
|
||||
#if defined(__cplusplus) && __cplusplus >= 201103L
|
||||
struct LIST *prev{nullptr}, *next{nullptr};
|
||||
void *data{nullptr};
|
||||
#else
|
||||
struct LIST *prev, *next;
|
||||
void *data;
|
||||
#endif
|
||||
} LIST;
|
||||
|
||||
typedef int (*list_walk_action)(void *, void *);
|
||||
|
||||
extern LIST *list_add(LIST *root, LIST *element);
|
||||
extern LIST *list_delete(LIST *root, LIST *element);
|
||||
extern LIST *list_cons(void *data, LIST *root);
|
||||
extern LIST *list_reverse(LIST *root);
|
||||
extern void list_free(LIST *root, unsigned int free_data);
|
||||
extern unsigned int list_length(LIST *);
|
||||
extern int list_walk(LIST *, list_walk_action action, unsigned char *argument);
|
||||
|
||||
#define list_rest(a) ((a)->next)
|
||||
|
||||
#endif
|
||||
803
src/3rdparty/mysql/mysql.h
vendored
Normal file
803
src/3rdparty/mysql/mysql.h
vendored
Normal file
@ -0,0 +1,803 @@
|
||||
/* Copyright (c) 2000, 2021, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License, version 2.0,
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is also distributed with certain software (including
|
||||
but not limited to OpenSSL) that is licensed under separate terms,
|
||||
as designated in a particular file or component or in included license
|
||||
documentation. The authors of MySQL hereby grant you an additional
|
||||
permission to link the program and your derivative works with the
|
||||
separately licensed software that they have included with MySQL.
|
||||
|
||||
Without limiting anything contained in the foregoing, this file,
|
||||
which is part of C Driver for MySQL (Connector/C), is also subject to the
|
||||
Universal FOSS Exception, version 1.0, a copy of which can be found at
|
||||
http://oss.oracle.com/licenses/universal-foss-exception.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License, version 2.0, for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/**
|
||||
@file include/mysql.h
|
||||
This file defines the client API to MySQL and also the ABI of the
|
||||
dynamically linked libmysqlclient.
|
||||
|
||||
The ABI should never be changed in a released product of MySQL,
|
||||
thus you need to take great care when changing the file. In case
|
||||
the file is changed so the ABI is broken, you must also update
|
||||
the SHARED_LIB_MAJOR_VERSION in cmake/mysql_version.cmake
|
||||
*/
|
||||
|
||||
#ifndef _mysql_h
|
||||
#define _mysql_h
|
||||
|
||||
#ifndef MYSQL_ABI_CHECK
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
// Legacy definition for the benefit of old code. Use uint64_t in new code.
|
||||
// If you get warnings from printf, use the PRIu64 macro, or, if you need
|
||||
// compatibility with older versions of the client library, cast
|
||||
// before printing.
|
||||
typedef uint64_t my_ulonglong;
|
||||
|
||||
#ifndef my_socket_defined
|
||||
#define my_socket_defined
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#ifdef WIN32_LEAN_AND_MEAN
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
#define my_socket SOCKET
|
||||
#else
|
||||
typedef int my_socket;
|
||||
#endif /* _WIN32 */
|
||||
#endif /* my_socket_defined */
|
||||
|
||||
// Small extra definition to avoid pulling in my_compiler.h in client code.
|
||||
// IWYU pragma: no_include "my_compiler.h"
|
||||
#ifndef MY_COMPILER_INCLUDED
|
||||
#if !defined(_WIN32)
|
||||
#define STDCALL
|
||||
#else
|
||||
#define STDCALL __stdcall
|
||||
#endif
|
||||
#endif /* MY_COMPILER_INCLUDED */
|
||||
|
||||
#include "field_types.h"
|
||||
#include "my_list.h"
|
||||
#include "mysql_com.h"
|
||||
|
||||
/* Include declarations of plug-in API */
|
||||
#include "mysql/client_plugin.h" // IWYU pragma: keep
|
||||
|
||||
/*
|
||||
The client should be able to know which version it is compiled against,
|
||||
even if mysql.h doesn't use this information directly.
|
||||
*/
|
||||
#include "mysql_version.h" // IWYU pragma: keep
|
||||
|
||||
// MYSQL_TIME is part of our public API.
|
||||
#include "mysql_time.h" // IWYU pragma: keep
|
||||
|
||||
// The error messages are part of our public API.
|
||||
#include "errmsg.h" // IWYU pragma: keep
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern unsigned int mysql_port;
|
||||
extern char *mysql_unix_port;
|
||||
|
||||
#define CLIENT_NET_RETRY_COUNT 1 /* Retry count */
|
||||
#define CLIENT_NET_READ_TIMEOUT 365 * 24 * 3600 /* Timeout on read */
|
||||
#define CLIENT_NET_WRITE_TIMEOUT 365 * 24 * 3600 /* Timeout on write */
|
||||
|
||||
#define IS_PRI_KEY(n) ((n)&PRI_KEY_FLAG)
|
||||
#define IS_NOT_NULL(n) ((n)&NOT_NULL_FLAG)
|
||||
#define IS_BLOB(n) ((n)&BLOB_FLAG)
|
||||
/**
|
||||
Returns true if the value is a number which does not need quotes for
|
||||
the sql_lex.cc parser to parse correctly.
|
||||
*/
|
||||
#define IS_NUM(t) \
|
||||
(((t) <= MYSQL_TYPE_INT24 && (t) != MYSQL_TYPE_TIMESTAMP) || \
|
||||
(t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
|
||||
#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)
|
||||
|
||||
typedef struct MYSQL_FIELD {
|
||||
char *name; /* Name of column */
|
||||
char *org_name; /* Original column name, if an alias */
|
||||
char *table; /* Table of column if column was a field */
|
||||
char *org_table; /* Org table name, if table was an alias */
|
||||
char *db; /* Database for table */
|
||||
char *catalog; /* Catalog for table */
|
||||
char *def; /* Default value (set by mysql_list_fields) */
|
||||
unsigned long length; /* Width of column (create length) */
|
||||
unsigned long max_length; /* Max width for selected set */
|
||||
unsigned int name_length;
|
||||
unsigned int org_name_length;
|
||||
unsigned int table_length;
|
||||
unsigned int org_table_length;
|
||||
unsigned int db_length;
|
||||
unsigned int catalog_length;
|
||||
unsigned int def_length;
|
||||
unsigned int flags; /* Div flags */
|
||||
unsigned int decimals; /* Number of decimals in field */
|
||||
unsigned int charsetnr; /* Character set */
|
||||
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
|
||||
void *extension;
|
||||
} MYSQL_FIELD;
|
||||
|
||||
typedef char **MYSQL_ROW; /* return data as array of strings */
|
||||
typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
|
||||
|
||||
#define MYSQL_COUNT_ERROR (~(uint64_t)0)
|
||||
|
||||
/* backward compatibility define - to be removed eventually */
|
||||
#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED
|
||||
|
||||
typedef struct MYSQL_ROWS {
|
||||
struct MYSQL_ROWS *next; /* list of rows */
|
||||
MYSQL_ROW data;
|
||||
unsigned long length;
|
||||
} MYSQL_ROWS;
|
||||
|
||||
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
|
||||
|
||||
struct MEM_ROOT;
|
||||
|
||||
typedef struct MYSQL_DATA {
|
||||
MYSQL_ROWS *data;
|
||||
struct MEM_ROOT *alloc;
|
||||
uint64_t rows;
|
||||
unsigned int fields;
|
||||
} MYSQL_DATA;
|
||||
|
||||
enum mysql_option {
|
||||
MYSQL_OPT_CONNECT_TIMEOUT,
|
||||
MYSQL_OPT_COMPRESS,
|
||||
MYSQL_OPT_NAMED_PIPE,
|
||||
MYSQL_INIT_COMMAND,
|
||||
MYSQL_READ_DEFAULT_FILE,
|
||||
MYSQL_READ_DEFAULT_GROUP,
|
||||
MYSQL_SET_CHARSET_DIR,
|
||||
MYSQL_SET_CHARSET_NAME,
|
||||
MYSQL_OPT_LOCAL_INFILE,
|
||||
MYSQL_OPT_PROTOCOL,
|
||||
MYSQL_SHARED_MEMORY_BASE_NAME,
|
||||
MYSQL_OPT_READ_TIMEOUT,
|
||||
MYSQL_OPT_WRITE_TIMEOUT,
|
||||
MYSQL_OPT_USE_RESULT,
|
||||
MYSQL_REPORT_DATA_TRUNCATION,
|
||||
MYSQL_OPT_RECONNECT,
|
||||
MYSQL_PLUGIN_DIR,
|
||||
MYSQL_DEFAULT_AUTH,
|
||||
MYSQL_OPT_BIND,
|
||||
MYSQL_OPT_SSL_KEY,
|
||||
MYSQL_OPT_SSL_CERT,
|
||||
MYSQL_OPT_SSL_CA,
|
||||
MYSQL_OPT_SSL_CAPATH,
|
||||
MYSQL_OPT_SSL_CIPHER,
|
||||
MYSQL_OPT_SSL_CRL,
|
||||
MYSQL_OPT_SSL_CRLPATH,
|
||||
MYSQL_OPT_CONNECT_ATTR_RESET,
|
||||
MYSQL_OPT_CONNECT_ATTR_ADD,
|
||||
MYSQL_OPT_CONNECT_ATTR_DELETE,
|
||||
MYSQL_SERVER_PUBLIC_KEY,
|
||||
MYSQL_ENABLE_CLEARTEXT_PLUGIN,
|
||||
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
|
||||
MYSQL_OPT_MAX_ALLOWED_PACKET,
|
||||
MYSQL_OPT_NET_BUFFER_LENGTH,
|
||||
MYSQL_OPT_TLS_VERSION,
|
||||
MYSQL_OPT_SSL_MODE,
|
||||
MYSQL_OPT_GET_SERVER_PUBLIC_KEY,
|
||||
MYSQL_OPT_RETRY_COUNT,
|
||||
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA,
|
||||
MYSQL_OPT_SSL_FIPS_MODE,
|
||||
MYSQL_OPT_TLS_CIPHERSUITES,
|
||||
MYSQL_OPT_COMPRESSION_ALGORITHMS,
|
||||
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL,
|
||||
MYSQL_OPT_LOAD_DATA_LOCAL_DIR,
|
||||
MYSQL_OPT_USER_PASSWORD,
|
||||
};
|
||||
|
||||
/**
|
||||
@todo remove the "extension", move st_mysql_options completely
|
||||
out of mysql.h
|
||||
*/
|
||||
struct st_mysql_options_extention;
|
||||
|
||||
struct st_mysql_options {
|
||||
unsigned int connect_timeout, read_timeout, write_timeout;
|
||||
unsigned int port, protocol;
|
||||
unsigned long client_flag;
|
||||
char *host, *user, *password, *unix_socket, *db;
|
||||
struct Init_commands_array *init_commands;
|
||||
char *my_cnf_file, *my_cnf_group, *charset_dir, *charset_name;
|
||||
char *ssl_key; /* PEM key file */
|
||||
char *ssl_cert; /* PEM cert file */
|
||||
char *ssl_ca; /* PEM CA file */
|
||||
char *ssl_capath; /* PEM directory of CA-s? */
|
||||
char *ssl_cipher; /* cipher to use */
|
||||
char *shared_memory_base_name;
|
||||
unsigned long max_allowed_packet;
|
||||
bool compress, named_pipe;
|
||||
/**
|
||||
The local address to bind when connecting to remote server.
|
||||
*/
|
||||
char *bind_address;
|
||||
/* 0 - never report, 1 - always report (default) */
|
||||
bool report_data_truncation;
|
||||
|
||||
/* function pointers for local infile support */
|
||||
int (*local_infile_init)(void **, const char *, void *);
|
||||
int (*local_infile_read)(void *, char *, unsigned int);
|
||||
void (*local_infile_end)(void *);
|
||||
int (*local_infile_error)(void *, char *, unsigned int);
|
||||
void *local_infile_userdata;
|
||||
struct st_mysql_options_extention *extension;
|
||||
};
|
||||
|
||||
enum mysql_status {
|
||||
MYSQL_STATUS_READY,
|
||||
MYSQL_STATUS_GET_RESULT,
|
||||
MYSQL_STATUS_USE_RESULT,
|
||||
MYSQL_STATUS_STATEMENT_GET_RESULT
|
||||
};
|
||||
|
||||
enum mysql_protocol_type {
|
||||
MYSQL_PROTOCOL_DEFAULT,
|
||||
MYSQL_PROTOCOL_TCP,
|
||||
MYSQL_PROTOCOL_SOCKET,
|
||||
MYSQL_PROTOCOL_PIPE,
|
||||
MYSQL_PROTOCOL_MEMORY
|
||||
};
|
||||
|
||||
enum mysql_ssl_mode {
|
||||
SSL_MODE_DISABLED = 1,
|
||||
SSL_MODE_PREFERRED,
|
||||
SSL_MODE_REQUIRED,
|
||||
SSL_MODE_VERIFY_CA,
|
||||
SSL_MODE_VERIFY_IDENTITY
|
||||
};
|
||||
|
||||
enum mysql_ssl_fips_mode {
|
||||
SSL_FIPS_MODE_OFF = 0,
|
||||
SSL_FIPS_MODE_ON = 1,
|
||||
SSL_FIPS_MODE_STRICT
|
||||
};
|
||||
|
||||
typedef struct character_set {
|
||||
unsigned int number; /* character set number */
|
||||
unsigned int state; /* character set state */
|
||||
const char *csname; /* collation name */
|
||||
const char *name; /* character set name */
|
||||
const char *comment; /* comment */
|
||||
const char *dir; /* character set directory */
|
||||
unsigned int mbminlen; /* min. length for multibyte strings */
|
||||
unsigned int mbmaxlen; /* max. length for multibyte strings */
|
||||
} MY_CHARSET_INFO;
|
||||
|
||||
struct MYSQL_METHODS;
|
||||
struct MYSQL_STMT;
|
||||
|
||||
typedef struct MYSQL {
|
||||
NET net; /* Communication parameters */
|
||||
unsigned char *connector_fd; /* ConnectorFd for SSL */
|
||||
char *host, *user, *passwd, *unix_socket, *server_version, *host_info;
|
||||
char *info, *db;
|
||||
struct CHARSET_INFO *charset;
|
||||
MYSQL_FIELD *fields;
|
||||
struct MEM_ROOT *field_alloc;
|
||||
uint64_t affected_rows;
|
||||
uint64_t insert_id; /* id if insert on table with NEXTNR */
|
||||
uint64_t extra_info; /* Not used */
|
||||
unsigned long thread_id; /* Id for connection in server */
|
||||
unsigned long packet_length;
|
||||
unsigned int port;
|
||||
unsigned long client_flag, server_capabilities;
|
||||
unsigned int protocol_version;
|
||||
unsigned int field_count;
|
||||
unsigned int server_status;
|
||||
unsigned int server_language;
|
||||
unsigned int warning_count;
|
||||
struct st_mysql_options options;
|
||||
enum mysql_status status;
|
||||
enum enum_resultset_metadata resultset_metadata;
|
||||
bool free_me; /* If free in mysql_close */
|
||||
bool reconnect; /* set to 1 if automatic reconnect */
|
||||
|
||||
/* session-wide random string */
|
||||
char scramble[SCRAMBLE_LENGTH + 1];
|
||||
|
||||
LIST *stmts; /* list of all statements */
|
||||
const struct MYSQL_METHODS *methods;
|
||||
void *thd;
|
||||
/*
|
||||
Points to boolean flag in MYSQL_RES or MYSQL_STMT. We set this flag
|
||||
from mysql_stmt_close if close had to cancel result set of this object.
|
||||
*/
|
||||
bool *unbuffered_fetch_owner;
|
||||
void *extension;
|
||||
} MYSQL;
|
||||
|
||||
typedef struct MYSQL_RES {
|
||||
uint64_t row_count;
|
||||
MYSQL_FIELD *fields;
|
||||
struct MYSQL_DATA *data;
|
||||
MYSQL_ROWS *data_cursor;
|
||||
unsigned long *lengths; /* column lengths of current row */
|
||||
MYSQL *handle; /* for unbuffered reads */
|
||||
const struct MYSQL_METHODS *methods;
|
||||
MYSQL_ROW row; /* If unbuffered read */
|
||||
MYSQL_ROW current_row; /* buffer to current row */
|
||||
struct MEM_ROOT *field_alloc;
|
||||
unsigned int field_count, current_field;
|
||||
bool eof; /* Used by mysql_fetch_row */
|
||||
/* mysql_stmt_close() had to cancel this result */
|
||||
bool unbuffered_fetch_cancelled;
|
||||
enum enum_resultset_metadata metadata;
|
||||
void *extension;
|
||||
} MYSQL_RES;
|
||||
|
||||
/**
|
||||
Flag to indicate that COM_BINLOG_DUMP_GTID should
|
||||
be used rather than COM_BINLOG_DUMP in the @sa mysql_binlog_open().
|
||||
*/
|
||||
#define MYSQL_RPL_GTID (1 << 16)
|
||||
/**
|
||||
Skip HEARBEAT events in the @sa mysql_binlog_fetch().
|
||||
*/
|
||||
#define MYSQL_RPL_SKIP_HEARTBEAT (1 << 17)
|
||||
|
||||
/**
|
||||
Struct for information about a replication stream.
|
||||
|
||||
@sa mysql_binlog_open()
|
||||
@sa mysql_binlog_fetch()
|
||||
@sa mysql_binlog_close()
|
||||
*/
|
||||
typedef struct MYSQL_RPL {
|
||||
size_t file_name_length; /** Length of the 'file_name' or 0 */
|
||||
const char *file_name; /** Filename of the binary log to read */
|
||||
uint64_t start_position; /** Position in the binary log to */
|
||||
/* start reading from */
|
||||
unsigned int server_id; /** Server ID to use when identifying */
|
||||
/* with the master */
|
||||
unsigned int flags; /** Flags, e.g. MYSQL_RPL_GTID */
|
||||
|
||||
/** Size of gtid set data */
|
||||
size_t gtid_set_encoded_size;
|
||||
/** Callback function which is called */
|
||||
/* from @sa mysql_binlog_open() to */
|
||||
/* fill command packet gtid set */
|
||||
void (*fix_gtid_set)(struct MYSQL_RPL *rpl, unsigned char *packet_gtid_set);
|
||||
void *gtid_set_arg; /** GTID set data or an argument for */
|
||||
/* fix_gtid_set() callback function */
|
||||
|
||||
unsigned long size; /** Size of the packet returned by */
|
||||
/* mysql_binlog_fetch() */
|
||||
const unsigned char *buffer; /** Pointer to returned data */
|
||||
} MYSQL_RPL;
|
||||
|
||||
/*
|
||||
Set up and bring down the server; to ensure that applications will
|
||||
work when linked against either the standard client library or the
|
||||
embedded server library, these functions should be called.
|
||||
*/
|
||||
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
|
||||
void STDCALL mysql_server_end(void);
|
||||
|
||||
/*
|
||||
mysql_server_init/end need to be called when using libmysqld or
|
||||
libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
|
||||
you don't need to call it explicitely; but you need to call
|
||||
mysql_server_end() to free memory). The names are a bit misleading
|
||||
(mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
|
||||
names which suit well whether you're using libmysqld or libmysqlclient. We
|
||||
intend to promote these aliases over the mysql_server* ones.
|
||||
*/
|
||||
#define mysql_library_init mysql_server_init
|
||||
#define mysql_library_end mysql_server_end
|
||||
|
||||
/*
|
||||
Set up and bring down a thread; these function should be called
|
||||
for each thread in an application which opens at least one MySQL
|
||||
connection. All uses of the connection(s) should be between these
|
||||
function calls.
|
||||
*/
|
||||
bool STDCALL mysql_thread_init(void);
|
||||
void STDCALL mysql_thread_end(void);
|
||||
|
||||
/*
|
||||
Functions to get information from the MYSQL and MYSQL_RES structures
|
||||
Should definitely be used if one uses shared libraries.
|
||||
*/
|
||||
|
||||
uint64_t STDCALL mysql_num_rows(MYSQL_RES *res);
|
||||
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
|
||||
bool STDCALL mysql_eof(MYSQL_RES *res);
|
||||
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
|
||||
unsigned int fieldnr);
|
||||
MYSQL_FIELD *STDCALL mysql_fetch_fields(MYSQL_RES *res);
|
||||
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
|
||||
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);
|
||||
enum enum_resultset_metadata STDCALL mysql_result_metadata(MYSQL_RES *result);
|
||||
|
||||
unsigned int STDCALL mysql_field_count(MYSQL *mysql);
|
||||
uint64_t STDCALL mysql_affected_rows(MYSQL *mysql);
|
||||
uint64_t STDCALL mysql_insert_id(MYSQL *mysql);
|
||||
unsigned int STDCALL mysql_errno(MYSQL *mysql);
|
||||
const char *STDCALL mysql_error(MYSQL *mysql);
|
||||
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
|
||||
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
|
||||
const char *STDCALL mysql_info(MYSQL *mysql);
|
||||
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
|
||||
const char *STDCALL mysql_character_set_name(MYSQL *mysql);
|
||||
int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
|
||||
|
||||
MYSQL *STDCALL mysql_init(MYSQL *mysql);
|
||||
bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert,
|
||||
const char *ca, const char *capath,
|
||||
const char *cipher);
|
||||
const char *STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
|
||||
bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
|
||||
const char *passwd, const char *db);
|
||||
MYSQL *STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
|
||||
const char *user, const char *passwd,
|
||||
const char *db, unsigned int port,
|
||||
const char *unix_socket,
|
||||
unsigned long clientflag);
|
||||
int STDCALL mysql_select_db(MYSQL *mysql, const char *db);
|
||||
int STDCALL mysql_query(MYSQL *mysql, const char *q);
|
||||
int STDCALL mysql_send_query(MYSQL *mysql, const char *q, unsigned long length);
|
||||
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
|
||||
MYSQL_RES *STDCALL mysql_store_result(MYSQL *mysql);
|
||||
MYSQL_RES *STDCALL mysql_use_result(MYSQL *mysql);
|
||||
|
||||
enum net_async_status STDCALL mysql_real_connect_nonblocking(
|
||||
MYSQL *mysql, const char *host, const char *user, const char *passwd,
|
||||
const char *db, unsigned int port, const char *unix_socket,
|
||||
unsigned long clientflag);
|
||||
enum net_async_status STDCALL mysql_send_query_nonblocking(
|
||||
MYSQL *mysql, const char *query, unsigned long length);
|
||||
enum net_async_status STDCALL mysql_real_query_nonblocking(
|
||||
MYSQL *mysql, const char *query, unsigned long length);
|
||||
enum net_async_status STDCALL
|
||||
mysql_store_result_nonblocking(MYSQL *mysql, MYSQL_RES **result);
|
||||
enum net_async_status STDCALL mysql_next_result_nonblocking(MYSQL *mysql);
|
||||
enum net_async_status STDCALL mysql_select_db_nonblocking(MYSQL *mysql,
|
||||
const char *db,
|
||||
bool *error);
|
||||
void STDCALL mysql_get_character_set_info(MYSQL *mysql,
|
||||
MY_CHARSET_INFO *charset);
|
||||
|
||||
int STDCALL mysql_session_track_get_first(MYSQL *mysql,
|
||||
enum enum_session_state_type type,
|
||||
const char **data, size_t *length);
|
||||
int STDCALL mysql_session_track_get_next(MYSQL *mysql,
|
||||
enum enum_session_state_type type,
|
||||
const char **data, size_t *length);
|
||||
/* local infile support */
|
||||
|
||||
#define LOCAL_INFILE_ERROR_LEN 512
|
||||
|
||||
void mysql_set_local_infile_handler(
|
||||
MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *),
|
||||
int (*local_infile_read)(void *, char *, unsigned int),
|
||||
void (*local_infile_end)(void *),
|
||||
int (*local_infile_error)(void *, char *, unsigned int), void *);
|
||||
|
||||
void mysql_set_local_infile_default(MYSQL *mysql);
|
||||
int STDCALL mysql_shutdown(MYSQL *mysql,
|
||||
enum mysql_enum_shutdown_level shutdown_level);
|
||||
int STDCALL mysql_dump_debug_info(MYSQL *mysql);
|
||||
int STDCALL mysql_refresh(MYSQL *mysql, unsigned int refresh_options);
|
||||
int STDCALL mysql_kill(MYSQL *mysql, unsigned long pid);
|
||||
int STDCALL mysql_set_server_option(MYSQL *mysql,
|
||||
enum enum_mysql_set_option option);
|
||||
int STDCALL mysql_ping(MYSQL *mysql);
|
||||
const char *STDCALL mysql_stat(MYSQL *mysql);
|
||||
const char *STDCALL mysql_get_server_info(MYSQL *mysql);
|
||||
const char *STDCALL mysql_get_client_info(void);
|
||||
unsigned long STDCALL mysql_get_client_version(void);
|
||||
const char *STDCALL mysql_get_host_info(MYSQL *mysql);
|
||||
unsigned long STDCALL mysql_get_server_version(MYSQL *mysql);
|
||||
unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);
|
||||
MYSQL_RES *STDCALL mysql_list_dbs(MYSQL *mysql, const char *wild);
|
||||
MYSQL_RES *STDCALL mysql_list_tables(MYSQL *mysql, const char *wild);
|
||||
MYSQL_RES *STDCALL mysql_list_processes(MYSQL *mysql);
|
||||
int STDCALL mysql_options(MYSQL *mysql, enum mysql_option option,
|
||||
const void *arg);
|
||||
int STDCALL mysql_options4(MYSQL *mysql, enum mysql_option option,
|
||||
const void *arg1, const void *arg2);
|
||||
int STDCALL mysql_get_option(MYSQL *mysql, enum mysql_option option,
|
||||
const void *arg);
|
||||
void STDCALL mysql_free_result(MYSQL_RES *result);
|
||||
enum net_async_status STDCALL mysql_free_result_nonblocking(MYSQL_RES *result);
|
||||
void STDCALL mysql_data_seek(MYSQL_RES *result, uint64_t offset);
|
||||
MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result,
|
||||
MYSQL_ROW_OFFSET offset);
|
||||
MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result,
|
||||
MYSQL_FIELD_OFFSET offset);
|
||||
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
|
||||
enum net_async_status STDCALL mysql_fetch_row_nonblocking(MYSQL_RES *res,
|
||||
MYSQL_ROW *row);
|
||||
|
||||
unsigned long *STDCALL mysql_fetch_lengths(MYSQL_RES *result);
|
||||
MYSQL_FIELD *STDCALL mysql_fetch_field(MYSQL_RES *result);
|
||||
MYSQL_RES *STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
|
||||
const char *wild);
|
||||
unsigned long STDCALL mysql_escape_string(char *to, const char *from,
|
||||
unsigned long from_length);
|
||||
unsigned long STDCALL mysql_hex_string(char *to, const char *from,
|
||||
unsigned long from_length);
|
||||
unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql, char *to,
|
||||
const char *from,
|
||||
unsigned long length);
|
||||
unsigned long STDCALL mysql_real_escape_string_quote(MYSQL *mysql, char *to,
|
||||
const char *from,
|
||||
unsigned long length,
|
||||
char quote);
|
||||
void STDCALL mysql_debug(const char *debug);
|
||||
void STDCALL myodbc_remove_escape(MYSQL *mysql, char *name);
|
||||
unsigned int STDCALL mysql_thread_safe(void);
|
||||
bool STDCALL mysql_read_query_result(MYSQL *mysql);
|
||||
int STDCALL mysql_reset_connection(MYSQL *mysql);
|
||||
|
||||
int STDCALL mysql_binlog_open(MYSQL *mysql, MYSQL_RPL *rpl);
|
||||
int STDCALL mysql_binlog_fetch(MYSQL *mysql, MYSQL_RPL *rpl);
|
||||
void STDCALL mysql_binlog_close(MYSQL *mysql, MYSQL_RPL *rpl);
|
||||
|
||||
/*
|
||||
The following definitions are added for the enhanced
|
||||
client-server protocol
|
||||
*/
|
||||
|
||||
/* statement state */
|
||||
enum enum_mysql_stmt_state {
|
||||
MYSQL_STMT_INIT_DONE = 1,
|
||||
MYSQL_STMT_PREPARE_DONE,
|
||||
MYSQL_STMT_EXECUTE_DONE,
|
||||
MYSQL_STMT_FETCH_DONE
|
||||
};
|
||||
|
||||
/*
|
||||
This structure is used to define bind information, and
|
||||
internally by the client library.
|
||||
Public members with their descriptions are listed below
|
||||
(conventionally `On input' refers to the binds given to
|
||||
mysql_stmt_bind_param, `On output' refers to the binds given
|
||||
to mysql_stmt_bind_result):
|
||||
|
||||
buffer_type - One of the MYSQL_* types, used to describe
|
||||
the host language type of buffer.
|
||||
On output: if column type is different from
|
||||
buffer_type, column value is automatically converted
|
||||
to buffer_type before it is stored in the buffer.
|
||||
buffer - On input: points to the buffer with input data.
|
||||
On output: points to the buffer capable to store
|
||||
output data.
|
||||
The type of memory pointed by buffer must correspond
|
||||
to buffer_type. See the correspondence table in
|
||||
the comment to mysql_stmt_bind_param.
|
||||
|
||||
The two above members are mandatory for any kind of bind.
|
||||
|
||||
buffer_length - the length of the buffer. You don't have to set
|
||||
it for any fixed length buffer: float, double,
|
||||
int, etc. It must be set however for variable-length
|
||||
types, such as BLOBs or STRINGs.
|
||||
|
||||
length - On input: in case when lengths of input values
|
||||
are different for each execute, you can set this to
|
||||
point at a variable containining value length. This
|
||||
way the value length can be different in each execute.
|
||||
If length is not NULL, buffer_length is not used.
|
||||
Note, length can even point at buffer_length if
|
||||
you keep bind structures around while fetching:
|
||||
this way you can change buffer_length before
|
||||
each execution, everything will work ok.
|
||||
On output: if length is set, mysql_stmt_fetch will
|
||||
write column length into it.
|
||||
|
||||
is_null - On input: points to a boolean variable that should
|
||||
be set to TRUE for NULL values.
|
||||
This member is useful only if your data may be
|
||||
NULL in some but not all cases.
|
||||
If your data is never NULL, is_null should be set to 0.
|
||||
If your data is always NULL, set buffer_type
|
||||
to MYSQL_TYPE_NULL, and is_null will not be used.
|
||||
|
||||
is_unsigned - On input: used to signify that values provided for one
|
||||
of numeric types are unsigned.
|
||||
On output describes signedness of the output buffer.
|
||||
If, taking into account is_unsigned flag, column data
|
||||
is out of range of the output buffer, data for this column
|
||||
is regarded truncated. Note that this has no correspondence
|
||||
to the sign of result set column, if you need to find it out
|
||||
use mysql_stmt_result_metadata.
|
||||
error - where to write a truncation error if it is present.
|
||||
possible error value is:
|
||||
0 no truncation
|
||||
1 value is out of range or buffer is too small
|
||||
|
||||
Please note that MYSQL_BIND also has internals members.
|
||||
*/
|
||||
|
||||
typedef struct MYSQL_BIND {
|
||||
unsigned long *length; /* output length pointer */
|
||||
bool *is_null; /* Pointer to null indicator */
|
||||
void *buffer; /* buffer to get/put data */
|
||||
/* set this if you want to track data truncations happened during fetch */
|
||||
bool *error;
|
||||
unsigned char *row_ptr; /* for the current data position */
|
||||
void (*store_param_func)(NET *net, struct MYSQL_BIND *param);
|
||||
void (*fetch_result)(struct MYSQL_BIND *, MYSQL_FIELD *, unsigned char **row);
|
||||
void (*skip_result)(struct MYSQL_BIND *, MYSQL_FIELD *, unsigned char **row);
|
||||
/* output buffer length, must be set when fetching str/binary */
|
||||
unsigned long buffer_length;
|
||||
unsigned long offset; /* offset position for char/binary fetch */
|
||||
unsigned long length_value; /* Used if length is 0 */
|
||||
unsigned int param_number; /* For null count and error messages */
|
||||
unsigned int pack_length; /* Internal length for packed data */
|
||||
enum enum_field_types buffer_type; /* buffer type */
|
||||
bool error_value; /* used if error is 0 */
|
||||
bool is_unsigned; /* set if integer type is unsigned */
|
||||
bool long_data_used; /* If used with mysql_send_long_data */
|
||||
bool is_null_value; /* Used if is_null is 0 */
|
||||
void *extension;
|
||||
} MYSQL_BIND;
|
||||
|
||||
struct MYSQL_STMT_EXT;
|
||||
|
||||
/* statement handler */
|
||||
typedef struct MYSQL_STMT {
|
||||
struct MEM_ROOT *mem_root; /* root allocations */
|
||||
LIST list; /* list to keep track of all stmts */
|
||||
MYSQL *mysql; /* connection handle */
|
||||
MYSQL_BIND *params; /* input parameters */
|
||||
MYSQL_BIND *bind; /* output parameters */
|
||||
MYSQL_FIELD *fields; /* result set metadata */
|
||||
MYSQL_DATA result; /* cached result set */
|
||||
MYSQL_ROWS *data_cursor; /* current row in cached result */
|
||||
/*
|
||||
mysql_stmt_fetch() calls this function to fetch one row (it's different
|
||||
for buffered, unbuffered and cursor fetch).
|
||||
*/
|
||||
int (*read_row_func)(struct MYSQL_STMT *stmt, unsigned char **row);
|
||||
/* copy of mysql->affected_rows after statement execution */
|
||||
uint64_t affected_rows;
|
||||
uint64_t insert_id; /* copy of mysql->insert_id */
|
||||
unsigned long stmt_id; /* Id for prepared statement */
|
||||
unsigned long flags; /* i.e. type of cursor to open */
|
||||
unsigned long prefetch_rows; /* number of rows per one COM_FETCH */
|
||||
/*
|
||||
Copied from mysql->server_status after execute/fetch to know
|
||||
server-side cursor status for this statement.
|
||||
*/
|
||||
unsigned int server_status;
|
||||
unsigned int last_errno; /* error code */
|
||||
unsigned int param_count; /* input parameter count */
|
||||
unsigned int field_count; /* number of columns in result set */
|
||||
enum enum_mysql_stmt_state state; /* statement state */
|
||||
char last_error[MYSQL_ERRMSG_SIZE]; /* error message */
|
||||
char sqlstate[SQLSTATE_LENGTH + 1];
|
||||
/* Types of input parameters should be sent to server */
|
||||
bool send_types_to_server;
|
||||
bool bind_param_done; /* input buffers were supplied */
|
||||
unsigned char bind_result_done; /* output buffers were supplied */
|
||||
/* mysql_stmt_close() had to cancel this result */
|
||||
bool unbuffered_fetch_cancelled;
|
||||
/*
|
||||
Is set to true if we need to calculate field->max_length for
|
||||
metadata fields when doing mysql_stmt_store_result.
|
||||
*/
|
||||
bool update_max_length;
|
||||
struct MYSQL_STMT_EXT *extension;
|
||||
} MYSQL_STMT;
|
||||
|
||||
enum enum_stmt_attr_type {
|
||||
/*
|
||||
When doing mysql_stmt_store_result calculate max_length attribute
|
||||
of statement metadata. This is to be consistent with the old API,
|
||||
where this was done automatically.
|
||||
In the new API we do that only by request because it slows down
|
||||
mysql_stmt_store_result sufficiently.
|
||||
*/
|
||||
STMT_ATTR_UPDATE_MAX_LENGTH,
|
||||
/*
|
||||
unsigned long with combination of cursor flags (read only, for update,
|
||||
etc)
|
||||
*/
|
||||
STMT_ATTR_CURSOR_TYPE,
|
||||
/*
|
||||
Amount of rows to retrieve from server per one fetch if using cursors.
|
||||
Accepts unsigned long attribute in the range 1 - ulong_max
|
||||
*/
|
||||
STMT_ATTR_PREFETCH_ROWS
|
||||
};
|
||||
|
||||
bool STDCALL mysql_bind_param(MYSQL *mysql, unsigned n_params,
|
||||
MYSQL_BIND *binds, const char **names);
|
||||
|
||||
MYSQL_STMT *STDCALL mysql_stmt_init(MYSQL *mysql);
|
||||
int STDCALL mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query,
|
||||
unsigned long length);
|
||||
int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt);
|
||||
int STDCALL mysql_stmt_fetch(MYSQL_STMT *stmt);
|
||||
int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg,
|
||||
unsigned int column, unsigned long offset);
|
||||
int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt);
|
||||
unsigned long STDCALL mysql_stmt_param_count(MYSQL_STMT *stmt);
|
||||
bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
|
||||
enum enum_stmt_attr_type attr_type,
|
||||
const void *attr);
|
||||
bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
|
||||
enum enum_stmt_attr_type attr_type,
|
||||
void *attr);
|
||||
bool STDCALL mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bnd);
|
||||
bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bnd);
|
||||
bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt);
|
||||
bool STDCALL mysql_stmt_reset(MYSQL_STMT *stmt);
|
||||
bool STDCALL mysql_stmt_free_result(MYSQL_STMT *stmt);
|
||||
bool STDCALL mysql_stmt_send_long_data(MYSQL_STMT *stmt,
|
||||
unsigned int param_number,
|
||||
const char *data, unsigned long length);
|
||||
MYSQL_RES *STDCALL mysql_stmt_result_metadata(MYSQL_STMT *stmt);
|
||||
MYSQL_RES *STDCALL mysql_stmt_param_metadata(MYSQL_STMT *stmt);
|
||||
unsigned int STDCALL mysql_stmt_errno(MYSQL_STMT *stmt);
|
||||
const char *STDCALL mysql_stmt_error(MYSQL_STMT *stmt);
|
||||
const char *STDCALL mysql_stmt_sqlstate(MYSQL_STMT *stmt);
|
||||
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_seek(MYSQL_STMT *stmt,
|
||||
MYSQL_ROW_OFFSET offset);
|
||||
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_tell(MYSQL_STMT *stmt);
|
||||
void STDCALL mysql_stmt_data_seek(MYSQL_STMT *stmt, uint64_t offset);
|
||||
uint64_t STDCALL mysql_stmt_num_rows(MYSQL_STMT *stmt);
|
||||
uint64_t STDCALL mysql_stmt_affected_rows(MYSQL_STMT *stmt);
|
||||
uint64_t STDCALL mysql_stmt_insert_id(MYSQL_STMT *stmt);
|
||||
unsigned int STDCALL mysql_stmt_field_count(MYSQL_STMT *stmt);
|
||||
|
||||
bool STDCALL mysql_commit(MYSQL *mysql);
|
||||
bool STDCALL mysql_rollback(MYSQL *mysql);
|
||||
bool STDCALL mysql_autocommit(MYSQL *mysql, bool auto_mode);
|
||||
bool STDCALL mysql_more_results(MYSQL *mysql);
|
||||
int STDCALL mysql_next_result(MYSQL *mysql);
|
||||
int STDCALL mysql_stmt_next_result(MYSQL_STMT *stmt);
|
||||
void STDCALL mysql_close(MYSQL *sock);
|
||||
|
||||
/* Public key reset */
|
||||
void STDCALL mysql_reset_server_public_key(void);
|
||||
|
||||
/* status return codes */
|
||||
#define MYSQL_NO_DATA 100
|
||||
#define MYSQL_DATA_TRUNCATED 101
|
||||
|
||||
#define mysql_reload(mysql) mysql_refresh((mysql), REFRESH_GRANT)
|
||||
|
||||
#define HAVE_MYSQL_REAL_CONNECT
|
||||
|
||||
MYSQL *STDCALL mysql_real_connect_dns_srv(MYSQL *mysql,
|
||||
const char *dns_srv_name,
|
||||
const char *user, const char *passwd,
|
||||
const char *db,
|
||||
unsigned long client_flag);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _mysql_h */
|
||||
1193
src/3rdparty/mysql/mysql_com.h
vendored
Normal file
1193
src/3rdparty/mysql/mysql_com.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user