[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    [Patch] A little patch for kexi
From:       Adam Pigg <adam () piggz ! fsnet ! co ! uk>
Date:       2003-07-23 19:47:23
[Download RAW message or body]

Hi

seeing as you kexi developers are living in mysql land i thought better let 
you have this patch.

It may be incomplete, but ive searched the sources for lines that need changed 
so it shouldnt be too bad, and it wont affect anything for you anyway, but it 
will halp me in postgresql land :o)

What it does:
Adds a virtual function to kexidb.h - escapeName - this returns a quoted 
version of a table name, currently it is hardcoded to a ` character, but 
postgresql uses a " and thus all queries fail.

Iva added the required functionality to mysqldb.h and .cpp, and utilised it in 
kexitablepart.cpp and kexidatatable.cpp

If the patch is in the wrong format, forgive me cos im a newbie when it comes 
to creating patches

Now i'll get back to my driver, i updated cvs and everything broke (you 
changed the way table info is retrieved, used to use queryResult(), now uses 
table() ), but hey, thats the fun of being at the forefront of development 
:o)

Cheers

PiggZ
-- 
adampigg.9p.org.uk
adam@piggz.fsnet.co.uk
adam@adampigg.9p.org.uk

["kexi.diff" (text/x-diff)]

? filters/import/csv/kexicsvsourcebase.cpp
? filters/import/csv/kexicsvsourcebase.h
? filters/import/csv/preview.cpp
? filters/import/csv/preview.h
? plugins/kexiquerydesignersql.loT
? plugins/tables/kexitablepart.loT
Index: kexiDB/kexidb.h
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/kexidb.h,v
retrieving revision 1.34
diff -u -r1.34 kexidb.h
--- kexiDB/kexidb.h	6 Jul 2003 19:52:59 -0000	1.34
+++ kexiDB/kexidb.h	23 Jul 2003 19:38:58 -0000
@@ -77,6 +77,9 @@
 	//most current drivers make those a mutators
 	virtual QStringList       databases();
 	virtual QStringList       tableNames()=0;
+	//Returns an escaped version of a named object, eg table...mysql uses `, postgres \
uses " +	virtual QString	          escapeName(const QString &table) = 0;
+
 	//! Returns true if database named by dbName is considered as system database
 	virtual bool isSystemDatabase(QString &dbName)=0;
 
Index: kexiDB/drivers/mySQL/mysqldb.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/drivers/mySQL/mysqldb.cpp,v
retrieving revision 1.67
diff -u -r1.67 mysqldb.cpp
--- kexiDB/drivers/mySQL/mysqldb.cpp	12 Jul 2003 15:11:24 -0000	1.67
+++ kexiDB/drivers/mySQL/mysqldb.cpp	23 Jul 2003 19:39:02 -0000
@@ -239,9 +239,9 @@
 
 	kdDebug()<<"MySQLDB::createTableDef: connection exists"<<endl;
 
-	kdDebug()<<"MySQLDB::createTableDef: querying"<< ("select * from `"+name+"` limit \
0")<<endl; +	kdDebug()<<"MySQLDB::createTableDef: querying"<< ("select * from \
"+escapeName(name)+" limit 0")<<endl;  
-	query("select * from `"+name+"` limit 0");
+	query("select * from "+escapeName(name)+" limit 0");
 	MySqlResult *result = storeResult();
 
 	if(!result)
@@ -727,4 +727,11 @@
 	m_mysql = 0;
 }
 
+QString MySqlDB::escapeName(const QString &tn)
+{
+	QString en;
+
+	en = "`" + tn + "`";
+	return en;
+}
 #include "mysqldb.moc"
Index: kexiDB/drivers/mySQL/mysqldb.h
===================================================================
RCS file: /home/kde/koffice/kexi/kexiDB/drivers/mySQL/mysqldb.h,v
retrieving revision 1.33
diff -u -r1.33 mysqldb.h
--- kexiDB/drivers/mySQL/mysqldb.h	6 Jul 2003 19:52:59 -0000	1.33
+++ kexiDB/drivers/mySQL/mysqldb.h	23 Jul 2003 19:39:02 -0000
@@ -64,6 +64,8 @@
 		KexiDBTableStruct	structure(const QString& table) const;
 		QString	nativeDataType(const KexiDBField::ColumnType& t) const;
 
+		QString escapeName(const QString &tn);
+		
 	public slots:
 		KexiDBRecordSet	*queryRecord(const QString& querystatement, bool buffer=false);
 
Index: plugins/tables/kexitablepart.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/plugins/tables/kexitablepart.cpp,v
retrieving revision 1.37
diff -u -r1.37 kexitablepart.cpp
--- plugins/tables/kexitablepart.cpp	6 Jul 2003 18:29:34 -0000	1.37
+++ plugins/tables/kexitablepart.cpp	23 Jul 2003 19:39:03 -0000
@@ -117,7 +117,7 @@
 	kdDebug()<<"KexiDBRecordSet *KexiTablePart::records(): local-id: "<< \
localIdentifier(identifier) << endl;  
 	KexiDBRecordSet *m_record=0;
-	m_record = kexiProject()->db()->queryRecord("select * from `" + \
localIdentifier(identifier) + "`", true); +	m_record = \
kexiProject()->db()->queryRecord("select * from " + \
kexiProject()->db()->escapeName(localIdentifier(identifier)) + ", true);  
 	if(!m_record)
 	{
Index: widget/kexidatatable.cpp
===================================================================
RCS file: /home/kde/koffice/kexi/widget/kexidatatable.cpp,v
retrieving revision 1.62
diff -u -r1.62 kexidatatable.cpp
--- widget/kexidatatable.cpp	18 Jul 2003 10:53:41 -0000	1.62
+++ widget/kexidatatable.cpp	23 Jul 2003 19:39:04 -0000
@@ -134,7 +134,7 @@
 		if(m_record->isForignField(i))
 		{
 			QStringList fdata;
-			KexiDBRecordSet *ftr = m_db->queryRecord("SELECT * FROM `" + \
m_record->fieldInfo(i)->table() + "`"); +			KexiDBRecordSet *ftr = \
m_db->queryRecord("SELECT * FROM " + \
m_db->escapeName(m_record->fieldInfo(i)->table()));  if(ftr)
 			{
 				while(ftr->next())



_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic