summaryrefslogtreecommitdiff
path: root/databases/dbf2mysql
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2005-09-17 16:28:44 +0000
committerPav Lucistnik <pav@FreeBSD.org>2005-09-17 16:28:44 +0000
commit76caa61312734776e5412fc04b24740e9ca4be30 (patch)
tree2a101b745e8329a30206deaf9750e8e058bd0701 /databases/dbf2mysql
parentAdd missing architecture-specific files (alpha, amd64, ia64, sparc64) (diff)
- Add -L option to enable fast local inserts
PR: ports/64305 Submitted by: Travis Whitton <twhitton@ppb-envlabs.com> Approved by: maintainer timeout (jedgar; 1 year) Obtained from: debian
Notes
Notes: svn path=/head/; revision=143010
Diffstat (limited to 'databases/dbf2mysql')
-rw-r--r--databases/dbf2mysql/Makefile2
-rw-r--r--databases/dbf2mysql/files/patch-ab163
2 files changed, 159 insertions, 6 deletions
diff --git a/databases/dbf2mysql/Makefile b/databases/dbf2mysql/Makefile
index 486257b2b615..157e3dd34fb2 100644
--- a/databases/dbf2mysql/Makefile
+++ b/databases/dbf2mysql/Makefile
@@ -7,7 +7,7 @@
PORTNAME= dbf2mysql
PORTVERSION= 1.14
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= databases
MASTER_SITES= http://mysql.tsuren.net/Downloads/Contrib/ \
ftp://ftp.us.es/Mirror/www.mysql.org/Downloads/Contrib/ \
diff --git a/databases/dbf2mysql/files/patch-ab b/databases/dbf2mysql/files/patch-ab
index c005452471e8..8dce31cac340 100644
--- a/databases/dbf2mysql/files/patch-ab
+++ b/databases/dbf2mysql/files/patch-ab
@@ -1,6 +1,19 @@
--- dbf2mysql.c.orig Fri Jul 7 04:55:02 2000
-+++ dbf2mysql.c Wed Feb 7 13:19:42 2001
-@@ -17,8 +17,13 @@
++++ dbf2mysql.c Mon Mar 15 16:46:17 2004
+@@ -9,6 +9,12 @@
+ Fixxed Quick mode insert for blank Numeric fields
+ Modified to use -x flag to add _rec and _timestamp fields to start of record.
+ ( only those lines immediately affect by if(express) (and getopt) )
++
++ Bart Friederichs (bart@friesoft.nl) feb 2003
++ Added MYSQL_OPT_LOCAL_INFILE to options for compatibility with
++ MySQL >3.23.49 and >4.0.2, new option -L enables it
++ Replaced mysql_connect with mysql_real_connect, SQLsock isn't used anymore
++
+ */
+ #include <stdio.h>
+ #include <fcntl.h>
+@@ -17,10 +23,15 @@
#include <string.h>
#include <ctype.h>
#include <mysql.h>
@@ -12,9 +25,21 @@
+#endif
+
int verbose=0, upper=0, lower=0, create=0, fieldlow=0, var_chars=1;
- int express=0;
+-int express=0;
++int express=0, enable_local=0;
int null_fields=0, trim=0, quick=0;
-@@ -319,7 +324,7 @@
+ char primary[11];
+ char *host = NULL;
+@@ -79,7 +90,7 @@
+ printf("dbf2mysql %s\n", VERSION);
+ printf("usage: dbf2mysql [-h hostname] [-d dbase] [-t table] [-p primary key]\n");
+ printf(" [-o field[,field]] [-s oldname=newname[,oldname=newname]]\n");
+- printf(" [-i field[,field]] [-c] [-f] [-F] [-n] [-r] [-u|-l] \n");
++ printf(" [-i field[,field]] [-c] [-f] [-F] [-n] [-r] [-u|-l] [-L]\n");
+ printf(" [-v[v]] [-x] [-q] [-P password] [-U user] dbf-file\n");
+ }
+
+@@ -319,7 +330,7 @@
/* Patched by GLC to fix quick mode Numeric fields */
void do_inserts(MYSQL *SQLsock, char *table, dbhead *dbh)
{
@@ -23,7 +48,7 @@
field *fields;
char *query, *vpos, *pos;
char str[257], *cvt = NULL, *s;
-@@ -395,9 +400,17 @@
+@@ -395,9 +406,17 @@
strcat(query, "NULL,NULL,");
else /* if specified -q create file for 'LOAD DATA' */
{
@@ -44,3 +69,131 @@
{
fprintf (stderr, "Cannot open file '%s' for writing\n", datafile);
return;
+@@ -575,7 +594,7 @@
+ }
+ if (mysql_query(SQLsock, query) == -1) {
+ fprintf(stderr,
+- "Error sending LOAD DATA INFILE from file '%s'\n", datafile);
++ "Error sending LOAD DATA LOCAL INFILE from file '%s'\n", datafile);
+ fprintf(stderr,
+ "Detailed report: %s\n",
+ mysql_error(SQLsock));
+@@ -591,7 +610,7 @@
+ int main(int argc, char **argv)
+ {
+ int i;
+- MYSQL *SQLsock,mysql;
++ MYSQL mysql;
+ extern int optind;
+ extern char *optarg;
+ char *query;
+@@ -599,7 +618,7 @@
+
+ primary[0] = '\0';
+
+- while ((i = getopt(argc, argv, "xqfFrne:lucvi:h:p:d:t:s:o:U:P:")) != EOF) {
++ while ((i = getopt(argc, argv, "xqLfFrne:lucvi:h:p:d:t:s:o:U:P:")) != EOF) {
+ switch (i) {
+ case 'P':
+ pass = (char *)strdup(optarg);
+@@ -666,6 +685,9 @@
+ case 'o':
+ flist = (char *)strdup(optarg);
+ break;
++ case 'L':
++ enable_local = 1;
++ break;
+ case ':':
+ usage();
+ printf("missing argument!\n");
+@@ -704,6 +726,7 @@
+ table);
+ printf("Number of records: %ld\n", dbh->db_records);
+ }
++
+ if (verbose > 1) {
+ printf("Name\t\t Length\tDisplay\t Type\n");
+ printf("-------------------------------------\n");
+@@ -720,7 +743,20 @@
+ printf("Making connection to MySQL-server\n");
+ }
+
+- if (!(SQLsock = mysql_connect(&mysql,host,user,pass))) {
++ mysql_init(&mysql);
++
++ if (enable_local == 1) {
++ if (verbose) {
++ printf("Setting MySQL option MYSQL_OPT_LOCAL_INFILE\n");
++ }
++
++ if (mysql_options(&mysql, MYSQL_OPT_LOCAL_INFILE, 0)) {
++ printf("Setting options failed.");
++ exit(1);
++ }
++ }
++
++ if (!mysql_real_connect(&mysql,host,user,pass, dbase, 0, NULL,0)) {
+ fprintf(stderr, "Couldn't get a connection with the ");
+ fprintf(stderr, "designated host!\n");
+ fprintf(stderr, "Detailed report: %s\n", mysql_error(&mysql));
+@@ -728,23 +764,12 @@
+ exit(1);
+ }
+
+- if (verbose > 2) {
+- printf("Selecting database '%s'\n", dbase);
+- }
+-
+- if ((mysql_select_db(SQLsock, dbase)) == -1) {
+- fprintf(stderr, "Couldn't select database %s.\n", dbase);
+- fprintf(stderr, "Detailed report: %s\n", mysql_error(SQLsock));
+- mysql_close(SQLsock);
+- dbf_close(&dbh);
+- exit(1);
+- }
+ /* Substitute field names */
+ do_onlyfields(flist, dbh);
+ do_substitute(subarg, dbh);
+
+ if (!create) {
+- if (!check_table(SQLsock, table)) {
++ if (!check_table(&mysql, table)) {
+ printf("Table does not exist!\n");
+ exit(1);
+ }
+@@ -755,30 +780,30 @@
+
+ if (!(query = (char *)malloc(12 + strlen(table)))) {
+ printf("Memory-allocation error in main (drop)!\n");
+- mysql_close(SQLsock);
++ mysql_close(&mysql);
+ dbf_close(&dbh);
+ exit(1);
+ }
+
+ sprintf(query, "DROP TABLE %s", table);
+- mysql_query(SQLsock, query);
++ mysql_query(&mysql, query);
+ free(query);
+
+ /* Build a CREATE-clause
+ */
+- do_create(SQLsock, table, dbh);
++ do_create(&mysql, table, dbh);
+ }
+
+ /* Build an INSERT-clause
+ */
+ if (create < 2)
+- do_inserts(SQLsock, table, dbh);
++ do_inserts(&mysql, table, dbh);
+
+ if (verbose > 2) {
+ printf("Closing up....\n");
+ }
+
+- mysql_close(SQLsock);
++ mysql_close(&mysql);
+ dbf_close(&dbh);
+ exit(0);
+ }