Se meu elefante falasse

62

Transcript of Se meu elefante falasse

Page 2: Se meu elefante falasse

Page 3: Se meu elefante falasse
Page 4: Se meu elefante falasse
Page 5: Se meu elefante falasse
Page 6: Se meu elefante falasse
Page 7: Se meu elefante falasse
Page 8: Se meu elefante falasse
Page 9: Se meu elefante falasse
Page 10: Se meu elefante falasse
Page 11: Se meu elefante falasse

Page 12: Se meu elefante falasse
Page 13: Se meu elefante falasse
Page 14: Se meu elefante falasse
Page 15: Se meu elefante falasse
Page 16: Se meu elefante falasse
Page 17: Se meu elefante falasse
Page 18: Se meu elefante falasse

/newbot-createanewbot/token-generateauthorizationtoken/revoke-revokebotaccesstoken/setname-changeabot'sname/setdescription-changebotdescription/setabouttext-changebotaboutinfo/setuserpic-changebotprofilephoto/setcommands-changebotcommandslist/setjoingroups-canyourbotbeaddedtogroups?/setprivacy-whatmessagesdoesyourbotseeingroups?/deletebot-deleteabot/cancel-cancelthecurrentoperation

Page 19: Se meu elefante falasse
Page 20: Se meu elefante falasse

Page 21: Se meu elefante falasse
Page 22: Se meu elefante falasse
Page 23: Se meu elefante falasse
Page 24: Se meu elefante falasse
Page 25: Se meu elefante falasse
Page 26: Se meu elefante falasse
Page 27: Se meu elefante falasse

#\dtpg_catalog.ListofrelationsSchema|Name|Type|Owner------------+-------------------------+-------+----------pg_catalog|pg_aggregate|table|postgres...pg_catalog|pg_class|table|postgres...pg_catalog|pg_database|table|postgrespg_catalog|pg_foreign_data_wrapper|table|postgrespg_catalog|pg_foreign_server|table|postgrespg_catalog|pg_foreign_table|table|postgrespg_catalog|pg_index|table|postgres...pg_catalog|pg_language|table|postgres...pg_catalog|pg_operator|table|postgres...pg_catalog|pg_type|table|postgrespg_catalog|pg_user_mapping|table|postgres

Page 28: Se meu elefante falasse
Page 29: Se meu elefante falasse
Page 30: Se meu elefante falasse
Page 31: Se meu elefante falasse
Page 32: Se meu elefante falasse
Page 33: Se meu elefante falasse

Page 34: Se meu elefante falasse
Page 35: Se meu elefante falasse

Page 36: Se meu elefante falasse
Page 37: Se meu elefante falasse

CREATEEXTENSIONpostgres_fdw;CREATESERVERservidor_de_consultasFOREIGNDATAWRAPPERpostgres_fdwOPTIONS(host'192.168.1.1',dbname'banco',port'5432');CREATEUSERMAPPINGFORCURRENT_USERSERVERservidor_de_consultasOPTIONS(user'usuario_consulta',password'consulta');CREATEFOREIGNTABLEpessoas(cpfnumeric,nomevarchar)SERVERservidor_de_consultasOPTIONS(schema_name'recursos_humanos',table_name'tb_funcionarios');

EXPLAIN(ANALYZE,VERBOSE,BUFFERS)SELECT*FROMpessoasWHEREcpf=1234567891;-------------------------------------------------------ForeignScanonpublic.pessoas(cost=100.00..118.06rows=3width=104)(actualtime=46.039..46.040rows=1loops=1)Output:cpf,nomeRemoteSQL:SELECTcpf,nomeFROMrecursos_humanos.tb_funcionariosWHERE((cpf=1234567891::numeric))Planningtime:0.061msExecutiontime:105.232ms

Page 38: Se meu elefante falasse

CREATEFOREIGNTABLEvalores_constantes(resultado1charactervarying,resultado2charactervarying)servermulticorn_srvoptions(wrapper'myfdw.ConstantForeignDataWrapper')

SELECT*fromvalores_constantes;

Page 39: Se meu elefante falasse

SELECT*FROMvalores_constantes;

test|test2---------+----------test0|test20test1|test21test2|test22test3|test23test4|test24test5|test25test6|test26test7|test27test8|test28test9|test29(10rows)

Page 40: Se meu elefante falasse
Page 41: Se meu elefante falasse

voidBeginForeignScan(ForeignScanState*node,inteflags);TupleTableSlot*IterateForeignScan(ForeignScanState*node);voidReScanForeignScan(ForeignScanState*node);voidEndForeignScan(ForeignScanState*node);

Page 42: Se meu elefante falasse

List*PlanForeignModify(PlannerInfo*root,ModifyTable*plan,IndexresultRelation,intsubplan_index);voidBeginForeignModify(ModifyTableState*mtstate,ResultRelInfo*rinfo,List*fdw_private,intsubplan_index,inteflags);TupleTableSlot*ExecForeignInsert(EState*estate,ResultRelInfo*rinfo,TupleTableSlot*slot,TupleTableSlot*planSlot);TupleTableSlot*ExecForeignUpdate(EState*estate,ResultRelInfo*rinfo,TupleTableSlot*slot,TupleTableSlot*planSlot);TupleTableSlot*ExecForeignDelete(EState*estate,ResultRelInfo*rinfo,TupleTableSlot*slot,TupleTableSlot*planSlot);voidEndForeignModify(EState*estate,ResultRelInfo*rinfo);intIsForeignRelUpdatable(Relationrel);

Page 43: Se meu elefante falasse
Page 44: Se meu elefante falasse

defexecute(self,quals);

definsert(self,new_values);

defupdate(self,old_values,new_values);

defdelete(self,old_values);

Page 45: Se meu elefante falasse

ConstantForeignDataWrapper

$treemyfdw.|--myfdw/|`--__init__.py`--setup.py

Page 46: Se meu elefante falasse

ConstantForeignDataWrapper

setup.pysetup(name='myfdw',version='0.0.1',author='SeuNome',license='Postgresql',packages=['myfdw'])

Page 47: Se meu elefante falasse

ConstantForeignDataWrapper

__init__.pyfrommulticornimportForeignDataWrapper

classConstantForeignDataWrapper(ForeignDataWrapper):

def__init__(self,options,columns):super(ConstantForeignDataWrapper,self).__init__(options,columns)self.columns=columns

defexecute(self,quals,columns):forindexinrange(10):#arquiestaototalderegistrosline={}forcolumn_nameinself.columns:line[column_name]='%s%s'%(column_name,index)yieldline

Page 48: Se meu elefante falasse
Page 49: Se meu elefante falasse

Page 50: Se meu elefante falasse
Page 52: Se meu elefante falasse
Page 53: Se meu elefante falasse
Page 54: Se meu elefante falasse

Page 55: Se meu elefante falasse

Page 56: Se meu elefante falasse
Page 57: Se meu elefante falasse
Page 58: Se meu elefante falasse
Page 59: Se meu elefante falasse
Page 60: Se meu elefante falasse
Page 62: Se meu elefante falasse